Name: series-workflow6n9ct Phase: Succeeded StartedAt: 2026-08-13 08:12:32 +0000 UTC FinishedAt: 2026-08-13 09:07:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[0] Phase: Succeeded StartedAt: 2026-08-13 08:12:32 +0000 UTC FinishedAt: 2026-08-13 08:17:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 08:12:32 +0000 UTC FinishedAt: 2026-08-13 08:17:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "DWMAC_SUN8I", "DWMAC_GENERIC", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "DWMAC_SUN8I", "DWMAC_GENERIC", "STMMAC_PCI" ], "series_id": "ffc291f9-0810-4f58-bcae-5f31664ec729" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_release", "stmmac_xdp_release", "stmmac_xdp_open", "stmmac_suspend", "dwxgmac2_tx_dma_stopped", "dwxgmac2_tx_mtl_drain", "dwxgmac2_rx_mtl_drain", "dwxgmac2_rx_dma_stopped", "dwxgmac2_dma_start_tx", "dwxgmac2_dma_stop_tx", "dwxgmac2_dma_start_rx", "dwxgmac2_dma_stop_rx" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7RFdNQUNfU1VOOEkmIzM0OywKICAgICYjMzQ7RFdNQUNfR0VORVJJQyYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9yZWxlYXNlJiMzNDssCiAgICAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICAgJiMzNDtzdG1tYWNfc3VzcGVuZCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl90eF9kbWFfc3RvcHBlZCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl90eF9tdGxfZHJhaW4mIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfcnhfbXRsX2RyYWluJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX3J4X2RtYV9zdG9wcGVkJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYV9zdGFydF90eCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kbWFfc3RvcF90eCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kbWFfc3RhcnRfcngmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfZG1hX3N0b3BfcngmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBoYXJkd2FyZSBjb250cm9sIGZsb3cgZm9yIHN0b3BwaW5nIERNQSBjaGFubmVscyBhbmQgZHJhaW5pbmcgTUFDIHF1ZXVlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgYnVmZmVyIGFsbG9jYXRpb25zIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYW4gb3JkZXJlZCBkYXRhcGF0aCB0ZWFyZG93biBzZXF1ZW5jZSBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsIGFkZGluZyBwb2xsaW5nIGxvb3BzIHRvIHdhaXQgZm9yIERNQSBhbmQgTVRMIHF1ZXVlcyB0byBkcmFpbiBiZWZvcmUgZGlzYWJsaW5nIHRoZSBNQUMuIFRoaXMgYWZmZWN0cyB0aGUgdGVhcmRvd24gcGF0aCBvZiBhbGwgc3RtbWFjIHZhcmlhbnRzIChpbmNsdWRpbmcgdGhvc2UgZW11bGF0ZWQgaW4gUUVNVSBsaWtlIHN1bjhpLWVtYWMpIGFuZCBtb2RpZmllcyB0aGUgWERQIHNldHVwL3RlYXJkb3duIGFuZCBzdXNwZW5kIGNhbGxiYWNrcy4gVGhlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIGludGVyZmFjZSBzdGF0ZSBjaGFuZ2VzIChlLmcuLCBicmluZ2luZyB0aGUgaW50ZXJmYWNlIGRvd24pIGFuZCBYRFAgcHJvZ3JhbSBhdHRhY2htZW50LCBtYWtpbmcgdGhlbSBmdW5jdGlvbmFsbHkgaW1wYWN0ZnVsIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzM5MTIwNDZlZjA2MTMwZThhZjRlMzc3YTAyZDQxZDMyNmJlODVmMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDA4OjE0OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXG5pbmRleCA1MTk0MzcwNWEyYjAzLi4yZTNmMjYwMDBkMzM1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaFxuQEAgLTI5MSw2ICYjNDM7MjkxLDEwIEBAXG4gI2RlZmluZSBYR01BQ19UVENcdFx0XHRHRU5NQVNLKDYsIDQpXG4gI2RlZmluZSBYR01BQ19UWFFFTlx0XHRcdEdFTk1BU0soMywgMilcbiAjZGVmaW5lIFhHTUFDX1RTRlx0XHRcdEJJVCgxKVxuJiM0MzsjZGVmaW5lIFhHTUFDX01UTF9UWFFfREVCVUcoeClcdFx0KDB4MDAwMDExMDggJiM0MzsgKDB4ODAgKiAoeCkpKVxuJiM0MzsjZGVmaW5lIFhHTUFDX1RYUVNUU1x0XHRcdEJJVCg0KVxuJiM0MzsjZGVmaW5lIFhHTUFDX1RSQ1NUU1x0XHRcdEdFTk1BU0soMiwgMSlcbiYjNDM7I2RlZmluZSBYR01BQ19UUkNTVFNfUkVBRFx0XHQweDFcbiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfRVRTX0NPTlRST0woeClcdCgweDAwMDAxMTEwICYjNDM7ICgweDgwICogKHgpKSlcbiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfUVVBTlRVTV9XRUlHSFQoeClcdCgweDAwMDAxMTE4ICYjNDM7ICgweDgwICogKHgpKSlcbiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfU0VORFNMT1BFKHgpXHQoMHgwMDAwMTExYyAmIzQzOyAoMHg4MCAqICh4KSkpXG5AQCAtMzA2LDYgJiM0MzszMTAsOSBAQFxuICNkZWZpbmUgWEdNQUNfRUhGQ1x0XHRcdEJJVCg3KVxuICNkZWZpbmUgWEdNQUNfUlNGXHRcdFx0QklUKDUpXG4gI2RlZmluZSBYR01BQ19SVENcdFx0XHRHRU5NQVNLKDEsIDApXG4mIzQzOyNkZWZpbmUgWEdNQUNfTVRMX1JYUV9ERUJVRyh4KVx0XHQoMHgwMDAwMTE0OCAmIzQzOyAoMHg4MCAqICh4KSkpXG4mIzQzOyNkZWZpbmUgWEdNQUNfUFJYUVx0XHRcdEdFTk1BU0soMjksIDE2KVxuJiM0MzsjZGVmaW5lIFhHTUFDX1JYUVNUU1x0XHRcdEdFTk1BU0soNSwgNClcbiAjZGVmaW5lIFhHTUFDX01UTF9SWFFfRkxPV19DT05UUk9MKHgpXHQoMHgwMDAwMTE1MCAmIzQzOyAoMHg4MCAqICh4KSkpXG4gI2RlZmluZSBYR01BQ19SRkRcdFx0XHRHRU5NQVNLKDMxLCAxNylcbiAjZGVmaW5lIFhHTUFDX1JGQVx0XHRcdEdFTk1BU0soMTUsIDEpXG5AQCAtMzg5LDYgJiM0MzszOTYsNyBAQFxuICNkZWZpbmUgWEdNQUNfTklTXHRcdFx0QklUKDE1KVxuICNkZWZpbmUgWEdNQUNfQUlTXHRcdFx0QklUKDE0KVxuICNkZWZpbmUgWEdNQUNfRkJFXHRcdFx0QklUKDEyKVxuJiM0MzsjZGVmaW5lIFhHTUFDX1JQU1x0XHRcdEJJVCg4KVxuICNkZWZpbmUgWEdNQUNfUkJVXHRcdFx0QklUKDcpXG4gI2RlZmluZSBYR01BQ19SSVx0XHRcdEJJVCg2KVxuICNkZWZpbmUgWEdNQUNfVEJVXHRcdFx0QklUKDIpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xuaW5kZXggMDM0MzdmMWNmM2RmMy4uOGUyN2JjNThjYzA1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xuQEAgLTQsNiAmIzQzOzQsNyBAQFxuICAqIHN0bW1hYyBYR01BQyBzdXBwb3J0LlxuICAqL1xuIFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2R3eGdtYWMyLmhcJiMzNDtcbkBAIC0yNTEsMTMgJiM0MzsyNTIsMTIgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiB7XG4gXHR1MzIgdmFsdWU7XG4gXG4mIzQzO1x0LyogVFBTIGlzIGxhdGNoZWQgb25jZSBzZXQsIHNvIGNsZWFyIGl0IG9uIGV2ZXJ5IFR4IERNQSBzdGFydC4gKi9cbiYjNDM7XHR3cml0ZWwoWEdNQUNfVFBTLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSk7XG4mIzQzO1xuIFx0dmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xuIFx0dmFsdWUgfD0gWEdNQUNfVFhTVDtcbiBcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9UWF9DT05UUk9MKGNoYW4pKTtcbi1cbi1cdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX1RYX0NPTkZJRyk7XG4tXHR2YWx1ZSB8PSBYR01BQ19DT05GSUdfVEU7XG4tXHR3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBYR01BQ19UWF9DT05GSUcpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RvcF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuQEAgLTI2OCwxMCAmIzQzOzI2OCw2IEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4gXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XG4gXHR2YWx1ZSBcdTAwMjY9IH5YR01BQ19UWFNUO1xuIFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xuLVxuLVx0dmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfVFhfQ09ORklHKTtcbi1cdHZhbHVlIFx1MDAyNj0gflhHTUFDX0NPTkZJR19URTtcbi1cdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX1RYX0NPTkZJRyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5AQCAtMjc5LDEzICYjNDM7Mjc1LDEyIEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4ge1xuIFx0dTMyIHZhbHVlO1xuIFxuJiM0MztcdC8qIFJQUyBpcyBsYXRjaGVkIG9uY2Ugc2V0LCBzbyBjbGVhciBpdCBvbiBldmVyeSBSeCBETUEgc3RhcnQuICovXG4mIzQzO1x0d3JpdGVsKFhHTUFDX1JQUywgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbikpO1xuJiM0MztcbiBcdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9SWF9DT05UUk9MKGNoYW4pKTtcbiBcdHZhbHVlIHw9IFhHTUFDX1JYU1Q7XG4gXHR3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfUlhfQ09OVFJPTChjaGFuKSk7XG4tXG4tXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19SWF9DT05GSUcpO1xuLVx0dmFsdWUgfD0gWEdNQUNfQ09ORklHX1JFO1xuLVx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfUlhfQ09ORklHKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0b3Bfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbkBAIC01ODIsNiAmIzQzOzU3Nyw3NyBAQCBzdGF0aWMgaW50IGR3eGdtYWMyX2VuYWJsZV90YnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzQzO1x0XHRcdFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuJiM0Mzt7XG4mIzQzO1x0dTMyIHZhbHVlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSwgdmFsdWUsXG4mIzQzO1x0XHRcdFx0IHZhbHVlIFx1MDAyNiBYR01BQ19UUFMsIDEwMCwgMTAwMDApO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRuZXRkZXZfd2Fybihwcml2LVx1MDAzZWRldiwgXCYjMzQ7VHggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgY2hhbik7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgZHd4Z21hYzJfdHhfbXRsX2RyYWluKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiYjNDM7XHRcdFx0XHQgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBxdWV1ZSlcbiYjNDM7e1xuJiM0MztcdHUzMiB2YWx1ZTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHQvKiBXYWl0IHVudGlsIHRoZSBxdWV1ZSBpcyBlbXB0eSBhbmQgaXRzIHJlYWQgY29udHJvbGxlciBpcyBubyBsb25nZXJcbiYjNDM7XHQgKiBwdWxsaW5nIGEgZnJhbWUgb3V0IHRvd2FyZHMgdGhlIE1BQy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICYjNDM7IFhHTUFDX01UTF9UWFFfREVCVUcocXVldWUpLCB2YWx1ZSxcbiYjNDM7XHRcdFx0XHQgISh2YWx1ZSBcdTAwMjYgWEdNQUNfVFhRU1RTKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0XHQgRklFTERfR0VUKFhHTUFDX1RSQ1NUUywgdmFsdWUpICE9XG4mIzQzO1x0XHRcdFx0IFhHTUFDX1RSQ1NUU19SRUFELFxuJiM0MztcdFx0XHRcdCAxMDAsIDEwMDAwKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0bmV0ZGV2X3dhcm4ocHJpdi1cdTAwM2VkZXYsIFwmIzM0O01UTCBUeCBxdWV1ZSAldSBkcmFpbiB0aW1lb3V0XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgcXVldWUpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGR3eGdtYWMyX3J4X210bF9kcmFpbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzQzO1x0XHRcdFx0IHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgcXVldWUpXG4mIzQzO3tcbiYjNDM7XHR1MzIgdmFsdWU7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0LyogV2FpdCB1bnRpbCBubyBwYWNrZXQgaXMgbGVmdCBpbiB0aGUgcXVldWUgYW5kIHRoZSBxdWV1ZSByZXBvcnRzXG4mIzQzO1x0ICogaXRzZWxmIGVtcHR5LlxuJiM0MztcdCAqL1xuJiM0MztcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgJiM0MzsgWEdNQUNfTVRMX1JYUV9ERUJVRyhxdWV1ZSksIHZhbHVlLFxuJiM0MztcdFx0XHRcdCAhRklFTERfR0VUKFhHTUFDX1BSWFEsIHZhbHVlKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0XHQgIUZJRUxEX0dFVChYR01BQ19SWFFTVFMsIHZhbHVlKSxcbiYjNDM7XHRcdFx0XHQgMTAwLCAxMDAwMCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdG5ldGRldl93YXJuKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtNVEwgUnggcXVldWUgJXUgZHJhaW4gdGltZW91dFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgIHF1ZXVlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzQzO1x0XHRcdFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuJiM0Mzt7XG4mIzQzO1x0dTMyIHZhbHVlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSwgdmFsdWUsXG4mIzQzO1x0XHRcdFx0IHZhbHVlIFx1MDAyNiBYR01BQ19SUFMsIDEwMCwgMTAwMDApO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRuZXRkZXZfd2Fybihwcml2LVx1MDAzZWRldiwgXCYjMzQ7UnggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgY2hhbik7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4gY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcbiBcdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcbiBcdC5pbml0ID0gZHd4Z21hYzJfZG1hX2luaXQsXG5AQCAtNjEwLDQgJiM0Mzs2NzYsOCBAQCBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzID0ge1xuIFx0LnNldF9iZnNpemUgPSBkd3hnbWFjMl9zZXRfYmZzaXplLFxuIFx0LmVuYWJsZV9zcGggPSBkd3hnbWFjMl9lbmFibGVfc3BoLFxuIFx0LmVuYWJsZV90YnMgPSBkd3hnbWFjMl9lbmFibGVfdGJzLFxuJiM0MztcdC50eF9kbWFfc3RvcHBlZCA9IGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkLFxuJiM0MztcdC50eF9tdGxfZHJhaW4gPSBkd3hnbWFjMl90eF9tdGxfZHJhaW4sXG4mIzQzO1x0LnJ4X210bF9kcmFpbiA9IGR3eGdtYWMyX3J4X210bF9kcmFpbixcbiYjNDM7XHQucnhfZG1hX3N0b3BwZWQgPSBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZCxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuaW5kZXggZTYzMTdiOTRmZmY3ZC4uMjNhNjkxNWFjZGZiYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5AQCAtMjI5LDYgJiM0MzsyMjksMTUgQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHtcbiBcdFx0XHQgICBib29sIGVuLCB1MzIgY2hhbik7XG4gXHRpbnQgKCplbmFibGVfdGJzKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0XHRcdCAgYm9vbCBlbiwgdTMyIGNoYW4pO1xuJiM0MztcdC8qIE9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gKi9cbiYjNDM7XHRpbnQgKCp0eF9kbWFfc3RvcHBlZCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiYjNDM7XHRcdFx0ICAgICAgdTMyIGNoYW4pO1xuJiM0MztcdGludCAoKnR4X210bF9kcmFpbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiYjNDM7XHRcdFx0ICAgIHUzMiBxdWV1ZSk7XG4mIzQzO1x0aW50ICgqcnhfbXRsX2RyYWluKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuJiM0MztcdFx0XHQgICAgdTMyIHF1ZXVlKTtcbiYjNDM7XHRpbnQgKCpyeF9kbWFfc3RvcHBlZCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiYjNDM7XHRcdFx0ICAgICAgdTMyIGNoYW4pO1xuIH07XG4gXG4gI2RlZmluZSBzdG1tYWNfZG1hX2luaXQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG5AQCAtMjg5LDYgJiM0MzsyOTgsMTQgQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHtcbiBcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfc3BoLCBfX3ByaXYsIF9fYXJncylcbiAjZGVmaW5lIHN0bW1hY19lbmFibGVfdGJzKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuIFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfdGJzLCBfX3ByaXYsIF9fYXJncylcbiYjNDM7I2RlZmluZSBzdG1tYWNfdHhfZG1hX3N0b3BwZWQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4mIzQzO1x0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCB0eF9kbWFfc3RvcHBlZCwgX19wcml2LCBfX2FyZ3MpXG4mIzQzOyNkZWZpbmUgc3RtbWFjX3R4X210bF9kcmFpbihfX3ByaXYsIF9fYXJncy4uLikgXFxcbiYjNDM7XHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHR4X210bF9kcmFpbiwgX19wcml2LCBfX2FyZ3MpXG4mIzQzOyNkZWZpbmUgc3RtbWFjX3J4X210bF9kcmFpbihfX3ByaXYsIF9fYXJncy4uLikgXFxcbiYjNDM7XHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHJ4X210bF9kcmFpbiwgX19wcml2LCBfX2FyZ3MpXG4mIzQzOyNkZWZpbmUgc3RtbWFjX3J4X2RtYV9zdG9wcGVkKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuJiM0MztcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgcnhfZG1hX3N0b3BwZWQsIF9fcHJpdiwgX19hcmdzKVxuIFxuIHN0cnVjdCBtYWNfZGV2aWNlX2luZm87XG4gc3RydWN0IG5ldF9kZXZpY2U7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDM1OTE3NTVlYTMwYmUuLmNjM2EwYWUwYzU2ZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjU2OSw2ICYjNDM7MjU2OSw1MiBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIHN0bW1hY19kYXRhcGF0aF90ZWFyZG93biAtIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gYXMgcGVyIElQIHNwZWNpZmljYXRpb25cbiYjNDM7ICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuJiM0MzsgKiBEZXNjcmlwdGlvbjpcbiYjNDM7ICogV2hlbiB0ZWFyZG93biBvcHMgYXJlIGF2YWlsYWJsZSwgZm9sbG93IHRoZSBkYXRhYm9vayBvcmRlcmVkIHRlYXJkb3duXG4mIzQzOyAqIHNlcXVlbmNlLlxuJiM0MzsgKiBGb2xsb3dzIHRoZSBsZWdhY3kgc3RvcCAmIzQzOyBNQUMgZGlzYWJsZSBmb3IgdmFyaWFudHMgd2l0aG91dCB0aGUgZmVhdHVyZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHR1MzIgcnhfY2hhbm5lbHNfY291bnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbiYjNDM7XHR1MzIgdHhfY2hhbm5lbHNfY291bnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTtcbiYjNDM7XHR1MzIgY2hhbjtcbiYjNDM7XG4mIzQzO1x0LyogU3RvcCBhbGwgVFggRE1BIGNoYW5uZWxzICovXG4mIzQzO1x0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KVxuJiM0MztcdFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xuJiM0MztcbiYjNDM7XHQvKiBXYWl0IGZvciBldmVyeSBUWCBETUEgY2hhbm5lbCB0byByZXBvcnQgaXRzZWxmIHN0b3BwZWQgKi9cbiYjNDM7XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNldHhfZG1hX3N0b3BwZWQpXG4mIzQzO1x0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdHN0bW1hY190eF9kbWFfc3RvcHBlZChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4mIzQzO1xuJiM0MztcdC8qIFdhaXQgZm9yIHRoZSBNVEwgVFggcXVldWVzIHRvIGZpbmlzaCBwdXNoaW5nIGludG8gdGhlIE1BQyAqL1xuJiM0MztcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZWRtYS1cdTAwM2V0eF9tdGxfZHJhaW4pXG4mIzQzO1x0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdHN0bW1hY190eF9tdGxfZHJhaW4ocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4pO1xuJiM0MztcbiYjNDM7XHQvKiBEaXNhYmxlIHRoZSBNQUMgVFggYW5kIFJYICovXG4mIzQzO1x0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGZhbHNlKTtcbiYjNDM7XG4mIzQzO1x0LyogV2FpdCBmb3IgdGhlIE1UTCBSWCBxdWV1ZXMgdG8gZHJhaW4gaW50byB0aGUgUlggRE1BICovXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlZG1hLVx1MDAzZXJ4X210bF9kcmFpbilcbiYjNDM7XHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0c3RtbWFjX3J4X210bF9kcmFpbihwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4mIzQzO1xuJiM0MztcdC8qIFN0b3AgYWxsIFJYIERNQSBjaGFubmVscyAqL1xuJiM0MztcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOylcbiYjNDM7XHRcdHN0bW1hY19zdG9wX3J4X2RtYShwcml2LCBjaGFuKTtcbiYjNDM7XG4mIzQzO1x0LyogV2FpdCBmb3IgZXZlcnkgUlggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlZG1hLVx1MDAzZXJ4X2RtYV9zdG9wcGVkKVxuJiM0MztcdFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRzdG1tYWNfcnhfZG1hX3N0b3BwZWQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4pO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqICBzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlIC0gSFcgRE1BIG9wZXJhdGlvbiBtb2RlXG4gICogIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcbkBAIC0zNjkyLDkgJiM0MzszNzM4LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0cHJpdi1cdTAwM2Vody1cdTAwM2VyeF9jc3VtID0gMDtcbiBcdH1cbiBcbi1cdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4tXG4gXHQvKiBTZXQgdGhlIEhXIERNQSBtb2RlIGFuZCB0aGUgQ09FICovXG4gXHRzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYpO1xuIFxuQEAgLTM3NTAsNiAmIzQzOzM3OTMsOSBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0LyogU3RhcnQgdGhlIGJhbGwgcm9sbGluZy4uLiAqL1xuIFx0c3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7XG4gXG4mIzQzO1x0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbiYjNDM7XHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4mIzQzO1xuIFx0cGh5bGlua19yeF9jbGtfc3RvcF9ibG9jayhwcml2LVx1MDAzZXBoeWxpbmspO1xuIFx0c3RtbWFjX3NldF9od192bGFuX21vZGUocHJpdiwgcHJpdi1cdTAwM2Vodyk7XG4gXHRwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2socHJpdi1cdTAwM2VwaHlsaW5rKTtcbkBAIC00MjM4LDkgJiM0Mzs0Mjg0LDYgQEAgc3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHU4IGNoYW47XG4gXG4tXHQvKiBTdG9wIGFuZCBkaXNjb25uZWN0IHRoZSBQSFkgKi9cbi1cdHBoeWxpbmtfc3RvcChwcml2LVx1MDAzZXBoeWxpbmspO1xuLVxuIFx0c3RtbWFjX2Rpc2FibGVfYWxsX3F1ZXVlcyhwcml2KTtcbiBcbiBcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOylcbkBAIC00MjUxLDggJiM0Mzs0Mjk0LDExIEBAIHN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuIFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiBcbi1cdC8qIFN0b3AgVFgvUlggRE1BIGFuZCBjbGVhciB0aGUgZGVzY3JpcHRvcnMgKi9cbi1cdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4mIzQzO1x0LyogSGFzIHRvIHJ1biBiZWZvcmUgbWFjX2xpbmtfZG93bigpIGRpc2FibGVzIHRoZSBNQUMuICovXG4mIzQzO1x0c3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHByaXYpO1xuJiM0MztcbiYjNDM7XHQvKiBTdG9wIGFuZCBkaXNjb25uZWN0IHRoZSBQSFkgKi9cbiYjNDM7XHRwaHlsaW5rX3N0b3AocHJpdi1cdTAwM2VwaHlsaW5rKTtcbiBcbiBcdC8qIFJlbGVhc2UgYW5kIGZyZWUgdGhlIFJ4L1R4IHJlc291cmNlcyAqL1xuIFx0ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZik7XG5AQCAtNzEwOSwxNSAmIzQzOzcxNTUsMTIgQEAgdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuIFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiBcbi1cdC8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovXG4tXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuJiM0MztcdC8qIFN0b3AgdGhlIE1BQyBhbmQgdGhlIFRYL1JYIERNQSBjaGFubmVscyAqL1xuJiM0MztcdHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihwcml2KTtcbiBcbiBcdC8qIFJlbGVhc2UgYW5kIGZyZWUgdGhlIFJ4L1R4IHJlc291cmNlcyAqL1xuIFx0ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZik7XG4gXG4tXHQvKiBEaXNhYmxlIHRoZSBNQUMgUngvVHggKi9cbi1cdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBmYWxzZSk7XG4tXG4gXHQvKiBzZXQgdHJhbnNfc3RhcnQgc28gd2UgZG9uJiMzOTt0IGdldCBzcHVyaW91c1xuIFx0ICogd2F0Y2hkb2dzIGR1cmluZyByZXNldFxuIFx0ICovXG5AQCAtNzE4OSwxMiAmIzQzOzcyMzIsMTIgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRocnRpbWVyX3NldHVwKFx1MDAyNnR4X3EtXHUwMDNldHh0aW1lciwgc3RtbWFjX3R4X3RpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpO1xuIFx0fVxuIFxuLVx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbi1cdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbi1cbiBcdC8qIFN0YXJ0IFJ4IFx1MDAyNiBUeCBETUEgQ2hhbm5lbHMgKi9cbiBcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xuIFxuJiM0MztcdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4mIzQzO1x0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIHRydWUpO1xuJiM0MztcbiBcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBpcnFfZXJyb3I7XG5AQCAtODE5NSwxNyAmIzQzOzgyMzgsMTUgQEAgaW50IHN0bW1hY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2VlZWVfY3RybF90aW1lcik7XG4gXHR9XG4gXG4tXHQvKiBTdG9wIFRYL1JYIERNQSAqL1xuLVx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbi1cbi1cdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XG4tXG4gXHQvKiBFbmFibGUgUG93ZXIgZG93biBtb2RlIGJ5IHByb2dyYW1taW5nIHRoZSBQTVQgcmVncyAqL1xuIFx0aWYgKHByaXYtXHUwMDNld29sb3B0cykge1xuJiM0MztcdFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbiYjNDM7XHRcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XG4gXHRcdHN0bW1hY19wbXQocHJpdiwgcHJpdi1cdTAwM2VodywgcHJpdi1cdTAwM2V3b2xvcHRzKTtcbiBcdFx0cHJpdi1cdTAwM2VpcnFfd2FrZSA9IDE7XG4gXHR9IGVsc2Uge1xuLVx0XHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgZmFsc2UpO1xuJiM0MztcdFx0c3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHByaXYpO1xuJiM0MztcdFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcbiBcdFx0cGluY3RybF9wbV9zZWxlY3Rfc2xlZXBfc3RhdGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O0RXTUFDX1NVTjhJJiMzNDssCiAgICAmIzM0O0RXTUFDX0dFTkVSSUMmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19yZWxlYXNlJiMzNDssCiAgICAmIzM0O3N0bW1hY194ZHBfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX29wZW4mIzM0OywKICAgICYjMzQ7c3RtbWFjX3N1c3BlbmQmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWQmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfdHhfbXRsX2RyYWluJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX3J4X210bF9kcmFpbiYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kbWFfc3RhcnRfdHgmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfZG1hX3N0b3BfdHgmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfZG1hX3N0YXJ0X3J4JiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYV9zdG9wX3J4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYW4gb3JkZXJlZCBkYXRhcGF0aCB0ZWFyZG93biBzZXF1ZW5jZSBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsIGFkZGluZyBwb2xsaW5nIGxvb3BzIHRvIHdhaXQgZm9yIERNQSBhbmQgTVRMIHF1ZXVlcyB0byBkcmFpbiBiZWZvcmUgZGlzYWJsaW5nIHRoZSBNQUMuIFRoaXMgYWZmZWN0cyB0aGUgdGVhcmRvd24gcGF0aCBvZiBhbGwgc3RtbWFjIHZhcmlhbnRzIChpbmNsdWRpbmcgdGhvc2UgZW11bGF0ZWQgaW4gUUVNVSBsaWtlIHN1bjhpLWVtYWMpIGFuZCBtb2RpZmllcyB0aGUgWERQIHNldHVwL3RlYXJkb3duIGFuZCBzdXNwZW5kIGNhbGxiYWNrcy4gVGhlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIGludGVyZmFjZSBzdGF0ZSBjaGFuZ2VzIChlLmcuLCBicmluZ2luZyB0aGUgaW50ZXJmYWNlIGRvd24pIGFuZCBYRFAgcHJvZ3JhbSBhdHRhY2htZW50LCBtYWtpbmcgdGhlbSBmdW5jdGlvbmFsbHkgaW1wYWN0ZnVsIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzM5MTIwNDZlZjA2MTMwZThhZjRlMzc3YTAyZDQxZDMyNmJlODVmMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDA4OjE0OjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgKaW5kZXggNTE5NDM3MDVhMmIwMy4uMmUzZjI2MDAwZDMzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oCkBAIC0yOTEsNiAmIzQzOzI5MSwxMCBAQAogI2RlZmluZSBYR01BQ19UVEMJCQlHRU5NQVNLKDYsIDQpCiAjZGVmaW5lIFhHTUFDX1RYUUVOCQkJR0VOTUFTSygzLCAyKQogI2RlZmluZSBYR01BQ19UU0YJCQlCSVQoMSkKJiM0MzsjZGVmaW5lIFhHTUFDX01UTF9UWFFfREVCVUcoeCkJCSgweDAwMDAxMTA4ICYjNDM7ICgweDgwICogKHgpKSkKJiM0MzsjZGVmaW5lIFhHTUFDX1RYUVNUUwkJCUJJVCg0KQomIzQzOyNkZWZpbmUgWEdNQUNfVFJDU1RTCQkJR0VOTUFTSygyLCAxKQomIzQzOyNkZWZpbmUgWEdNQUNfVFJDU1RTX1JFQUQJCTB4MQogI2RlZmluZSBYR01BQ19NVExfVEN4X0VUU19DT05UUk9MKHgpCSgweDAwMDAxMTEwICYjNDM7ICgweDgwICogKHgpKSkKICNkZWZpbmUgWEdNQUNfTVRMX1RDeF9RVUFOVFVNX1dFSUdIVCh4KQkoMHgwMDAwMTExOCAmIzQzOyAoMHg4MCAqICh4KSkpCiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfU0VORFNMT1BFKHgpCSgweDAwMDAxMTFjICYjNDM7ICgweDgwICogKHgpKSkKQEAgLTMwNiw2ICYjNDM7MzEwLDkgQEAKICNkZWZpbmUgWEdNQUNfRUhGQwkJCUJJVCg3KQogI2RlZmluZSBYR01BQ19SU0YJCQlCSVQoNSkKICNkZWZpbmUgWEdNQUNfUlRDCQkJR0VOTUFTSygxLCAwKQomIzQzOyNkZWZpbmUgWEdNQUNfTVRMX1JYUV9ERUJVRyh4KQkJKDB4MDAwMDExNDggJiM0MzsgKDB4ODAgKiAoeCkpKQomIzQzOyNkZWZpbmUgWEdNQUNfUFJYUQkJCUdFTk1BU0soMjksIDE2KQomIzQzOyNkZWZpbmUgWEdNQUNfUlhRU1RTCQkJR0VOTUFTSyg1LCA0KQogI2RlZmluZSBYR01BQ19NVExfUlhRX0ZMT1dfQ09OVFJPTCh4KQkoMHgwMDAwMTE1MCAmIzQzOyAoMHg4MCAqICh4KSkpCiAjZGVmaW5lIFhHTUFDX1JGRAkJCUdFTk1BU0soMzEsIDE3KQogI2RlZmluZSBYR01BQ19SRkEJCQlHRU5NQVNLKDE1LCAxKQpAQCAtMzg5LDYgJiM0MzszOTYsNyBAQAogI2RlZmluZSBYR01BQ19OSVMJCQlCSVQoMTUpCiAjZGVmaW5lIFhHTUFDX0FJUwkJCUJJVCgxNCkKICNkZWZpbmUgWEdNQUNfRkJFCQkJQklUKDEyKQomIzQzOyNkZWZpbmUgWEdNQUNfUlBTCQkJQklUKDgpCiAjZGVmaW5lIFhHTUFDX1JCVQkJCUJJVCg3KQogI2RlZmluZSBYR01BQ19SSQkJCUJJVCg2KQogI2RlZmluZSBYR01BQ19UQlUJCQlCSVQoMikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMKaW5kZXggMDM0MzdmMWNmM2RmMy4uOGUyN2JjNThjYzA1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMKQEAgLTQsNiAmIzQzOzQsNyBAQAogICogc3RtbWFjIFhHTUFDIHN1cHBvcnQuCiAgKi8KIAomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2lvcG9sbC5oJmd0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2R3eGdtYWMyLmgmIzM0OwpAQCAtMjUxLDEzICYjNDM7MjUyLDEyIEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiB7CiAJdTMyIHZhbHVlOwogCiYjNDM7CS8qIFRQUyBpcyBsYXRjaGVkIG9uY2Ugc2V0LCBzbyBjbGVhciBpdCBvbiBldmVyeSBUeCBETUEgc3RhcnQuICovCiYjNDM7CXdyaXRlbChYR01BQ19UUFMsIGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pKTsKJiM0MzsKIAl2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7CiAJdmFsdWUgfD0gWEdNQUNfVFhTVDsKIAl3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7Ci0KLQl2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19UWF9DT05GSUcpOwotCXZhbHVlIHw9IFhHTUFDX0NPTkZJR19URTsKLQl3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBYR01BQ19UWF9DT05GSUcpOwogfQogCiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RvcF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLApAQCAtMjY4LDEwICYjNDM7MjY4LDYgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0b3BfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKIAl2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7CiAJdmFsdWUgJmFtcDs9IH5YR01BQ19UWFNUOwogCXdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9UWF9DT05UUk9MKGNoYW4pKTsKLQotCXZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX1RYX0NPTkZJRyk7Ci0JdmFsdWUgJmFtcDs9IH5YR01BQ19DT05GSUdfVEU7Ci0Jd3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfVFhfQ09ORklHKTsKIH0KIAogc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKQEAgLTI3OSwxMyAmIzQzOzI3NSwxMiBAQCBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RhcnRfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogewogCXUzMiB2YWx1ZTsKIAomIzQzOwkvKiBSUFMgaXMgbGF0Y2hlZCBvbmNlIHNldCwgc28gY2xlYXIgaXQgb24gZXZlcnkgUnggRE1BIHN0YXJ0LiAqLwomIzQzOwl3cml0ZWwoWEdNQUNfUlBTLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSk7CiYjNDM7CiAJdmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1JYX0NPTlRST0woY2hhbikpOwogCXZhbHVlIHw9IFhHTUFDX1JYU1Q7CiAJd3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1JYX0NPTlRST0woY2hhbikpOwotCi0JdmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfUlhfQ09ORklHKTsKLQl2YWx1ZSB8PSBYR01BQ19DT05GSUdfUkU7Ci0Jd3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfUlhfQ09ORklHKTsKIH0KIAogc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0b3Bfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKQEAgLTU4Miw2ICYjNDM7NTc3LDc3IEBAIHN0YXRpYyBpbnQgZHd4Z21hYzJfZW5hYmxlX3RicyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiYjNDM7CQkJCSAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbikKJiM0Mzt7CiYjNDM7CXUzMiB2YWx1ZTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pLCB2YWx1ZSwKJiM0MzsJCQkJIHZhbHVlICZhbXA7IFhHTUFDX1RQUywgMTAwLCAxMDAwMCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQluZXRkZXZfd2Fybihwcml2LSZndDtkZXYsICYjMzQ7VHggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XG4mIzM0OywKJiM0MzsJCQkgICAgY2hhbik7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgZHd4Z21hYzJfdHhfbXRsX2RyYWluKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKJiM0MzsJCQkJIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgcXVldWUpCiYjNDM7ewomIzQzOwl1MzIgdmFsdWU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CS8qIFdhaXQgdW50aWwgdGhlIHF1ZXVlIGlzIGVtcHR5IGFuZCBpdHMgcmVhZCBjb250cm9sbGVyIGlzIG5vIGxvbmdlcgomIzQzOwkgKiBwdWxsaW5nIGEgZnJhbWUgb3V0IHRvd2FyZHMgdGhlIE1BQy4KJiM0MzsJICovCiYjNDM7CXJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgJiM0MzsgWEdNQUNfTVRMX1RYUV9ERUJVRyhxdWV1ZSksIHZhbHVlLAomIzQzOwkJCQkgISh2YWx1ZSAmYW1wOyBYR01BQ19UWFFTVFMpICZhbXA7JmFtcDsKJiM0MzsJCQkJIEZJRUxEX0dFVChYR01BQ19UUkNTVFMsIHZhbHVlKSAhPQomIzQzOwkJCQkgWEdNQUNfVFJDU1RTX1JFQUQsCiYjNDM7CQkJCSAxMDAsIDEwMDAwKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCW5ldGRldl93YXJuKHByaXYtJmd0O2RldiwgJiMzNDtNVEwgVHggcXVldWUgJXUgZHJhaW4gdGltZW91dFxuJiMzNDssCiYjNDM7CQkJICAgIHF1ZXVlKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBkd3hnbWFjMl9yeF9tdGxfZHJhaW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBxdWV1ZSkKJiM0Mzt7CiYjNDM7CXUzMiB2YWx1ZTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJLyogV2FpdCB1bnRpbCBubyBwYWNrZXQgaXMgbGVmdCBpbiB0aGUgcXVldWUgYW5kIHRoZSBxdWV1ZSByZXBvcnRzCiYjNDM7CSAqIGl0c2VsZiBlbXB0eS4KJiM0MzsJICovCiYjNDM7CXJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgJiM0MzsgWEdNQUNfTVRMX1JYUV9ERUJVRyhxdWV1ZSksIHZhbHVlLAomIzQzOwkJCQkgIUZJRUxEX0dFVChYR01BQ19QUlhRLCB2YWx1ZSkgJmFtcDsmYW1wOwomIzQzOwkJCQkgIUZJRUxEX0dFVChYR01BQ19SWFFTVFMsIHZhbHVlKSwKJiM0MzsJCQkJIDEwMCwgMTAwMDApOwomIzQzOwlpZiAocmV0KQomIzQzOwkJbmV0ZGV2X3dhcm4ocHJpdi0mZ3Q7ZGV2LCAmIzM0O01UTCBSeCBxdWV1ZSAldSBkcmFpbiB0aW1lb3V0XG4mIzM0OywKJiM0MzsJCQkgICAgcXVldWUpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKJiM0MzsJCQkJICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKQomIzQzO3sKJiM0MzsJdTMyIHZhbHVlOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbiksIHZhbHVlLAomIzQzOwkJCQkgdmFsdWUgJmFtcDsgWEdNQUNfUlBTLCAxMDAsIDEwMDAwKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCW5ldGRldl93YXJuKHByaXYtJmd0O2RldiwgJiMzNDtSeCBETUEgY2hhbm5lbCAldSBzdG9wIHRpbWVvdXRcbiYjMzQ7LAomIzQzOwkJCSAgICBjaGFuKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzID0gewogCS5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCwKIAkuaW5pdCA9IGR3eGdtYWMyX2RtYV9pbml0LApAQCAtNjEwLDQgJiM0Mzs2NzYsOCBAQCBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzID0gewogCS5zZXRfYmZzaXplID0gZHd4Z21hYzJfc2V0X2Jmc2l6ZSwKIAkuZW5hYmxlX3NwaCA9IGR3eGdtYWMyX2VuYWJsZV9zcGgsCiAJLmVuYWJsZV90YnMgPSBkd3hnbWFjMl9lbmFibGVfdGJzLAomIzQzOwkudHhfZG1hX3N0b3BwZWQgPSBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZCwKJiM0MzsJLnR4X210bF9kcmFpbiA9IGR3eGdtYWMyX3R4X210bF9kcmFpbiwKJiM0MzsJLnJ4X210bF9kcmFpbiA9IGR3eGdtYWMyX3J4X210bF9kcmFpbiwKJiM0MzsJLnJ4X2RtYV9zdG9wcGVkID0gZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWQsCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oCmluZGV4IGU2MzE3Yjk0ZmZmN2QuLjIzYTY5MTVhY2RmYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgKQEAgLTIyOSw2ICYjNDM7MjI5LDE1IEBAIHN0cnVjdCBzdG1tYWNfZG1hX29wcyB7CiAJCQkgICBib29sIGVuLCB1MzIgY2hhbik7CiAJaW50ICgqZW5hYmxlX3Ricykoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKIAkJCSAgYm9vbCBlbiwgdTMyIGNoYW4pOwomIzQzOwkvKiBPcmRlcmVkIGRhdGFwYXRoIHRlYXJkb3duICovCiYjNDM7CWludCAoKnR4X2RtYV9zdG9wcGVkKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLAomIzQzOwkJCSAgICAgIHUzMiBjaGFuKTsKJiM0MzsJaW50ICgqdHhfbXRsX2RyYWluKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLAomIzQzOwkJCSAgICB1MzIgcXVldWUpOwomIzQzOwlpbnQgKCpyeF9tdGxfZHJhaW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsCiYjNDM7CQkJICAgIHUzMiBxdWV1ZSk7CiYjNDM7CWludCAoKnJ4X2RtYV9zdG9wcGVkKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLAomIzQzOwkJCSAgICAgIHUzMiBjaGFuKTsKIH07CiAKICNkZWZpbmUgc3RtbWFjX2RtYV9pbml0KF9fcHJpdiwgX19hcmdzLi4uKSBcCkBAIC0yODksNiAmIzQzOzI5OCwxNCBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgewogCXN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfc3BoLCBfX3ByaXYsIF9fYXJncykKICNkZWZpbmUgc3RtbWFjX2VuYWJsZV90YnMoX19wcml2LCBfX2FyZ3MuLi4pIFwKIAlzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIGVuYWJsZV90YnMsIF9fcHJpdiwgX19hcmdzKQomIzQzOyNkZWZpbmUgc3RtbWFjX3R4X2RtYV9zdG9wcGVkKF9fcHJpdiwgX19hcmdzLi4uKSBcCiYjNDM7CXN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgdHhfZG1hX3N0b3BwZWQsIF9fcHJpdiwgX19hcmdzKQomIzQzOyNkZWZpbmUgc3RtbWFjX3R4X210bF9kcmFpbihfX3ByaXYsIF9fYXJncy4uLikgXAomIzQzOwlzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHR4X210bF9kcmFpbiwgX19wcml2LCBfX2FyZ3MpCiYjNDM7I2RlZmluZSBzdG1tYWNfcnhfbXRsX2RyYWluKF9fcHJpdiwgX19hcmdzLi4uKSBcCiYjNDM7CXN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgcnhfbXRsX2RyYWluLCBfX3ByaXYsIF9fYXJncykKJiM0MzsjZGVmaW5lIHN0bW1hY19yeF9kbWFfc3RvcHBlZChfX3ByaXYsIF9fYXJncy4uLikgXAomIzQzOwlzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHJ4X2RtYV9zdG9wcGVkLCBfX3ByaXYsIF9fYXJncykKIAogc3RydWN0IG1hY19kZXZpY2VfaW5mbzsKIHN0cnVjdCBuZXRfZGV2aWNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggMzU5MTc1NWVhMzBiZS4uY2MzYTBhZTBjNTZmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC0yNTY5LDYgJiM0MzsyNTY5LDUyIEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zdG9wX2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCQlzdG1tYWNfc3RvcF90eF9kbWEocHJpdiwgY2hhbik7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24gLSBvcmRlcmVkIGRhdGFwYXRoIHRlYXJkb3duIGFzIHBlciBJUCBzcGVjaWZpY2F0aW9uCiYjNDM7ICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZQomIzQzOyAqIERlc2NyaXB0aW9uOgomIzQzOyAqIFdoZW4gdGVhcmRvd24gb3BzIGFyZSBhdmFpbGFibGUsIGZvbGxvdyB0aGUgZGF0YWJvb2sgb3JkZXJlZCB0ZWFyZG93bgomIzQzOyAqIHNlcXVlbmNlLgomIzQzOyAqIEZvbGxvd3MgdGhlIGxlZ2FjeSBzdG9wICYjNDM7IE1BQyBkaXNhYmxlIGZvciB2YXJpYW50cyB3aXRob3V0IHRoZSBmZWF0dXJlLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwl1MzIgcnhfY2hhbm5lbHNfY291bnQgPSBwcml2LSZndDtwbGF0LSZndDtyeF9xdWV1ZXNfdG9fdXNlOwomIzQzOwl1MzIgdHhfY2hhbm5lbHNfY291bnQgPSBwcml2LSZndDtwbGF0LSZndDt0eF9xdWV1ZXNfdG9fdXNlOwomIzQzOwl1MzIgY2hhbjsKJiM0MzsKJiM0MzsJLyogU3RvcCBhbGwgVFggRE1BIGNoYW5uZWxzICovCiYjNDM7CWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspCiYjNDM7CQlzdG1tYWNfc3RvcF90eF9kbWEocHJpdiwgY2hhbik7CiYjNDM7CiYjNDM7CS8qIFdhaXQgZm9yIGV2ZXJ5IFRYIERNQSBjaGFubmVsIHRvIHJlcG9ydCBpdHNlbGYgc3RvcHBlZCAqLwomIzQzOwlpZiAocHJpdi0mZ3Q7aHctJmd0O2RtYS0mZ3Q7dHhfZG1hX3N0b3BwZWQpCiYjNDM7CQlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KQomIzQzOwkJCXN0bW1hY190eF9kbWFfc3RvcHBlZChwcml2LCBwcml2LSZndDtpb2FkZHIsIGNoYW4pOwomIzQzOwomIzQzOwkvKiBXYWl0IGZvciB0aGUgTVRMIFRYIHF1ZXVlcyB0byBmaW5pc2ggcHVzaGluZyBpbnRvIHRoZSBNQUMgKi8KJiM0MzsJaWYgKHByaXYtJmd0O2h3LSZndDtkbWEtJmd0O3R4X210bF9kcmFpbikKJiM0MzsJCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspCiYjNDM7CQkJc3RtbWFjX3R4X210bF9kcmFpbihwcml2LCBwcml2LSZndDtpb2FkZHIsIGNoYW4pOwomIzQzOwomIzQzOwkvKiBEaXNhYmxlIHRoZSBNQUMgVFggYW5kIFJYICovCiYjNDM7CXN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtJmd0O2lvYWRkciwgZmFsc2UpOwomIzQzOwomIzQzOwkvKiBXYWl0IGZvciB0aGUgTVRMIFJYIHF1ZXVlcyB0byBkcmFpbiBpbnRvIHRoZSBSWCBETUEgKi8KJiM0MzsJaWYgKHByaXYtJmd0O2h3LSZndDtkbWEtJmd0O3J4X210bF9kcmFpbikKJiM0MzsJCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyByeF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspCiYjNDM7CQkJc3RtbWFjX3J4X210bF9kcmFpbihwcml2LCBwcml2LSZndDtpb2FkZHIsIGNoYW4pOwomIzQzOwomIzQzOwkvKiBTdG9wIGFsbCBSWCBETUEgY2hhbm5lbHMgKi8KJiM0MzsJZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOykKJiM0MzsJCXN0bW1hY19zdG9wX3J4X2RtYShwcml2LCBjaGFuKTsKJiM0MzsKJiM0MzsJLyogV2FpdCBmb3IgZXZlcnkgUlggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovCiYjNDM7CWlmIChwcml2LSZndDtody0mZ3Q7ZG1hLSZndDtyeF9kbWFfc3RvcHBlZCkKJiM0MzsJCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyByeF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspCiYjNDM7CQkJc3RtbWFjX3J4X2RtYV9zdG9wcGVkKHByaXYsIHByaXYtJmd0O2lvYWRkciwgY2hhbik7CiYjNDM7fQomIzQzOwogLyoqCiAgKiAgc3RtbWFjX2RtYV9vcGVyYXRpb25fbW9kZSAtIEhXIERNQSBvcGVyYXRpb24gbW9kZQogICogIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUKQEAgLTM2OTIsOSAmIzQzOzM3MzgsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlwcml2LSZndDtody0mZ3Q7cnhfY3N1bSA9IDA7CiAJfQogCi0JLyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi8KLQlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIHRydWUpOwotCiAJLyogU2V0IHRoZSBIVyBETUEgbW9kZSBhbmQgdGhlIENPRSAqLwogCXN0bW1hY19kbWFfb3BlcmF0aW9uX21vZGUocHJpdik7CiAKQEAgLTM3NTAsNiAmIzQzOzM3OTMsOSBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCS8qIFN0YXJ0IHRoZSBiYWxsIHJvbGxpbmcuLi4gKi8KIAlzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTsKIAomIzQzOwkvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqLwomIzQzOwlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIHRydWUpOwomIzQzOwogCXBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi0mZ3Q7cGh5bGluayk7CiAJc3RtbWFjX3NldF9od192bGFuX21vZGUocHJpdiwgcHJpdi0mZ3Q7aHcpOwogCXBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jayhwcml2LSZndDtwaHlsaW5rKTsKQEAgLTQyMzgsOSAmIzQzOzQyODQsNiBAQCBzdGF0aWMgdm9pZCBfX3N0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJc3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAl1OCBjaGFuOwogCi0JLyogU3RvcCBhbmQgZGlzY29ubmVjdCB0aGUgUEhZICovCi0JcGh5bGlua19zdG9wKHByaXYtJmd0O3BoeWxpbmspOwotCiAJc3RtbWFjX2Rpc2FibGVfYWxsX3F1ZXVlcyhwcml2KTsKIAogCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyBwcml2LSZndDtwbGF0LSZndDt0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOykKQEAgLTQyNTEsOCAmIzQzOzQyOTQsMTEgQEAgc3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCS8qIEZyZWUgdGhlIElSUSBsaW5lcyAqLwogCXN0bW1hY19mcmVlX2lycShkZXYsIFJFUV9JUlFfRVJSX0FMTCwgMCk7CiAKLQkvKiBTdG9wIFRYL1JYIERNQSBhbmQgY2xlYXIgdGhlIGRlc2NyaXB0b3JzICovCi0Jc3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTsKJiM0MzsJLyogSGFzIHRvIHJ1biBiZWZvcmUgbWFjX2xpbmtfZG93bigpIGRpc2FibGVzIHRoZSBNQUMuICovCiYjNDM7CXN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihwcml2KTsKJiM0MzsKJiM0MzsJLyogU3RvcCBhbmQgZGlzY29ubmVjdCB0aGUgUEhZICovCiYjNDM7CXBoeWxpbmtfc3RvcChwcml2LSZndDtwaHlsaW5rKTsKIAogCS8qIFJlbGVhc2UgYW5kIGZyZWUgdGhlIFJ4L1R4IHJlc291cmNlcyAqLwogCWZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsICZhbXA7cHJpdi0mZ3Q7ZG1hX2NvbmYpOwpAQCAtNzEwOSwxNSAmIzQzOzcxNTUsMTIgQEAgdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi8KIAlzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApOwogCi0JLyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi8KLQlzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpOwomIzQzOwkvKiBTdG9wIHRoZSBNQUMgYW5kIHRoZSBUWC9SWCBETUEgY2hhbm5lbHMgKi8KJiM0MzsJc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHByaXYpOwogCiAJLyogUmVsZWFzZSBhbmQgZnJlZSB0aGUgUngvVHggcmVzb3VyY2VzICovCiAJZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgJmFtcDtwcml2LSZndDtkbWFfY29uZik7CiAKLQkvKiBEaXNhYmxlIHRoZSBNQUMgUngvVHggKi8KLQlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIGZhbHNlKTsKLQogCS8qIHNldCB0cmFuc19zdGFydCBzbyB3ZSBkb24mIzM5O3QgZ2V0IHNwdXJpb3VzCiAJICogd2F0Y2hkb2dzIGR1cmluZyByZXNldAogCSAqLwpAQCAtNzE4OSwxMiAmIzQzOzcyMzIsMTIgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlocnRpbWVyX3NldHVwKCZhbXA7dHhfcS0mZ3Q7dHh0aW1lciwgc3RtbWFjX3R4X3RpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpOwogCX0KIAotCS8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovCi0Jc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCB0cnVlKTsKLQogCS8qIFN0YXJ0IFJ4ICZhbXA7IFR4IERNQSBDaGFubmVscyAqLwogCXN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpOwogCiYjNDM7CS8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovCiYjNDM7CXN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtJmd0O2lvYWRkciwgdHJ1ZSk7CiYjNDM7CiAJcmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7CiAJaWYgKHJldCkKIAkJZ290byBpcnFfZXJyb3I7CkBAIC04MTk1LDE3ICYjNDM7ODIzOCwxNSBAQCBpbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQogCQl0aW1lcl9kZWxldGVfc3luYygmYW1wO3ByaXYtJmd0O2VlZV9jdHJsX3RpbWVyKTsKIAl9CiAKLQkvKiBTdG9wIFRYL1JYIERNQSAqLwotCXN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7Ci0KLQlzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpOwotCiAJLyogRW5hYmxlIFBvd2VyIGRvd24gbW9kZSBieSBwcm9ncmFtbWluZyB0aGUgUE1UIHJlZ3MgKi8KIAlpZiAocHJpdi0mZ3Q7d29sb3B0cykgewomIzQzOwkJc3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTsKJiM0MzsJCXN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7CiAJCXN0bW1hY19wbXQocHJpdiwgcHJpdi0mZ3Q7aHcsIHByaXYtJmd0O3dvbG9wdHMpOwogCQlwcml2LSZndDtpcnFfd2FrZSA9IDE7CiAJfSBlbHNlIHsKLQkJc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCBmYWxzZSk7CiYjNDM7CQlzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7CiYjNDM7CQlzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpOwogCQlwaW5jdHJsX3BtX3NlbGVjdF9zbGVlcF9zdGF0ZShwcml2LSZndDtkZXZpY2UpOwogCX0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mzg3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgTmV0d29yayBEcml2ZXIgUGF0Y2ggaW4gUUVNVSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIGBzdG1tYWNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgZHd4Z21hYzJgIGhhcmR3YXJlLiBJdCBpbnRyb2R1Y2VzIGEgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgdG8gZW5zdXJlIGEgY2xlYW4gc2h1dGRvd24sIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgRE1BLWJhc2VkIGhhcmR3YXJlLiBUaGlzIHRvdWNoZXMgYSBmZXcga2V5IGZ1bmN0aW9uczogYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAsIHBsdXMgbW9kaWZpY2F0aW9ucyB0byBgc3RtbWFjX2h3X3NldHVwYCwgYF9fc3RtbWFjX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfb3BlbmAsIGFuZCBgc3RtbWFjX3N1c3BlbmRgLiBTaW5jZSBgc3RtbWFjYCBpcyBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBNQUNzLCB0aGUgYmlnIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gVGhhdCYjMzk7cyB0aGUgY3J1eCBvZiB0aGlzLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgJiMzNDtEb2VzIFFFTVUgZXZlbiAqZW11bGF0ZSogYHN0bW1hY2A/JiMzNDsgSSBrbm93IGl0IGhhcyBlbXVsYXRpb25zIGZvciB0aGluZ3MgbGlrZSBJbnRlbCYjMzk7cyBpR0IsIGUxMDAwLCBhbmQgUlRMODEzOSwgYXMgd2VsbCBhcyBWaXJ0SU8gYW5kIFZNWE5FVDMuIEJ1dCBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGEgZGlyZWN0IGBzdG1tYWNgIGVtdWxhdGlvbiBpbiB0aGUgdHlwaWNhbCBRRU1VIG5ldHdvcmsgZGV2aWNlIGxpc3QuIEkgZXZlbiBzdGFydGVkIHRvIGxvb2suCgpUaGVuIEkgc2F3IHNvbWUgKnNpbWlsYXIqIG5ldHdvcmsgaGFyZHdhcmUgZW11bGF0ZWQgYnkgUUVNVSBsaWtlIGBpbXhfZmVjLmNgLCBgY2FkZW5jZV9nZW0uY2AsIGBmdGdtYWMxMDAuY2AsIGBucGNtN3h4X2VtYy5jYCwgYGFsbHdpbm5lci1zdW44aS1lbWFjLmNgLCBhbmQgYGFsbHdpbm5lci1lbWFjLmNgLiAmIzM0O1dhaXQsIGRvZXMgUUVNVSBoYXZlIGEgYGR3bWFjYCBlbXVsYXRpb24/JiMzNDsgSSB0aG91Z2h0LiBOb3QgZGlyZWN0bHksIGJ1dC4uLiBgc3RtbWFjYCBpcyB1c2VkIGJ5IGEgKnRvbiogb2YgQVJNIFNvQ3MuIFRoZSBpbXBsaWNhdGlvbiBpcywgUUVNVSBtaWdodCBlbXVsYXRlIHRoZSBTb0MgKmFzIGEgd2hvbGUqLCBpbmNsdWRpbmcgdGhlIGBzdG1tYWNgIGRyaXZlciBhcyBwYXJ0IG9mIHRoZSBib2FyZCBlbXVsYXRpb24uCgpTbywgSSB3YXMgYWJvdXQgdG8gZ28gc2VhcmNoIFFFTVUgZm9yIGBzdG1tYWNgIG9yIGBkd21hY2Agd2hlbiBJIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgZW1waGFzaXplZCBjb2RlIHBhdGhzIHRoYXQgYXJlICp1bnJlYWNoYWJsZSogaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gVGhhdCBnb3QgbWUgdGhpbmtpbmcuLi4gaXMgdGhlcmUgYW5vdGhlciBhdmVudWU/CgpUaGVuIEkgcmVtZW1iZXJlZCB0aGF0IGBzdG1tYWNgLCB3aGlsZSBwcmltYXJpbHkgYSBwbGF0Zm9ybSBkcml2ZXIsICphbHNvKiBoYXMgUENJIGJpbmRpbmdzLiBUaGF0IG1pZ2h0IGJlIGEgd2F5IHRvIHJlYWNoIHRoZSBjb2RlLiBTbywgbXkgbmV4dCBjaGVjayBpcyBnb2luZyB0byBiZSB0byBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYSBgc3RtbWFjYCBQQ0kgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlci4qc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDU2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBzZWFyY2g6CgoqKkluaXRpYWwgSW5xdWlyeTogVGFyZ2V0aW5nIHRoZSBSaWdodCBLZXl3b3JkcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmluZCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGBzdG1tYWNfcGNpYCBvciBzb21ldGhpbmcgc2ltaWxhci4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSB0aGlua2luZyB0aGF0JiMzOTtzIHRoZSBsaWtlbHkgZHJpdmVyIG1vZHVsZSBuYW1lIGZvciBhIHNwZWNpZmljIFBDSS1iYXNlZCBFdGhlcm5ldCBjb250cm9sbGVyIHVzaW5nIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgKFNUTU1BQykgYXJjaGl0ZWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIG5hcnJvdyBteSBzZWFyY2ggYW5kIGdldCB0aGUgaW5mb3JtYXRpb24gSSBuZWVkLCBzcGVjaWZpY2FsbHksIGJlY2F1c2UgdGhlcmUgYXJlIG90aGVyIGRyaXZlcnMgYW5kIGNvbnRyb2xsZXJzIG91dCB0aGVyZS4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGZpbmQgd2hhdCBJIGFjdHVhbGx5IHdhbnQsIG5vdCBhIGdlbmVyYWwgb3ZlcnZpZXcuIFNvIEkmIzM5O2xsIHN0YXJ0IHdpdGggdGhpcyBzcGVjaWZpYyB0ZXJtLCBidXQgSSYjMzk7bGwgbmVlZCB0byBrZWVwIGFuIG9wZW4gbWluZCBmb3IgdmFyaWF0aW9ucyBvciByZWxhdGVkIGNvbmNlcHRzIGlmIHRoaXMgcHJpbWFyeSBzZWFyY2ggZG9lc24mIzM5O3QgZGVsaXZlciBwcmVjaXNlIGVub3VnaCByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjkzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFNUTU1BQyBQQ0kgRHJpdmVyKioKCkFscmlnaHQsIHRpbWUgdG8gdHJvdWJsZXNob290IHRoaXMgbmV0d29ya2luZyBpc3N1ZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgcHJvYmxlbSAqc2VlbXMqIHRvIGJlIHJlbGF0ZWQgdG8gdGhlIFNUTU1BQyBkcml2ZXIsIGFuZCBzaW5jZSB0aGUgc3lzdGVtIHVzZXMgUENJLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYC4gVGhhdCBmaWxlIGlzIHRoZSBtb3N0IGxpa2VseSBjYW5kaWRhdGUgZm9yIGhhbmRsaW5nIHRoZSBQQ0ktc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIG9wZXJhdGlvbiBvZiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgY29kZSB0aGF0IGRlYWxzIHdpdGggUENJIGRldmljZSBwcm9iZSwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgb3RoZXIgUENJLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gY2FyZWZ1bGx5IHJldmlldyBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgUENJIGJ1cywgZXNwZWNpYWxseSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIERNQSBzZXR1cCwgYnVmZmVyIG1hbmFnZW1lbnQsIG9yIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmVzLiBBbnkgb2YgdGhlc2UgY291bGQgZWFzaWx5IGJlIHRoZSBzb3VyY2Ugb2YgdGhlIGludGVybWl0dGVudCBvciBwZXJmb3JtYW5jZS1yZWxhdGVkIHByb2JsZW1zIEkmIzM5O20gY2hhc2luZy4gTXkgcHJpbWFyeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgU1RNTUFDIGNvcmUgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2NoYWluX21vZGUuYyYjMzQ7LAogICAgJiMzNDtjb21tb24uaCYjMzQ7LAogICAgJiMzNDtkZXNjcy5oJiMzNDssCiAgICAmIzM0O2Rlc2NzX2NvbS5oJiMzNDssCiAgICAmIzM0O2R3bWFjLWFuYXJpb24uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1kd2MtcW9zLWV0aC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWVpYzc3MDAuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1nZW5lcmljLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtaW14LmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtaW5nZW5pYy5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWludGVsLXBsYXQuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1pbnRlbC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWludGVsLmgmIzM0OywKICAgICYjMzQ7ZHdtYWMtaXBxODA2eC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWxvb25nc29uLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbG9vbmdzb24xLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbHBjMTh4eC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLW1lZGlhdGVrLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbWVzb24uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1tZXNvbjhiLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbW90b3Jjb21tLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbnV2b3Rvbi5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXFjb20tZXRocW9zLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtcmVuZXNhcy1nYmV0aC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXJrLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtcnpuMS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXMzMi5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXNvY2ZwZ2EuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zb3BoZ28uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zcGFjZW1pdC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXN0YXJmaXZlLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3RpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3RtMzIuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zdW41NWkuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zdW44aS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXN1bnhpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtdGVncmEuYyYjMzQ7LAogICAgJiMzNDtkd21hYy10aGVhZC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXZpc2NvbnRpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDAuaCYjMzQ7LAogICAgJiMzNDtkd21hYzEwMDAuaCYjMzQ7LAogICAgJiMzNDtkd21hYzEwMDBfY29yZS5jJiMzNDssCiAgICAmIzM0O2R3bWFjMTAwMF9kbWEuYyYjMzQ7LAogICAgJiMzNDtkd21hYzEwMF9jb3JlLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDBfZG1hLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM0LmgmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2NvcmUuYyYjMzQ7LAogICAgJiMzNDtkd21hYzRfZGVzY3MuYyYjMzQ7LAogICAgJiMzNDtkd21hYzRfZGVzY3MuaCYjMzQ7LAogICAgJiMzNDtkd21hYzRfZG1hLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2RtYS5oJiMzNDssCiAgICAmIzM0O2R3bWFjNF9saWIuYyYjMzQ7LAogICAgJiMzNDtkd21hYzUuYyYjMzQ7LAogICAgJiMzNDtkd21hYzUuaCYjMzQ7LAogICAgJiMzNDtkd21hY19kbWEuaCYjMzQ7LAogICAgJiMzNDtkd21hY19saWIuYyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMi5oJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2NvcmUuYyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kZXNjcy5jJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYS5jJiMzNDssCiAgICAmIzM0O2R3eGxnbWFjMi5oJiMzNDssCiAgICAmIzM0O2VuaF9kZXNjLmMmIzM0OywKICAgICYjMzQ7aHdpZi5jJiMzNDssCiAgICAmIzM0O2h3aWYuaCYjMzQ7LAogICAgJiMzNDttbWMuaCYjMzQ7LAogICAgJiMzNDttbWNfY29yZS5jJiMzNDssCiAgICAmIzM0O25vcm1fZGVzYy5jJiMzNDssCiAgICAmIzM0O3JpbmdfbW9kZS5jJiMzNDssCiAgICAmIzM0O3N0bW1hYy5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19lc3QuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZXN0LmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX2V0aHRvb2wuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZnBlLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2ZwZS5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19od3RzdGFtcC5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19saWJwY2kuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfbGlicGNpLmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX21haW4uYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfbWRpby5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19wY2kuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGNzLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3Bjcy5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19wbGF0Zm9ybS5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19wbGF0Zm9ybS5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19wdHAuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcHRwLmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX3NlbGZ0ZXN0cy5jJiMzNDssCiAgICAmIzM0O3N0bW1hY190Yy5jJiMzNDssCiAgICAmIzM0O3N0bW1hY192bGFuLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3ZsYW4uaCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcC5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTQ5CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBzdG1tYWNfcGNpLmMqKgoKT2theSwgaGVyZSB3ZSBhcmUsIHN0YXJpbmcgYXQgYHN0bW1hY19wY2kuY2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gc3RhcnQgZGlzc2VjdGluZyB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlLCByaWdodCBvZmYgdGhlIGJhdC4gSXQmIzM5O3MgdGhlIFBDSSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU1RNTUFDIGRyaXZlciwgYW5kIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIFBDSSBidXMgaXRzZWxmLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBQQ0kgY29uZmlndXJhdGlvbiByZWdpc3RlcnMsIHJlc291cmNlIGFsbG9jYXRpb24sIGludGVycnVwdCBoYW5kbGluZyDigJMgdGhlIHVzdWFsIHN1c3BlY3RzIGZvciBhIFBDSSBkcml2ZXIuIEkmIzM5O20gYW50aWNpcGF0aW5nIHNvbWUgcG90ZW50aWFsbHkgdmVuZG9yLXNwZWNpZmljIHJlZ2lzdGVyIGFjY2VzcyBoZXJlIGFzIHdlbGwsIGdpdmVuIHRoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIHByb3ByaWV0YXJ5IFNvQyBhbmQgUEhZLCBhbmQgSSBuZWVkIHRvIGtlZXAgYW4gZXllIG91dCBmb3IgdGhhdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXnigJl2ZSBoYW5kbGVkIHRoZSBsaW5rIGluaXRpYWxpemF0aW9uLCBETUEgc2V0dXAsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBQQ0kgZnJhbWV3b3JrLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gc3RvcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjI1CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHNwZWFraW5nIGZyb20gYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHBlcnNwZWN0aXZlLCBhbmQgc3RhcnRpbmcgd2l0aCBhIGJvbGRlZCBoZWFkZXI6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBSZWdpc3RyYXRpb24gUHJvY2VzcyoqCgpBbHJpZ2h0LCBob2xkIG9uIGEgc2Vjb25kLiAmIzM0O0hvdyBpcyBpdCByZWdpc3RlcmVkPyYjMzQ7IEkgaW1tZWRpYXRlbHkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZWNoYW5pc20gYmVoaW5kIHRoZSByZWdpc3RyYXRpb24uIElzIGl0IGEgZGlyZWN0IG1hcHBpbmc/IEFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZSBzb3J0IG9mIG1ldGFkYXRhIHN0cnVjdHVyZT8gT3IgaXMgaXQgbW9yZSBhYnN0cmFjdCBhbmQgc2VtYW50aWMtYmFzZWQ/IFRoZSBudWFuY2VzIGhlcmUgYXJlIGNyaXRpY2FsLiBLbm93aW5nIHRoZSB1bmRlcmx5aW5nIHJlZ2lzdHJhdGlvbiBtZXRob2RvbG9neSB3aWxsIGNvbXBsZXRlbHkgZGljdGF0ZSB0aGUgc3Vic2VxdWVudCBzdGVwcyBJIHRha2UgaW4gYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgbWFuaXB1bGF0aW9uLiBJIG5lZWQgdGhlIGRldGFpbC4gVGhlIGFyY2hpdGVjdHVyZSBpbiBxdWVzdGlvbiBsaWtlbHkgcGxheXMgaW50byB0aGlzIHJlZ2lzdHJhdGlvbiBhbmQgdGhlIGhvdy93aHkgb2YgdGhhdCBpcyB3aGF0IEkgbmVlZCB0byB1bnBhY2sgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1ODMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA3MzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IG9mIGEgUENJIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSBmdXp6IGl0IGVmZmVjdGl2ZWx5IHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBpZiBRRU1VIGVtdWxhdGVzIHRoZSBkZXZpY2UuIFVuZm9ydHVuYXRlbHksIFFFTVUgZG9lc24mIzM5O3QgZGlyZWN0bHkgZW11bGF0ZSB0aGUgYHN0bW1hY2AgZGV2aWNlLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIG9mdGVuIHVzZWQgb24gSW50ZWwgUXVhcmsgYW5kIEVsa2hhcnQgTGFrZSBzeXN0ZW1zLgoKVGhlIGltbWVkaWF0ZSBuZXh0IHRob3VnaHQgaXMgdG8gY29uc2lkZXIgU3l6a2FsbGVyLiBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgd29ya2Fyb3VuZCB3aXRoIGEgcHNldWRvLWRldmljZSBvciBhIG1ldGhvZCBsZXZlcmFnaW5nIGBzeXpfcGNpX3NldHVwYD8gQnV0IFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emluZyByZWxpZXMgb24gdGhlIHRhcmdldCBkZXZpY2UgYmVpbmcgZW11bGF0ZWQgd2l0aGluIFFFTVUsIG9yIHBvdGVudGlhbGx5IHRocm91Z2ggdXNlIG9mIGBzeXpfcGNpX3NldHVwYC4gSWYgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGl0LCB0aGVyZSYjMzk7cyBhIHByb2JsZW0uIFRoZSBwcm9tcHQgbWVudGlvbnMgYSBmZXcgY2F0ZWdvcmllcyBvZiB1bnJlYWNoYWJsZSBjb2RlOiBob3QtdW5wbHVnLCBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMsIGFuZCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gSSBxdWlja2x5IHJ1bGUgb3V0IGBzdG1tYWNgIGZhbGxpbmcgaW50byB0aGF0IGxhc3QgY2F0ZWdvcnkg4oCTIGl0JiMzOTtzIGFuIEV0aGVybmV0IE1BQyBkcml2ZXIsIG5vdCBhIHNwZWNpYWxpemVkIGRldmljZS4KCk5vdywgZG9lcyBRRU1VIGVtdWxhdGUgYSBzaW1pbGFyIGRldmljZT8gUUVNVSBkb2VzIGVtdWxhdGUgYGR3bWFjYCBpbiBzb21lIEFSTSBtYWNoaW5lcyDigJMgbGlrZSB0aGUgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCBmaWxlIGZvciB0aGUgc3VuOGkgc3lzdGVtLiBCdXQgc3VuOGkgaGFzIGl0cyBvd24gZW1hYy4gSXQgZG9lcyBlbXVsYXRlIG90aGVyIE1BQ3MgbGlrZSBgaW14X2ZlYy5jYCwgYGNhZGVuY2VfZ2VtLmNgLCBgZnRnbWFjMTAwLmNgLCBhbmQgYG5wY203eHhfZW1jLmNgLiBCdXQgbm8gYHN0bW1hY2AgZW11bGF0aW9uIGlzIHByZXNlbnQuIEluIGZhY3QsIGBzdG1tYWNgIGlzIGEgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyAoRFdNQUMpLgoKU28sIHRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgaGF2ZSBhIGdlbmVyaWMgRFdNQUMgUENJIGRldmljZT8gTm8uIEFuZCBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBtYWdpYyB0aGF0IGNyZWF0ZXMgYW4gZW11bGF0b3IgaWYgUUVNVSBkb2VzIG5vdC4gSXQgY2FuIGluamVjdCBVU0IgZGV2aWNlcyAodmlhIGR1bW15X2hjZC9yYXctZ2FkZ2V0KSwgYnV0IG5vdCBQQ0kgZGV2aWNlcy4gU3l6a2FsbGVyIGxldmVyYWdlcyBgdmhjaWAgZm9yIEJsdWV0b290aCwgYG1hYzgwMjExX2h3c2ltYCBmb3IgV2lGaSwgYHVpbnB1dGAgZm9yIGlucHV0LCBhbmQgYHZpdmlkYCBmb3IgVjRMMi4gQWxsIHNvZnR3YXJlLWJhc2VkIGVtdWxhdGlvbnMuIEl0IGRvZXNuJiMzOTt0IGhhdmUgYSBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgUENJLiBTbywgaWYgYHN0bW1hY2AgaXMgYSBQQ0kgZGV2aWNlLCBJIGFtIHN0dWNrIHVubGVzcyBRRU1VIGVtdWxhdGVzIGl0LgoKQWhhISBXYWl0LCBRRU1VICpkb2VzKiBlbXVsYXRlIERXTUFDIGluIHNvbWUgQVJNIGJvYXJkcyEgVGhpcyBnaXZlcyBtZSBob3BlLiBJIHJlY2FsbCBzZWVpbmcgYGh3L25ldC9kZXNpZ253YXJlLmNgIHdpdGhpbiBRRU1VLiBOb3csIHRvIHZlcmlmeSBpZiBRRU1VIGRvZXMgaW5kZWVkIGVtdWxhdGUgdGhlIGBkZXNpZ253YXJlLmNgIGludGVyZmFjZSB0byBnYWluIGFjY2VzcyB0byB0aGUgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rlc2lnbndhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTY5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFN5emthbGxlciBSZXBvcnQgb24gc3RtbWFjKioKCk9rYXksIHRoZSByZXBvcnQgcG9pbnRzIHRvIGBzdG1tYWNgIGFzIHRoZSBkcml2ZXIgaW52b2x2ZWQuIFJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHN5emthbGxlciBpcyBhY3RpdmVseSBmdXp6aW5nIGBzdG1tYWNgLiBUaGUgY29tbWl0IGF1dGhvciBpcyB0aGF0IGZhbWlsaWFyIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YCBoYW5kbGUsIHdoaWNoIG1lYW5zIHN5emthbGxlciAqZGlkKiBpbmRlZWQgZmluZCBhIGJ1ZyBpbiBgc3RtbWFjYCEgVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhdHRhY2sgdmVjdG9yLiBIb3cgZGlkIHN5emthbGxlciBldmVuICpyZWFjaCogdGhlIGBzdG1tYWNgIGRyaXZlcj8gTXkgZmlyc3QgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIHByb2JhYmx5IGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBtYXliZSBzeXprYWxsZXIgaXMgaW5zdGFudGlhdGluZyBpdCB0aHJvdWdoIGRldmljZSB0cmVlIG92ZXJsYXlzLiBBIG1vcmUgY29tcGxldGUgaW52ZXN0aWdhdGlvbiBpcyBsaWtlbHkgbmVlZGVkIHRob3VnaCwgdGhlcmUgYXJlIG1hbnkgcG9zc2libGUgZW50cnkgcG9pbnRzLiBMZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBzdG1tYWNfcGxhdGZvcm0uY2AgYW5kIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM0MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJgKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3Mgc2VlIHdoYXQgYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJgIGlzIGRvaW5nLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIHNwZWNpZmljIG1vZHVsZSBpcyBpbnRlcmFjdGluZyB3aXRoIHRoZSBwbGF0Zm9ybSBkcml2ZXIgZnJhbWV3b3JrLiBJcyBpdCBhIHN0YW5kYXJkIGltcGxlbWVudGF0aW9uLCBvciBhcmUgdGhlcmUgYW55IGN1c3RvbSBleHRlbnNpb25zIG9yIG92ZXJyaWRlcyBpbiBwbGF5PyBJIHdhbnQgdG8gcXVpY2tseSBldmFsdWF0ZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgcmVkIGZsYWdzIGluIHRlcm1zIG9mIHJlc291cmNlIG1hbmFnZW1lbnQsIGVycm9yIGhhbmRsaW5nLCBvciBpbnRlcnJ1cHQgaGFuZGxpbmcsIGVzcGVjaWFsbHkgbG9va2luZyBhdCB0aGUgcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIGRyaXZlciYjMzk7cyBkZXZpY2UgbWF0Y2ggdGFibGUgaXMgY29ycmVjdGx5IGRlZmluZWQgYW5kIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIGRyaXZlcnMuIEnigJlsbCBiZSBwYXJ0aWN1bGFybHkgZm9jdXNlZCBvbiBob3cgaXQgaGFuZGxlcyBpdHMgZGV2aWNlLXNwZWNpZmljIGRhdGEgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgaWYgdGhlcmUgaXMgYW55LiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFuYXJpb25fZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzItfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMzM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhbmFyaW9uX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTM0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3Y19ldGhfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM3MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGR3Y19ldGhfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzcxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYz0yNzM9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZWljNzcwMF9kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI4MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGVpYzc3MDBfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTY5PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3bWFjX2dlbmVyaWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03Ni19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjc3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZHdtYWNfZ2VuZXJpY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTc4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTM5Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbXhfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQwMC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NDAxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoaW14X2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy00MDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTI3Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbmdlbmljX21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI3OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI4MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGluZ2VuaWNfbWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz0xMzk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW50ZWxfZXRoX3BsYXRfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNDctfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxNDg6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbnRlbF9ldGhfcGxhdF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTE0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9NDk3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGlwcTgwNnhfZ21hY19kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTUwNS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjUwNjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGlwcTgwNnhfZ21hY19kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTUwNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0yMjk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbHMxeF9kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjM1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMzY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihsczF4X2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTc3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGxwYzE4eHhfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy04NS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jOjg2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobHBjMTh4eF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NjcyPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1lZGlhdGVrX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY4MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2ODE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtZWRpYXRla19kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02ODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz04Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZXNvbjZfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtOTAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6OTE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtZXNvbjZfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtOTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTUwNz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZXNvbjhiX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNTE1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NTE2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWVzb244Yl9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUxNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG52dF9kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEzMy19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjEzNDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG52dF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEzNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jPTgwOT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBxY29tX2V0aHFvc19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy04MTYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6ODE3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocWNvbV9ldGhxb3NfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0yMjQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcmVuZXNhc19nYmV0aF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIzMS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIzMjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHJlbmVzYXNfZ2JldGhfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNjM3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHJrX2dtYWNfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTY0NC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNjQ1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocmtfZ21hY19kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz04MT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciByem4xX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtODgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo4OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHJ6bjFfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy05MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0yMjI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgczMyX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMzAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIzMTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHMzMl9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMjMyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz02ODE9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc29jZnBnYV9kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY4OC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjY4OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHNvY2ZwZ2FfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02OTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9ODA9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc29waGdvX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy04OC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM6ODk6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzb3BoZ29fZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTkwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MjE0PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNwYWNlbWl0X2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIyMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMjM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzcGFjZW1pdF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMjQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz0xMzc9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RhcmZpdmVfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTQ1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE0Njptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN0YXJmaXZlX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYz0zMDI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RpX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0zMDktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjMxMDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN0aV9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM9NjcxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN0bTMyX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY3OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo2ODA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdG0zMl9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy02ODEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTQ3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjU1aV9nbWFjMjAwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xNTQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjE1NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjU1aV9nbWFjMjAwX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xNTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjg1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjhpX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyOTQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI5NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjhpX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyOTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYz0xNTY9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3VuN2lfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTYzLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjE2NDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjdpX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTE2NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTQwNT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0ZWdyYV9tZ2JlX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTQxMy19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzo0MTQ6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih0ZWdyYV9tZ2JlX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTQxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jPTI3Mz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0aGVhZF9kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yODAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjgxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodGhlYWRfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHZpc2NvbnRpX2V0aF9kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNjgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjY5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodmlzY29udGlfZXRoX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI3MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxMzUKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiA2NjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAgaW4gUUVNVSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGFib3V0IHBsYXRmb3JtIGRyaXZlcnMsIGJ1dCB0aGVuIEkgcmVtZW1iZXJlZCBgc3l6a2FsbGVyYCBhbmQgaXRzIGFiaWxpdHkgdG8gZnV6eiBQQ0kgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJIHJlY2FsbGVkIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX3NldHVwYCwgYnV0IHRoYXQmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LiBJdCYjMzk7cyBtb3JlIHRoYXQgc3l6a2FsbGVyIGNhbiBmdXp6ICphbnkqIFBDSSBkZXZpY2UgaWYgcHJlc2VudC4gTm93LCB3YWl0LCBpcyBgc3RtbWFjYCByZWxldmFudCBoZXJlPyBJIGtub3cgaXQmIzM5O3MgdXNlZCBpbiBJbnRlbCBRdWFyayBhbmQgRWxraGFydCBMYWtlLCBhbmQgdGhlcmUmIzM5O3MgdGhlIGBzdG1tYWNfcGNpLmNgIGRyaXZlciBmb3IgdGhvc2UuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBEb2VzIFFFTVUgZW11bGF0ZSB0aG9zZT8gTm8sIHByb2JhYmx5IG5vdCBkaXJlY3RseS4gQW5kIHRoZW4gdGhlIHF1ZXN0aW9uIGlzLCBpZiBzeXprYWxsZXIgaXMgcnVubmluZyBvbiBRRU1VLCBob3cgd291bGQgaXQgZXZlbiBmaW5kIGEgUENJIGRldmljZSBsaWtlIHRoaXM/IFRoZSBkZWZhdWx0IGlzIFFFTVUsIG5vdCByZWFsIGhhcmR3YXJlLiBJdCBjb3VsZG4mIzM5O3QgZmluZCBpdCBkaXJlY3RseSB2aWEgYSB2aXJ0dWFsIFBDSSBkZXZpY2UgYmVjYXVzZSBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIGhhcmR3YXJlLiBUaGUgbmV4dCB0aG91Z2h0IHdhcywgcGVyaGFwcyBgc3RtbWFjX3BsYXRmb3JtLmNgPyBBaCwgeWVzLCBzeXprYWxsZXIgY2FuIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzIHZpYSB0aGUgYC9zeXMvZGV2aWNlcy9wbGF0Zm9ybWAgb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMhCgpCdXQgaGFuZyBvbiwgc3l6a2FsbGVyIGFsc28gaGFzIHRoaW5ncyBsaWtlIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlfaWRgLiBTbywgdWx0aW1hdGVseSwgaXQgY2FuIGZ1enogYHN0bW1hY2AgKmlmKiB0aGUgaW5zdGFuY2Ugb2YgYHN0bW1hY2AgZXhpc3RzLgoKVGhlIHByb21wdCwgb2YgY291cnNlLCBwb2ludHMgb3V0IHRoZSBpc3N1ZTogY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBlc3BlY2lhbGx5IGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRoYXQgYXJlIGNhbGxlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLiBJbiB0aGlzIHNwZWNpZmljIGNhc2UsIHRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYC4gQ3J1Y2lhbGx5LCB0aGF0JiMzOTtzIGNhbGxlZCBmcm9tIGBfX3N0bW1hY19yZWxlYXNlYCAod2hpY2ggaXMgdGhlIGBuZG9fc3RvcGAgY2FsbGJhY2spLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfb3BlbmAsIGFuZCBgc3RtbWFjX3N1c3BlbmRgLgoKYF9fc3RtbWFjX3JlbGVhc2VgIGlzIGBuZG9fc3RvcGAsIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyBicm91Z2h0IGRvd24sIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBpcCBsaW5rIHNldCBkZXYgZXRoMCBkb3duYC4gTm93LCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlICppZiogdGhlIGRldmljZSBleGlzdHMuIFRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gdGhlbiBpczogRG9lcyB0aGUgZGV2aWNlIGV4aXN0IGluIFFFTVU/CgpTbywgSSBsb29rZWQgaW50byBRRU1VJiMzOTtzIGRldmljZSBtb2RlbHMuIEkgcmVtZW1iZXJlZCBzb21ldGhpbmcgbGlrZSBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIGJlaW5nIGluIFFFTVUuIFRoYXQmIzM5O3MgZm9yIGBzdW44aS1lbWFjYC4gQnV0IHdhaXQsIGlzbiYjMzk7dCB0aGVyZSBzb21ldGhpbmcgYWJvdXQgYGR3bWFjLXN1bjhpYCBmb3IgYHN0bW1hY2A/IEl0IGxvb2tzIGxpa2UgYGR3bWFjLXN1bjhpLmNgIGlzIHRoZSBvbmUgdGhhdCYjMzk7cyByZWxldmFudC4KClRoZSBrZXkgdGhlbiBpcyB3aGV0aGVyIFFFTVUmIzM5O3MgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBpcyBjb21wYXRpYmxlIHdpdGggYGR3bWFjLXN1bjhpYC4gSSBjaGVja2VkIHRoZSBRRU1VIGNvZGUsIGFuZCBjb25maXJtZWQgdGhhdCBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIHN1cHBvcnRzIGAmIzM0O2FsbHdpbm5lcixzdW44aS1oMy1lbWFjJiMzNDtgLiBBbmQsIGluIHRoZSBMaW51eCBrZXJuZWwsIGBkd21hYy1zdW44aS5jYCBhbHNvIG1hdGNoZXMgYCYjMzQ7YWxsd2lubmVyLHN1bjhpLWgzLWVtYWMmIzM0O2AuIFRoZXJlZm9yZSwgSSBjb25jbHVkZSB0aGF0IFFFTVUgZG9lcyBlbXVsYXRlIHRoZSBoYXJkd2FyZSwgYW5kIHRoZSBjb2RlIHBhdGggaXMgaW5kZWVkIHJlYWNoYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxsd2lubmVyLHN1bjhpLWgzLWVtYWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTI2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW44aV9kd21hY19tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjY5Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2FsbHdpbm5lcixzdW44aS1oMy1lbWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjcwLVx0XHQuZGF0YSA9IFx1MDAyNmVtYWNfdmFyaWFudF9oMyB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc1NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBTVE1NQUMgaW4gUUVNVTogQSBWZXJpZmljYXRpb24gQ2hlY2sqKgoKT2theSwgeWVzLCB0aGlzIGlzIGdyZWF0ISBRRU1VICpkb2VzKiBlbXVsYXRlIHRoZSBgYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNgLCB3aGljaCByZWxpZXMgb24gYGR3bWFjLXN1bjhpLmNgIGFuZCB0aGF0IGluIHR1cm4sIHVzZXMgYHN0bW1hY2AuIEZhbnRhc3RpYywgdGhhdCBtZWFucyBgc3RtbWFjYCAqaXMqIGRlZmluaXRlbHkgYWNjZXNzaWJsZSBpbiB0aGUgUUVNVSBlbnZpcm9ubWVudCEgSSB3YXMgc3RhcnRpbmcgdG8gdGhpbmsgaXQgd291bGRuJiMzOTt0IGJlIGFuZCB0aGF0IHdvdWxkIGhhdmUgYmVlbiBhIG1hc3NpdmUgc2V0YmFjay4KCkhhbmcgb24gYSBzZWNvbmQuLi4gdGhlIHNwZWNpZmljIHBhdGNoIEkmIzM5O20gYW5hbHl6aW5nIGlzIHRhcmdldGluZyBgZHd4Z21hYzJfZG1hLmNgLiBOb3csIHRoYXQgZmlsZSBpcyBhc3NvY2lhdGVkIHdpdGggYGR3eGdtYWMyYCDigJMgc3BlY2lmaWNhbGx5LCBEZXNpZ25XYXJlIFhHTUFDIDIuMTAuIEhvbGQgb24uIElzICp0aGF0KiBjb21wb25lbnQgcmVhY2hhYmxlPyBJcyB0aGUgc2NvcGUgb2YgdGhlIHBhdGNoIHJlbGV2YW50PwoKSSBzaG91bGQgcHJvYmFibHkgcXVpY2tseSB2ZXJpZnkgd2hlcmUgYGR3eGdtYWMyMTBfZG1hX29wc2AgaXMgYWN0dWFsbHkgdXNlZCBhbmQgbWFrZSBzdXJlIHRoYXQgaXQgaXMgc3VwcG9ydGVkLiBHb3R0YSBrZWVwIHRoZSBkZXRhaWxzIHJpZ2h0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkd3hnbWFjMjEwX2RtYV9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oPTQ3MD1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6NDcxOmV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC00NzItZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZGVzY19vcHMgZHd4Z21hYzIxMF9kZXNjX29wcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz02MzY9c3RhdGljIGludCBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNjUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NjUxOmNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy02NTItXHQucmVzZXQgPSBkd3hnbWFjMl9kbWFfcmVzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjU3LVx0XHQuZGVzYyA9IFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjU4Olx0XHQuZG1hID0gXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1OS1cdFx0Lm1hYyA9IFx1MDAyNmR3eGdtYWMyMTBfb3BzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNzktXHRcdC5kZXNjID0gXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyODA6XHRcdC5kbWEgPSBcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjgxLVx0XHQubWFjID0gXHUwMDI2ZHd4bGdtYWMyX29wcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3NTcKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgaHdpZi5jYCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgY29kZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBwcmFjdGljYWwgYXBwcm9hY2guIEJlZm9yZSBkaWdnaW5nIGRlZXAgaW50byB0aGUgYWN0dWFsIGxvZ2ljLCBsZXQmIzM5O3MgZ2V0IGEgaGFuZGxlIG9uIHRoZSBzY29wZS4gSSYjMzk7bGwgbmVlZCB0byBpZGVudGlmeSBhbGwgdGhlIGVudHJpZXMgd2l0aGluIGBod2lmLmNgIHRoYXQgKmFjdHVhbGx5KiB1dGlsaXplIHRoaXMgZnVuY3Rpb24gb3IgZGF0YSBzdHJ1Y3R1cmUgaW4gcXVlc3Rpb24uIFRoYXQmIzM5O3MgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcnMgYW5kIGNvbnN1bWVycyBvZiB0aGlzIGNvZGUgaXMgZnVuZGFtZW50YWwgdG8gZ2F1Z2luZyBpdHMgYnJvYWRlciBpbXBsaWNhdGlvbnMgYW5kIGF2b2lkaW5nIGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cyBmcm9tIGNoYW5nZXMuIFRoaXMgZGVwZW5kZW5jeSBhbmFseXNpcyBpcyB3aGVyZSBJ4oCZbGwgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRcdFx0LmRldl9pZCA9IERXWEdNQUNfSUQsXG4gMjUxOlx0XHRcdC5yZWdzID0ge1xuIDI1MjpcdFx0XHRcdC5wdHBfb2ZmID0gUFRQX1hHTUFDX09GRlNFVCxcbiAyNTM6XHRcdFx0XHQubW1jX29mZiA9IE1NQ19YR01BQ19PRkZTRVQsXG4gMjU0Olx0XHRcdFx0LmVzdF9vZmYgPSBFU1RfWEdNQUNfT0ZGU0VULFxuIDI1NTpcdFx0XHRcdC5mcGVfcmVnID0gXHUwMDI2ZHd4Z21hYzNfZnBlX3JlZyxcbiAyNTY6XHRcdFx0fSxcbiAyNTc6XHRcdFx0LmRlc2MgPSBcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxuIDI1ODpcdFx0XHQuZG1hID0gXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxuIDI1OTpcdFx0XHQubWFjID0gXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXG4gMjYwOlx0XHRcdC52bGFuID0gXHUwMDI2ZHd4Z21hYzIxMF92bGFuX29wcyxcbiAyNjE6XHRcdFx0Lmh3dGltZXN0YW1wID0gXHUwMDI2c3RtbWFjX3B0cCxcbiAyNjI6XHRcdFx0LnB0cCA9IFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxuIDI2MzpcdFx0XHQubW9kZSA9IE5VTEwsXG4gMjY0Olx0XHRcdC50YyA9IFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcbiAyNjU6XHRcdFx0Lm1tYyA9IFx1MDAyNmR3eGdtYWNfbW1jX29wcyxcbiAyNjY6XHRcdFx0LmVzdCA9IFx1MDAyNmR3bWFjNTEwX2VzdF9vcHMsXG4gMjY3Olx0XHRcdC5zZXR1cCA9IGR3eGdtYWMyX3NldHVwLFxuIDI2ODpcdFx0XHQucXVpcmtzID0gTlVMTCxcbiAyNjk6XHRcdH0sIHtcbiAyNzA6XHRcdFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXG4gMjcxOlx0XHRcdC5taW5faWQgPSBEV1hMR01BQ19DT1JFXzJfMDAsXG4gMjcyOlx0XHRcdC5kZXZfaWQgPSBEV1hMR01BQ19JRCxcbiAyNzM6XHRcdFx0LnJlZ3MgPSB7XG4gMjc0Olx0XHRcdFx0LnB0cF9vZmYgPSBQVFBfWEdNQUNfT0ZGU0VULFxuIDI3NTpcdFx0XHRcdC5tbWNfb2ZmID0gTU1DX1hHTUFDX09GRlNFVCxcbiAyNzY6XHRcdFx0XHQuZXN0X29mZiA9IEVTVF9YR01BQ19PRkZTRVQsXG4gMjc3Olx0XHRcdFx0LmZwZV9yZWcgPSBcdTAwMjZkd3hnbWFjM19mcGVfcmVnLFxuIDI3ODpcdFx0XHR9LFxuIDI3OTpcdFx0XHQuZGVzYyA9IFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXG4gMjgwOlx0XHRcdC5kbWEgPSBcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXG4gMjgxOlx0XHRcdC5tYWMgPSBcdTAwMjZkd3hsZ21hYzJfb3BzLFxuIDI4MjpcdFx0XHQudmxhbiA9IFx1MDAyNmR3eGxnbWFjMl92bGFuX29wcyxcbiAyODM6XHRcdFx0Lmh3dGltZXN0YW1wID0gXHUwMDI2c3RtbWFjX3B0cCxcbiAyODQ6XHRcdFx0LnB0cCA9IFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxuIDI4NTpcdFx0XHQubW9kZSA9IE5VTEwsXG4gMjg2Olx0XHRcdC50YyA9IFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcbiAyODc6XHRcdFx0Lm1tYyA9IFx1MDAyNmR3eGdtYWNfbW1jX29wcyxcbiAyODg6XHRcdFx0LmVzdCA9IFx1MDAyNmR3bWFjNTEwX2VzdF9vcHMsXG4gMjg5Olx0XHRcdC5zZXR1cCA9IGR3eGxnbWFjMl9zZXR1cCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3NDAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyBQb3RlbnRpYWwgU3RtbWFjIERyaXZlciBJbXBhY3QqKgoKQWxyaWdodCwgSSBzZWUgdGhlc2UgaWRlbnRpZmllcnMsIGBEV1hHTUFDX0lEYCBhbmQgYERXWExHTUFDX0lEYCwgcG9wcGluZyB1cC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlaXIgY29ubmVjdGlvbiwgYnV0IHRoaXMgcGF0Y2ggYWxzbyB0b3VjaGVzIGBzdG1tYWNfbWFpbi5jYC4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnLiBgc3RtbWFjX21haW4uY2AgaXMgdGhlIGNvcmUsIGdlbmVyaWMgY29kZSBmb3IgYWxsIGBzdG1tYWNgIGRyaXZlcnMuIEFueSBjaGFuZ2UgdGhlcmUgY291bGQgaGF2ZSB3aWRlLXJlYWNoaW5nIGVmZmVjdHMuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gbm90aW5nIHRoZSBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYCBmdW5jdGlvbi4gQW5kIGl0JiMzOTtzIGNhbGxlZCB1bmNvbmRpdGlvbmFsbHkgd2l0aGluIGBzdG1tYWNfbWFpbi5jYC4gU28sIEkgcmVhbGx5IG5lZWQgdG8gY2hlY2sgb3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAgZnJvbSB0aGF0IG1vZHVsZS4gSXQgY291bGQgYmUgYWZmZWN0ZWQsIGFuZCBJIGhhdmUgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1NjksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjU2OTpcdFx0XHRzdG1tYWNfc3RvcF90eF9kbWEocHJpdiwgY2hhbik7XG4yNTcwOlx0fVxuMjU3MTpcdFxuMjU3MjpcdC8qKlxuMjU3MzpcdCAqIHN0bW1hY19kYXRhcGF0aF90ZWFyZG93biAtIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gYXMgcGVyIElQIHNwZWNpZmljYXRpb25cbjI1NzQ6XHQgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXG4yNTc1Olx0ICogRGVzY3JpcHRpb246XG4yNTc2Olx0ICogV2hlbiB0ZWFyZG93biBvcHMgYXJlIGF2YWlsYWJsZSwgZm9sbG93IHRoZSBkYXRhYm9vayBvcmRlcmVkIHRlYXJkb3duXG4yNTc3Olx0ICogc2VxdWVuY2UuXG4yNTc4Olx0ICogRm9sbG93cyB0aGUgbGVnYWN5IHN0b3AgJiM0MzsgTUFDIGRpc2FibGUgZm9yIHZhcmlhbnRzIHdpdGhvdXQgdGhlIGZlYXR1cmUuXG4yNTc5Olx0ICovXG4yNTgwOlx0c3RhdGljIHZvaWQgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbjI1ODE6XHR7XG4yNTgyOlx0XHR1MzIgcnhfY2hhbm5lbHNfY291bnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbjI1ODM6XHRcdHUzMiB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xuMjU4NDpcdFx0dTMyIGNoYW47XG4yNTg1Olx0XG4yNTg2Olx0XHQvKiBTdG9wIGFsbCBUWCBETUEgY2hhbm5lbHMgKi9cbjI1ODc6XHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOylcbjI1ODg6XHRcdFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xuMjU4OTpcdFxuMjU5MDpcdFx0LyogV2FpdCBmb3IgZXZlcnkgVFggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovXG4yNTkxOlx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNldHhfZG1hX3N0b3BwZWQpXG4yNTkyOlx0XHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOylcbjI1OTM6XHRcdFx0XHRzdG1tYWNfdHhfZG1hX3N0b3BwZWQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4pO1xuMjU5NDpcdFxuMjU5NTpcdFx0LyogV2FpdCBmb3IgdGhlIE1UTCBUWCBxdWV1ZXMgdG8gZmluaXNoIHB1c2hpbmcgaW50byB0aGUgTUFDICovXG4yNTk2Olx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNldHhfbXRsX2RyYWluKVxuMjU5NzpcdFx0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspXG4yNTk4Olx0XHRcdFx0c3RtbWFjX3R4X210bF9kcmFpbihwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4yNTk5Olx0XG4yNjAwOlx0XHQvKiBEaXNhYmxlIHRoZSBNQUMgVFggYW5kIFJYICovXG4yNjAxOlx0XHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgZmFsc2UpO1xuMjYwMjpcdFxuMjYwMzpcdFx0LyogV2FpdCBmb3IgdGhlIE1UTCBSWCBxdWV1ZXMgdG8gZHJhaW4gaW50byB0aGUgUlggRE1BICovXG4yNjA0Olx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNlcnhfbXRsX2RyYWluKVxuMjYwNTpcdFx0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspXG4yNjA2Olx0XHRcdFx0c3RtbWFjX3J4X210bF9kcmFpbihwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4yNjA3Olx0XG4yNjA4Olx0XHQvKiBTdG9wIGFsbCBSWCBETUEgY2hhbm5lbHMgKi9cbjI2MDk6XHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOylcbjI2MTA6XHRcdFx0c3RtbWFjX3N0b3BfcnhfZG1hKHByaXYsIGNoYW4pO1xuMjYxMTpcdFxuMjYxMjpcdFx0LyogV2FpdCBmb3IgZXZlcnkgUlggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovXG4yNjEzOlx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNlcnhfZG1hX3N0b3BwZWQpXG4yNjE0Olx0XHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOylcbjI2MTU6XHRcdFx0XHRzdG1tYWNfcnhfZG1hX3N0b3BwZWQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4pO1xuMjYxNjpcdH1cbjI2MTc6XHRcbjI2MTg6XHQvKipcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5ODYKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA2NjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyAtIEEgRGVlcCBEaXZlKioKCk9rYXksIHNvIGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gIGlzIHRoZSBjb3JlIG9mIHRoaXMsIGl0JiMzOTtzIGdlbmVyaWMgYW5kIGNhbGxlZCBieSBhbGwgdmFyaWFudHMuIElmIGEgc3BlY2lmaWMgdmFyaWFudCBkb2VzbiYjMzk7dCBoYXZlIHRoZSBleHBsaWNpdCBjaGVja3MgZm9yIGB0eF9kbWFfc3RvcHBlZGAgYW5kIGZyaWVuZHMsIGl0IGp1c3Qgc2tpcHMgdGhlIHdhaXQgYW5kIHByb2NlZWRzIHdpdGggdGhlIHN0b3AgYW5kIE1BQyBkaXNhYmxlLiBUaGlzIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBidXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIGl0IHdvcnRoIGZ1enppbmc/CgpUaGUgcGF0Y2ggaXRzZWxmIGludHJvZHVjZXMgYSB0ZWFyZG93biBzZXF1ZW5jZS4gSXQgd2FpdHMgZm9yIERNQSBhbmQgTVRMIHF1ZXVlcyB0byBkcmFpbi4gVGhpcyBmdW5kYW1lbnRhbGx5IGNoYW5nZXMgdGhlIHN5bmNocm9uaXphdGlvbiBhbmQgdGVhcmRvd24gcHJvY2Vzcy4gIENydWNpYWxseSwgaXQgbW9kaWZpZXMgYF9fc3RtbWFjX3JlbGVhc2VgICh3aGljaCBpcyBjYWxsZWQgZHVyaW5nIGBuZG9fc3RvcGApLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfb3BlbmAsIGFuZCBgc3RtbWFjX3N1c3BlbmRgLiBUaGF0JiMzOTtzIGZ1bmN0aW9uYWwuIFRoaXMgaW50cm9kdWNlcyBwb3RlbnRpYWwgZGVhZGxvY2tzIGlmIHRoZSBoYXJkd2FyZSBkb2VzbiYjMzk7dCBjb29wZXJhdGUsIG9yIGl0IGNvdWxkICpmaXgqIGV4aXN0aW5nIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLgoKTm93LCB0aG9zZSBgcmVhZGxfcG9sbF90aW1lb3V0YCBjYWxscyBpbiBgZHd4Z21hYzJfZG1hLmNgIC0gdGhleSYjMzk7bGwgbG9vcCBmb3IgdXAgdG8gMTBtcy4gSWYgdGhlIGhhcmR3YXJlIGlzIGVtdWxhdGVkLCB3ZSBtaWdodCBzZWUgdGltZW91dHMsIGJ1dCBub3QgbmVjZXNzYXJpbHkgYSBjcmFzaC4gSG93ZXZlciwgdGhlICpjaGFuZ2UgaW4gdGVhcmRvd24gb3JkZXIqIGFuZCB0aGUgKmFkZGl0aW9uIG9mIHBvbGxpbmcqIG1ha2UgdGhpcyB3b3J0aCBhIGNsb3NlciBsb29rLgoKSGFuZyBvbi4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgLi4uIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MmIzM0Oy4gQnV0IGBfX3N0bW1hY19yZWxlYXNlYCBpcyB0aWVkIHRvIGBuZG9fc3RvcGAsIHdoaWNoIHJ1bnMgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIGJyb3VnaHQgZG93biB2aWEgYGlwIGxpbmsgc2V0IGRldiBldGgwIGRvd25gLiBUaGF0JiMzOTtzICpub3QqIGEgZHJpdmVyIHVuYmluZCBvcGVyYXRpb247IGl0JiMzOTtzIGEgbmV0d29yayBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlLiBTeXprYWxsZXIgaGl0cyB0aGF0IGtpbmQgb2YgdGhpbmcgY29uc3RhbnRseS4gQW5kIHdlIGFsc28gaGF2ZSBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgd2hpY2ggYXJlIHRyaWdnZXJlZCBieSBYRFAgcHJvZ3JhbSBhdHRhY2htZW50IGFuZCBkZXRhY2htZW50LiBUaGlzIGlzIGRlZmluaXRlbHkgZnV6emFibGUgdW5kZXIgbm9ybWFsIG9wZXJhdGlvbnMhCgpMZXQmIzM5O3MgbmFpbCBkb3duIHRob3NlIGZvY3VzIHN5bWJvbHM6CgoqICAgYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAKKiAgIGBzdG1tYWNfeGRwX29wZW5gCiogICBgc3RtbWFjX3hkcF9yZWxlYXNlYAoqICAgYHN0bW1hY19zdXNwZW5kYAoqICAgYGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkYAoqICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmAKKiAgIGBkd3hnbWFjMl9yeF9tdGxfZHJhaW5gCiogICBgZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRgCgpXYWl0LCBgc3RtbWFjX3N1c3BlbmRgIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBjYWxsYmFjay4gU3l6a2FsbGVyIGNhbiBlYXNpbHkgdHJpZ2dlciBzdXNwZW5kL3Jlc3VtZSBjeWNsZXMuICBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYXJlIHRoZSBYRFAgc2V0dXAvdGVhcmRvd24gcG9pbnRzLiAgQW5kIGFsdGhvdWdoIGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBpdCYjMzk7cyBjYWxsZWQgZnJvbSB0aG9zZSB2ZXJ5IGltcG9ydGFudCBlbnRyeSBwb2ludHM6IGBfX3N0bW1hY19yZWxlYXNlYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGFuZCBgc3RtbWFjX3N1c3BlbmRgLiBIb2xkIG9uLCBgX19zdG1tYWNfcmVsZWFzZWAgaXMgc3RhdGljLCB3aGljaCBtZWFucyBgc3RtbWFjX3JlbGVhc2VgICh0aGUgYG5kb19zdG9wYCBjYWxsYmFjaykgaXMgdGhlIHB1YmxpYyBlbnRyeSBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3JlbGVhc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9OTM5PXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtOTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo5NTM6c3RhdGljIHZvaWQgc3RtbWFjX3JlbGVhc2VfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtOTU0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI4NzI9c3RhdGljIGludCBzdG1tYWNfdHhfY2xlYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgYnVkZ2V0LCB1MzIgcXVldWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yOTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyOTkzOlx0XHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIHAsIHByaXYtXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjk5NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQxODI9c3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MjI2Olx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjI3LWluaXRfZXJyb3I6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MjMxPXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyODEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyODI6c3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjgzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQzMDY6XHRzdG1tYWNfcmVsZWFzZV9wdHAocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MzEyLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MzEzOiAqICBzdG1tYWNfcmVsZWFzZSAtIGNsb3NlIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDMxNC0gKiAgQGRldiA6IGRldmljZSBwb2ludGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDMxNy0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDMxODpzdGF0aWMgaW50IHN0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMTkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDMyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDMyOTpcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDMzMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxNDk9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxODM6XHRcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczNTI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczNTUtXHQubmRvX2ZlYXR1cmVzX2NoZWNrID0gc3RtbWFjX2ZlYXR1cmVzX2NoZWNrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzU2Olx0Lm5kb19zdG9wID0gc3RtbWFjX3JlbGVhc2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczNTctXHQubmRvX2NoYW5nZV9tdHUgPSBzdG1tYWNfY2hhbmdlX210dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc2Mzk9aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzY0NC1cdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2NDU6XHRcdHN0bW1hY19yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjY0PWludCBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhfc2l6ZSwgdTMyIHR4X3NpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjY5LVx0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzY3MDpcdFx0c3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzY3MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxMTIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgU1RNTUFDIFN5bWJvbCBWaXNpYmlsaXR5KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gbG9va2luZyBhdCBgc3RtbWFjX3JlbGVhc2VgIHdoaWNoLCBhcyBJIHN1c3BlY3RlZCwgY2FsbHMgYF9fc3RtbWFjX3JlbGVhc2VgLiBUaGF0IG1lYW5zIEkgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHMgdG8gdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgY29kZSBwYXRoczogYHN0bW1hY19yZWxlYXNlYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBhbmQgYHN0bW1hY19zdXNwZW5kYC4gQWxzbywgSSBuZWVkIHRvIGluY2x1ZGUgdGhlc2UgcmVsYXRlZCBETUEgZnVuY3Rpb25zOiBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgLCBgZHd4Z21hYzJfdHhfbXRsX2RyYWluYCwgYGR3eGdtYWMyX3J4X210bF9kcmFpbmAsIGFuZCBgZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRgLgoKSG9sZCBvbi4uLiB0aG9zZSBgZHd4Z21hYzJfKmAgZnVuY3Rpb25zLiBUaGV5JiMzOTtyZSBkZWZpbmVkIGFzIGBzdGF0aWNgIHdpdGhpbiBgZHd4Z21hYzJfZG1hLmNgLiBNeSBpbml0aWFsIGNvbmNlcm4gaXMgd2hldGhlciB0aGV5IG1pZ2h0IGJlIGlubGluZWQuIEkgbmVlZCB0byBiZSBzdXJlIEkgY2FuIGFjdHVhbGx5IHRyYWNrIHRoZW0gYXMgZGlzdGluY3Qgc3ltYm9scy4KCkFoLCByaWdodC4gTG9va2luZyBhdCB0aGUgY29kZSwgdGhvc2UgZnVuY3Rpb25zIGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYSBgc3RydWN0IHN0bW1hY19kbWFfb3BzYC4gVGhhdCBjb25maXJtcyB0aGV5ICphcmVuJiMzOTt0KiBpbmxpbmVkLiBUaGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBiZWNhdXNlIHRoZXkmIzM5O3JlIGJlaW5nIHBvaW50ZWQgdG8gYnkgYSBzdHJ1Y3QuIEdvb2QsIHRoYXQgbWFrZXMgbXkgam9iIGVhc2llci4gVGhleSYjMzk7cmUgY2xlYXJseSBpbnRlbmRlZCB0byBiZSBjYWxsZWQgdmlhIHRob3NlIGZ1bmN0aW9uIHBvaW50ZXJzLgoKTm93LCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5zdXJlIHRoZSBjb3JyZWN0IGNvZGUgcGF0aCBpcyBiZWluZyBjb21waWxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19FVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODk1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBgU1RNTUFDX0VUSGAgbW9kdWxlLiBCZWZvcmUgZGl2aW5nIGludG8gY29kZSwgSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCByZWFsbHkgdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGZpcnN0LiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUsIGlkZW50aWZ5aW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBhbmQsIG9mIGNvdXJzZSwgdHJvdWJsZXNob290aW5nIGFueSBmdXR1cmUgaXNzdWVzLiBXaGVyZSBkb2VzIGl0IHB1bGwgaXRzIGRhdGEgZnJvbT8gV2hhdCBvdGhlciBtb2R1bGVzIGRvZXMgaXQgbmVlZCB0byBmdW5jdGlvbiBwcm9wZXJseT8gQW55IGV4dGVybmFsIGxpYnJhcmllcz8gVGltZSB0byBtYXAgdGhpcyBvdXQgbWV0aG9kaWNhbGx5LiBJIG5lZWQgdG8gYmUgc3VyZSBJJiMzOTttIHRoaW5raW5nIG9mIGV2ZXJ5dGhpbmcgYW5kIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBzaW1wbGUgdGhhdCB3aWxsIGJpdGUgbWUgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTVE1NQUNfRVRIXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA2Olx0XHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xuICAgNzpcdFx0c2VsZWN0IE1JSVxuICAgODpcdFx0c2VsZWN0IFBDU19YUENTXG4gICA5Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDEwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuICAxMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxuICAxNjpcdFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxuICAxNzpcdFxuICAxODpcdGlmIFNUTU1BQ19FVEhcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjM1MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipEaWdnaW5nIGludG8gdGhlIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBFdGhlcm5ldCBkcml2ZXIgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IGBTVE1NQUNfRVRIYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuIEJ1dCBob2xkIG9uLCBJIGp1c3Qgc2F3IHNvbWV0aGluZyBhYm91dCBgZHdtYWMtc3VuOGlgLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlci4gTm93LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIGtub3cgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIGJ1dCB3aGF0IGNvbmZpZ3VyYXRpb24gc2V0dGluZyAqZW5hYmxlcyogdGhhdCBwYXJ0aWN1bGFyIGRyaXZlcj8gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgZHdtYWMtc3VuOGlgIHRvIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24sIHNvIEkgY2FuIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgYW5kIHdoZXJlIGl0IGZpdHMgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaGlzIGxldmVsIG9mIGRldGFpbCBpcyBjcml0aWNhbCBmb3IgcHJvcGVyIHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEV01BQ19TVU44SSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNzc9Y29uZmlnIERXTUFDX1NVTlhJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI4ODpjb25maWcgRFdNQUNfU1VOOElcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjg5LVx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIHN1bjhpIEdNQUMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjcwNwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEV01BQ19TVU44SSBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgYERXTUFDX1NVTjhJYCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpcyBiZWluZyBzZXQgdXAsIGVzcGVjaWFsbHkgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGludGVyYWN0aW9ucyBvbiB0aGUgU3VuOGkgcGxhdGZvcm0uIEkmIzM5O20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3Iga2V5IHJlZ2lzdGVycyBhbmQgdGhlaXIgZXhwZWN0ZWQgdmFsdWVzLiBJJiMzOTtsbCBiZSBzY3J1dGluaXppbmcgdGhlIGludGVycnVwdCBtYXBwaW5nLCBETUEgY29uZmlndXJhdGlvbiwgYW5kIGFueSBwb3dlciBtYW5hZ2VtZW50IHNldHRpbmdzIOKAkyB0aG9zZSBhcmUgdXN1YWxseSB0aGUgdHJvdWJsZSBzcG90cy4gSSYjMzk7bGwgYmUgdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZXMgdG8gdGhlIHVuZGVybHlpbmcgUEhZIGFuZCB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlLCBiZWNhdXNlIGFueSBtaXNtYXRjaCB0aGVyZSBpcyBnb2luZyB0byBjYXVzZSBpbW1lZGlhdGUgaXNzdWVzLiBBbnkgY2xvY2sgY29uZmlndXJhdGlvbiBpcyBjcml0aWNhbCwgc28gSSYjMzk7bGwgYmUgZHJpbGxpbmcgZG93biBpbnRvIHRoZSBjbG9jayB0cmVlIHRvIGNvbmZpcm0gdGhhdCBldmVyeXRoaW5nIGlzIGJlaW5nIGRyaXZlbiBhdCB0aGUgcmlnaHQgZnJlcXVlbmNpZXMgZm9yIHRoZSBEV01BQyYjMzk7cyBjYXBhYmlsaXRpZXMuIEZpbmFsbHksIEkmIzM5O2xsIGJlIGNyb3NzLXJlZmVyZW5jaW5nIHRoaXMgY29uZmlnIGFnYWluc3QgdGhlIGRhdGFzaGVldCBhbmQgYW55IGV4aXN0aW5nIGVycmF0YSBmb3IgdGhlIFN1bjhpIFNvQ3M7IGtub3dpbmcgdGhlIGhhcmR3YXJlJiMzOTtzIHF1aXJrcyBpcyBlc3NlbnRpYWwgdG8gYSBzbW9vdGggZGVwbG95bWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjg4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyODg6XHRjb25maWcgRFdNQUNfU1VOOElcbiAyODk6XHRcdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBzdW44aSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAyOTA6XHRcdGRlZmF1bHQgQVJDSF9TVU5YSVxuIDI5MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxuIDI5MjpcdFx0c2VsZWN0IE1ESU9fQlVTX01VWFxuIDI5MzpcdFx0aGVscFxuIDI5NDpcdFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgSDMgQTgzVCBBNjQgRU1BQyBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyOTU6XHRcbiAyOTY6XHRcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcbiAyOTc6XHRcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MTcyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYERXTUFDX1NVTjhJYCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gaW5pdGlhbGx5IHRoaW5raW5nIGBEV01BQ19TVU44SWAgc2VlbXMgbGlrZSBhIHNvbGlkIGNvbmZpZ3VyYXRpb24gdG8gZW5hYmxlLiBIb3dldmVyLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gRG9lcyB0aGlzIGNvbmZpZ3VyYXRpb24gYWN0dWFsbHkgbGV2ZXJhZ2UgdGhlIGBkd3hnbWFjMmAgaGFyZHdhcmU/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgZHd4Z21hYzJgIHNwZWNpZmljYWxseSByZWxhdGVzIHRvIFhHTUFDICgxMCBHaWdhYml0KSBjYXBhYmlsaXRpZXMsIHdoZXJlYXMgdGhlIGBzdW44aWAgcGxhdGZvcm0gaXMgZm9jdXNlZCBvbiBHTUFDICgxIEdpZ2FiaXQpLgoKSG9sZCBvbiwgdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgZHd4Z21hYzJfZG1hLmNgLCB3aGljaCwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGlzIGRpcmVjdGx5IGFzc29jaWF0ZWQgd2l0aCBgZHd4Z21hYzJgLiBUaGF0IHJhaXNlcyBhIGZsYWcuIFNvLCB3aGF0IHBsYXRmb3JtIGRyaXZlciBpbiB0aGUgY29kZSBiYXNlIGlzIGFjdHVhbGx5ICp1c2luZyogdGhlIGBkd3hnbWFjMmAgaW1wbGVtZW50YXRpb24/IFRoaXMgZGlzY3JlcGFuY3kgbmVlZHMgY2xhcmlmaWNhdGlvbi4KClJpZ2h0LCB0aW1lIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB0cmFjayBkb3duIGhvdyBgRFdYR01BQ19JRGAgb3IgYERXWExHTUFDX0lEYCBhcmUgYmVpbmcgdXRpbGl6ZWQgd2l0aGluIHRoZSBkcml2ZXIgc3lzdGVtLiBPciwgbW9yZSBicm9hZGx5LCB0byBkZXRlcm1pbmUgd2hpY2ggZHJpdmVycyBhcmUgc2VsZWN0aW5nIFhHTUFDIGZ1bmN0aW9uYWxpdHkuIFRoaXMgc2hvdWxkIGhlbHAgbWUgcmVjb25jaWxlIHRoZSBjb2RlJiMzOTtzIGludGVuZGVkIHVzZSB3aXRoIHRoZSBtb2RpZmljYXRpb25zIGJlaW5nIG1hZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RXWEdNQUNfSUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00NS0vKiBEZXZpY2UgSUQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjQ2OiNkZWZpbmUgRFdYR01BQ19JRFx0XHQweDc2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00Ny0jZGVmaW5lIERXWExHTUFDX0lEXHRcdDB4Mjdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDktXHRcdC5taW5faWQgPSBEV1hHTUFDX0NPUkVfMl8xMCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTA6XHRcdC5kZXZfaWQgPSBEV1hHTUFDX0lELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1MS1cdFx0LnJlZ3MgPSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODY1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBIYXJkd2FyZSBJZGVudGlmaWNhdGlvbiBhbmQgRHJpdmVyIEFzc29jaWF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhpcyBgaHdpZi5jYCBmaWxlIGFuZCBob3cgaXQgdGllcyBpbnRvIGhhcmR3YXJlIGlkZW50aWZpY2F0aW9uLiBJdCBsb29rcyBsaWtlIGl0IGNvbmZpcm1zIHRoYXQgdGhlIGhhcmR3YXJlIElEIHJlYWQgZnJvbSB0aGUgTUFDIHJlZ2lzdGVycyBpcyBjb3JyZWN0bHkgbWF0Y2hlZC4gVGhpcyBtZWFucyBhbnkgcGxhdGZvcm0gZHJpdmVyIHRoYXQgYmluZHMgdG8gYSBkZXZpY2Ugd2l0aCBgRFdYR01BQ19JRGAgaXMgZ29pbmcgdG8gdXRpbGl6ZSB0aGUgYGR3eGdtYWMyYCBkcml2ZXIsIHdoaWNoIG1ha2VzIHNlbnNlLiBOb3cgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggcGxhdGZvcm0gZHJpdmVycyBhcmUgZGVzaWduZWQgdG8gd29yayB3aXRoIFhHTUFDIHNwZWNpZmljYWxseS4gTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgdG8gaW52ZXN0aWdhdGUgZHJpdmVycyB0aGF0IHVzZSBzb21ldGhpbmcgbGlrZSBgRFdNQUNfQ09SRV9YR01BQ2Agb3IgdGhlIG1vcmUgZ2VuZXJhbCBgc3RtbWFjX3Byb2JlX2NvbmZpZ19kdGAgZnVuY3Rpb24sIHBlcmhhcHMgc29tZXRoaW5nIGVsc2UgdG9vLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQgY29ubmVjdHMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4Z21hYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODE2MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVW5jb25kaXRpb25hbCBDb21waWxhdGlvbiBDb25jZXJucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBhbmQgc29tZXRoaW5nJiMzOTtzIHBpbmdpbmcgbXkgcmFkYXIuIEl0IHNlZW1zIGxpa2UgdGhlIG1vZHVsZSBgZHd4Z21hYzJgIGdldHMgY29tcGlsZWQgbm8gbWF0dGVyIHdoYXQsIGFzIGxvbmcgYXMgYFNUTU1BQ19FVEhgIGlzIGRlZmluZWQuIFRoYXQmIzM5O3MgYSBsaXR0bGXigKYgdW5leHBlY3RlZC4gVHlwaWNhbGx5LCB5b3Ugd2FudCBtb3JlIGdyYW51bGFyIGNvbnRyb2wgb3ZlciB3aGF0IGdldHMgYnVpbHQgaW50byB0aGUga2VybmVsLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGhhcmR3YXJlIGRyaXZlcnMuIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgaW1wbGljYXRpb25zLgoKSXMgYGR3eGdtYWMyYCAqdHJ1bHkqIGVzc2VudGlhbCBmb3IgYWxsIGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIGBTVE1NQUNfRVRIYD8gT3IgaXMgdGhlcmUgYSBtb3JlIHNwZWNpZmljIGRlcGVuZGVuY3kgdGhhdCBzaG91bGQgYmUgY2hlY2tlZD8gSWYgaXQmIzM5O3MgYWx3YXlzIGluY2x1ZGVkLCBldmVuIHdoZW4gaXQmIzM5O3Mgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSwgd2UmIzM5O3JlIGludHJvZHVjaW5nIHVubmVjZXNzYXJ5IGNvZGUgYmxvYXQgYW5kIHBvdGVudGlhbGx5IGluY3JlYXNpbmcgdGhlIGF0dGFjayBzdXJmYWNlLiBXZSBhbHNvIG5lZWQgdG8gYmUgbWluZGZ1bCBvZiByZXNvdXJjZXMgdXNlZCBvbiBlbWJlZGRlZCBzeXN0ZW1zLgoKSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIHVuY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZXhpc3RzLiBJcyB0aGVyZSBhIGhpc3RvcmljYWwgcmVhc29uPyBEb2VzIGl0IHJlbHkgb24gc29tZSBpbXBsaWNpdCBkZXBlbmRlbmN5PyBDb3VsZCB0aGlzIGJlIGEgYnVnPyBBcmUgdGhlcmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyBzb21ld2hlcmUgdGhhdCBhcmUgYmVpbmcgb3Zlcmxvb2tlZD8gVGhlIG5leHQgc3RlcHMgYXJlIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIHdoeSB0aGlzIGlzIHNldCB1cCB0aGlzIHdheSwgbG9vayBmb3IgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMsIGFuZCBtYWtlIHN1cmUgdGhhdCBpdCBhbGwgbWFrZXMgc2Vuc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3eGdtYWMyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mz1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXHRcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTctXHQgICAgICBkd21hYzRfZG1hLm8gZHdtYWM0X2xpYi5vIGR3bWFjNF9jb3JlLm8gZHdtYWM1Lm8gaHdpZi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo4Olx0ICAgICAgc3RtbWFjX3RjLm8gZHd4Z21hYzJfY29yZS5vIGR3eGdtYWMyX2RtYS5vIGR3eGdtYWMyX2Rlc2NzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTktXHQgICAgICBzdG1tYWNfeGRwLm8gc3RtbWFjX2VzdC5vIHN0bW1hY19mcGUubyBzdG1tYWNfdmxhbi5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NzM2CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBDaGFpbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBtb2R1bGUsIGBkd3hnbWFjMl9kbWEub2AsIGFuZCBpdCYjMzk7cyBhbHdheXMgYnVpbHQgd2hlbiBgU1RNTUFDX0VUSGAgaXMgZGVmaW5lZC4gRXhjZWxsZW50LiBTbywgbXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gZW5zdXJpbmcgYFNUTU1BQ19FVEhgIGlzIHNldCBjb3JyZWN0bHkuIE5vdywgdG8gZ2V0IHRoZXJlLCBJIGtub3cgSSBuZWVkIGEgcGxhdGZvcm0gb3IgUENJIGRyaXZlciB0aGF0IHByb3ZpZGVzIGEgZGV2aWNlIHdpdGggdGhlIGBEV1hHTUFDX0lEYC4gTm8gcHJvYmxlbSwgSSByZW1lbWJlciBzZWVpbmcgYHN0bW1hY19wY2kuY2AgaW4gdGhlIHRyZWUuIFBlcmZlY3QsIHRoZXJlJiMzOTtzIGEgUENJIGRyaXZlci4gQnV0LCBkb2VzIGl0IGFjdHVhbGx5IHN1cHBvcnQgdGhlIFhHTUFDIHZhcmlhbnQ/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byBgc3RtbWFjX3BjaS5jYCBhbmQgc2VlIHdoYXQgaXQmIzM5O3MgZG9pbmcuIExldCYjMzk7cyBzZWUgaWYgaXQmIzM5O3MgZ290IHRoZSByaWdodCBkZXZpY2UgSURzIGFuZCBmZWF0dXJlcyBiYWtlZCBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RldmljZV9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTk6XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xOTI9c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNC1cdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5Mzk2CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgYHN0bW1hY19pZF90YWJsZWAqKgoKUmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgc3RtbWFjX2lkX3RhYmxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0YWJsZSwgaXRzIHN0cnVjdHVyZSwgYW5kIHdoYXQgaXQmIzM5O3MgZGVmaW5pbmcuIEkgZXhwZWN0IGl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIGRyaXZlciwgbGlrZWx5IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gdXNlZCB0byBpZGVudGlmeSBzcGVjaWZpYyBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGNvbnRyb2xsZXJzLiBJdCYjMzk7cyBwcm9iYWJseSBhIGRldmljZSBJRCB0YWJsZSwgdXNlZCBieSB0aGUgZHJpdmVyIHRvIG1hdGNoIGFnYWluc3QgZGV0ZWN0ZWQgaGFyZHdhcmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqVmVuZG9yIGFuZCBEZXZpY2UgSURzOioqIFRoZXNlIGFyZSB0aGUgYmVkcm9jayBmb3IgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24uIEkmIzM5O2xsIGV4cGVjdCB0byBzZWUgcGFpcnMgb3IgZ3JvdXBzIG9mIElEcyB0aGF0IG1hcCBkaXJlY3RseSB0byB0aGUgc3BlY2lmaWMgU1RNTUFDIGhhcmR3YXJlIHZhcmlhbnRzLgoqICAgKipNb2R1bGUgQWxpYXNlczoqKiBJJiMzOTtsbCBiZSBjdXJpb3VzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYWxpYXNlcyBvciBpZGVudGlmaWVycyBkZWZpbmVkIHRvIGhlbHAgd2l0aCBtb2R1bGUgbG9hZGluZyBhbmQgZGV2aWNlIHByb2JpbmcgaW4gdmFyaW91cyBzeXN0ZW1zLgoqICAgKipEcml2ZXIgRGF0YToqKiBJdCYjMzk7cyB1bmxpa2VseSwgYnV0IG5vdCBpbXBvc3NpYmxlLCB0aGF0IHNvbWUgc3BlY2lmaWMgZHJpdmVyLXJlbGF0ZWQgaW5mb3JtYXRpb24gaXMgZW1iZWRkZWQgaGVyZSwgdG9vLiBQZXJoYXBzIHNvbWUgY29uZmlndXJhdGlvbiBkZWZhdWx0cyBvciBmbGFncyBwZXIgaGFyZHdhcmUgdmFyaWFudC4gSXQgaXMgaW1wb3J0YW50IHRvIGtub3cgd2hpY2ggaW5mb3JtYXRpb24sIGFuZCB0byBhc3Nlc3Mgd2hldGhlciBpdCBjb3VsZCBiZSBiZXR0ZXIgZGVzY3JpYmVkIGluIGEgc2VwYXJhdGUgc3RydWN0dXJlLgoqICAgKipQbGF0Zm9ybSBEZXBlbmRlbmNpZXM6KiogSSYjMzk7bGwgYmUgY2hlY2tpbmcgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBpbmZvcm1hdGlvbi4gSXQgaXMgaW1wb3J0YW50IHRvIGtub3cgaWYgdGhlIHRhYmxlIHN1cHBvcnRzIG11bHRpcGxlIHBsYXRmb3JtIHZlcnNpb25zLCBvciBoYXMgZGlmZmVyZW50IHJ1bGVzLgoqICAgKipSZXZpc2lvbnM6KiogR29vZCBwcmFjdGljZSB3b3VsZCBiZSB0byBpbmNsdWRlIHJldmlzaW9uIGRhdGEgdGhhdCBjYW4gZGlzdGluZ3Vpc2ggdmFyaWFudHMgYW5kIGVuc3VyZSB0aGUgZHJpdmVyIGZ1bmN0aW9ucyBjb3JyZWN0bHkgd2l0aCBhIHBhcnRpY3VsYXIgc2lsaWNvbiByZXZpc2lvbi4KClVuZGVyc3RhbmRpbmcgdGhlIGluZm9ybWF0aW9uIHdpdGhpbiB0aGlzIHRhYmxlIGlzIGNydWNpYWwgdG8gdGhlIGRyaXZlciYjMzk7cyBhYmlsaXR5IHRvIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlIGNvcnJlY3RseS4gSXQmIzM5O3MgdGhlIGZpcnN0IHN0ZXAgaW4gZW5zdXJpbmcgcHJvcGVyIGRldmljZSBkZXRlY3Rpb24gYW5kIGFzc29jaWF0aW9uLiBNeSBnb2FsIGlzIHRvIGdyYXNwIGhvdyBpdCB3b3JrcyBhbmQgd2hhdCBpdCYjMzk7cyB0ZWxsaW5nIHRoZSBkcml2ZXIgYWJvdXQgc3VwcG9ydGVkIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcdFx0MHgxMTA4XG4gMjAxOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXHRcdDB4NzEwMlxuIDIwMjpcdFxuIDIwMzpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbiAyMDQ6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG4gMjA1Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbiAyMDY6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcbiAyMDc6XHRcdHt9XG4gMjA4Olx0fTtcbiAyMDk6XHRcbiAyMTA6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbiAyMTE6XHRcbiAyMTI6XHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XG4gMjEzOlx0XHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxuIDIxNDpcdFx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDE3NwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDY5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiBhIFN5emthbGxlci1Gb3VuZCBCdWcgaW4gU1RNTUFDKioKCk9rYXksIHNvIEkgc2VlIGBzdG1tYWNfcGNpX2luZm9gIGFuZCBgc25wc19nbWFjNV9wY2lfaW5mb2AgbWVudGlvbmVkLiBJbnRlcmVzdGluZy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBob3cgc3l6a2FsbGVyIG1pZ2h0IGhhdmUgdHJpZ2dlcmVkIHRoaXMsIGFuZCBJIGJyaWVmbHkgY29uc2lkZXIgdGhlIFBDSSBkZXZpY2UgYW5nbGUuIERvZXMgc3l6a2FsbGVyIGV2ZW4gZnV6eiBQQ0kgZGV2aWNlcyBkaXJlY3RseSwgb3IgZG9lcyBpdCByZWx5IG9uIFFFTVUgZW11bGF0aW9uIG9yIGBzeXpfcGNpX3NldHVwYD8gVGhlbiBJIHJlbWVtYmVyIHRoYXQgZG9lc24mIzM5O3QgcmVhbGx5IG1hdHRlciBoZXJlOyB0aGUga2V5IGlzIHRoYXQgc3l6a2FsbGVyICpmb3VuZCogdGhpcyBidWcuCgpJIHF1aWNrbHkgc2hpZnQgdG8gdGhpbmtpbmcgYWJvdXQgdGhlIHBhdGh3YXkuIENvdWxkIGl0IGhhdmUgYmVlbiB2aWEgYHN0bW1hY19wbGF0Zm9ybWA/IFN5emthbGxlciBjYW4gaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgdGhyb3VnaCBkZXZpY2UgdHJlZSBvdmVybGF5cyBvciBgL3N5cy9kZXZpY2VzL3BsYXRmb3JtYCwgcmlnaHQ/IFRoZW4gSSB0aGluayBhYm91dCB0aGUgcHNldWRvLXN5c2NhbGxzIEkmIzM5O20gZmFtaWxpYXIgd2l0aCwgbGlrZSBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYC4gSXMgdGhlcmUgYW4gYHN0bW1hY2Agc3BlY2lmaWMgcHNldWRvLXN5c2NhbGw/IE5vLCB3YWl0LCB0aGF0JiMzOTtzIG5vdCByZWxldmFudC4gVGhlIHByb21wdCBjbGVhcmx5IHN0YXRlcyB0aGF0IHN5emthbGxlciBpbnRlcm5hbHMsIHNwZWNpZmljYWxseSBzeXpsYW5nIGRlc2NyaXB0aW9ucywgYXJlIG5vdCB3aGF0IEkgbmVlZCB0byBmb2N1cyBvbi4KClRoZSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhhdCBzeXprYWxsZXIgcmVhY2hlZCBpdC4gSXQmIzM5O3MgYSBuZXR3b3JrIGRyaXZlciBidWcuIFRoYXQmIzM5O3Mgd2hhdCBtYXR0ZXJzLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBtb2RpZmllcyBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYC4gVGhpcyBmdW5jdGlvbiBpcyB1bmNvbmRpdGlvbmFsbHkgY2FsbGVkIGluIGBzdG1tYWNfbWFpbi5jYCBmb3IgKmFsbCogdmFyaWFudHMgb2YgYHN0bW1hY2AuIEV2ZW4gaWYgYSBwYXJ0aWN1bGFyIHZhcmlhbnQsIGxpa2UgYGR3eGdtYWMyYCwgZG9lc24mIzM5O3QgaGF2ZSBgdHhfZG1hX3N0b3BwZWRgLCBpdCBzdGlsbCBleGVjdXRlcyB0aGUgcmVzdCBvZiBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgdG8gdGhlIERNQSBoYW5kbGluZyBhbmQgTUFDIGRpc2FibGUgbG9naWMuIFByZXZpb3VzbHkgaXQgd2FzIGhhbmRsZWQgZGlmZmVyZW50bHk7IG5vdyBpdCYjMzk7czogc3RvcCBUWCBETUEsIGRpc2FibGUgTUFDLCBzdG9wIFJYIERNQS4gVGhpcyBvcmRlciBpcyBhIGNydWNpYWwgc2hpZnQuCgpUaGlzIGFmZmVjdHMgKmFsbCogYHN0bW1hY2AgZGV2aWNlcy4gVGhhdCBpbmNsdWRlcyB0aGUgYHN1bjhpLWVtYWNgLCB3aGljaCBpcywgY29udmVuaWVudGx5LCBlbXVsYXRlZCBpbiBRRU1VISBUaGF0IG1ha2VzIGl0IGluY3JlZGlibHkgdmFsdWFibGUgZm9yIGZ1enppbmcuIFRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHdvcnRoIG15IHRpbWUuCgpUaW1lIHRvIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbnMuIEkmIzM5O2xsIG5lZWQgYFNUTU1BQ19FVEhgLCBvZiBjb3Vyc2UuIFNpbmNlIHRoZSBgc3VuOGktZW1hY2AgaXMgaW4gUUVNVSwgSSYjMzk7bGwgZGVmaW5pdGVseSBlbmFibGUgYERXTUFDX1NVTjhJYC4gTWlnaHQgYXMgd2VsbCBlbmFibGUgYERXTUFDX0dFTkVSSUNgIHRvbywgZm9yIGdvb2QgbWVhc3VyZS4gQW5kIG9mIGNvdXJzZSwgYFNUTU1BQ19QQ0lgIHRvIGNvdmVyIHRoZSBQQ0kgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX1BDSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTU5MgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIHRoZSBleHBlcnQgYW5kIGNvbnNpZGVyaW5nIGhvdyBJJiMzOTtkIGFwcHJvYWNoIGl0OgoKKipDaGVja2luZyBgRFdNQUNfR0VORVJJQ2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiAmIzM0O0xldCYjMzk7cyBjaGVjayBgRFdNQUNfR0VORVJJQ2AmIzM0OyDigJMgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGludGVybmFsIHByb2Nlc3Mga2lja3Mgb2ZmIHdpdGggYSBxdWljayBtZW50YWwgc2Nhbi4gSSYjMzk7bSBpbW1lZGlhdGVseSB0aGlua2luZywgJiMzNDtPa2F5LCBgRFdNQUNfR0VORVJJQ2AuIFRoYXQgbGlrZWx5IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBnZW5lcmljIERhdGEgV2FyZWhvdXNlIE1hbmFnZW1lbnQgQWNjZXNzIENvbnRyb2wgKERXTUFDKSBzZXR1cC4gT3IgcGVyaGFwcyBhIG1hY3JvIHRoYXQgd291bGQgcGVyZm9ybSB0aGUgZ2VuZXJpYyB3b3JrJiMzNDsKCkkmIzM5O20gcHJvYmFibHkgYXNzZXNzaW5nIHRoZSBjb250ZXh0LiBXaGF0IHByb2JsZW0gYXJlIHdlIHRyeWluZyB0byBzb2x2ZT8gV2h5IGFyZSB3ZSBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCAqdGhpcyogZWxlbWVudD8gSXMgdGhlcmUgYSByZXBvcnRlZCBlcnJvcj8gT3IgYW0gSSBqdXN0IGRvaW5nIGEgcm91dGluZSBjaGVjaz8gJiMzNDtHZW5lcmljJiMzNDsgY291bGQgc2lnbmlmeSBhIGJhc2UgbGV2ZWwsIGEgZGVmYXVsdCBzZXR0aW5nLCBvciBhIGJyb2FkIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSB1c2UtY2FzZSBmb3IgdGhlIHRlcm0uCgpUaGUgbmV4dCB0aGluZyBJJiMzOTtkIGRvIGlzIGxpa2VseSBwdWxsIHVwIGRvY3VtZW50YXRpb24gaWYgSSBoYXZlIGl0IGF2YWlsYWJsZS4gT3IgSSB3b3VsZCBvcGVuIHVwIG15IElERSBhbmQgc3RhcnQgc2VhcmNoaW5nIHRocm91Z2ggdGhlIGNvZGUgYmFzZS4gSSB3aWxsIGJlIGxvb2tpbmcgZm9yOgoKKiAgICoqRGVmaW5pdGlvbioqOiBXaGVyZSBpcyB0aGlzIHZhcmlhYmxlL2Z1bmN0aW9uL21vZHVsZSBkZWZpbmVkPyBXaGF0IGV4YWN0bHkgZG9lcyBpdCByZXByZXNlbnQ/IFdoYXQmIzM5O3MgdGhlIGltcGxlbWVudGF0aW9uPwoqICAgKipEZXBlbmRlbmNpZXMqKjogV2hhdCBvdGhlciBlbGVtZW50cyByZWx5IG9uIGBEV01BQ19HRU5FUklDYD8gQXJlIHRoZXJlIHJlbGF0ZWQgY29tcG9uZW50cyBvciB1cHN0cmVhbS9kb3duc3RyZWFtIGRlcGVuZGVuY2llcz8gSWYgdGhpcyBmYWlscywgd2hhdCBvdGhlciBzeXN0ZW1zIGNvdWxkIGJlIGltcGFjdGVkPwoqICAgKipDb25maWd1cmF0aW9uKio6IERvZXMgYERXTUFDX0dFTkVSSUNgIGhhdmUgYXNzb2NpYXRlZCBwYXJhbWV0ZXJzIG9yIHNldHRpbmdzPyBBcmUgdGhlcmUgYW55IGRlZmF1bHQgdmFsdWVzIHRoYXQgbWlnaHQgYmUgY3J1Y2lhbD8KKiAgICoqRXJyb3IgSGFuZGxpbmcqKjogSXMgdGhlcmUgYW55IGV4Y2VwdGlvbiBoYW5kbGluZyBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGlzPyBXaGF0IGhhcHBlbnMgaWYgdGhpcyBmYWlscyBvciByZXR1cm5zIGFuIHVuZXhwZWN0ZWQgcmVzdWx0PyBBcmUgdGhlcmUgYW55IGxvZ3M/CiogICAqKlNlY3VyaXR5IENvbnRleHQqKjogSG93IGRvZXMgdGhlIERXTUFDIHN5c3RlbSBpbnRlcmFjdCB3aXRoIHNlY3VyaXR5IHByb3RvY29scyBhbmQgbWVhc3VyZXM/CgpUaGUgb2JqZWN0aXZlIGhlcmUgaXMgc2ltcGxlOiB0byBncmFzcCB0aGUgcHVycG9zZSwgZnVuY3Rpb25hbGl0eSwgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhpcyBwaWVjZS4gVWx0aW1hdGVseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgc3lzdGVtIGFuZCBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgYmVoYXZpbmcgYXMgZXhwZWN0ZWQgb3IgaWYgdGhlcmUmIzM5O3MgYW4gYXJlYSB0aGF0IG5lZWRzIG15IGZvY3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFdNQUNfR0VORVJJQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00ND1jb25maWcgRFdNQUNfRFdDX1FPU19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo1Mjpjb25maWcgRFdNQUNfR0VORVJJQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjIzMgoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQ2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBTVE1NQUMgRHJpdmVyIFRlYXJkb3duKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbnMgdGhhdCBuZWVkIGVuYWJsaW5nOiBgU1RNTUFDX0VUSGAsIGBEV01BQ19TVU44SWAsIGBEV01BQ19HRU5FUklDYCwgYW5kIGBTVE1NQUNfUENJYC4gTm90aGluZyB0b28gc3VycHJpc2luZyB0aGVyZTsgaXQmIzM5O3MgdGhlIHVzdWFsIHN1c3BlY3RzIHdoZW4gd29ya2luZyB3aXRoIHRoaXMgZHJpdmVyLgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydDogYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAuIEkgcmVtZW1iZXIgdGhhdCBmdW5jdGlvbi4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYSBmZXcga2V5IHBsYWNlczogYHN0bW1hY19yZWxlYXNlYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBhbmQgYHN0bW1hY19zdXNwZW5kYC4gT2theSwgdGltZSB0byBsaXN0IG15IGZvY2FsIHBvaW50czoKCiogICBgc3RtbWFjX3JlbGVhc2VgCiogICBgc3RtbWFjX3hkcF9yZWxlYXNlYAoqICAgYHN0bW1hY194ZHBfb3BlbmAKKiAgIGBzdG1tYWNfc3VzcGVuZGAKKiAgIGBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZGAKKiAgIGBkd3hnbWFjMl90eF9tdGxfZHJhaW5gCiogICBgZHd4Z21hYzJfcnhfbXRsX2RyYWluYAoqICAgYGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkYAoKQWxyaWdodCwgYHN0bW1hY19yZWxlYXNlYCBpcyB0aGUgYG5kb19zdG9wYCBjYWxsYmFjay4gVGhhdCBtYWtlcyBpdCBhIGhpZ2gtcHJpb3JpdHkgdGFyZ2V0IGZvciBhbmFseXNpcywgZ2l2ZW4gaXRzIHJvbGUgaW4gc2h1dHRpbmcgdGhpbmdzIGRvd24uIGBzdG1tYWNfeGRwX29wZW5gIGFuZCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhcmUgY2xlYXJseSBYRFAtcmVsYXRlZCwgYW5kIGBzdG1tYWNfc3VzcGVuZGAgaGFuZGxlcyB0aGUgc3lzdGVtIHN1c3BlbmQuIFRoZW4gdGhlcmUgYXJlIHRoZSBuZXcgZnVuY3Rpb25zIHdpdGggdGhlICYjMzQ7ZHd4Z21hYzImIzM0OyBwcmVmaXgsIGFkZGVkIGJ5IHRoZSBwYXRjaC4KCk5vdywgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayBob3cgYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAgd29ya3MuIElzIGl0IHN0YXRpYyBhbmQgbGlrZWx5IHRvIGJlIGlubGluZWQ/IEl0JiMzOTtzIHN0YXRpYywgd2hpY2ggaXMgZ29vZC4gSG93ZXZlciwgaXQmIzM5O3MgcHJvYmFibHkgcHJldHR5IGxhcmdlLCBzbyBpbmxpbmluZyBpcyB1bmxpa2VseS4gU28gSSYjMzk7bGwgZm9jdXMgb24gdGhlIGNhbGxlcnMgaW5zdGVhZC4gSXQmIzM5O3MgY2FsbGVkIGJ5IGBfX3N0bW1hY19yZWxlYXNlYCwgd2hpY2ggaXMgc3RhdGljLCBhbmQgaW4gdHVybiB1c2VkIGJ5IGBzdG1tYWNfcmVsZWFzZWAsIGBzdG1tYWNfY2hhbmdlX210dWAsIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AsIGFuZCBgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1gLiBIYW5nIG9uLi4uIGBfX3N0bW1hY19yZWxlYXNlYCBpcyAqaXRzZWxmKiBjYWxsZWQgYnkgYHN0bW1hY19yZWxlYXNlYC4gT2theSwgSSYjMzk7bGwgc3RpY2sgd2l0aCBgc3RtbWFjX3JlbGVhc2VgIGFzIG15IHByaW1hcnkgZm9jdXMuCgpPaCwgYW5kIHdhaXQsIGBzdG1tYWNfeGRwX29wZW5gIGFuZCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhcmUgbm90IHN0YXRpYyEgVGhhdCBtaWdodCBiZSBpbXBvcnRhbnQgbGF0ZXIsIGZvciBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfeGRwX29wZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTEwMj1pbnQgc3RtbWFjX3hkcF9zZXRfcHJvZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTM0LVx0aWYgKGlmX3J1bm5pbmcgXHUwMDI2XHUwMDI2IG5lZWRfdXBkYXRlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjEzNTpcdFx0c3RtbWFjX3hkcF9vcGVuKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTM2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzUxOAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIE1vZHVsZSBJbml0aWFsaXphdGlvbiAtIEEgUXVpY2sgUmVmcmVzaGVyKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgU1RNTUFDIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIFhEUCBpbXBsZW1lbnRhdGlvbiwgYW5kIEkmIzM5O20gYSBiaXQgc3VycHJpc2VkLiBNeSBpbml0aWFsIGV4cGVjdGF0aW9uIHdhcyB0aGF0IHRoZSBYRFAtcmVsYXRlZCBpbml0aWFsaXphdGlvbiB3b3VsZCBiZSB0dWNrZWQgYXdheSBpbiBpdHMgb3duIGRlZGljYXRlZCBzb3VyY2UgZmlsZSwgeW91IGtub3csIGZvciBiZXR0ZXIgbW9kdWxhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LiBCdXQgaGFuZyBvbi4uLiBgc3RtbWFjX3hkcF9vcGVuYC4uLiB0aGF0JiMzOTtzIGFjdHVhbGx5ICppbiogYHN0bW1hY19tYWluLmNgPyBJbnRlcmVzdGluZy4gSSB3b3VsZCBoYXZlIGV4cGVjdGVkIGEgbW9yZSBtb2R1bGFyIHN0cnVjdHVyZSwgcGVyaGFwcyBzb21ldGhpbmcgbGlrZSBgc3RtbWFjX3hkcC5jYC4gSXQmIzM5O3Mgbm90IGluaGVyZW50bHkgYmFkLCBidXQgaXQgZG9lcyBtYWtlIG1lIHdvbmRlciBhYm91dCB0aGUgb3ZlcmFsbCBkZXNpZ24gY2hvaWNlcywgdGhlIGhpc3RvcmljYWwgY29udGV4dCwgYW5kIHBvdGVudGlhbCBmdXR1cmUgbWFpbnRhaW5hYmlsaXR5LCBhbmQgaXQgd2lsbCB0YWtlIHNvbWUgdGltZSB0byByZXZpZXcuIExldCBtZSByZS1leGFtaW5lIHRoZSBmaWxlIHN0cnVjdHVyZSBhZ2Fpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxNDE9dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxNzE6aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTcyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM5NDcKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgU1RNMzJNQUMgRHJpdmVyIFN0YXRpYyBEZWNsYXJhdGlvbnMqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgY29uY2VybiB3YXMgd2hldGhlciB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIHdlcmUgZGVjbGFyZWQgd2l0aGluIGBzdG1tYWNfbWFpbi5jYCBhbmQgd2VyZSBhbHNvIHN0YXRpYy4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhleSAqYXJlKiBsb2NhdGVkIGluIGBzdG1tYWNfbWFpbi5jYCwgYW5kIGltcG9ydGFudGx5LCB0aGV5JiMzOTtyZSAqbm90KiBzdGF0aWMuIFRoaXMgaGFzIGltcGxpY2F0aW9ucyBmb3IgcG90ZW50aWFsIHZpc2liaWxpdHkgYW5kIGxpbmtpbmcsIHdoaWNoIGFsaWducyB3aXRoIGhvdyBJJiMzOTtkIGV4cGVjdCB0aGlzIGRyaXZlciB0byBiZSBzdHJ1Y3R1cmVkLiBHaXZlbiB0aGlzIGluaXRpYWwgZmluZGluZywgaXQgbWFrZXMgc2Vuc2UgdG8gY29uZmlybSB3aGV0aGVyIGBzdG1tYWNfc3VzcGVuZGAgKmlzKiBkZWNsYXJlZCBzdGF0aWMsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXImIzM5O3Mgc3RhdGUgYW5kIGNvbnRleHQgYXJlIG1hbmFnZWQgZHVyaW5nIHN5c3RlbSBzdXNwZW5kIG9wZXJhdGlvbnMuIFRoYXQgd2lsbCBkZXRlcm1pbmUgd2hldGhlciB0aGUgc3VzcGVuZCBmdW5jdGlvbiBpcyBhdmFpbGFibGUgdG8gb3RoZXIgbW9kdWxlcyBvciBpcyBpbnRlcm5hbCB0byB0aGUgYHN0bW1hY19tYWluLmNgIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19zdXNwZW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyMDk9RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9yZW1vdmUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIxMS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODIxMjogKiBzdG1tYWNfc3VzcGVuZCAtIHN1c3BlbmQgY2FsbGJhY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIxMy0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIxNy0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODIxODppbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjE5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyNjctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MjY4OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19zdXNwZW5kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI2OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgzOTk9RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04NDAxLS8qIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIEVYUE9SVF9HUExfU0lNUExFX0RFVl9QTV9PUFMoKSB3aGVuIENPTkZJR19QTT1uICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjg0MDI6REVGSU5FX1NJTVBMRV9ERVZfUE1fT1BTKHN0bW1hY19zaW1wbGVfcG1fb3BzLCBzdG1tYWNfc3VzcGVuZCwgc3RtbWFjX3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTg0MDMtRVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3NpbXBsZV9wbV9vcHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDc4NgoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgTW9kdWxlJiMzOTtzIFN1c3BlbnNpb24gYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBzdG1tYWNfc3VzcGVuZGAgKmlzKiBpbmRlZWQgZXhwb3J0ZWQsIHRoYXQmIzM5O3MgZ29vZC4gTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhpcyBzdXNwZW5zaW9uIHByb2Nlc3MuIEkmIzM5O20gc2VlaW5nOgoKKiAgIGBzdG1tYWNfcmVsZWFzZWAKKiAgIGBzdG1tYWNfeGRwX3JlbGVhc2VgCiogICBgc3RtbWFjX3hkcF9vcGVuYAoqICAgYHN0bW1hY19zdXNwZW5kYCAtIG9idmlvdXNseSBhIGNlbnRyYWwgcGFydCBvZiB0aGlzLgoqICAgYGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkYAoqICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmAKKiAgIGBkd3hnbWFjMl9yeF9tdGxfZHJhaW5gCiogICBgZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRgCgpJJiMzOTttIG1ha2luZyBhIG1lbnRhbCBub3RlIG9mIGFsbCB0aGVzZSBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5IGFyZSBhbGwgaW1wb3J0YW50IHRvIHRoZSBwcm9jZXNzLgoKTm93LCBJJiMzOTttIHRoaW5raW5nLCBhcmUgdGhlcmUgYW55ICpvdGhlciogZnVuY3Rpb25zIGluIHBsYXkgdGhhdCBtaWdodCBiZSBpbnZvbHZlZCBvciBoYXZlIGJlZW4gbW9kaWZpZWQ/IEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrLgoKTXkgc3VzcGljaW9uIGlzIHRoYXQgdGhlcmUgbWlnaHQgYmUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gRE1BIGNvbnRyb2wuIExldCYjMzk7cyBkZWx2ZSBpbnRvIGBkd3hnbWFjMl9kbWEuY2AuIFllcywgaGVyZSB3ZSBnbzogSSBzZWUgYGR3eGdtYWMyX2RtYV9zdGFydF90eGAsIGBkd3hnbWFjMl9kbWFfc3RvcF90eGAsIGBkd3hnbWFjMl9kbWFfc3RhcnRfcnhgLCBhbmQgYGR3eGdtYWMyX2RtYV9zdG9wX3J4YC4gVGhlc2UgRE1BIGZ1bmN0aW9ucyBhcmUgZGVmaW5pdGVseSByZWxldmFudCB0byBzdXNwZW5zaW9uIGFuZCByZXN1bXB0aW9uLiBTbywgdGhlIG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGNvbmZpcm0gaWYgdGhlc2Ugc3BlY2lmaWMgRE1BIGZ1bmN0aW9ucyBhcmUgc3RhdGljLCB0byBkZXRlcm1pbmUgdGhlaXIgc2NvcGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3eGdtYWMyX2RtYV9zdGFydF90eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTIzNj1zdGF0aWMgdm9pZCBkd3hnbWFjMl9kaXNhYmxlX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTI0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjI1MDpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMjUxLVx0XHRcdFx0ICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9NjUxPWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNjYyLVx0LmRpc2FibGVfZG1hX2lycSA9IGR3eGdtYWMyX2Rpc2FibGVfZG1hX2lycSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjY2MzpcdC5zdGFydF90eCA9IGR3eGdtYWMyX2RtYV9zdGFydF90eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTY2NC1cdC5zdG9wX3R4ID0gZHd4Z21hYzJfZG1hX3N0b3BfdHgsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1ODAzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgVGhpbmtpbmcgb24gRE1BIE9wZXJhdGlvbnMgYW5kIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIERNQSBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgdGhvc2UgYXNzb2NpYXRlZCB3aXRoIGBkd3hnbWFjMjEwX2RtYV9vcHNgLiBUaGV5JiMzOTtyZSBzdGF0aWMsIGJ1dCB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcywgc28gdGhleSYjMzk7cmUgZGVmaW5pdGVseSBub3QgaW5saW5lZC4gVGhhdCBtZWFucyB3ZSBjYW4gc2FmZWx5IGFkZCB0aGVtIHRvIHRoZSBmb2N1cyBzeW1ib2xzLiBJJiMzOTtsbCBhZGQgYGR3eGdtYWMyX2RtYV9zdGFydF90eGAsIGBkd3hnbWFjMl9kbWFfc3RvcF90eGAsIGBkd3hnbWFjMl9kbWFfc3RhcnRfcnhgLCBhbmQgYGR3eGdtYWMyX2RtYV9zdG9wX3J4YCB0byB0aGUgbGlzdC4KCk5vdywgbGV0IG1lIGdvIGJhY2sgYW5kIHJldmlldyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYWdhaW46IGBTVE1NQUNfRVRIYCwgYERXTUFDX1NVTjhJYCwgYERXTUFDX0dFTkVSSUNgLCBhbmQgYFNUTU1BQ19QQ0lgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBjb3ZlcmVkLgoKSG1tLCB3YWl0IGEgbWludXRlLCBkb2VzIGBEV01BQ19TVU44SWAgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzPyBMZXQgbWUgc2VlLi4uIHllcywgaXQgZGVwZW5kcyBvbiBgT0YgJmFtcDsmYW1wOyAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpYC4gIFN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhpcy4gSWYgd2UganVzdCBwcm92aWRlIGBEV01BQ19TVU44SWAsIGl0JiMzOTtsbCBlbmFibGUgaXQgaWYgdGhvc2UgZGVwZW5kZW5jaWVzIGFyZSBtZXQuIEkgY291bGQgYWRkIGBDT01QSUxFX1RFU1RgIGV4cGxpY2l0bHkgdG8gYmUgc3VyZSwgYnV0IFN5emthbGxlciB1c3VhbGx5IGVuYWJsZXMgdGhhdCBhbnl3YXkuIE5vIG5lZWQgZm9yIHRoYXQuIEFscmlnaHQsIGxldCYjMzk7cyBhbHNvIGNoZWNrIGBTVE1NQUNfUENJYCYjMzk7cyBkZXBlbmRlbmNpZXMuIEFoLCBpdCBkZXBlbmRzIG9uIGBQQ0kgJmFtcDsmYW1wOyBTVE1NQUNfRVRIYC4gT2theSwgbm90ZWQuIEFuZCBgRFdNQUNfR0VORVJJQ2A/ICBUaGF0IGRlcGVuZHMgb24gYFNUTU1BQ19FVEhgLiBHb29kLCBzbyB3ZSYjMzk7cmUgc2V0LgoKU28sIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgY29uZmlybWVkIGFzOiBgU1RNTUFDX0VUSGAsIGBEV01BQ19TVU44SWAsIGBEV01BQ19HRU5FUklDYCwgYFNUTU1BQ19QQ0lgLgoKQWxyaWdodCwgbGV0JiMzOTtzIGdvIGJhY2sgdG8gdGhvc2UgZm9jdXMgc3ltYm9scy4gSSYjMzk7dmUgZ290OiBgc3RtbWFjX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfb3BlbmAsIGBzdG1tYWNfc3VzcGVuZGAsIGBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZGAsIGBkd3hnbWFjMl90eF9tdGxfZHJhaW5gLCBgZHd4Z21hYzJfcnhfbXRsX2RyYWluYCwgYGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkYCwgYW5kIHRoZW4gdGhlIG5ldyBvbmVzIEkgYWRkZWQ6IGBkd3hnbWFjMl9kbWFfc3RhcnRfdHhgLCBgZHd4Z21hYzJfZG1hX3N0b3BfdHhgLCBgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4YCwgYGR3eGdtYWMyX2RtYV9zdG9wX3J4YC4KCldhaXQgYSBzZWNvbmQsIGBzdG1tYWNfcmVsZWFzZWAgaXMgZXNzZW50aWFsbHkgYG5kb19zdG9wYCwgd2hpY2ggaXMgYSBjb21tb24gcGF0aC4gVGhlIG5vdGVzIHNheSB0byAmIzM0O2F2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zJiMzNDsuIElzIGBzdG1tYWNfcmVsZWFzZWAgYSBob3QtcGF0aD8gTm8sIGl0JiMzOTtzIG9ubHkgY2FsbGVkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBicm91Z2h0IGRvd24sIG5vdCBkdXJpbmcgcmVndWxhciBvcGVyYXRpb24uIFNpbWlsYXJseSwgYHN0bW1hY194ZHBfb3BlbmAgaXMgbm90IGEgaG90LXBhdGggLSBvbmx5IGNhbGxlZCB3aGVuIGF0dGFjaGluZyBhbiBYRFAgcHJvZ3JhbS4gV2hhdCBhYm91dCBgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4YD8gIFllcywgdGhpcyBvbmUgaXMgdXNlZCB0byBzdGFydCB0aGUgVFggRE1BLCB0aGF0IGNvdWxkIGJlIG1vcmUgaW50ZXJlc3RpbmcuIExldCYjMzk7cyBzZWUuLi53aGVuIGlzIGl0IGFjdHVhbGx5IGNhbGxlZD8gTmVlZCB0byBjaGVjayB3aGVyZSB0aGUgYHN0YXJ0X3R4YCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YXJ0X3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0zNjI9c3RhdGljIHZvaWQgc3VuOGlfZHdtYWNfZGlzYWJsZV9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTM3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6Mzc2OnN0YXRpYyB2b2lkIHN1bjhpX2R3bWFjX2RtYV9zdGFydF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTM3Ny1cdFx0XHRcdCAgICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9NTU0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgc3VuOGlfZHdtYWNfZG1hX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTU2NC1cdC5kaXNhYmxlX2RtYV9pcnEgPSBzdW44aV9kd21hY19kaXNhYmxlX2RtYV9pcnEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjU2NTpcdC5zdGFydF90eCA9IHN1bjhpX2R3bWFjX2RtYV9zdGFydF90eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtNTY2LVx0LnN0b3BfdHggPSBzdW44aV9kd21hY19kbWFfc3RvcF90eCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmM9MjUzPWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd21hYzEwMDBfZG1hX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmMtMjY1LVx0LmRpc2FibGVfZG1hX2lycSA9IGR3bWFjX2Rpc2FibGVfZG1hX2lycSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYzoyNjY6XHQuc3RhcnRfdHggPSBkd21hY19kbWFfc3RhcnRfdHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmMtMjY3LVx0LnN0b3BfdHggPSBkd21hY19kbWFfc3RvcF90eCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9kbWEuYz0xMDk9Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3bWFjMTAwX2RtYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDBfZG1hLmMtMTE5LVx0LmRpc2FibGVfZG1hX2lycSA9IGR3bWFjX2Rpc2FibGVfZG1hX2lycSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2RtYS5jOjEyMDpcdC5zdGFydF90eCA9IGR3bWFjX2RtYV9zdGFydF90eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2RtYS5jLTEyMS1cdC5zdG9wX3R4ID0gZHdtYWNfZG1hX3N0b3BfdHgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jPTU0Nj1jb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHdtYWM0X2RtYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jLTU1Ny1cdC5kaXNhYmxlX2RtYV9pcnEgPSBkd21hYzRfZGlzYWJsZV9kbWFfaXJxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jOjU1ODpcdC5zdGFydF90eCA9IGR3bWFjNF9kbWFfc3RhcnRfdHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMtNTU5LVx0LnN0b3BfdHggPSBkd21hYzRfZG1hX3N0b3BfdHgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jPTU3NT1jb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHdtYWM0MTBfZG1hX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMtNTg2LVx0LmRpc2FibGVfZG1hX2lycSA9IGR3bWFjNF9kaXNhYmxlX2RtYV9pcnEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM6NTg3Olx0LnN0YXJ0X3R4ID0gZHdtYWM0X2RtYV9zdGFydF90eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy01ODgtXHQuc3RvcF90eCA9IGR3bWFjNF9kbWFfc3RvcF90eCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmg9MTc5PXZvaWQgZHdtYWM0X2Rpc2FibGVfZG1hX2lycShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5oLTE4MC1cdFx0XHQgICAgdTMyIGNoYW4sIGJvb2wgcngsIGJvb2wgdHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5oOjE4MTp2b2lkIGR3bWFjNF9kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuaC0xODItXHRcdFx0IHUzMiBjaGFuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfbGliLmM9Mzc9dm9pZCBkd21hYzRfc2V0X3R4X3RhaWxfcHRyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jOjQ1OnZvaWQgZHdtYWM0X2RtYV9zdGFydF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jLTQ2LVx0XHRcdCB1MzIgY2hhbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hY19kbWEuaD0xNDk9dm9pZCBkd21hY19kaXNhYmxlX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjX2RtYS5oLTE1MC1cdFx0XHQgICB1MzIgY2hhbiwgYm9vbCByeCwgYm9vbCB0eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hY19kbWEuaDoxNTE6dm9pZCBkd21hY19kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjX2RtYS5oLTE1Mi1cdFx0XHR1MzIgY2hhbik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWNfbGliLmM9NTQ9dm9pZCBkd21hY19kaXNhYmxlX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hY19saWIuYy02Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjX2xpYi5jOjY3OnZvaWQgZHdtYWNfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hY19saWIuYy02OC1cdFx0XHR1MzIgY2hhbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0yMzY9c3RhdGljIHZvaWQgZHd4Z21hYzJfZGlzYWJsZV9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0yNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoyNTA6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTI1MS1cdFx0XHRcdCAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTY1MT1jb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTY2Mi1cdC5kaXNhYmxlX2RtYV9pcnEgPSBkd3hnbWFjMl9kaXNhYmxlX2RtYV9pcnEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo2NjM6XHQuc3RhcnRfdHggPSBkd3hnbWFjMl9kbWFfc3RhcnRfdHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy02NjQtXHQuc3RvcF90eCA9IGR3eGdtYWMyX2RtYV9zdG9wX3R4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaD0xNjc9c3RydWN0IHN0bW1hY19kbWFfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtMTk3LVx0XHRcdFx0dTMyIGNoYW4sIGJvb2wgcngsIGJvb2wgdHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjE5ODpcdHZvaWQgKCpzdGFydF90eCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC0xOTktXHRcdFx0IHUzMiBjaGFuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtMjY4LVx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGRpc2FibGVfZG1hX2lycSwgX19wcml2LCBfX2FyZ3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6MjY5OiNkZWZpbmUgc3RtbWFjX3N0YXJ0X3R4KF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjI3MDpcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBzdGFydF90eCwgX19wcml2LCBfX2FyZ3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtMjcxLSNkZWZpbmUgc3RtbWFjX3N0b3BfdHgoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNDcyPXN0YXRpYyB2b2lkIHN0bW1hY19zdGFydF9yeF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgY2hhbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0NzgtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI0Nzk6ICogc3RtbWFjX3N0YXJ0X3R4X2RtYSAtIHN0YXJ0IFRYIERNQSBjaGFubmVsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0ODAtICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ4NC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjQ4NTpzdGF0aWMgdm9pZCBzdG1tYWNfc3RhcnRfdHhfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGNoYW4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0ODYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNDg3LVx0bmV0ZGV2X2RiZyhwcml2LVx1MDAzZWRldiwgXCYjMzQ7RE1BIFRYIHByb2Nlc3NlcyBzdGFydGVkIGluIGNoYW5uZWwgJWRcXG5cJiMzNDssIGNoYW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNDg4Olx0c3RtbWFjX3N0YXJ0X3R4KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBjaGFuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ4OS19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNTQwPXN0YXRpYyB2b2lkIHN0bW1hY19zdGFydF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI1NDktXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI1NTA6XHRcdHN0bW1hY19zdGFydF90eF9kbWEocHJpdiwgY2hhbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI1NTEtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzA2MT1zdGF0aWMgdm9pZCBzdG1tYWNfdHhfZXJyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGNoYW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMDcyLVx0XHRcdCAgICB0eF9xLVx1MDAzZWRtYV90eF9waHksIGNoYW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozMDczOlx0c3RtbWFjX3N0YXJ0X3R4X2RtYShwcml2LCBjaGFuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzA3NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxMDM9dm9pZCBzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzEzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzEzNDpcdHN0bW1hY19zdGFydF90eF9kbWEocHJpdiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTM1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDc1OQoJCQkJCQkJb3V0cHV0OiAzMjYKCQkJCQkJCXRob3VnaHRzOiA1MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgRm9jdXMgU3ltYm9scyBhbmQgUGF0Y2ggU2NvcGUqKgoKT2theSwgbGV0JiMzOTtzIHNvbGlkaWZ5IHRoaXMgYW5hbHlzaXMuIEl0IGxvb2tzIGxpa2UgYHN0bW1hY19zdGFydF90eF9kbWFgIGlzIGNhbGxlZCBmcm9tIGEgZmV3IHBsYWNlcywgYnV0IG5vdCBvbiAqZXZlcnkqIHBhY2tldCB0cmFuc21pc3Npb24uIEl0JiMzOTtzIG1vcmUgb2YgYSBzZXR1cCwgZXJyb3IgaGFuZGxpbmcsIGFuZCBxdWV1ZSBlbmFibGUgZnVuY3Rpb24uIFNvLCBgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4YCBpc24mIzM5O3QgYSBob3QgcGF0aCDigJMgd2hpY2ggYWN0dWFsbHkgbWFrZXMgaXQgYSAqZ29vZCogc3ltYm9sIHRvIGZvY3VzIG9uLiBJdCYjMzk7cyBpbnZva2VkIGluIHRoZXNlIGxlc3MtZnJlcXVlbnQsIHBvdGVudGlhbGx5IG1vcmUgY29tcGxleCBzY2VuYXJpb3MuCgpMZXQmIzM5O3MgbmFpbCBkb3duIHRoZXNlIGZvY3VzIHN5bWJvbHMuIEkgaGF2ZToKCiogICBgc3RtbWFjX3JlbGVhc2VgIChJJiMzOTtsbCBrZWVwIHRoaXMgYXMgaXQmIzM5O3MgdGhlIG1haW4gdGVhcmRvd24gZW50cnkgcG9pbnQgLSBhbHRob3VnaCBpdCBpcyBhIGJpdCBnZW5lcmljLikKKiAgIGBzdG1tYWNfeGRwX3JlbGVhc2VgCiogICBgc3RtbWFjX3hkcF9vcGVuYAoqICAgYHN0bW1hY19zdXNwZW5kYAoqICAgYGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkYAoqICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmAKKiAgIGBkd3hnbWFjMl9yeF9tdGxfZHJhaW5gCiogICBgZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRgCiogICBgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4YAoqICAgYGR3eGdtYWMyX2RtYV9zdG9wX3R4YAoqICAgYGR3eGdtYWMyX2RtYV9zdGFydF9yeGAKKiAgIGBkd3hnbWFjMl9kbWFfc3RvcF9yeGAKCk5vdywgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIHBsYXk6IGBTVE1NQUNfRVRIYCwgYERXTUFDX1NVTjhJYCwgYERXTUFDX0dFTkVSSUNgLCBhbmQgYFNUTU1BQ19QQ0lgLgoKVGhlIHBhdGNoIG1vZGlmaWVzIGBkd3hnbWFjMl9kbWEuY2AgYW5kIGBzdG1tYWNfbWFpbi5jYC4gVGhlIGNvcmUgcmVhc29uaW5nIGJlaGluZCB0aGUgY2hhbmdlcyBpcyBhZGRpbmcgYW4gb3JkZXJlZCB0ZWFyZG93biBzZXF1ZW5jZSB0byB0aGUgc3RtbWFjIGRyaXZlci4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgaW5jbHVkaW5nIHBvbGxpbmcgbG9vcHMgdG8gZW5zdXJlIERNQSBhbmQgTVRMIHF1ZXVlcyBhcmUgZHJhaW5lZCBiZWZvcmUgZGlzYWJsaW5nIHRoZSBNQUMsIHdoaWNoIGFmZmVjdHMgYWxsIHN0bW1hYyB2YXJpYW50cywgZXZlbiB0aG9zZSBlbXVsYXRlZCBpbiBRRU1VLiBUaGVzZSBjaGFuZ2VzIGltcGFjdCBYRFAgc2V0dXAvdGVhcmRvd24gYW5kIHRoZSBzdXNwZW5kIGNhbGxiYWNrcy4gQ3J1Y2lhbGx5LCB0aGVzZSBtb2RpZmljYXRpb25zIGFyZSB0cmlnZ2VyZWQgYnkgbm9ybWFsIGludGVyZmFjZSBzdGF0ZSBjaGFuZ2VzIChsaWtlIGBpcCBsaW5rIHNldCBkZXYgZXRoMCBkb3duYCkgYW5kIFhEUCBwcm9ncmFtIGF0dGFjaG1lbnQuIFRoZXJlZm9yZSwgdGhleSBzZWVtIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBhbmQgd29ydGggZnV6emluZy4KCkFscmlnaHQsIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtEV01BQ19TVU44SSYjMzQ7LAogICAgJiMzNDtEV01BQ19HRU5FUklDJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDssCiAgICAmIzM0O3N0bW1hY19zdXNwZW5kJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX3R4X2RtYV9zdG9wcGVkJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX3R4X210bF9kcmFpbiYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9yeF9tdGxfZHJhaW4mIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWQmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfZG1hX3N0YXJ0X3R4JiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYV9zdG9wX3R4JiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYV9zdGFydF9yeCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kbWFfc3RvcF9yeCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLCBhZGRpbmcgcG9sbGluZyBsb29wcyB0byB3YWl0IGZvciBETUEgYW5kIE1UTCBxdWV1ZXMgdG8gZHJhaW4gYmVmb3JlIGRpc2FibGluZyB0aGUgTUFDLiBUaGlzIGFmZmVjdHMgdGhlIHRlYXJkb3duIHBhdGggb2YgYWxsIHN0bW1hYyB2YXJpYW50cyAoaW5jbHVkaW5nIHRob3NlIGVtdWxhdGVkIGluIFFFTVUgbGlrZSBzdW44aS1lbWFjKSBhbmQgbW9kaWZpZXMgdGhlIFhEUCBzZXR1cC90ZWFyZG93biBhbmQgc3VzcGVuZCBjYWxsYmFja3MuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZHVyaW5nIG5vcm1hbCBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlcyAoZS5nLiwgYnJpbmdpbmcgdGhlIGludGVyZmFjZSBkb3duKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudCwgbWFraW5nIHRoZW0gZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtEV01BQ19TVU44SSYjMzQ7LAogICAgJiMzNDtEV01BQ19HRU5FUklDJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDssCiAgICAmIzM0O3N0bW1hY19zdXNwZW5kJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX3R4X2RtYV9zdG9wcGVkJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX3R4X210bF9kcmFpbiYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9yeF9tdGxfZHJhaW4mIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWQmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfZG1hX3N0YXJ0X3R4JiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYV9zdG9wX3R4JiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYV9zdGFydF9yeCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kbWFfc3RvcF9yeCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLCBhZGRpbmcgcG9sbGluZyBsb29wcyB0byB3YWl0IGZvciBETUEgYW5kIE1UTCBxdWV1ZXMgdG8gZHJhaW4gYmVmb3JlIGRpc2FibGluZyB0aGUgTUFDLiBUaGlzIGFmZmVjdHMgdGhlIHRlYXJkb3duIHBhdGggb2YgYWxsIHN0bW1hYyB2YXJpYW50cyAoaW5jbHVkaW5nIHRob3NlIGVtdWxhdGVkIGluIFFFTVUgbGlrZSBzdW44aS1lbWFjKSBhbmQgbW9kaWZpZXMgdGhlIFhEUCBzZXR1cC90ZWFyZG93biBhbmQgc3VzcGVuZCBjYWxsYmFja3MuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZHVyaW5nIG5vcm1hbCBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlcyAoZS5nLiwgYnJpbmdpbmcgdGhlIGludGVyZmFjZSBkb3duKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudCwgbWFraW5nIHRoZW0gZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBoYXJkd2FyZSBjb250cm9sIGZsb3cgZm9yIHN0b3BwaW5nIERNQSBjaGFubmVscyBhbmQgZHJhaW5pbmcgTUFDIHF1ZXVlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgYnVmZmVyIGFsbG9jYXRpb25zIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMzOTEyMDQ2ZWYwNjEzMGU4YWY0ZTM3N2EwMmQ0MWQzMjZiZTg1ZjIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAwODoxNDoyNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oCmluZGV4IDUxOTQzNzA1YTJiMDMuLjJlM2YyNjAwMGQzMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaApAQCAtMjkxLDYgJiM0MzsyOTEsMTAgQEAKICNkZWZpbmUgWEdNQUNfVFRDCQkJR0VOTUFTSyg2LCA0KQogI2RlZmluZSBYR01BQ19UWFFFTgkJCUdFTk1BU0soMywgMikKICNkZWZpbmUgWEdNQUNfVFNGCQkJQklUKDEpCiYjNDM7I2RlZmluZSBYR01BQ19NVExfVFhRX0RFQlVHKHgpCQkoMHgwMDAwMTEwOCAmIzQzOyAoMHg4MCAqICh4KSkpCiYjNDM7I2RlZmluZSBYR01BQ19UWFFTVFMJCQlCSVQoNCkKJiM0MzsjZGVmaW5lIFhHTUFDX1RSQ1NUUwkJCUdFTk1BU0soMiwgMSkKJiM0MzsjZGVmaW5lIFhHTUFDX1RSQ1NUU19SRUFECQkweDEKICNkZWZpbmUgWEdNQUNfTVRMX1RDeF9FVFNfQ09OVFJPTCh4KQkoMHgwMDAwMTExMCAmIzQzOyAoMHg4MCAqICh4KSkpCiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfUVVBTlRVTV9XRUlHSFQoeCkJKDB4MDAwMDExMTggJiM0MzsgKDB4ODAgKiAoeCkpKQogI2RlZmluZSBYR01BQ19NVExfVEN4X1NFTkRTTE9QRSh4KQkoMHgwMDAwMTExYyAmIzQzOyAoMHg4MCAqICh4KSkpCkBAIC0zMDYsNiAmIzQzOzMxMCw5IEBACiAjZGVmaW5lIFhHTUFDX0VIRkMJCQlCSVQoNykKICNkZWZpbmUgWEdNQUNfUlNGCQkJQklUKDUpCiAjZGVmaW5lIFhHTUFDX1JUQwkJCUdFTk1BU0soMSwgMCkKJiM0MzsjZGVmaW5lIFhHTUFDX01UTF9SWFFfREVCVUcoeCkJCSgweDAwMDAxMTQ4ICYjNDM7ICgweDgwICogKHgpKSkKJiM0MzsjZGVmaW5lIFhHTUFDX1BSWFEJCQlHRU5NQVNLKDI5LCAxNikKJiM0MzsjZGVmaW5lIFhHTUFDX1JYUVNUUwkJCUdFTk1BU0soNSwgNCkKICNkZWZpbmUgWEdNQUNfTVRMX1JYUV9GTE9XX0NPTlRST0woeCkJKDB4MDAwMDExNTAgJiM0MzsgKDB4ODAgKiAoeCkpKQogI2RlZmluZSBYR01BQ19SRkQJCQlHRU5NQVNLKDMxLCAxNykKICNkZWZpbmUgWEdNQUNfUkZBCQkJR0VOTUFTSygxNSwgMSkKQEAgLTM4OSw2ICYjNDM7Mzk2LDcgQEAKICNkZWZpbmUgWEdNQUNfTklTCQkJQklUKDE1KQogI2RlZmluZSBYR01BQ19BSVMJCQlCSVQoMTQpCiAjZGVmaW5lIFhHTUFDX0ZCRQkJCUJJVCgxMikKJiM0MzsjZGVmaW5lIFhHTUFDX1JQUwkJCUJJVCg4KQogI2RlZmluZSBYR01BQ19SQlUJCQlCSVQoNykKICNkZWZpbmUgWEdNQUNfUkkJCQlCSVQoNikKICNkZWZpbmUgWEdNQUNfVEJVCQkJQklUKDIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jCmluZGV4IDAzNDM3ZjFjZjNkZjMuLjhlMjdiYzU4Y2MwNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jCkBAIC00LDYgJiM0Mzs0LDcgQEAKICAqIHN0bW1hYyBYR01BQyBzdXBwb3J0LgogICovCiAKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYml0ZmllbGQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pb3BvbGwuaCZndDsKICNpbmNsdWRlICYjMzQ7c3RtbWFjLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkd3hnbWFjMi5oJiMzNDsKQEAgLTI1MSwxMyAmIzQzOzI1MiwxMiBAQCBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogewogCXUzMiB2YWx1ZTsKIAomIzQzOwkvKiBUUFMgaXMgbGF0Y2hlZCBvbmNlIHNldCwgc28gY2xlYXIgaXQgb24gZXZlcnkgVHggRE1BIHN0YXJ0LiAqLwomIzQzOwl3cml0ZWwoWEdNQUNfVFBTLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSk7CiYjNDM7CiAJdmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpOwogCXZhbHVlIHw9IFhHTUFDX1RYU1Q7CiAJd3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpOwotCi0JdmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfVFhfQ09ORklHKTsKLQl2YWx1ZSB8PSBYR01BQ19DT05GSUdfVEU7Ci0Jd3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfVFhfQ09ORklHKTsKIH0KIAogc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0b3BfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKQEAgLTI2OCwxMCAmIzQzOzI2OCw2IEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsCiAJdmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpOwogCXZhbHVlICZhbXA7PSB+WEdNQUNfVFhTVDsKIAl3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7Ci0KLQl2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19UWF9DT05GSUcpOwotCXZhbHVlICZhbXA7PSB+WEdNQUNfQ09ORklHX1RFOwotCXdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX1RYX0NPTkZJRyk7CiB9CiAKIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCkBAIC0yNzksMTMgJiM0MzsyNzUsMTIgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIHsKIAl1MzIgdmFsdWU7CiAKJiM0MzsJLyogUlBTIGlzIGxhdGNoZWQgb25jZSBzZXQsIHNvIGNsZWFyIGl0IG9uIGV2ZXJ5IFJ4IERNQSBzdGFydC4gKi8KJiM0MzsJd3JpdGVsKFhHTUFDX1JQUywgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbikpOwomIzQzOwogCXZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9SWF9DT05UUk9MKGNoYW4pKTsKIAl2YWx1ZSB8PSBYR01BQ19SWFNUOwogCXdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9SWF9DT05UUk9MKGNoYW4pKTsKLQotCXZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX1JYX0NPTkZJRyk7Ci0JdmFsdWUgfD0gWEdNQUNfQ09ORklHX1JFOwotCXdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX1JYX0NPTkZJRyk7CiB9CiAKIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsCkBAIC01ODIsNiAmIzQzOzU3Nyw3NyBAQCBzdGF0aWMgaW50IGR3eGdtYWMyX2VuYWJsZV90YnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkgICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pCiYjNDM7ewomIzQzOwl1MzIgdmFsdWU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSwgdmFsdWUsCiYjNDM7CQkJCSB2YWx1ZSAmYW1wOyBYR01BQ19UUFMsIDEwMCwgMTAwMDApOwomIzQzOwlpZiAocmV0KQomIzQzOwkJbmV0ZGV2X3dhcm4ocHJpdi0mZ3Q7ZGV2LCAmIzM0O1R4IERNQSBjaGFubmVsICV1IHN0b3AgdGltZW91dFxuJiMzNDssCiYjNDM7CQkJICAgIGNoYW4pOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGR3eGdtYWMyX3R4X210bF9kcmFpbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiYjNDM7CQkJCSB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIHF1ZXVlKQomIzQzO3sKJiM0MzsJdTMyIHZhbHVlOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwkvKiBXYWl0IHVudGlsIHRoZSBxdWV1ZSBpcyBlbXB0eSBhbmQgaXRzIHJlYWQgY29udHJvbGxlciBpcyBubyBsb25nZXIKJiM0MzsJICogcHVsbGluZyBhIGZyYW1lIG91dCB0b3dhcmRzIHRoZSBNQUMuCiYjNDM7CSAqLwomIzQzOwlyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICYjNDM7IFhHTUFDX01UTF9UWFFfREVCVUcocXVldWUpLCB2YWx1ZSwKJiM0MzsJCQkJICEodmFsdWUgJmFtcDsgWEdNQUNfVFhRU1RTKSAmYW1wOyZhbXA7CiYjNDM7CQkJCSBGSUVMRF9HRVQoWEdNQUNfVFJDU1RTLCB2YWx1ZSkgIT0KJiM0MzsJCQkJIFhHTUFDX1RSQ1NUU19SRUFELAomIzQzOwkJCQkgMTAwLCAxMDAwMCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQluZXRkZXZfd2Fybihwcml2LSZndDtkZXYsICYjMzQ7TVRMIFR4IHF1ZXVlICV1IGRyYWluIHRpbWVvdXRcbiYjMzQ7LAomIzQzOwkJCSAgICBxdWV1ZSk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgZHd4Z21hYzJfcnhfbXRsX2RyYWluKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKJiM0MzsJCQkJIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgcXVldWUpCiYjNDM7ewomIzQzOwl1MzIgdmFsdWU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CS8qIFdhaXQgdW50aWwgbm8gcGFja2V0IGlzIGxlZnQgaW4gdGhlIHF1ZXVlIGFuZCB0aGUgcXVldWUgcmVwb3J0cwomIzQzOwkgKiBpdHNlbGYgZW1wdHkuCiYjNDM7CSAqLwomIzQzOwlyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICYjNDM7IFhHTUFDX01UTF9SWFFfREVCVUcocXVldWUpLCB2YWx1ZSwKJiM0MzsJCQkJICFGSUVMRF9HRVQoWEdNQUNfUFJYUSwgdmFsdWUpICZhbXA7JmFtcDsKJiM0MzsJCQkJICFGSUVMRF9HRVQoWEdNQUNfUlhRU1RTLCB2YWx1ZSksCiYjNDM7CQkJCSAxMDAsIDEwMDAwKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCW5ldGRldl93YXJuKHByaXYtJmd0O2RldiwgJiMzNDtNVEwgUnggcXVldWUgJXUgZHJhaW4gdGltZW91dFxuJiMzNDssCiYjNDM7CQkJICAgIHF1ZXVlKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiYjNDM7CQkJCSAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbikKJiM0Mzt7CiYjNDM7CXUzMiB2YWx1ZTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pLCB2YWx1ZSwKJiM0MzsJCQkJIHZhbHVlICZhbXA7IFhHTUFDX1JQUywgMTAwLCAxMDAwMCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQluZXRkZXZfd2Fybihwcml2LSZndDtkZXYsICYjMzQ7UnggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XG4mIzM0OywKJiM0MzsJCQkgICAgY2hhbik7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHsKIAkucmVzZXQgPSBkd3hnbWFjMl9kbWFfcmVzZXQsCiAJLmluaXQgPSBkd3hnbWFjMl9kbWFfaW5pdCwKQEAgLTYxMCw0ICYjNDM7Njc2LDggQEAgY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHsKIAkuc2V0X2Jmc2l6ZSA9IGR3eGdtYWMyX3NldF9iZnNpemUsCiAJLmVuYWJsZV9zcGggPSBkd3hnbWFjMl9lbmFibGVfc3BoLAogCS5lbmFibGVfdGJzID0gZHd4Z21hYzJfZW5hYmxlX3RicywKJiM0MzsJLnR4X2RtYV9zdG9wcGVkID0gZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWQsCiYjNDM7CS50eF9tdGxfZHJhaW4gPSBkd3hnbWFjMl90eF9tdGxfZHJhaW4sCiYjNDM7CS5yeF9tdGxfZHJhaW4gPSBkd3hnbWFjMl9yeF9tdGxfZHJhaW4sCiYjNDM7CS5yeF9kbWFfc3RvcHBlZCA9IGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaAppbmRleCBlNjMxN2I5NGZmZjdkLi4yM2E2OTE1YWNkZmJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oCkBAIC0yMjksNiAmIzQzOzIyOSwxNSBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgewogCQkJICAgYm9vbCBlbiwgdTMyIGNoYW4pOwogCWludCAoKmVuYWJsZV90YnMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsCiAJCQkgIGJvb2wgZW4sIHUzMiBjaGFuKTsKJiM0MzsJLyogT3JkZXJlZCBkYXRhcGF0aCB0ZWFyZG93biAqLwomIzQzOwlpbnQgKCp0eF9kbWFfc3RvcHBlZCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKJiM0MzsJCQkgICAgICB1MzIgY2hhbik7CiYjNDM7CWludCAoKnR4X210bF9kcmFpbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKJiM0MzsJCQkgICAgdTMyIHF1ZXVlKTsKJiM0MzsJaW50ICgqcnhfbXRsX2RyYWluKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLAomIzQzOwkJCSAgICB1MzIgcXVldWUpOwomIzQzOwlpbnQgKCpyeF9kbWFfc3RvcHBlZCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKJiM0MzsJCQkgICAgICB1MzIgY2hhbik7CiB9OwogCiAjZGVmaW5lIHN0bW1hY19kbWFfaW5pdChfX3ByaXYsIF9fYXJncy4uLikgXApAQCAtMjg5LDYgJiM0MzsyOTgsMTQgQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHsKIAlzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIGRtYSwgZW5hYmxlX3NwaCwgX19wcml2LCBfX2FyZ3MpCiAjZGVmaW5lIHN0bW1hY19lbmFibGVfdGJzKF9fcHJpdiwgX19hcmdzLi4uKSBcCiAJc3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfdGJzLCBfX3ByaXYsIF9fYXJncykKJiM0MzsjZGVmaW5lIHN0bW1hY190eF9kbWFfc3RvcHBlZChfX3ByaXYsIF9fYXJncy4uLikgXAomIzQzOwlzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHR4X2RtYV9zdG9wcGVkLCBfX3ByaXYsIF9fYXJncykKJiM0MzsjZGVmaW5lIHN0bW1hY190eF9tdGxfZHJhaW4oX19wcml2LCBfX2FyZ3MuLi4pIFwKJiM0MzsJc3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCB0eF9tdGxfZHJhaW4sIF9fcHJpdiwgX19hcmdzKQomIzQzOyNkZWZpbmUgc3RtbWFjX3J4X210bF9kcmFpbihfX3ByaXYsIF9fYXJncy4uLikgXAomIzQzOwlzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHJ4X210bF9kcmFpbiwgX19wcml2LCBfX2FyZ3MpCiYjNDM7I2RlZmluZSBzdG1tYWNfcnhfZG1hX3N0b3BwZWQoX19wcml2LCBfX2FyZ3MuLi4pIFwKJiM0MzsJc3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCByeF9kbWFfc3RvcHBlZCwgX19wcml2LCBfX2FyZ3MpCiAKIHN0cnVjdCBtYWNfZGV2aWNlX2luZm87CiBzdHJ1Y3QgbmV0X2RldmljZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IDM1OTE3NTVlYTMwYmUuLmNjM2EwYWUwYzU2ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtMjU2OSw2ICYjNDM7MjU2OSw1MiBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAkJc3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pOwogfQogCiYjNDM7LyoqCiYjNDM7ICogc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duIC0gb3JkZXJlZCBkYXRhcGF0aCB0ZWFyZG93biBhcyBwZXIgSVAgc3BlY2lmaWNhdGlvbgomIzQzOyAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUKJiM0MzsgKiBEZXNjcmlwdGlvbjoKJiM0MzsgKiBXaGVuIHRlYXJkb3duIG9wcyBhcmUgYXZhaWxhYmxlLCBmb2xsb3cgdGhlIGRhdGFib29rIG9yZGVyZWQgdGVhcmRvd24KJiM0MzsgKiBzZXF1ZW5jZS4KJiM0MzsgKiBGb2xsb3dzIHRoZSBsZWdhY3kgc3RvcCAmIzQzOyBNQUMgZGlzYWJsZSBmb3IgdmFyaWFudHMgd2l0aG91dCB0aGUgZmVhdHVyZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQomIzQzO3sKJiM0MzsJdTMyIHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi0mZ3Q7cGxhdC0mZ3Q7cnhfcXVldWVzX3RvX3VzZTsKJiM0MzsJdTMyIHR4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi0mZ3Q7cGxhdC0mZ3Q7dHhfcXVldWVzX3RvX3VzZTsKJiM0MzsJdTMyIGNoYW47CiYjNDM7CiYjNDM7CS8qIFN0b3AgYWxsIFRYIERNQSBjaGFubmVscyAqLwomIzQzOwlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KQomIzQzOwkJc3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pOwomIzQzOwomIzQzOwkvKiBXYWl0IGZvciBldmVyeSBUWCBETUEgY2hhbm5lbCB0byByZXBvcnQgaXRzZWxmIHN0b3BwZWQgKi8KJiM0MzsJaWYgKHByaXYtJmd0O2h3LSZndDtkbWEtJmd0O3R4X2RtYV9zdG9wcGVkKQomIzQzOwkJZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOykKJiM0MzsJCQlzdG1tYWNfdHhfZG1hX3N0b3BwZWQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCBjaGFuKTsKJiM0MzsKJiM0MzsJLyogV2FpdCBmb3IgdGhlIE1UTCBUWCBxdWV1ZXMgdG8gZmluaXNoIHB1c2hpbmcgaW50byB0aGUgTUFDICovCiYjNDM7CWlmIChwcml2LSZndDtody0mZ3Q7ZG1hLSZndDt0eF9tdGxfZHJhaW4pCiYjNDM7CQlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KQomIzQzOwkJCXN0bW1hY190eF9tdGxfZHJhaW4ocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCBjaGFuKTsKJiM0MzsKJiM0MzsJLyogRGlzYWJsZSB0aGUgTUFDIFRYIGFuZCBSWCAqLwomIzQzOwlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIGZhbHNlKTsKJiM0MzsKJiM0MzsJLyogV2FpdCBmb3IgdGhlIE1UTCBSWCBxdWV1ZXMgdG8gZHJhaW4gaW50byB0aGUgUlggRE1BICovCiYjNDM7CWlmIChwcml2LSZndDtody0mZ3Q7ZG1hLSZndDtyeF9tdGxfZHJhaW4pCiYjNDM7CQlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KQomIzQzOwkJCXN0bW1hY19yeF9tdGxfZHJhaW4ocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCBjaGFuKTsKJiM0MzsKJiM0MzsJLyogU3RvcCBhbGwgUlggRE1BIGNoYW5uZWxzICovCiYjNDM7CWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyByeF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspCiYjNDM7CQlzdG1tYWNfc3RvcF9yeF9kbWEocHJpdiwgY2hhbik7CiYjNDM7CiYjNDM7CS8qIFdhaXQgZm9yIGV2ZXJ5IFJYIERNQSBjaGFubmVsIHRvIHJlcG9ydCBpdHNlbGYgc3RvcHBlZCAqLwomIzQzOwlpZiAocHJpdi0mZ3Q7aHctJmd0O2RtYS0mZ3Q7cnhfZG1hX3N0b3BwZWQpCiYjNDM7CQlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KQomIzQzOwkJCXN0bW1hY19yeF9kbWFfc3RvcHBlZChwcml2LCBwcml2LSZndDtpb2FkZHIsIGNoYW4pOwomIzQzO30KJiM0MzsKIC8qKgogICogIHN0bW1hY19kbWFfb3BlcmF0aW9uX21vZGUgLSBIVyBETUEgb3BlcmF0aW9uIG1vZGUKICAqICBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlCkBAIC0zNjkyLDkgJiM0MzszNzM4LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJcHJpdi0mZ3Q7aHctJmd0O3J4X2NzdW0gPSAwOwogCX0KIAotCS8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovCi0Jc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCB0cnVlKTsKLQogCS8qIFNldCB0aGUgSFcgRE1BIG1vZGUgYW5kIHRoZSBDT0UgKi8KIAlzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYpOwogCkBAIC0zNzUwLDYgJiM0MzszNzkzLDkgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkvKiBTdGFydCB0aGUgYmFsbCByb2xsaW5nLi4uICovCiAJc3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7CiAKJiM0MzsJLyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi8KJiM0MzsJc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCB0cnVlKTsKJiM0MzsKIAlwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKHByaXYtJmd0O3BoeWxpbmspOwogCXN0bW1hY19zZXRfaHdfdmxhbl9tb2RlKHByaXYsIHByaXYtJmd0O2h3KTsKIAlwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2socHJpdi0mZ3Q7cGh5bGluayk7CkBAIC00MjM4LDkgJiM0Mzs0Mjg0LDYgQEAgc3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCXN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7CiAJdTggY2hhbjsKIAotCS8qIFN0b3AgYW5kIGRpc2Nvbm5lY3QgdGhlIFBIWSAqLwotCXBoeWxpbmtfc3RvcChwcml2LSZndDtwaHlsaW5rKTsKLQogCXN0bW1hY19kaXNhYmxlX2FsbF9xdWV1ZXMocHJpdik7CiAKIAlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgcHJpdi0mZ3Q7cGxhdC0mZ3Q7dHhfcXVldWVzX3RvX3VzZTsgY2hhbiYjNDM7JiM0MzspCkBAIC00MjUxLDggJiM0Mzs0Mjk0LDExIEBAIHN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi8KIAlzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApOwogCi0JLyogU3RvcCBUWC9SWCBETUEgYW5kIGNsZWFyIHRoZSBkZXNjcmlwdG9ycyAqLwotCXN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7CiYjNDM7CS8qIEhhcyB0byBydW4gYmVmb3JlIG1hY19saW5rX2Rvd24oKSBkaXNhYmxlcyB0aGUgTUFDLiAqLwomIzQzOwlzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7CiYjNDM7CiYjNDM7CS8qIFN0b3AgYW5kIGRpc2Nvbm5lY3QgdGhlIFBIWSAqLwomIzQzOwlwaHlsaW5rX3N0b3AocHJpdi0mZ3Q7cGh5bGluayk7CiAKIAkvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi8KIAlmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhwcml2LCAmYW1wO3ByaXYtJmd0O2RtYV9jb25mKTsKQEAgLTcxMDksMTUgJiM0Mzs3MTU1LDEyIEBAIHZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJLyogRnJlZSB0aGUgSVJRIGxpbmVzICovCiAJc3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTsKIAotCS8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovCi0Jc3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTsKJiM0MzsJLyogU3RvcCB0aGUgTUFDIGFuZCB0aGUgVFgvUlggRE1BIGNoYW5uZWxzICovCiYjNDM7CXN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihwcml2KTsKIAogCS8qIFJlbGVhc2UgYW5kIGZyZWUgdGhlIFJ4L1R4IHJlc291cmNlcyAqLwogCWZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsICZhbXA7cHJpdi0mZ3Q7ZG1hX2NvbmYpOwogCi0JLyogRGlzYWJsZSB0aGUgTUFDIFJ4L1R4ICovCi0Jc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCBmYWxzZSk7Ci0KIAkvKiBzZXQgdHJhbnNfc3RhcnQgc28gd2UgZG9uJiMzOTt0IGdldCBzcHVyaW91cwogCSAqIHdhdGNoZG9ncyBkdXJpbmcgcmVzZXQKIAkgKi8KQEAgLTcxODksMTIgJiM0Mzs3MjMyLDEyIEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJaHJ0aW1lcl9zZXR1cCgmYW1wO3R4X3EtJmd0O3R4dGltZXIsIHN0bW1hY190eF90aW1lciwgQ0xPQ0tfTU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTsKIAl9CiAKLQkvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqLwotCXN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtJmd0O2lvYWRkciwgdHJ1ZSk7Ci0KIAkvKiBTdGFydCBSeCAmYW1wOyBUeCBETUEgQ2hhbm5lbHMgKi8KIAlzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTsKIAomIzQzOwkvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqLwomIzQzOwlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIHRydWUpOwomIzQzOwogCXJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpOwogCWlmIChyZXQpCiAJCWdvdG8gaXJxX2Vycm9yOwpAQCAtODE5NSwxNyAmIzQzOzgyMzgsMTUgQEAgaW50IHN0bW1hY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJdGltZXJfZGVsZXRlX3N5bmMoJmFtcDtwcml2LSZndDtlZWVfY3RybF90aW1lcik7CiAJfQogCi0JLyogU3RvcCBUWC9SWCBETUEgKi8KLQlzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpOwotCi0Jc3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTsKLQogCS8qIEVuYWJsZSBQb3dlciBkb3duIG1vZGUgYnkgcHJvZ3JhbW1pbmcgdGhlIFBNVCByZWdzICovCiAJaWYgKHByaXYtJmd0O3dvbG9wdHMpIHsKJiM0MzsJCXN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7CiYjNDM7CQlzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpOwogCQlzdG1tYWNfcG10KHByaXYsIHByaXYtJmd0O2h3LCBwcml2LSZndDt3b2xvcHRzKTsKIAkJcHJpdi0mZ3Q7aXJxX3dha2UgPSAxOwogCX0gZWxzZSB7Ci0JCXN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtJmd0O2lvYWRkciwgZmFsc2UpOwomIzQzOwkJc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHByaXYpOwomIzQzOwkJc3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTsKIAkJcGluY3RybF9wbV9zZWxlY3Rfc2xlZXBfc3RhdGUocHJpdi0mZ3Q7ZGV2aWNlKTsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczODQKCQkJCQkJCW91dHB1dDogMTA0CgkJCQkJCQl0aG91Z2h0czogNDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFN0bW1hYyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBmb2N1c2VkIHNxdWFyZWx5IG9uIHRoZSBgc3RtbWFjYCBldGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgaGFyZHdhcmUgdGVhcmRvd24gc2VxdWVuY2UuIEkgc2VlIGl0IGludHJvZHVjZXMgYSBuZXcgYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBrZXkuIFRoaXMgZnVuY3Rpb24gYXBwZWFycyB0byBiZSBhIG1vcmUgb3JkZXJlZCBhbmQgY29udHJvbGxlZCB3YXkgdG8gc2h1dCBkb3duIHRoZSBUWC9SWCBETUEgY2hhbm5lbHMgYW5kIGRyYWluIHRoZSBNVEwgcXVldWVzLiBJIGNhbiBzZWUgdGhhdCBpdCYjMzk7cyBhZGRpbmcgc29tZSBuZXcgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLCBsaWtlIGBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZGAsIGBkd3hnbWFjMl90eF9tdGxfZHJhaW5gLCBhbmQgc28gb24uCgpUaGUgbWFpbiBpbXBhY3Qgc2VlbXMgdG8gYmUgaW4gYHN0bW1hY19tYWluLmNgLCB3aGVyZSB0aGV5JiMzOTtyZSByZXBsYWNpbmcgdGhlIG9sZGVyIGBzdG1tYWNfc3RvcF9hbGxfZG1hYCBhbmQgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgd2l0aCB0aGlzIG5ldyBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYCBmdW5jdGlvbiBpbiBrZXkgYXJlYXMgbGlrZSBgX19zdG1tYWNfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBhbmQgYHN0bW1hY19zdXNwZW5kYC4gQWxzbywgdGhleSYjMzk7dmUgcmVvcmdhbml6ZWQgaG93IGBzdG1tYWNfbWFjX3NldGAgYW5kIGBzdG1tYWNfc3RhcnRfYWxsX2RtYWAgYXJlIGNhbGxlZCBpbiBgc3RtbWFjX2h3X3NldHVwYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIGtlZXAgdHJhY2sgb2YuCgpHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIGhhcmR3YXJlIGRyaXZlcnMsIHRoaXMgYWxsIG1ha2VzIHNlbnNlLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBhIHN0YXRlIG1hY2hpbmUgaXNzdWUg4oCTIGVuc3VyaW5nIHRoZSBNQUMgYW5kIERNQSBhcmUgc2h1dCBkb3duIGNvcnJlY3RseSBhbmQgY2xlYW5seS4gQ3J1Y2lhbGx5LCBhcyBJIGFuYWx5emUgdGhpcywgSSBkb24mIzM5O3Qgc2VlIGFueSBjaGFuZ2VzIHRoYXQgd291bGQgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gVGhlcmUmIzM5O3Mgbm8gbW9kaWZpY2F0aW9uIG9mIGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vIGNoYW5nZXMgdG8gYnVmZmVyIGFsbG9jYXRpb24gb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIHRoYXQgbWlnaHQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgZGF0YS4gSXQmIzM5O3MgYWxsIGFib3V0IGhhcmR3YXJlIGNvbnRyb2wgYW5kIHJlZ2lzdGVyIG1hbmlwdWxhdGlvbi4KClRoZXJlZm9yZSwgZnJvbSBhIG1lbW9yeSBzYWZldHkgcGVyc3BlY3RpdmUsIGEgS01TQU4gc2Vzc2lvbiBpc24mIzM5O3QgcmVhbGx5IG5lZWRlZCBoZXJlLiBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBhcmUgcGVyZmVjdGx5IGNhcGFibGUgb2YgY2F0Y2hpbmcgYW55IG91dC1vZi1ib3VuZHMgb3IgdXNlLWFmdGVyLWZyZWUgZXJyb3JzIHRoYXQgbWlnaHQgY3JlZXAgaW4sIGFuZCBob25lc3RseSwgdGhlIHRlYXJkb3duIHNlcXVlbmNlIGxvb2tzIHByZXR0eSBzYWZlLiBTbywgSSYjMzk7bSBjb25maWRlbnQgaW4gbWFya2luZyB0aGlzIGFzIGBOZWVkc0tNU0FOOiBmYWxzZWAuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGp1c3QgaXNuJiMzOTt0IHRoZXJlLCBhbmQgdGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBjb25jZXJuIG9mIEtNU0FOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBoYXJkd2FyZSBjb250cm9sIGZsb3cgZm9yIHN0b3BwaW5nIERNQSBjaGFubmVscyBhbmQgZHJhaW5pbmcgTUFDIHF1ZXVlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgYnVmZmVyIGFsbG9jYXRpb25zIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBoYXJkd2FyZSBjb250cm9sIGZsb3cgZm9yIHN0b3BwaW5nIERNQSBjaGFubmVscyBhbmQgZHJhaW5pbmcgTUFDIHF1ZXVlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgYnVmZmVyIGFsbG9jYXRpb25zIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjI1LjUyMjk2OTUxMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTQ2NTg4ODY4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19TVU44SVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19yZWxlYXNlXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiLFxuICAgIFwic3RtbWFjX3N1c3BlbmRcIixcbiAgICBcImR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkXCIsXG4gICAgXCJkd3hnbWFjMl90eF9tdGxfZHJhaW5cIixcbiAgICBcImR3eGdtYWMyX3J4X210bF9kcmFpblwiLFxuICAgIFwiZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF90eFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfdHhcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF9yeFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfcnhcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGhhcmR3YXJlIGNvbnRyb2wgZmxvdyBmb3Igc3RvcHBpbmcgRE1BIGNoYW5uZWxzIGFuZCBkcmFpbmluZyBNQUMgcXVldWVzIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBhbHRlciBidWZmZXIgYWxsb2NhdGlvbnMgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLCBhZGRpbmcgcG9sbGluZyBsb29wcyB0byB3YWl0IGZvciBETUEgYW5kIE1UTCBxdWV1ZXMgdG8gZHJhaW4gYmVmb3JlIGRpc2FibGluZyB0aGUgTUFDLiBUaGlzIGFmZmVjdHMgdGhlIHRlYXJkb3duIHBhdGggb2YgYWxsIHN0bW1hYyB2YXJpYW50cyAoaW5jbHVkaW5nIHRob3NlIGVtdWxhdGVkIGluIFFFTVUgbGlrZSBzdW44aS1lbWFjKSBhbmQgbW9kaWZpZXMgdGhlIFhEUCBzZXR1cC90ZWFyZG93biBhbmQgc3VzcGVuZCBjYWxsYmFja3MuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZHVyaW5nIG5vcm1hbCBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlcyAoZS5nLiwgYnJpbmdpbmcgdGhlIGludGVyZmFjZSBkb3duKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudCwgbWFraW5nIHRoZW0gZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTQ6MjUuNTIyOTc1NjkxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODcxNTU1MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzMzkxMjA0NmVmMDYxMzBlOGFmNGUzNzdhMDJkNDFkMzI2YmU4NWYyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDA4OjE0OjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXFxuaW5kZXggNTE5NDM3MDVhMmIwMy4uMmUzZjI2MDAwZDMzNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaFxcbkBAIC0yOTEsNiArMjkxLDEwIEBAXFxuICNkZWZpbmUgWEdNQUNfVFRDXFx0XFx0XFx0R0VOTUFTSyg2LCA0KVxcbiAjZGVmaW5lIFhHTUFDX1RYUUVOXFx0XFx0XFx0R0VOTUFTSygzLCAyKVxcbiAjZGVmaW5lIFhHTUFDX1RTRlxcdFxcdFxcdEJJVCgxKVxcbisjZGVmaW5lIFhHTUFDX01UTF9UWFFfREVCVUcoeClcXHRcXHQoMHgwMDAwMTEwOCArICgweDgwICogKHgpKSlcXG4rI2RlZmluZSBYR01BQ19UWFFTVFNcXHRcXHRcXHRCSVQoNClcXG4rI2RlZmluZSBYR01BQ19UUkNTVFNcXHRcXHRcXHRHRU5NQVNLKDIsIDEpXFxuKyNkZWZpbmUgWEdNQUNfVFJDU1RTX1JFQURcXHRcXHQweDFcXG4gI2RlZmluZSBYR01BQ19NVExfVEN4X0VUU19DT05UUk9MKHgpXFx0KDB4MDAwMDExMTAgKyAoMHg4MCAqICh4KSkpXFxuICNkZWZpbmUgWEdNQUNfTVRMX1RDeF9RVUFOVFVNX1dFSUdIVCh4KVxcdCgweDAwMDAxMTE4ICsgKDB4ODAgKiAoeCkpKVxcbiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfU0VORFNMT1BFKHgpXFx0KDB4MDAwMDExMWMgKyAoMHg4MCAqICh4KSkpXFxuQEAgLTMwNiw2ICszMTAsOSBAQFxcbiAjZGVmaW5lIFhHTUFDX0VIRkNcXHRcXHRcXHRCSVQoNylcXG4gI2RlZmluZSBYR01BQ19SU0ZcXHRcXHRcXHRCSVQoNSlcXG4gI2RlZmluZSBYR01BQ19SVENcXHRcXHRcXHRHRU5NQVNLKDEsIDApXFxuKyNkZWZpbmUgWEdNQUNfTVRMX1JYUV9ERUJVRyh4KVxcdFxcdCgweDAwMDAxMTQ4ICsgKDB4ODAgKiAoeCkpKVxcbisjZGVmaW5lIFhHTUFDX1BSWFFcXHRcXHRcXHRHRU5NQVNLKDI5LCAxNilcXG4rI2RlZmluZSBYR01BQ19SWFFTVFNcXHRcXHRcXHRHRU5NQVNLKDUsIDQpXFxuICNkZWZpbmUgWEdNQUNfTVRMX1JYUV9GTE9XX0NPTlRST0woeClcXHQoMHgwMDAwMTE1MCArICgweDgwICogKHgpKSlcXG4gI2RlZmluZSBYR01BQ19SRkRcXHRcXHRcXHRHRU5NQVNLKDMxLCAxNylcXG4gI2RlZmluZSBYR01BQ19SRkFcXHRcXHRcXHRHRU5NQVNLKDE1LCAxKVxcbkBAIC0zODksNiArMzk2LDcgQEBcXG4gI2RlZmluZSBYR01BQ19OSVNcXHRcXHRcXHRCSVQoMTUpXFxuICNkZWZpbmUgWEdNQUNfQUlTXFx0XFx0XFx0QklUKDE0KVxcbiAjZGVmaW5lIFhHTUFDX0ZCRVxcdFxcdFxcdEJJVCgxMilcXG4rI2RlZmluZSBYR01BQ19SUFNcXHRcXHRcXHRCSVQoOClcXG4gI2RlZmluZSBYR01BQ19SQlVcXHRcXHRcXHRCSVQoNylcXG4gI2RlZmluZSBYR01BQ19SSVxcdFxcdFxcdEJJVCg2KVxcbiAjZGVmaW5lIFhHTUFDX1RCVVxcdFxcdFxcdEJJVCgyKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXFxuaW5kZXggMDM0MzdmMWNmM2RmMy4uOGUyN2JjNThjYzA1OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXFxuQEAgLTQsNiArNCw3IEBAXFxuICAqIHN0bW1hYyBYR01BQyBzdXBwb3J0LlxcbiAgKi9cXG4gXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRmaWVsZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW9wb2xsLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImR3eGdtYWMyLmhcXFwiXFxuQEAgLTI1MSwxMyArMjUyLDEyIEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIHtcXG4gXFx0dTMyIHZhbHVlO1xcbiBcXG4rXFx0LyogVFBTIGlzIGxhdGNoZWQgb25jZSBzZXQsIHNvIGNsZWFyIGl0IG9uIGV2ZXJ5IFR4IERNQSBzdGFydC4gKi9cXG4rXFx0d3JpdGVsKFhHTUFDX1RQUywgaW9hZGRyICsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSk7XFxuK1xcbiBcXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX0RNQV9DSF9UWF9DT05UUk9MKGNoYW4pKTtcXG4gXFx0dmFsdWUgfD0gWEdNQUNfVFhTVDtcXG4gXFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XFxuLVxcbi1cXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX1RYX0NPTkZJRyk7XFxuLVxcdHZhbHVlIHw9IFhHTUFDX0NPTkZJR19URTtcXG4tXFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19UWF9DT05GSUcpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RvcF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbkBAIC0yNjgsMTAgKzI2OCw2IEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuIFxcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xcbiBcXHR2YWx1ZSBcXHUwMDI2PSB+WEdNQUNfVFhTVDtcXG4gXFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XFxuLVxcbi1cXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX1RYX0NPTkZJRyk7XFxuLVxcdHZhbHVlIFxcdTAwMjY9IH5YR01BQ19DT05GSUdfVEU7XFxuLVxcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICsgWEdNQUNfVFhfQ09ORklHKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5AQCAtMjc5LDEzICsyNzUsMTIgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4ge1xcbiBcXHR1MzIgdmFsdWU7XFxuIFxcbitcXHQvKiBSUFMgaXMgbGF0Y2hlZCBvbmNlIHNldCwgc28gY2xlYXIgaXQgb24gZXZlcnkgUnggRE1BIHN0YXJ0LiAqL1xcbitcXHR3cml0ZWwoWEdNQUNfUlBTLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pKTtcXG4rXFxuIFxcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfRE1BX0NIX1JYX0NPTlRST0woY2hhbikpO1xcbiBcXHR2YWx1ZSB8PSBYR01BQ19SWFNUO1xcbiBcXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX0RNQV9DSF9SWF9DT05UUk9MKGNoYW4pKTtcXG4tXFxuLVxcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfUlhfQ09ORklHKTtcXG4tXFx0dmFsdWUgfD0gWEdNQUNfQ09ORklHX1JFO1xcbi1cXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX1JYX0NPTkZJRyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuQEAgLTU4Miw2ICs1NzcsNzcgQEAgc3RhdGljIGludCBkd3hnbWFjMl9lbmFibGVfdGJzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4rXFx0XFx0XFx0XFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxcbit7XFxuK1xcdHUzMiB2YWx1ZTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgKyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pLCB2YWx1ZSxcXG4rXFx0XFx0XFx0XFx0IHZhbHVlIFxcdTAwMjYgWEdNQUNfVFBTLCAxMDAsIDEwMDAwKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0bmV0ZGV2X3dhcm4ocHJpdi1cXHUwMDNlZGV2LCBcXFwiVHggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgY2hhbik7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitzdGF0aWMgaW50IGR3eGdtYWMyX3R4X210bF9kcmFpbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuK1xcdFxcdFxcdFxcdCB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIHF1ZXVlKVxcbit7XFxuK1xcdHUzMiB2YWx1ZTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdC8qIFdhaXQgdW50aWwgdGhlIHF1ZXVlIGlzIGVtcHR5IGFuZCBpdHMgcmVhZCBjb250cm9sbGVyIGlzIG5vIGxvbmdlclxcbitcXHQgKiBwdWxsaW5nIGEgZnJhbWUgb3V0IHRvd2FyZHMgdGhlIE1BQy5cXG4rXFx0ICovXFxuK1xcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgKyBYR01BQ19NVExfVFhRX0RFQlVHKHF1ZXVlKSwgdmFsdWUsXFxuK1xcdFxcdFxcdFxcdCAhKHZhbHVlIFxcdTAwMjYgWEdNQUNfVFhRU1RTKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHRcXHQgRklFTERfR0VUKFhHTUFDX1RSQ1NUUywgdmFsdWUpICE9XFxuK1xcdFxcdFxcdFxcdCBYR01BQ19UUkNTVFNfUkVBRCxcXG4rXFx0XFx0XFx0XFx0IDEwMCwgMTAwMDApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRuZXRkZXZfd2Fybihwcml2LVxcdTAwM2VkZXYsIFxcXCJNVEwgVHggcXVldWUgJXUgZHJhaW4gdGltZW91dFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIHF1ZXVlKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgZHd4Z21hYzJfcnhfbXRsX2RyYWluKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4rXFx0XFx0XFx0XFx0IHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgcXVldWUpXFxuK3tcXG4rXFx0dTMyIHZhbHVlO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0LyogV2FpdCB1bnRpbCBubyBwYWNrZXQgaXMgbGVmdCBpbiB0aGUgcXVldWUgYW5kIHRoZSBxdWV1ZSByZXBvcnRzXFxuK1xcdCAqIGl0c2VsZiBlbXB0eS5cXG4rXFx0ICovXFxuK1xcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgKyBYR01BQ19NVExfUlhRX0RFQlVHKHF1ZXVlKSwgdmFsdWUsXFxuK1xcdFxcdFxcdFxcdCAhRklFTERfR0VUKFhHTUFDX1BSWFEsIHZhbHVlKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHRcXHQgIUZJRUxEX0dFVChYR01BQ19SWFFTVFMsIHZhbHVlKSxcXG4rXFx0XFx0XFx0XFx0IDEwMCwgMTAwMDApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRuZXRkZXZfd2Fybihwcml2LVxcdTAwM2VkZXYsIFxcXCJNVEwgUnggcXVldWUgJXUgZHJhaW4gdGltZW91dFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIHF1ZXVlKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbitcXHRcXHRcXHRcXHQgICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pXFxuK3tcXG4rXFx0dTMyIHZhbHVlO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciArIFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbiksIHZhbHVlLFxcbitcXHRcXHRcXHRcXHQgdmFsdWUgXFx1MDAyNiBYR01BQ19SUFMsIDEwMCwgMTAwMDApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRuZXRkZXZfd2Fybihwcml2LVxcdTAwM2VkZXYsIFxcXCJSeCBETUEgY2hhbm5lbCAldSBzdG9wIHRpbWVvdXRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICBjaGFuKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XFxuIFxcdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcXG4gXFx0LmluaXQgPSBkd3hnbWFjMl9kbWFfaW5pdCxcXG5AQCAtNjEwLDQgKzY3Niw4IEBAIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XFxuIFxcdC5zZXRfYmZzaXplID0gZHd4Z21hYzJfc2V0X2Jmc2l6ZSxcXG4gXFx0LmVuYWJsZV9zcGggPSBkd3hnbWFjMl9lbmFibGVfc3BoLFxcbiBcXHQuZW5hYmxlX3RicyA9IGR3eGdtYWMyX2VuYWJsZV90YnMsXFxuK1xcdC50eF9kbWFfc3RvcHBlZCA9IGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkLFxcbitcXHQudHhfbXRsX2RyYWluID0gZHd4Z21hYzJfdHhfbXRsX2RyYWluLFxcbitcXHQucnhfbXRsX2RyYWluID0gZHd4Z21hYzJfcnhfbXRsX2RyYWluLFxcbitcXHQucnhfZG1hX3N0b3BwZWQgPSBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZCxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXFxuaW5kZXggZTYzMTdiOTRmZmY3ZC4uMjNhNjkxNWFjZGZiYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcXG5AQCAtMjI5LDYgKzIyOSwxNSBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMge1xcbiBcXHRcXHRcXHQgICBib29sIGVuLCB1MzIgY2hhbik7XFxuIFxcdGludCAoKmVuYWJsZV90YnMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuIFxcdFxcdFxcdCAgYm9vbCBlbiwgdTMyIGNoYW4pO1xcbitcXHQvKiBPcmRlcmVkIGRhdGFwYXRoIHRlYXJkb3duICovXFxuK1xcdGludCAoKnR4X2RtYV9zdG9wcGVkKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbitcXHRcXHRcXHQgICAgICB1MzIgY2hhbik7XFxuK1xcdGludCAoKnR4X210bF9kcmFpbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4rXFx0XFx0XFx0ICAgIHUzMiBxdWV1ZSk7XFxuK1xcdGludCAoKnJ4X210bF9kcmFpbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4rXFx0XFx0XFx0ICAgIHUzMiBxdWV1ZSk7XFxuK1xcdGludCAoKnJ4X2RtYV9zdG9wcGVkKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbitcXHRcXHRcXHQgICAgICB1MzIgY2hhbik7XFxuIH07XFxuIFxcbiAjZGVmaW5lIHN0bW1hY19kbWFfaW5pdChfX3ByaXYsIF9fYXJncy4uLikgXFxcXFxcbkBAIC0yODksNiArMjk4LDE0IEBAIHN0cnVjdCBzdG1tYWNfZG1hX29wcyB7XFxuIFxcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfc3BoLCBfX3ByaXYsIF9fYXJncylcXG4gI2RlZmluZSBzdG1tYWNfZW5hYmxlX3RicyhfX3ByaXYsIF9fYXJncy4uLikgXFxcXFxcbiBcXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIGVuYWJsZV90YnMsIF9fcHJpdiwgX19hcmdzKVxcbisjZGVmaW5lIHN0bW1hY190eF9kbWFfc3RvcHBlZChfX3ByaXYsIF9fYXJncy4uLikgXFxcXFxcbitcXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHR4X2RtYV9zdG9wcGVkLCBfX3ByaXYsIF9fYXJncylcXG4rI2RlZmluZSBzdG1tYWNfdHhfbXRsX2RyYWluKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuK1xcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgdHhfbXRsX2RyYWluLCBfX3ByaXYsIF9fYXJncylcXG4rI2RlZmluZSBzdG1tYWNfcnhfbXRsX2RyYWluKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuK1xcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgcnhfbXRsX2RyYWluLCBfX3ByaXYsIF9fYXJncylcXG4rI2RlZmluZSBzdG1tYWNfcnhfZG1hX3N0b3BwZWQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXFxcXG4rXFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCByeF9kbWFfc3RvcHBlZCwgX19wcml2LCBfX2FyZ3MpXFxuIFxcbiBzdHJ1Y3QgbWFjX2RldmljZV9pbmZvO1xcbiBzdHJ1Y3QgbmV0X2RldmljZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5pbmRleCAzNTkxNzU1ZWEzMGJlLi5jYzNhMGFlMGM1NmY5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTI1NjksNiArMjU2OSw1MiBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFx0XFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xcbiB9XFxuIFxcbisvKipcXG4rICogc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duIC0gb3JkZXJlZCBkYXRhcGF0aCB0ZWFyZG93biBhcyBwZXIgSVAgc3BlY2lmaWNhdGlvblxcbisgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXFxuKyAqIERlc2NyaXB0aW9uOlxcbisgKiBXaGVuIHRlYXJkb3duIG9wcyBhcmUgYXZhaWxhYmxlLCBmb2xsb3cgdGhlIGRhdGFib29rIG9yZGVyZWQgdGVhcmRvd25cXG4rICogc2VxdWVuY2UuXFxuKyAqIEZvbGxvd3MgdGhlIGxlZ2FjeSBzdG9wICsgTUFDIGRpc2FibGUgZm9yIHZhcmlhbnRzIHdpdGhvdXQgdGhlIGZlYXR1cmUuXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbit7XFxuK1xcdHUzMiByeF9jaGFubmVsc19jb3VudCA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXJ4X3F1ZXVlc190b191c2U7XFxuK1xcdHUzMiB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXR4X3F1ZXVlc190b191c2U7XFxuK1xcdHUzMiBjaGFuO1xcbitcXG4rXFx0LyogU3RvcCBhbGwgVFggRE1BIGNoYW5uZWxzICovXFxuK1xcdGZvciAoY2hhbiA9IDA7IGNoYW4gXFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxcbitcXHRcXHRzdG1tYWNfc3RvcF90eF9kbWEocHJpdiwgY2hhbik7XFxuK1xcbitcXHQvKiBXYWl0IGZvciBldmVyeSBUWCBETUEgY2hhbm5lbCB0byByZXBvcnQgaXRzZWxmIHN0b3BwZWQgKi9cXG4rXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VkbWEtXFx1MDAzZXR4X2RtYV9zdG9wcGVkKVxcbitcXHRcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG4rXFx0XFx0XFx0c3RtbWFjX3R4X2RtYV9zdG9wcGVkKHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgY2hhbik7XFxuK1xcbitcXHQvKiBXYWl0IGZvciB0aGUgTVRMIFRYIHF1ZXVlcyB0byBmaW5pc2ggcHVzaGluZyBpbnRvIHRoZSBNQUMgKi9cXG4rXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VkbWEtXFx1MDAzZXR4X210bF9kcmFpbilcXG4rXFx0XFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXFxuK1xcdFxcdFxcdHN0bW1hY190eF9tdGxfZHJhaW4ocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCBjaGFuKTtcXG4rXFxuK1xcdC8qIERpc2FibGUgdGhlIE1BQyBUWCBhbmQgUlggKi9cXG4rXFx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCBmYWxzZSk7XFxuK1xcbitcXHQvKiBXYWl0IGZvciB0aGUgTVRMIFJYIHF1ZXVlcyB0byBkcmFpbiBpbnRvIHRoZSBSWCBETUEgKi9cXG4rXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VkbWEtXFx1MDAzZXJ4X210bF9kcmFpbilcXG4rXFx0XFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXFxuK1xcdFxcdFxcdHN0bW1hY19yeF9tdGxfZHJhaW4ocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCBjaGFuKTtcXG4rXFxuK1xcdC8qIFN0b3AgYWxsIFJYIERNQSBjaGFubmVscyAqL1xcbitcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG4rXFx0XFx0c3RtbWFjX3N0b3BfcnhfZG1hKHByaXYsIGNoYW4pO1xcbitcXG4rXFx0LyogV2FpdCBmb3IgZXZlcnkgUlggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovXFxuK1xcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlZG1hLVxcdTAwM2VyeF9kbWFfc3RvcHBlZClcXG4rXFx0XFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXFxuK1xcdFxcdFxcdHN0bW1hY19yeF9kbWFfc3RvcHBlZChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIGNoYW4pO1xcbit9XFxuK1xcbiAvKipcXG4gICogIHN0bW1hY19kbWFfb3BlcmF0aW9uX21vZGUgLSBIVyBETUEgb3BlcmF0aW9uIG1vZGVcXG4gICogIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG5AQCAtMzY5Miw5ICszNzM4LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZXJ4X2NzdW0gPSAwO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqL1xcbi1cXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIHRydWUpO1xcbi1cXG4gXFx0LyogU2V0IHRoZSBIVyBETUEgbW9kZSBhbmQgdGhlIENPRSAqL1xcbiBcXHRzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYpO1xcbiBcXG5AQCAtMzc1MCw2ICszNzkzLDkgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0LyogU3RhcnQgdGhlIGJhbGwgcm9sbGluZy4uLiAqL1xcbiBcXHRzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTtcXG4gXFxuK1xcdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXFxuK1xcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgdHJ1ZSk7XFxuK1xcbiBcXHRwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbiBcXHRzdG1tYWNfc2V0X2h3X3ZsYW5fbW9kZShwcml2LCBwcml2LVxcdTAwM2Vodyk7XFxuIFxcdHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jayhwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5AQCAtNDIzOCw5ICs0Mjg0LDYgQEAgc3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHR1OCBjaGFuO1xcbiBcXG4tXFx0LyogU3RvcCBhbmQgZGlzY29ubmVjdCB0aGUgUEhZICovXFxuLVxcdHBoeWxpbmtfc3RvcChwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG4tXFxuIFxcdHN0bW1hY19kaXNhYmxlX2FsbF9xdWV1ZXMocHJpdik7XFxuIFxcbiBcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbisrKVxcbkBAIC00MjUxLDggKzQyOTQsMTEgQEAgc3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHQvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi9cXG4gXFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcXG4gXFxuLVxcdC8qIFN0b3AgVFgvUlggRE1BIGFuZCBjbGVhciB0aGUgZGVzY3JpcHRvcnMgKi9cXG4tXFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcXG4rXFx0LyogSGFzIHRvIHJ1biBiZWZvcmUgbWFjX2xpbmtfZG93bigpIGRpc2FibGVzIHRoZSBNQUMuICovXFxuK1xcdHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihwcml2KTtcXG4rXFxuK1xcdC8qIFN0b3AgYW5kIGRpc2Nvbm5lY3QgdGhlIFBIWSAqL1xcbitcXHRwaHlsaW5rX3N0b3AocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuIFxcbiBcXHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cXG4gXFx0ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mKTtcXG5AQCAtNzEwOSwxNSArNzE1NSwxMiBAQCB2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHQvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi9cXG4gXFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcXG4gXFxuLVxcdC8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovXFxuLVxcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XFxuK1xcdC8qIFN0b3AgdGhlIE1BQyBhbmQgdGhlIFRYL1JYIERNQSBjaGFubmVscyAqL1xcbitcXHRzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7XFxuIFxcbiBcXHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cXG4gXFx0ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mKTtcXG4gXFxuLVxcdC8qIERpc2FibGUgdGhlIE1BQyBSeC9UeCAqL1xcbi1cXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIGZhbHNlKTtcXG4tXFxuIFxcdC8qIHNldCB0cmFuc19zdGFydCBzbyB3ZSBkb24ndCBnZXQgc3B1cmlvdXNcXG4gXFx0ICogd2F0Y2hkb2dzIGR1cmluZyByZXNldFxcbiBcXHQgKi9cXG5AQCAtNzE4OSwxMiArNzIzMiwxMiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdFxcdGhydGltZXJfc2V0dXAoXFx1MDAyNnR4X3EtXFx1MDAzZXR4dGltZXIsIHN0bW1hY190eF90aW1lciwgQ0xPQ0tfTU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTtcXG4gXFx0fVxcbiBcXG4tXFx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cXG4tXFx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCB0cnVlKTtcXG4tXFxuIFxcdC8qIFN0YXJ0IFJ4IFxcdTAwMjYgVHggRE1BIENoYW5uZWxzICovXFxuIFxcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xcbiBcXG4rXFx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cXG4rXFx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCB0cnVlKTtcXG4rXFxuIFxcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRnb3RvIGlycV9lcnJvcjtcXG5AQCAtODE5NSwxNyArODIzOCwxNSBAQCBpbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRcXHR0aW1lcl9kZWxldGVfc3luYyhcXHUwMDI2cHJpdi1cXHUwMDNlZWVlX2N0cmxfdGltZXIpO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBTdG9wIFRYL1JYIERNQSAqL1xcbi1cXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xcbi1cXG4tXFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcXG4tXFxuIFxcdC8qIEVuYWJsZSBQb3dlciBkb3duIG1vZGUgYnkgcHJvZ3JhbW1pbmcgdGhlIFBNVCByZWdzICovXFxuIFxcdGlmIChwcml2LVxcdTAwM2V3b2xvcHRzKSB7XFxuK1xcdFxcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XFxuK1xcdFxcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XFxuIFxcdFxcdHN0bW1hY19wbXQocHJpdiwgcHJpdi1cXHUwMDNlaHcsIHByaXYtXFx1MDAzZXdvbG9wdHMpO1xcbiBcXHRcXHRwcml2LVxcdTAwM2VpcnFfd2FrZSA9IDE7XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgZmFsc2UpO1xcbitcXHRcXHRzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7XFxuK1xcdFxcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XFxuIFxcdFxcdHBpbmN0cmxfcG1fc2VsZWN0X3NsZWVwX3N0YXRlKHByaXYtXFx1MDAzZWRldmljZSk7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjI2LjAxMTE1OTQ3M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE3MTE3NTY5NDAwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19TVU44SVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19yZWxlYXNlXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiLFxuICAgIFwic3RtbWFjX3N1c3BlbmRcIixcbiAgICBcImR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkXCIsXG4gICAgXCJkd3hnbWFjMl90eF9tdGxfZHJhaW5cIixcbiAgICBcImR3eGdtYWMyX3J4X210bF9kcmFpblwiLFxuICAgIFwiZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF90eFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfdHhcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF9yeFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfcnhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLCBhZGRpbmcgcG9sbGluZyBsb29wcyB0byB3YWl0IGZvciBETUEgYW5kIE1UTCBxdWV1ZXMgdG8gZHJhaW4gYmVmb3JlIGRpc2FibGluZyB0aGUgTUFDLiBUaGlzIGFmZmVjdHMgdGhlIHRlYXJkb3duIHBhdGggb2YgYWxsIHN0bW1hYyB2YXJpYW50cyAoaW5jbHVkaW5nIHRob3NlIGVtdWxhdGVkIGluIFFFTVUgbGlrZSBzdW44aS1lbWFjKSBhbmQgbW9kaWZpZXMgdGhlIFhEUCBzZXR1cC90ZWFyZG93biBhbmQgc3VzcGVuZCBjYWxsYmFja3MuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZHVyaW5nIG5vcm1hbCBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlcyAoZS5nLiwgYnJpbmdpbmcgdGhlIGludGVyZmFjZSBkb3duKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudCwgbWFraW5nIHRoZW0gZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzM5MTIwNDZlZjA2MTMwZThhZjRlMzc3YTAyZDQxZDMyNmJlODVmMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDA4OjE0OjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcbmluZGV4IDUxOTQzNzA1YTJiMDMuLjJlM2YyNjAwMGQzMzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXG5AQCAtMjkxLDYgKzI5MSwxMCBAQFxuICNkZWZpbmUgWEdNQUNfVFRDXHRcdFx0R0VOTUFTSyg2LCA0KVxuICNkZWZpbmUgWEdNQUNfVFhRRU5cdFx0XHRHRU5NQVNLKDMsIDIpXG4gI2RlZmluZSBYR01BQ19UU0ZcdFx0XHRCSVQoMSlcbisjZGVmaW5lIFhHTUFDX01UTF9UWFFfREVCVUcoeClcdFx0KDB4MDAwMDExMDggKyAoMHg4MCAqICh4KSkpXG4rI2RlZmluZSBYR01BQ19UWFFTVFNcdFx0XHRCSVQoNClcbisjZGVmaW5lIFhHTUFDX1RSQ1NUU1x0XHRcdEdFTk1BU0soMiwgMSlcbisjZGVmaW5lIFhHTUFDX1RSQ1NUU19SRUFEXHRcdDB4MVxuICNkZWZpbmUgWEdNQUNfTVRMX1RDeF9FVFNfQ09OVFJPTCh4KVx0KDB4MDAwMDExMTAgKyAoMHg4MCAqICh4KSkpXG4gI2RlZmluZSBYR01BQ19NVExfVEN4X1FVQU5UVU1fV0VJR0hUKHgpXHQoMHgwMDAwMTExOCArICgweDgwICogKHgpKSlcbiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfU0VORFNMT1BFKHgpXHQoMHgwMDAwMTExYyArICgweDgwICogKHgpKSlcbkBAIC0zMDYsNiArMzEwLDkgQEBcbiAjZGVmaW5lIFhHTUFDX0VIRkNcdFx0XHRCSVQoNylcbiAjZGVmaW5lIFhHTUFDX1JTRlx0XHRcdEJJVCg1KVxuICNkZWZpbmUgWEdNQUNfUlRDXHRcdFx0R0VOTUFTSygxLCAwKVxuKyNkZWZpbmUgWEdNQUNfTVRMX1JYUV9ERUJVRyh4KVx0XHQoMHgwMDAwMTE0OCArICgweDgwICogKHgpKSlcbisjZGVmaW5lIFhHTUFDX1BSWFFcdFx0XHRHRU5NQVNLKDI5LCAxNilcbisjZGVmaW5lIFhHTUFDX1JYUVNUU1x0XHRcdEdFTk1BU0soNSwgNClcbiAjZGVmaW5lIFhHTUFDX01UTF9SWFFfRkxPV19DT05UUk9MKHgpXHQoMHgwMDAwMTE1MCArICgweDgwICogKHgpKSlcbiAjZGVmaW5lIFhHTUFDX1JGRFx0XHRcdEdFTk1BU0soMzEsIDE3KVxuICNkZWZpbmUgWEdNQUNfUkZBXHRcdFx0R0VOTUFTSygxNSwgMSlcbkBAIC0zODksNiArMzk2LDcgQEBcbiAjZGVmaW5lIFhHTUFDX05JU1x0XHRcdEJJVCgxNSlcbiAjZGVmaW5lIFhHTUFDX0FJU1x0XHRcdEJJVCgxNClcbiAjZGVmaW5lIFhHTUFDX0ZCRVx0XHRcdEJJVCgxMilcbisjZGVmaW5lIFhHTUFDX1JQU1x0XHRcdEJJVCg4KVxuICNkZWZpbmUgWEdNQUNfUkJVXHRcdFx0QklUKDcpXG4gI2RlZmluZSBYR01BQ19SSVx0XHRcdEJJVCg2KVxuICNkZWZpbmUgWEdNQUNfVEJVXHRcdFx0QklUKDIpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xuaW5kZXggMDM0MzdmMWNmM2RmMy4uOGUyN2JjNThjYzA1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xuQEAgLTQsNiArNCw3IEBAXG4gICogc3RtbWFjIFhHTUFDIHN1cHBvcnQuXG4gICovXG4gXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYml0ZmllbGQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9sbC5oXHUwMDNlXG4gI2luY2x1ZGUgXCJzdG1tYWMuaFwiXG4gI2luY2x1ZGUgXCJkd3hnbWFjMi5oXCJcbkBAIC0yNTEsMTMgKzI1MiwxMiBAQCBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIHtcbiBcdHUzMiB2YWx1ZTtcbiBcbitcdC8qIFRQUyBpcyBsYXRjaGVkIG9uY2Ugc2V0LCBzbyBjbGVhciBpdCBvbiBldmVyeSBUeCBETUEgc3RhcnQuICovXG4rXHR3cml0ZWwoWEdNQUNfVFBTLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pKTtcbitcbiBcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xuIFx0dmFsdWUgfD0gWEdNQUNfVFhTVDtcbiBcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xuLVxuLVx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19UWF9DT05GSUcpO1xuLVx0dmFsdWUgfD0gWEdNQUNfQ09ORklHX1RFO1xuLVx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19UWF9DT05GSUcpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RvcF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuQEAgLTI2OCwxMCArMjY4LDYgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0b3BfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xuIFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfVFhTVDtcbiBcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xuLVxuLVx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19UWF9DT05GSUcpO1xuLVx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfQ09ORklHX1RFO1xuLVx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19UWF9DT05GSUcpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RhcnRfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuQEAgLTI3OSwxMyArMjc1LDEyIEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4ge1xuIFx0dTMyIHZhbHVlO1xuIFxuK1x0LyogUlBTIGlzIGxhdGNoZWQgb25jZSBzZXQsIHNvIGNsZWFyIGl0IG9uIGV2ZXJ5IFJ4IERNQSBzdGFydC4gKi9cbitcdHdyaXRlbChYR01BQ19SUFMsIGlvYWRkciArIFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbikpO1xuK1xuIFx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19ETUFfQ0hfUlhfQ09OVFJPTChjaGFuKSk7XG4gXHR2YWx1ZSB8PSBYR01BQ19SWFNUO1xuIFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfUlhfQ09OVFJPTChjaGFuKSk7XG4tXG4tXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX1JYX0NPTkZJRyk7XG4tXHR2YWx1ZSB8PSBYR01BQ19DT05GSUdfUkU7XG4tXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX1JYX0NPTkZJRyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG5AQCAtNTgyLDYgKzU3Nyw3NyBAQCBzdGF0aWMgaW50IGR3eGdtYWMyX2VuYWJsZV90YnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbitcdFx0XHRcdCAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbilcbit7XG4rXHR1MzIgdmFsdWU7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciArIFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbiksIHZhbHVlLFxuK1x0XHRcdFx0IHZhbHVlIFx1MDAyNiBYR01BQ19UUFMsIDEwMCwgMTAwMDApO1xuK1x0aWYgKHJldClcbitcdFx0bmV0ZGV2X3dhcm4ocHJpdi1cdTAwM2VkZXYsIFwiVHggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XFxuXCIsXG4rXHRcdFx0ICAgIGNoYW4pO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludCBkd3hnbWFjMl90eF9tdGxfZHJhaW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuK1x0XHRcdFx0IHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgcXVldWUpXG4re1xuK1x0dTMyIHZhbHVlO1xuK1x0aW50IHJldDtcbitcbitcdC8qIFdhaXQgdW50aWwgdGhlIHF1ZXVlIGlzIGVtcHR5IGFuZCBpdHMgcmVhZCBjb250cm9sbGVyIGlzIG5vIGxvbmdlclxuK1x0ICogcHVsbGluZyBhIGZyYW1lIG91dCB0b3dhcmRzIHRoZSBNQUMuXG4rXHQgKi9cbitcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgKyBYR01BQ19NVExfVFhRX0RFQlVHKHF1ZXVlKSwgdmFsdWUsXG4rXHRcdFx0XHQgISh2YWx1ZSBcdTAwMjYgWEdNQUNfVFhRU1RTKSBcdTAwMjZcdTAwMjZcbitcdFx0XHRcdCBGSUVMRF9HRVQoWEdNQUNfVFJDU1RTLCB2YWx1ZSkgIT1cbitcdFx0XHRcdCBYR01BQ19UUkNTVFNfUkVBRCxcbitcdFx0XHRcdCAxMDAsIDEwMDAwKTtcbitcdGlmIChyZXQpXG4rXHRcdG5ldGRldl93YXJuKHByaXYtXHUwMDNlZGV2LCBcIk1UTCBUeCBxdWV1ZSAldSBkcmFpbiB0aW1lb3V0XFxuXCIsXG4rXHRcdFx0ICAgIHF1ZXVlKTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBpbnQgZHd4Z21hYzJfcnhfbXRsX2RyYWluKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbitcdFx0XHRcdCB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIHF1ZXVlKVxuK3tcbitcdHUzMiB2YWx1ZTtcbitcdGludCByZXQ7XG4rXG4rXHQvKiBXYWl0IHVudGlsIG5vIHBhY2tldCBpcyBsZWZ0IGluIHRoZSBxdWV1ZSBhbmQgdGhlIHF1ZXVlIHJlcG9ydHNcbitcdCAqIGl0c2VsZiBlbXB0eS5cbitcdCAqL1xuK1x0cmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciArIFhHTUFDX01UTF9SWFFfREVCVUcocXVldWUpLCB2YWx1ZSxcbitcdFx0XHRcdCAhRklFTERfR0VUKFhHTUFDX1BSWFEsIHZhbHVlKSBcdTAwMjZcdTAwMjZcbitcdFx0XHRcdCAhRklFTERfR0VUKFhHTUFDX1JYUVNUUywgdmFsdWUpLFxuK1x0XHRcdFx0IDEwMCwgMTAwMDApO1xuK1x0aWYgKHJldClcbitcdFx0bmV0ZGV2X3dhcm4ocHJpdi1cdTAwM2VkZXYsIFwiTVRMIFJ4IHF1ZXVlICV1IGRyYWluIHRpbWVvdXRcXG5cIixcbitcdFx0XHQgICAgcXVldWUpO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludCBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4rXHRcdFx0XHQgICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pXG4re1xuK1x0dTMyIHZhbHVlO1xuK1x0aW50IHJldDtcbitcbitcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgKyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pLCB2YWx1ZSxcbitcdFx0XHRcdCB2YWx1ZSBcdTAwMjYgWEdNQUNfUlBTLCAxMDAsIDEwMDAwKTtcbitcdGlmIChyZXQpXG4rXHRcdG5ldGRldl93YXJuKHByaXYtXHUwMDNlZGV2LCBcIlJ4IERNQSBjaGFubmVsICV1IHN0b3AgdGltZW91dFxcblwiLFxuK1x0XHRcdCAgICBjaGFuKTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XG4gXHQucmVzZXQgPSBkd3hnbWFjMl9kbWFfcmVzZXQsXG4gXHQuaW5pdCA9IGR3eGdtYWMyX2RtYV9pbml0LFxuQEAgLTYxMCw0ICs2NzYsOCBAQCBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzID0ge1xuIFx0LnNldF9iZnNpemUgPSBkd3hnbWFjMl9zZXRfYmZzaXplLFxuIFx0LmVuYWJsZV9zcGggPSBkd3hnbWFjMl9lbmFibGVfc3BoLFxuIFx0LmVuYWJsZV90YnMgPSBkd3hnbWFjMl9lbmFibGVfdGJzLFxuK1x0LnR4X2RtYV9zdG9wcGVkID0gZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWQsXG4rXHQudHhfbXRsX2RyYWluID0gZHd4Z21hYzJfdHhfbXRsX2RyYWluLFxuK1x0LnJ4X210bF9kcmFpbiA9IGR3eGdtYWMyX3J4X210bF9kcmFpbixcbitcdC5yeF9kbWFfc3RvcHBlZCA9IGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkLFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5pbmRleCBlNjMxN2I5NGZmZjdkLi4yM2E2OTE1YWNkZmJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbkBAIC0yMjksNiArMjI5LDE1IEBAIHN0cnVjdCBzdG1tYWNfZG1hX29wcyB7XG4gXHRcdFx0ICAgYm9vbCBlbiwgdTMyIGNoYW4pO1xuIFx0aW50ICgqZW5hYmxlX3Ricykoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdFx0XHQgIGJvb2wgZW4sIHUzMiBjaGFuKTtcbitcdC8qIE9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gKi9cbitcdGludCAoKnR4X2RtYV9zdG9wcGVkKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuK1x0XHRcdCAgICAgIHUzMiBjaGFuKTtcbitcdGludCAoKnR4X210bF9kcmFpbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbitcdFx0XHQgICAgdTMyIHF1ZXVlKTtcbitcdGludCAoKnJ4X210bF9kcmFpbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbitcdFx0XHQgICAgdTMyIHF1ZXVlKTtcbitcdGludCAoKnJ4X2RtYV9zdG9wcGVkKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuK1x0XHRcdCAgICAgIHUzMiBjaGFuKTtcbiB9O1xuIFxuICNkZWZpbmUgc3RtbWFjX2RtYV9pbml0KF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuQEAgLTI4OSw2ICsyOTgsMTQgQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHtcbiBcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfc3BoLCBfX3ByaXYsIF9fYXJncylcbiAjZGVmaW5lIHN0bW1hY19lbmFibGVfdGJzKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuIFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfdGJzLCBfX3ByaXYsIF9fYXJncylcbisjZGVmaW5lIHN0bW1hY190eF9kbWFfc3RvcHBlZChfX3ByaXYsIF9fYXJncy4uLikgXFxcbitcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgdHhfZG1hX3N0b3BwZWQsIF9fcHJpdiwgX19hcmdzKVxuKyNkZWZpbmUgc3RtbWFjX3R4X210bF9kcmFpbihfX3ByaXYsIF9fYXJncy4uLikgXFxcbitcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgdHhfbXRsX2RyYWluLCBfX3ByaXYsIF9fYXJncylcbisjZGVmaW5lIHN0bW1hY19yeF9tdGxfZHJhaW4oX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4rXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHJ4X210bF9kcmFpbiwgX19wcml2LCBfX2FyZ3MpXG4rI2RlZmluZSBzdG1tYWNfcnhfZG1hX3N0b3BwZWQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4rXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHJ4X2RtYV9zdG9wcGVkLCBfX3ByaXYsIF9fYXJncylcbiBcbiBzdHJ1Y3QgbWFjX2RldmljZV9pbmZvO1xuIHN0cnVjdCBuZXRfZGV2aWNlO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAzNTkxNzU1ZWEzMGJlLi5jYzNhMGFlMGM1NmY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTI1NjksNiArMjU2OSw1MiBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xuIH1cbiBcbisvKipcbisgKiBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24gLSBvcmRlcmVkIGRhdGFwYXRoIHRlYXJkb3duIGFzIHBlciBJUCBzcGVjaWZpY2F0aW9uXG4rICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuKyAqIERlc2NyaXB0aW9uOlxuKyAqIFdoZW4gdGVhcmRvd24gb3BzIGFyZSBhdmFpbGFibGUsIGZvbGxvdyB0aGUgZGF0YWJvb2sgb3JkZXJlZCB0ZWFyZG93blxuKyAqIHNlcXVlbmNlLlxuKyAqIEZvbGxvd3MgdGhlIGxlZ2FjeSBzdG9wICsgTUFDIGRpc2FibGUgZm9yIHZhcmlhbnRzIHdpdGhvdXQgdGhlIGZlYXR1cmUuXG4rICovXG4rc3RhdGljIHZvaWQgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbit7XG4rXHR1MzIgcnhfY2hhbm5lbHNfY291bnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbitcdHUzMiB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xuK1x0dTMyIGNoYW47XG4rXG4rXHQvKiBTdG9wIGFsbCBUWCBETUEgY2hhbm5lbHMgKi9cbitcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXG4rXHRcdHN0bW1hY19zdG9wX3R4X2RtYShwcml2LCBjaGFuKTtcbitcbitcdC8qIFdhaXQgZm9yIGV2ZXJ5IFRYIERNQSBjaGFubmVsIHRvIHJlcG9ydCBpdHNlbGYgc3RvcHBlZCAqL1xuK1x0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlZG1hLVx1MDAzZXR4X2RtYV9zdG9wcGVkKVxuK1x0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxuK1x0XHRcdHN0bW1hY190eF9kbWFfc3RvcHBlZChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4rXG4rXHQvKiBXYWl0IGZvciB0aGUgTVRMIFRYIHF1ZXVlcyB0byBmaW5pc2ggcHVzaGluZyBpbnRvIHRoZSBNQUMgKi9cbitcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZWRtYS1cdTAwM2V0eF9tdGxfZHJhaW4pXG4rXHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXG4rXHRcdFx0c3RtbWFjX3R4X210bF9kcmFpbihwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4rXG4rXHQvKiBEaXNhYmxlIHRoZSBNQUMgVFggYW5kIFJYICovXG4rXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgZmFsc2UpO1xuK1xuK1x0LyogV2FpdCBmb3IgdGhlIE1UTCBSWCBxdWV1ZXMgdG8gZHJhaW4gaW50byB0aGUgUlggRE1BICovXG4rXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNlcnhfbXRsX2RyYWluKVxuK1x0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxuK1x0XHRcdHN0bW1hY19yeF9tdGxfZHJhaW4ocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4pO1xuK1xuK1x0LyogU3RvcCBhbGwgUlggRE1BIGNoYW5uZWxzICovXG4rXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxuK1x0XHRzdG1tYWNfc3RvcF9yeF9kbWEocHJpdiwgY2hhbik7XG4rXG4rXHQvKiBXYWl0IGZvciBldmVyeSBSWCBETUEgY2hhbm5lbCB0byByZXBvcnQgaXRzZWxmIHN0b3BwZWQgKi9cbitcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZWRtYS1cdTAwM2VyeF9kbWFfc3RvcHBlZClcbitcdFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcbitcdFx0XHRzdG1tYWNfcnhfZG1hX3N0b3BwZWQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4pO1xuK31cbitcbiAvKipcbiAgKiAgc3RtbWFjX2RtYV9vcGVyYXRpb25fbW9kZSAtIEhXIERNQSBvcGVyYXRpb24gbW9kZVxuICAqICBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXG5AQCAtMzY5Miw5ICszNzM4LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0cHJpdi1cdTAwM2Vody1cdTAwM2VyeF9jc3VtID0gMDtcbiBcdH1cbiBcbi1cdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4tXG4gXHQvKiBTZXQgdGhlIEhXIERNQSBtb2RlIGFuZCB0aGUgQ09FICovXG4gXHRzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYpO1xuIFxuQEAgLTM3NTAsNiArMzc5Myw5IEBAIHN0YXRpYyBpbnQgc3RtbWFjX2h3X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHQvKiBTdGFydCB0aGUgYmFsbCByb2xsaW5nLi4uICovXG4gXHRzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTtcbiBcbitcdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4rXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4rXG4gXHRwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKHByaXYtXHUwMDNlcGh5bGluayk7XG4gXHRzdG1tYWNfc2V0X2h3X3ZsYW5fbW9kZShwcml2LCBwcml2LVx1MDAzZWh3KTtcbiBcdHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jayhwcml2LVx1MDAzZXBoeWxpbmspO1xuQEAgLTQyMzgsOSArNDI4NCw2IEBAIHN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gXHR1OCBjaGFuO1xuIFxuLVx0LyogU3RvcCBhbmQgZGlzY29ubmVjdCB0aGUgUEhZICovXG4tXHRwaHlsaW5rX3N0b3AocHJpdi1cdTAwM2VwaHlsaW5rKTtcbi1cbiBcdHN0bW1hY19kaXNhYmxlX2FsbF9xdWV1ZXMocHJpdik7XG4gXG4gXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbisrKVxuQEAgLTQyNTEsOCArNDI5NCwxMSBAQCBzdGF0aWMgdm9pZCBfX3N0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHQvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi9cbiBcdHN0bW1hY19mcmVlX2lycShkZXYsIFJFUV9JUlFfRVJSX0FMTCwgMCk7XG4gXG4tXHQvKiBTdG9wIFRYL1JYIERNQSBhbmQgY2xlYXIgdGhlIGRlc2NyaXB0b3JzICovXG4tXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuK1x0LyogSGFzIHRvIHJ1biBiZWZvcmUgbWFjX2xpbmtfZG93bigpIGRpc2FibGVzIHRoZSBNQUMuICovXG4rXHRzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7XG4rXG4rXHQvKiBTdG9wIGFuZCBkaXNjb25uZWN0IHRoZSBQSFkgKi9cbitcdHBoeWxpbmtfc3RvcChwcml2LVx1MDAzZXBoeWxpbmspO1xuIFxuIFx0LyogUmVsZWFzZSBhbmQgZnJlZSB0aGUgUngvVHggcmVzb3VyY2VzICovXG4gXHRmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mKTtcbkBAIC03MTA5LDE1ICs3MTU1LDEyIEBAIHZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHQvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi9cbiBcdHN0bW1hY19mcmVlX2lycShkZXYsIFJFUV9JUlFfRVJSX0FMTCwgMCk7XG4gXG4tXHQvKiBTdG9wIFRYL1JYIERNQSBjaGFubmVscyAqL1xuLVx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbitcdC8qIFN0b3AgdGhlIE1BQyBhbmQgdGhlIFRYL1JYIERNQSBjaGFubmVscyAqL1xuK1x0c3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHByaXYpO1xuIFxuIFx0LyogUmVsZWFzZSBhbmQgZnJlZSB0aGUgUngvVHggcmVzb3VyY2VzICovXG4gXHRmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mKTtcbiBcbi1cdC8qIERpc2FibGUgdGhlIE1BQyBSeC9UeCAqL1xuLVx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGZhbHNlKTtcbi1cbiBcdC8qIHNldCB0cmFuc19zdGFydCBzbyB3ZSBkb24ndCBnZXQgc3B1cmlvdXNcbiBcdCAqIHdhdGNoZG9ncyBkdXJpbmcgcmVzZXRcbiBcdCAqL1xuQEAgLTcxODksMTIgKzcyMzIsMTIgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRocnRpbWVyX3NldHVwKFx1MDAyNnR4X3EtXHUwMDNldHh0aW1lciwgc3RtbWFjX3R4X3RpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpO1xuIFx0fVxuIFxuLVx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbi1cdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbi1cbiBcdC8qIFN0YXJ0IFJ4IFx1MDAyNiBUeCBETUEgQ2hhbm5lbHMgKi9cbiBcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xuIFxuK1x0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbitcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbitcbiBcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBpcnFfZXJyb3I7XG5AQCAtODE5NSwxNyArODIzOCwxNSBAQCBpbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHR0aW1lcl9kZWxldGVfc3luYyhcdTAwMjZwcml2LVx1MDAzZWVlZV9jdHJsX3RpbWVyKTtcbiBcdH1cbiBcbi1cdC8qIFN0b3AgVFgvUlggRE1BICovXG4tXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuLVxuLVx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcbi1cbiBcdC8qIEVuYWJsZSBQb3dlciBkb3duIG1vZGUgYnkgcHJvZ3JhbW1pbmcgdGhlIFBNVCByZWdzICovXG4gXHRpZiAocHJpdi1cdTAwM2V3b2xvcHRzKSB7XG4rXHRcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4rXHRcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XG4gXHRcdHN0bW1hY19wbXQocHJpdiwgcHJpdi1cdTAwM2VodywgcHJpdi1cdTAwM2V3b2xvcHRzKTtcbiBcdFx0cHJpdi1cdTAwM2VpcnFfd2FrZSA9IDE7XG4gXHR9IGVsc2Uge1xuLVx0XHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgZmFsc2UpO1xuK1x0XHRzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7XG4rXHRcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XG4gXHRcdHBpbmN0cmxfcG1fc2VsZWN0X3NsZWVwX3N0YXRlKHByaXYtXHUwMDNlZGV2aWNlKTtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjI2LjAxMTE2MTM0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5ODg0NzU0NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYSBOZXR3b3JrIERyaXZlciBQYXRjaCBpbiBRRU1VKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIGBzdG1tYWNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgZHd4Z21hYzJgIGhhcmR3YXJlLiBJdCBpbnRyb2R1Y2VzIGEgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgdG8gZW5zdXJlIGEgY2xlYW4gc2h1dGRvd24sIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgRE1BLWJhc2VkIGhhcmR3YXJlLiBUaGlzIHRvdWNoZXMgYSBmZXcga2V5IGZ1bmN0aW9uczogYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAsIHBsdXMgbW9kaWZpY2F0aW9ucyB0byBgc3RtbWFjX2h3X3NldHVwYCwgYF9fc3RtbWFjX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfb3BlbmAsIGFuZCBgc3RtbWFjX3N1c3BlbmRgLiBTaW5jZSBgc3RtbWFjYCBpcyBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBNQUNzLCB0aGUgYmlnIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gVGhhdCdzIHRoZSBjcnV4IG9mIHRoaXMuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMsIFwiRG9lcyBRRU1VIGV2ZW4gKmVtdWxhdGUqIGBzdG1tYWNgP1wiIEkga25vdyBpdCBoYXMgZW11bGF0aW9ucyBmb3IgdGhpbmdzIGxpa2UgSW50ZWwncyBpR0IsIGUxMDAwLCBhbmQgUlRMODEzOSwgYXMgd2VsbCBhcyBWaXJ0SU8gYW5kIFZNWE5FVDMuIEJ1dCBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYSBkaXJlY3QgYHN0bW1hY2AgZW11bGF0aW9uIGluIHRoZSB0eXBpY2FsIFFFTVUgbmV0d29yayBkZXZpY2UgbGlzdC4gSSBldmVuIHN0YXJ0ZWQgdG8gbG9vay5cblxuVGhlbiBJIHNhdyBzb21lICpzaW1pbGFyKiBuZXR3b3JrIGhhcmR3YXJlIGVtdWxhdGVkIGJ5IFFFTVUgbGlrZSBgaW14X2ZlYy5jYCwgYGNhZGVuY2VfZ2VtLmNgLCBgZnRnbWFjMTAwLmNgLCBgbnBjbTd4eF9lbWMuY2AsIGBhbGx3aW5uZXItc3VuOGktZW1hYy5jYCwgYW5kIGBhbGx3aW5uZXItZW1hYy5jYC4gXCJXYWl0LCBkb2VzIFFFTVUgaGF2ZSBhIGBkd21hY2AgZW11bGF0aW9uP1wiIEkgdGhvdWdodC4gTm90IGRpcmVjdGx5LCBidXQuLi4gYHN0bW1hY2AgaXMgdXNlZCBieSBhICp0b24qIG9mIEFSTSBTb0NzLiBUaGUgaW1wbGljYXRpb24gaXMsIFFFTVUgbWlnaHQgZW11bGF0ZSB0aGUgU29DICphcyBhIHdob2xlKiwgaW5jbHVkaW5nIHRoZSBgc3RtbWFjYCBkcml2ZXIgYXMgcGFydCBvZiB0aGUgYm9hcmQgZW11bGF0aW9uLlxuXG5TbywgSSB3YXMgYWJvdXQgdG8gZ28gc2VhcmNoIFFFTVUgZm9yIGBzdG1tYWNgIG9yIGBkd21hY2Agd2hlbiBJIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgZW1waGFzaXplZCBjb2RlIHBhdGhzIHRoYXQgYXJlICp1bnJlYWNoYWJsZSogaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gVGhhdCBnb3QgbWUgdGhpbmtpbmcuLi4gaXMgdGhlcmUgYW5vdGhlciBhdmVudWU/XG5cblRoZW4gSSByZW1lbWJlcmVkIHRoYXQgYHN0bW1hY2AsIHdoaWxlIHByaW1hcmlseSBhIHBsYXRmb3JtIGRyaXZlciwgKmFsc28qIGhhcyBQQ0kgYmluZGluZ3MuIFRoYXQgbWlnaHQgYmUgYSB3YXkgdG8gcmVhY2ggdGhlIGNvZGUuIFNvLCBteSBuZXh0IGNoZWNrIGlzIGdvaW5nIHRvIGJlIHRvIGRldGVybWluZSBpZiB0aGVyZSBpcyBhIGBzdG1tYWNgIFBDSSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczODcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNDozMy45OTk2Mzk4NDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzNjI4MjM1NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlci4qc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNDozNi4yMzU5MzE5MTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA1NjY3ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBzZWFyY2g6XG5cbioqSW5pdGlhbCBJbnF1aXJ5OiBUYXJnZXRpbmcgdGhlIFJpZ2h0IEtleXdvcmRzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBgc3RtbWFjX3BjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXIuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEknbSB0aGlua2luZyB0aGF0J3MgdGhlIGxpa2VseSBkcml2ZXIgbW9kdWxlIG5hbWUgZm9yIGEgc3BlY2lmaWMgUENJLWJhc2VkIEV0aGVybmV0IGNvbnRyb2xsZXIgdXNpbmcgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAoU1RNTUFDKSBhcmNoaXRlY3R1cmUuIEknbGwgbmVlZCB0byB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBuYXJyb3cgbXkgc2VhcmNoIGFuZCBnZXQgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCwgc3BlY2lmaWNhbGx5LCBiZWNhdXNlIHRoZXJlIGFyZSBvdGhlciBkcml2ZXJzIGFuZCBjb250cm9sbGVycyBvdXQgdGhlcmUuIEl0J3MgaW1wb3J0YW50IHRvIGZpbmQgd2hhdCBJIGFjdHVhbGx5IHdhbnQsIG5vdCBhIGdlbmVyYWwgb3ZlcnZpZXcuIFNvIEknbGwgc3RhcnQgd2l0aCB0aGlzIHNwZWNpZmljIHRlcm0sIGJ1dCBJJ2xsIG5lZWQgdG8ga2VlcCBhbiBvcGVuIG1pbmQgZm9yIHZhcmlhdGlvbnMgb3IgcmVsYXRlZCBjb25jZXB0cyBpZiB0aGlzIHByaW1hcnkgc2VhcmNoIGRvZXNuJ3QgZGVsaXZlciBwcmVjaXNlIGVub3VnaCByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDU2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTQ6MzkuMjQxNjAyMDk0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDUxNDA1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNDozOS4yODcwNjE5ODlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA1MDY5MDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIFBDSSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHRyb3VibGVzaG9vdCB0aGlzIG5ldHdvcmtpbmcgaXNzdWUuIExldCdzIHNlZS4uLiB0aGUgcHJvYmxlbSAqc2VlbXMqIHRvIGJlIHJlbGF0ZWQgdG8gdGhlIFNUTU1BQyBkcml2ZXIsIGFuZCBzaW5jZSB0aGUgc3lzdGVtIHVzZXMgUENJLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYC4gVGhhdCBmaWxlIGlzIHRoZSBtb3N0IGxpa2VseSBjYW5kaWRhdGUgZm9yIGhhbmRsaW5nIHRoZSBQQ0ktc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIG9wZXJhdGlvbiBvZiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaXMgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBjb2RlIHRoYXQgZGVhbHMgd2l0aCBQQ0kgZGV2aWNlIHByb2JlLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBvdGhlciBQQ0ktc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gSSdsbCBuZWVkIHRvIGNhcmVmdWxseSByZXZpZXcgaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIFBDSSBidXMsIGVzcGVjaWFsbHkgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBETUEgc2V0dXAsIGJ1ZmZlciBtYW5hZ2VtZW50LCBvciBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lcy4gQW55IG9mIHRoZXNlIGNvdWxkIGVhc2lseSBiZSB0aGUgc291cmNlIG9mIHRoZSBpbnRlcm1pdHRlbnQgb3IgcGVyZm9ybWFuY2UtcmVsYXRlZCBwcm9ibGVtcyBJJ20gY2hhc2luZy4gTXkgcHJpbWFyeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgU1RNTUFDIGNvcmUgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY5MywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjQyLjY5MjEzMzMxNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiY2hhaW5fbW9kZS5jXCIsXG4gICAgXCJjb21tb24uaFwiLFxuICAgIFwiZGVzY3MuaFwiLFxuICAgIFwiZGVzY3NfY29tLmhcIixcbiAgICBcImR3bWFjLWFuYXJpb24uY1wiLFxuICAgIFwiZHdtYWMtZHdjLXFvcy1ldGguY1wiLFxuICAgIFwiZHdtYWMtZWljNzcwMC5jXCIsXG4gICAgXCJkd21hYy1nZW5lcmljLmNcIixcbiAgICBcImR3bWFjLWlteC5jXCIsXG4gICAgXCJkd21hYy1pbmdlbmljLmNcIixcbiAgICBcImR3bWFjLWludGVsLXBsYXQuY1wiLFxuICAgIFwiZHdtYWMtaW50ZWwuY1wiLFxuICAgIFwiZHdtYWMtaW50ZWwuaFwiLFxuICAgIFwiZHdtYWMtaXBxODA2eC5jXCIsXG4gICAgXCJkd21hYy1sb29uZ3Nvbi5jXCIsXG4gICAgXCJkd21hYy1sb29uZ3NvbjEuY1wiLFxuICAgIFwiZHdtYWMtbHBjMTh4eC5jXCIsXG4gICAgXCJkd21hYy1tZWRpYXRlay5jXCIsXG4gICAgXCJkd21hYy1tZXNvbi5jXCIsXG4gICAgXCJkd21hYy1tZXNvbjhiLmNcIixcbiAgICBcImR3bWFjLW1vdG9yY29tbS5jXCIsXG4gICAgXCJkd21hYy1udXZvdG9uLmNcIixcbiAgICBcImR3bWFjLXFjb20tZXRocW9zLmNcIixcbiAgICBcImR3bWFjLXJlbmVzYXMtZ2JldGguY1wiLFxuICAgIFwiZHdtYWMtcmsuY1wiLFxuICAgIFwiZHdtYWMtcnpuMS5jXCIsXG4gICAgXCJkd21hYy1zMzIuY1wiLFxuICAgIFwiZHdtYWMtc29jZnBnYS5jXCIsXG4gICAgXCJkd21hYy1zb3BoZ28uY1wiLFxuICAgIFwiZHdtYWMtc3BhY2VtaXQuY1wiLFxuICAgIFwiZHdtYWMtc3RhcmZpdmUuY1wiLFxuICAgIFwiZHdtYWMtc3RpLmNcIixcbiAgICBcImR3bWFjLXN0bTMyLmNcIixcbiAgICBcImR3bWFjLXN1bjU1aS5jXCIsXG4gICAgXCJkd21hYy1zdW44aS5jXCIsXG4gICAgXCJkd21hYy1zdW54aS5jXCIsXG4gICAgXCJkd21hYy10ZWdyYS5jXCIsXG4gICAgXCJkd21hYy10aGVhZC5jXCIsXG4gICAgXCJkd21hYy12aXNjb250aS5jXCIsXG4gICAgXCJkd21hYzEwMC5oXCIsXG4gICAgXCJkd21hYzEwMDAuaFwiLFxuICAgIFwiZHdtYWMxMDAwX2NvcmUuY1wiLFxuICAgIFwiZHdtYWMxMDAwX2RtYS5jXCIsXG4gICAgXCJkd21hYzEwMF9jb3JlLmNcIixcbiAgICBcImR3bWFjMTAwX2RtYS5jXCIsXG4gICAgXCJkd21hYzQuaFwiLFxuICAgIFwiZHdtYWM0X2NvcmUuY1wiLFxuICAgIFwiZHdtYWM0X2Rlc2NzLmNcIixcbiAgICBcImR3bWFjNF9kZXNjcy5oXCIsXG4gICAgXCJkd21hYzRfZG1hLmNcIixcbiAgICBcImR3bWFjNF9kbWEuaFwiLFxuICAgIFwiZHdtYWM0X2xpYi5jXCIsXG4gICAgXCJkd21hYzUuY1wiLFxuICAgIFwiZHdtYWM1LmhcIixcbiAgICBcImR3bWFjX2RtYS5oXCIsXG4gICAgXCJkd21hY19saWIuY1wiLFxuICAgIFwiZHd4Z21hYzIuaFwiLFxuICAgIFwiZHd4Z21hYzJfY29yZS5jXCIsXG4gICAgXCJkd3hnbWFjMl9kZXNjcy5jXCIsXG4gICAgXCJkd3hnbWFjMl9kbWEuY1wiLFxuICAgIFwiZHd4bGdtYWMyLmhcIixcbiAgICBcImVuaF9kZXNjLmNcIixcbiAgICBcImh3aWYuY1wiLFxuICAgIFwiaHdpZi5oXCIsXG4gICAgXCJtbWMuaFwiLFxuICAgIFwibW1jX2NvcmUuY1wiLFxuICAgIFwibm9ybV9kZXNjLmNcIixcbiAgICBcInJpbmdfbW9kZS5jXCIsXG4gICAgXCJzdG1tYWMuaFwiLFxuICAgIFwic3RtbWFjX2VzdC5jXCIsXG4gICAgXCJzdG1tYWNfZXN0LmhcIixcbiAgICBcInN0bW1hY19ldGh0b29sLmNcIixcbiAgICBcInN0bW1hY19mcGUuY1wiLFxuICAgIFwic3RtbWFjX2ZwZS5oXCIsXG4gICAgXCJzdG1tYWNfaHd0c3RhbXAuY1wiLFxuICAgIFwic3RtbWFjX2xpYnBjaS5jXCIsXG4gICAgXCJzdG1tYWNfbGlicGNpLmhcIixcbiAgICBcInN0bW1hY19tYWluLmNcIixcbiAgICBcInN0bW1hY19tZGlvLmNcIixcbiAgICBcInN0bW1hY19wY2kuY1wiLFxuICAgIFwic3RtbWFjX3Bjcy5jXCIsXG4gICAgXCJzdG1tYWNfcGNzLmhcIixcbiAgICBcInN0bW1hY19wbGF0Zm9ybS5jXCIsXG4gICAgXCJzdG1tYWNfcGxhdGZvcm0uaFwiLFxuICAgIFwic3RtbWFjX3B0cC5jXCIsXG4gICAgXCJzdG1tYWNfcHRwLmhcIixcbiAgICBcInN0bW1hY19zZWxmdGVzdHMuY1wiLFxuICAgIFwic3RtbWFjX3RjLmNcIixcbiAgICBcInN0bW1hY192bGFuLmNcIixcbiAgICBcInN0bW1hY192bGFuLmhcIixcbiAgICBcInN0bW1hY194ZHAuY1wiLFxuICAgIFwic3RtbWFjX3hkcC5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjQyLjY5MjI3NDA2NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjE4OTE1MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gc3RtbWFjX3BjaS5jKipcblxuT2theSwgaGVyZSB3ZSBhcmUsIHN0YXJpbmcgYXQgYHN0bW1hY19wY2kuY2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gc3RhcnQgZGlzc2VjdGluZyB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlLCByaWdodCBvZmYgdGhlIGJhdC4gSXQncyB0aGUgUENJIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTVE1NQUMgZHJpdmVyLCBhbmQgSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgUENJIGJ1cyBpdHNlbGYuIEknbSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgUENJIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBpbnRlcnJ1cHQgaGFuZGxpbmcg4oCTIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgYSBQQ0kgZHJpdmVyLiBJJ20gYW50aWNpcGF0aW5nIHNvbWUgcG90ZW50aWFsbHkgdmVuZG9yLXNwZWNpZmljIHJlZ2lzdGVyIGFjY2VzcyBoZXJlIGFzIHdlbGwsIGdpdmVuIHRoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIHByb3ByaWV0YXJ5IFNvQyBhbmQgUEhZLCBhbmQgSSBuZWVkIHRvIGtlZXAgYW4gZXllIG91dCBmb3IgdGhhdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXnigJl2ZSBoYW5kbGVkIHRoZSBsaW5rIGluaXRpYWxpemF0aW9uLCBETUEgc2V0dXAsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBQQ0kgZnJhbWV3b3JrLiBMZXQncyBzZWUgd2hhdCdzIGluIHN0b3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTQ5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjQ1LjkxNDE2ODU2M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzMzgxMzUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNDo0NS45NTg1MTUyNThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExNDg3Mjg1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2Vzcywgc3BlYWtpbmcgZnJvbSBhIGZpcnN0LXBlcnNvbiBleHBlcnQgcGVyc3BlY3RpdmUsIGFuZCBzdGFydGluZyB3aXRoIGEgYm9sZGVkIGhlYWRlcjpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgUmVnaXN0cmF0aW9uIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBob2xkIG9uIGEgc2Vjb25kLiBcIkhvdyBpcyBpdCByZWdpc3RlcmVkP1wiIEkgaW1tZWRpYXRlbHkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZWNoYW5pc20gYmVoaW5kIHRoZSByZWdpc3RyYXRpb24uIElzIGl0IGEgZGlyZWN0IG1hcHBpbmc/IEFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZSBzb3J0IG9mIG1ldGFkYXRhIHN0cnVjdHVyZT8gT3IgaXMgaXQgbW9yZSBhYnN0cmFjdCBhbmQgc2VtYW50aWMtYmFzZWQ/IFRoZSBudWFuY2VzIGhlcmUgYXJlIGNyaXRpY2FsLiBLbm93aW5nIHRoZSB1bmRlcmx5aW5nIHJlZ2lzdHJhdGlvbiBtZXRob2RvbG9neSB3aWxsIGNvbXBsZXRlbHkgZGljdGF0ZSB0aGUgc3Vic2VxdWVudCBzdGVwcyBJIHRha2UgaW4gYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgbWFuaXB1bGF0aW9uLiBJIG5lZWQgdGhlIGRldGFpbC4gVGhlIGFyY2hpdGVjdHVyZSBpbiBxdWVzdGlvbiBsaWtlbHkgcGxheXMgaW50byB0aGlzIHJlZ2lzdHJhdGlvbiBhbmQgdGhlIGhvdy93aHkgb2YgdGhhdCBpcyB3aGF0IEkgbmVlZCB0byB1bnBhY2sgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMjUsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjQ5LjA3MzM5MTEwOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0NTQxNzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIyMjptb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTQ6NDkuMjc3OTM2ODI0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjkzMTE0ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQWNjZXNzaWJpbGl0eSBvZiBhIFBDSSBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSBmdXp6IGl0IGVmZmVjdGl2ZWx5IHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBpZiBRRU1VIGVtdWxhdGVzIHRoZSBkZXZpY2UuIFVuZm9ydHVuYXRlbHksIFFFTVUgZG9lc24ndCBkaXJlY3RseSBlbXVsYXRlIHRoZSBgc3RtbWFjYCBkZXZpY2UsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgb2Z0ZW4gdXNlZCBvbiBJbnRlbCBRdWFyayBhbmQgRWxraGFydCBMYWtlIHN5c3RlbXMuXG5cblRoZSBpbW1lZGlhdGUgbmV4dCB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIFN5emthbGxlci4gUGVyaGFwcyB0aGVyZSdzIGEgd29ya2Fyb3VuZCB3aXRoIGEgcHNldWRvLWRldmljZSBvciBhIG1ldGhvZCBsZXZlcmFnaW5nIGBzeXpfcGNpX3NldHVwYD8gQnV0IFN5emthbGxlcidzIFBDSSBmdXp6aW5nIHJlbGllcyBvbiB0aGUgdGFyZ2V0IGRldmljZSBiZWluZyBlbXVsYXRlZCB3aXRoaW4gUUVNVSwgb3IgcG90ZW50aWFsbHkgdGhyb3VnaCB1c2Ugb2YgYHN5el9wY2lfc2V0dXBgLiBJZiBRRU1VIGRvZXNuJ3QgZW11bGF0ZSBpdCwgdGhlcmUncyBhIHByb2JsZW0uIFRoZSBwcm9tcHQgbWVudGlvbnMgYSBmZXcgY2F0ZWdvcmllcyBvZiB1bnJlYWNoYWJsZSBjb2RlOiBob3QtdW5wbHVnLCBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMsIGFuZCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gSSBxdWlja2x5IHJ1bGUgb3V0IGBzdG1tYWNgIGZhbGxpbmcgaW50byB0aGF0IGxhc3QgY2F0ZWdvcnkg4oCTIGl0J3MgYW4gRXRoZXJuZXQgTUFDIGRyaXZlciwgbm90IGEgc3BlY2lhbGl6ZWQgZGV2aWNlLlxuXG5Ob3csIGRvZXMgUUVNVSBlbXVsYXRlIGEgc2ltaWxhciBkZXZpY2U/IFFFTVUgZG9lcyBlbXVsYXRlIGBkd21hY2AgaW4gc29tZSBBUk0gbWFjaGluZXMg4oCTIGxpa2UgdGhlIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AgZmlsZSBmb3IgdGhlIHN1bjhpIHN5c3RlbS4gQnV0IHN1bjhpIGhhcyBpdHMgb3duIGVtYWMuIEl0IGRvZXMgZW11bGF0ZSBvdGhlciBNQUNzIGxpa2UgYGlteF9mZWMuY2AsIGBjYWRlbmNlX2dlbS5jYCwgYGZ0Z21hYzEwMC5jYCwgYW5kIGBucGNtN3h4X2VtYy5jYC4gQnV0IG5vIGBzdG1tYWNgIGVtdWxhdGlvbiBpcyBwcmVzZW50LiBJbiBmYWN0LCBgc3RtbWFjYCBpcyBhIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgKERXTUFDKS5cblxuU28sIHRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgaGF2ZSBhIGdlbmVyaWMgRFdNQUMgUENJIGRldmljZT8gTm8uIEFuZCBTeXprYWxsZXIgZG9lc24ndCBoYXZlIG1hZ2ljIHRoYXQgY3JlYXRlcyBhbiBlbXVsYXRvciBpZiBRRU1VIGRvZXMgbm90LiBJdCBjYW4gaW5qZWN0IFVTQiBkZXZpY2VzICh2aWEgZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLCBidXQgbm90IFBDSSBkZXZpY2VzLiBTeXprYWxsZXIgbGV2ZXJhZ2VzIGB2aGNpYCBmb3IgQmx1ZXRvb3RoLCBgbWFjODAyMTFfaHdzaW1gIGZvciBXaUZpLCBgdWlucHV0YCBmb3IgaW5wdXQsIGFuZCBgdml2aWRgIGZvciBWNEwyLiBBbGwgc29mdHdhcmUtYmFzZWQgZW11bGF0aW9ucy4gSXQgZG9lc24ndCBoYXZlIGEgc29mdHdhcmUgZW11bGF0b3IgZm9yIFBDSS4gU28sIGlmIGBzdG1tYWNgIGlzIGEgUENJIGRldmljZSwgSSBhbSBzdHVjayB1bmxlc3MgUUVNVSBlbXVsYXRlcyBpdC5cblxuQWhhISBXYWl0LCBRRU1VICpkb2VzKiBlbXVsYXRlIERXTUFDIGluIHNvbWUgQVJNIGJvYXJkcyEgVGhpcyBnaXZlcyBtZSBob3BlLiBJIHJlY2FsbCBzZWVpbmcgYGh3L25ldC9kZXNpZ253YXJlLmNgIHdpdGhpbiBRRU1VLiBOb3csIHRvIHZlcmlmeSBpZiBRRU1VIGRvZXMgaW5kZWVkIGVtdWxhdGUgdGhlIGBkZXNpZ253YXJlLmNgIGludGVyZmFjZSB0byBnYWluIGFjY2VzcyB0byB0aGUgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU4MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNDo1OS41NzEwNTcxNDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMTc3MDczLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXNpZ253YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNDo1OS42MzMyNDIxOTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk1MDkwODMxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTeXprYWxsZXIgUmVwb3J0IG9uIHN0bW1hYyoqXG5cbk9rYXksIHRoZSByZXBvcnQgcG9pbnRzIHRvIGBzdG1tYWNgIGFzIHRoZSBkcml2ZXIgaW52b2x2ZWQuIFJpZ2h0LCBsZXQncyBzZWUgaWYgc3l6a2FsbGVyIGlzIGFjdGl2ZWx5IGZ1enppbmcgYHN0bW1hY2AuIFRoZSBjb21taXQgYXV0aG9yIGlzIHRoYXQgZmFtaWxpYXIgYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYCBoYW5kbGUsIHdoaWNoIG1lYW5zIHN5emthbGxlciAqZGlkKiBpbmRlZWQgZmluZCBhIGJ1ZyBpbiBgc3RtbWFjYCEgVGhhdCdzIGludGVyZXN0aW5nLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGF0dGFjayB2ZWN0b3IuIEhvdyBkaWQgc3l6a2FsbGVyIGV2ZW4gKnJlYWNoKiB0aGUgYHN0bW1hY2AgZHJpdmVyPyBNeSBmaXJzdCB0aG91Z2h0IGlzIHRoYXQgaXQncyBwcm9iYWJseSBhIHBsYXRmb3JtIGRyaXZlciwgc28gbWF5YmUgc3l6a2FsbGVyIGlzIGluc3RhbnRpYXRpbmcgaXQgdGhyb3VnaCBkZXZpY2UgdHJlZSBvdmVybGF5cy4gQSBtb3JlIGNvbXBsZXRlIGludmVzdGlnYXRpb24gaXMgbGlrZWx5IG5lZWRlZCB0aG91Z2gsIHRoZXJlIGFyZSBtYW55IHBvc3NpYmxlIGVudHJ5IHBvaW50cy4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBzdG1tYWNfcGxhdGZvcm0uY2AgYW5kIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTY5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE1OjA2LjU4NDE1Njk1M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwNDQ4MTQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTU6MDYuNjMzMjEwMDM3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODkzNDk2NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJgKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCdzIHNlZSB3aGF0IGBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyYCBpcyBkb2luZy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBzcGVjaWZpYyBtb2R1bGUgaXMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgcGxhdGZvcm0gZHJpdmVyIGZyYW1ld29yay4gSXMgaXQgYSBzdGFuZGFyZCBpbXBsZW1lbnRhdGlvbiwgb3IgYXJlIHRoZXJlIGFueSBjdXN0b20gZXh0ZW5zaW9ucyBvciBvdmVycmlkZXMgaW4gcGxheT8gSSB3YW50IHRvIHF1aWNrbHkgZXZhbHVhdGUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHJlZCBmbGFncyBpbiB0ZXJtcyBvZiByZXNvdXJjZSBtYW5hZ2VtZW50LCBlcnJvciBoYW5kbGluZywgb3IgaW50ZXJydXB0IGhhbmRsaW5nLCBlc3BlY2lhbGx5IGxvb2tpbmcgYXQgdGhlIHByb2JlIGFuZCByZW1vdmUgZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIGRyaXZlcidzIGRldmljZSBtYXRjaCB0YWJsZSBpcyBjb3JyZWN0bHkgZGVmaW5lZCBhbmQgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBkcml2ZXJzLiBJ4oCZbGwgYmUgcGFydGljdWxhcmx5IGZvY3VzZWQgb24gaG93IGl0IGhhbmRsZXMgaXRzIGRldmljZS1zcGVjaWZpYyBkYXRhIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIGlmIHRoZXJlIGlzIGFueS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM0MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE1OjA5LjgyMjU2Mjk3OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQyMDEwOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFuYXJpb25fZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEzMi19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMzM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhbmFyaW9uX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3Y19ldGhfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM3MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGR3Y19ldGhfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM3MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYz0yNzM9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZWljNzcwMF9kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjgwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGVpYzc3MDBfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTY5PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3bWFjX2dlbmVyaWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTc2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjc3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZHdtYWNfZ2VuZXJpY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTM5Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbXhfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDAwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NDAxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoaW14X2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTI3Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbmdlbmljX21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjc5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI4MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGluZ2VuaWNfbWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz0xMzk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW50ZWxfZXRoX3BsYXRfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTE0Ny19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxNDg6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbnRlbF9ldGhfcGxhdF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9NDk3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGlwcTgwNnhfZ21hY19kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNTA1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjUwNjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGlwcTgwNnhfZ21hY19kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy01MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0yMjk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbHMxeF9kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMzUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMzY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihsczF4X2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTc3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGxwYzE4eHhfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTg1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jOjg2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobHBjMTh4eF9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy04Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NjcyPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1lZGlhdGVrX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjgwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2ODE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtZWRpYXRla19kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz04Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZXNvbjZfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy05MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6OTE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtZXNvbjZfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTkyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTUwNz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZXNvbjhiX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy01MTUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NTE2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWVzb244Yl9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy01MTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG52dF9kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTMzLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjEzNDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG52dF9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy0xMzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jPTgwOT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBxY29tX2V0aHFvc19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTgxNi19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6ODE3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocWNvbV9ldGhxb3NfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTgxOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0yMjQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcmVuZXNhc19nYmV0aF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjMxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIzMjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHJlbmVzYXNfZ2JldGhfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNjM3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHJrX2dtYWNfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjQ0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNjQ1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocmtfZ21hY19kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTY0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz04MT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciByem4xX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy04OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo4OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHJ6bjFfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtOTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0yMjI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgczMyX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIzMC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIzMTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHMzMl9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz02ODE9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc29jZnBnYV9kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjg4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjY4OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHNvY2ZwZ2FfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjkwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9ODA9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc29waGdvX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTg4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM6ODk6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzb3BoZ29fZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy05MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MjE0PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNwYWNlbWl0X2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjIyLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMjM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzcGFjZW1pdF9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjI0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz0xMzc9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RhcmZpdmVfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNDUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE0Njptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN0YXJmaXZlX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYz0zMDI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RpX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTMwOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjMxMDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN0aV9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTMxMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM9NjcxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN0bTMyX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjc5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo2ODA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdG0zMl9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjgxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTQ3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjU1aV9nbWFjMjAwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE1NC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjE1NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjU1aV9nbWFjMjAwX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjg1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjhpX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI5NC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI5NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjhpX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjk2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYz0xNTY9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3VuN2lfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNjMtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjE2NDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjdpX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNjUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTQwNT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0ZWdyYV9tZ2JlX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDEzLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzo0MTQ6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih0ZWdyYV9tZ2JlX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy00MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jPTI3Mz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0aGVhZF9kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTI4MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjgxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodGhlYWRfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTI4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHZpc2NvbnRpX2V0aF9kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI2OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjY5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodmlzY29udGlfZXRoX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE1OjA5Ljg3Njc2OTkwM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM0Mjc2MDMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYCBpbiBRRU1VKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGFib3V0IHBsYXRmb3JtIGRyaXZlcnMsIGJ1dCB0aGVuIEkgcmVtZW1iZXJlZCBgc3l6a2FsbGVyYCBhbmQgaXRzIGFiaWxpdHkgdG8gZnV6eiBQQ0kgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJIHJlY2FsbGVkIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX3NldHVwYCwgYnV0IHRoYXQncyBub3QgcXVpdGUgcmlnaHQuIEl0J3MgbW9yZSB0aGF0IHN5emthbGxlciBjYW4gZnV6eiAqYW55KiBQQ0kgZGV2aWNlIGlmIHByZXNlbnQuIE5vdywgd2FpdCwgaXMgYHN0bW1hY2AgcmVsZXZhbnQgaGVyZT8gSSBrbm93IGl0J3MgdXNlZCBpbiBJbnRlbCBRdWFyayBhbmQgRWxraGFydCBMYWtlLCBhbmQgdGhlcmUncyB0aGUgYHN0bW1hY19wY2kuY2AgZHJpdmVyIGZvciB0aG9zZS5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogRG9lcyBRRU1VIGVtdWxhdGUgdGhvc2U/IE5vLCBwcm9iYWJseSBub3QgZGlyZWN0bHkuIEFuZCB0aGVuIHRoZSBxdWVzdGlvbiBpcywgaWYgc3l6a2FsbGVyIGlzIHJ1bm5pbmcgb24gUUVNVSwgaG93IHdvdWxkIGl0IGV2ZW4gZmluZCBhIFBDSSBkZXZpY2UgbGlrZSB0aGlzPyBUaGUgZGVmYXVsdCBpcyBRRU1VLCBub3QgcmVhbCBoYXJkd2FyZS4gSXQgY291bGRuJ3QgZmluZCBpdCBkaXJlY3RseSB2aWEgYSB2aXJ0dWFsIFBDSSBkZXZpY2UgYmVjYXVzZSBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgaGFyZHdhcmUuIFRoZSBuZXh0IHRob3VnaHQgd2FzLCBwZXJoYXBzIGBzdG1tYWNfcGxhdGZvcm0uY2A/IEFoLCB5ZXMsIHN5emthbGxlciBjYW4gaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgdmlhIHRoZSBgL3N5cy9kZXZpY2VzL3BsYXRmb3JtYCBvciBkZXZpY2UgdHJlZSBvdmVybGF5cyFcblxuQnV0IGhhbmcgb24sIHN5emthbGxlciBhbHNvIGhhcyB0aGluZ3MgbGlrZSBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYC4gU28sIHVsdGltYXRlbHksIGl0IGNhbiBmdXp6IGBzdG1tYWNgICppZiogdGhlIGluc3RhbmNlIG9mIGBzdG1tYWNgIGV4aXN0cy5cblxuVGhlIHByb21wdCwgb2YgY291cnNlLCBwb2ludHMgb3V0IHRoZSBpc3N1ZTogY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBlc3BlY2lhbGx5IGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRoYXQgYXJlIGNhbGxlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLiBJbiB0aGlzIHNwZWNpZmljIGNhc2UsIHRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYC4gQ3J1Y2lhbGx5LCB0aGF0J3MgY2FsbGVkIGZyb20gYF9fc3RtbWFjX3JlbGVhc2VgICh3aGljaCBpcyB0aGUgYG5kb19zdG9wYCBjYWxsYmFjayksIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9vcGVuYCwgYW5kIGBzdG1tYWNfc3VzcGVuZGAuXG5cbmBfX3N0bW1hY19yZWxlYXNlYCBpcyBgbmRvX3N0b3BgLCB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgYnJvdWdodCBkb3duLCB1c2luZyBzb21ldGhpbmcgbGlrZSBgaXAgbGluayBzZXQgZGV2IGV0aDAgZG93bmAuIE5vdywgdGhhdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlICppZiogdGhlIGRldmljZSBleGlzdHMuIFRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gdGhlbiBpczogRG9lcyB0aGUgZGV2aWNlIGV4aXN0IGluIFFFTVU/XG5cblNvLCBJIGxvb2tlZCBpbnRvIFFFTVUncyBkZXZpY2UgbW9kZWxzLiBJIHJlbWVtYmVyZWQgc29tZXRoaW5nIGxpa2UgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCBiZWluZyBpbiBRRU1VLiBUaGF0J3MgZm9yIGBzdW44aS1lbWFjYC4gQnV0IHdhaXQsIGlzbid0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBgZHdtYWMtc3VuOGlgIGZvciBgc3RtbWFjYD8gSXQgbG9va3MgbGlrZSBgZHdtYWMtc3VuOGkuY2AgaXMgdGhlIG9uZSB0aGF0J3MgcmVsZXZhbnQuXG5cblRoZSBrZXkgdGhlbiBpcyB3aGV0aGVyIFFFTVUncyBgYWxsd2lubmVyLXN1bjhpLWVtYWNgIGlzIGNvbXBhdGlibGUgd2l0aCBgZHdtYWMtc3VuOGlgLiBJIGNoZWNrZWQgdGhlIFFFTVUgY29kZSwgYW5kIGNvbmZpcm1lZCB0aGF0IGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2Agc3VwcG9ydHMgYFwiYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNcImAuIEFuZCwgaW4gdGhlIExpbnV4IGtlcm5lbCwgYGR3bWFjLXN1bjhpLmNgIGFsc28gbWF0Y2hlcyBgXCJhbGx3aW5uZXIsc3VuOGktaDMtZW1hY1wiYC4gVGhlcmVmb3JlLCBJIGNvbmNsdWRlIHRoYXQgUUVNVSBkb2VzIGVtdWxhdGUgdGhlIGhhcmR3YXJlLCBhbmQgdGhlIGNvZGUgcGF0aCBpcyBpbmRlZWQgcmVhY2hhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzEzNSwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNToyMC4yMTk1MzM2MjdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMTg1NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFsbHdpbm5lcixzdW44aS1oMy1lbWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjY4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjhpX2R3bWFjX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjY5OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI3MC1cXHRcXHQuZGF0YSA9IFxcdTAwMjZlbWFjX3ZhcmlhbnRfaDMgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTU6MjAuMjcwNzI2MDhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAxMTMyNjQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyBTVE1NQUMgaW4gUUVNVTogQSBWZXJpZmljYXRpb24gQ2hlY2sqKlxuXG5Pa2F5LCB5ZXMsIHRoaXMgaXMgZ3JlYXQhIFFFTVUgKmRvZXMqIGVtdWxhdGUgdGhlIGBhbGx3aW5uZXIsc3VuOGktaDMtZW1hY2AsIHdoaWNoIHJlbGllcyBvbiBgZHdtYWMtc3VuOGkuY2AgYW5kIHRoYXQgaW4gdHVybiwgdXNlcyBgc3RtbWFjYC4gRmFudGFzdGljLCB0aGF0IG1lYW5zIGBzdG1tYWNgICppcyogZGVmaW5pdGVseSBhY2Nlc3NpYmxlIGluIHRoZSBRRU1VIGVudmlyb25tZW50ISBJIHdhcyBzdGFydGluZyB0byB0aGluayBpdCB3b3VsZG4ndCBiZSBhbmQgdGhhdCB3b3VsZCBoYXZlIGJlZW4gYSBtYXNzaXZlIHNldGJhY2suXG5cbkhhbmcgb24gYSBzZWNvbmQuLi4gdGhlIHNwZWNpZmljIHBhdGNoIEknbSBhbmFseXppbmcgaXMgdGFyZ2V0aW5nIGBkd3hnbWFjMl9kbWEuY2AuIE5vdywgdGhhdCBmaWxlIGlzIGFzc29jaWF0ZWQgd2l0aCBgZHd4Z21hYzJgIOKAkyBzcGVjaWZpY2FsbHksIERlc2lnbldhcmUgWEdNQUMgMi4xMC4gSG9sZCBvbi4gSXMgKnRoYXQqIGNvbXBvbmVudCByZWFjaGFibGU/IElzIHRoZSBzY29wZSBvZiB0aGUgcGF0Y2ggcmVsZXZhbnQ/XG5cbkkgc2hvdWxkIHByb2JhYmx5IHF1aWNrbHkgdmVyaWZ5IHdoZXJlIGBkd3hnbWFjMjEwX2RtYV9vcHNgIGlzIGFjdHVhbGx5IHVzZWQgYW5kIG1ha2Ugc3VyZSB0aGF0IGl0IGlzIHN1cHBvcnRlZC4gR290dGEga2VlcCB0aGUgZGV0YWlscyByaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3NTUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTU6MjUuMjgyMDU1NzU3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUzNTI1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkd3hnbWFjMjEwX2RtYV9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaD00NzA9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGxnbWFjMl9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDo0NzE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC00NzItZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZGVzY19vcHMgZHd4Z21hYzIxMF9kZXNjX29wcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTYzNj1zdGF0aWMgaW50IGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTY1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo2NTE6Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy02NTItXFx0LnJlc2V0ID0gZHd4Z21hYzJfZG1hX3Jlc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTctXFx0XFx0LmRlc2MgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjU4OlxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTktXFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hnbWFjMjEwX29wcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNzktXFx0XFx0LmRlc2MgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjgwOlxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yODEtXFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hsZ21hYzJfb3BzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNToyNS4zMjc1OTc1MDFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5ODg4ODgzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGh3aWYuY2AgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgY29kZS4gTGV0J3Mgc3RhcnQgd2l0aCBhIHByYWN0aWNhbCBhcHByb2FjaC4gQmVmb3JlIGRpZ2dpbmcgZGVlcCBpbnRvIHRoZSBhY3R1YWwgbG9naWMsIGxldCdzIGdldCBhIGhhbmRsZSBvbiB0aGUgc2NvcGUuIEknbGwgbmVlZCB0byBpZGVudGlmeSBhbGwgdGhlIGVudHJpZXMgd2l0aGluIGBod2lmLmNgIHRoYXQgKmFjdHVhbGx5KiB1dGlsaXplIHRoaXMgZnVuY3Rpb24gb3IgZGF0YSBzdHJ1Y3R1cmUgaW4gcXVlc3Rpb24uIFRoYXQncyB0aGUgZmlyc3QgY3JpdGljYWwgc3RlcC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVycyBhbmQgY29uc3VtZXJzIG9mIHRoaXMgY29kZSBpcyBmdW5kYW1lbnRhbCB0byBnYXVnaW5nIGl0cyBicm9hZGVyIGltcGxpY2F0aW9ucyBhbmQgYXZvaWRpbmcgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIGZyb20gY2hhbmdlcy4gVGhpcyBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzIHdoZXJlIEnigJlsbCBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3NTcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNToyOS4wMjY0ODk1OTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI1MDpcXHRcXHRcXHQuZGV2X2lkID0gRFdYR01BQ19JRCxcXG4gMjUxOlxcdFxcdFxcdC5yZWdzID0ge1xcbiAyNTI6XFx0XFx0XFx0XFx0LnB0cF9vZmYgPSBQVFBfWEdNQUNfT0ZGU0VULFxcbiAyNTM6XFx0XFx0XFx0XFx0Lm1tY19vZmYgPSBNTUNfWEdNQUNfT0ZGU0VULFxcbiAyNTQ6XFx0XFx0XFx0XFx0LmVzdF9vZmYgPSBFU1RfWEdNQUNfT0ZGU0VULFxcbiAyNTU6XFx0XFx0XFx0XFx0LmZwZV9yZWcgPSBcXHUwMDI2ZHd4Z21hYzNfZnBlX3JlZyxcXG4gMjU2OlxcdFxcdFxcdH0sXFxuIDI1NzpcXHRcXHRcXHQuZGVzYyA9IFxcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxcbiAyNTg6XFx0XFx0XFx0LmRtYSA9IFxcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXFxuIDI1OTpcXHRcXHRcXHQubWFjID0gXFx1MDAyNmR3eGdtYWMyMTBfb3BzLFxcbiAyNjA6XFx0XFx0XFx0LnZsYW4gPSBcXHUwMDI2ZHd4Z21hYzIxMF92bGFuX29wcyxcXG4gMjYxOlxcdFxcdFxcdC5od3RpbWVzdGFtcCA9IFxcdTAwMjZzdG1tYWNfcHRwLFxcbiAyNjI6XFx0XFx0XFx0LnB0cCA9IFxcdTAwMjZzdG1tYWNfcHRwX2Nsb2NrX29wcyxcXG4gMjYzOlxcdFxcdFxcdC5tb2RlID0gTlVMTCxcXG4gMjY0OlxcdFxcdFxcdC50YyA9IFxcdTAwMjZkd21hYzUxMF90Y19vcHMsXFxuIDI2NTpcXHRcXHRcXHQubW1jID0gXFx1MDAyNmR3eGdtYWNfbW1jX29wcyxcXG4gMjY2OlxcdFxcdFxcdC5lc3QgPSBcXHUwMDI2ZHdtYWM1MTBfZXN0X29wcyxcXG4gMjY3OlxcdFxcdFxcdC5zZXR1cCA9IGR3eGdtYWMyX3NldHVwLFxcbiAyNjg6XFx0XFx0XFx0LnF1aXJrcyA9IE5VTEwsXFxuIDI2OTpcXHRcXHR9LCB7XFxuIDI3MDpcXHRcXHRcXHQuY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQyxcXG4gMjcxOlxcdFxcdFxcdC5taW5faWQgPSBEV1hMR01BQ19DT1JFXzJfMDAsXFxuIDI3MjpcXHRcXHRcXHQuZGV2X2lkID0gRFdYTEdNQUNfSUQsXFxuIDI3MzpcXHRcXHRcXHQucmVncyA9IHtcXG4gMjc0OlxcdFxcdFxcdFxcdC5wdHBfb2ZmID0gUFRQX1hHTUFDX09GRlNFVCxcXG4gMjc1OlxcdFxcdFxcdFxcdC5tbWNfb2ZmID0gTU1DX1hHTUFDX09GRlNFVCxcXG4gMjc2OlxcdFxcdFxcdFxcdC5lc3Rfb2ZmID0gRVNUX1hHTUFDX09GRlNFVCxcXG4gMjc3OlxcdFxcdFxcdFxcdC5mcGVfcmVnID0gXFx1MDAyNmR3eGdtYWMzX2ZwZV9yZWcsXFxuIDI3ODpcXHRcXHRcXHR9LFxcbiAyNzk6XFx0XFx0XFx0LmRlc2MgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcXG4gMjgwOlxcdFxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbiAyODE6XFx0XFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hsZ21hYzJfb3BzLFxcbiAyODI6XFx0XFx0XFx0LnZsYW4gPSBcXHUwMDI2ZHd4bGdtYWMyX3ZsYW5fb3BzLFxcbiAyODM6XFx0XFx0XFx0Lmh3dGltZXN0YW1wID0gXFx1MDAyNnN0bW1hY19wdHAsXFxuIDI4NDpcXHRcXHRcXHQucHRwID0gXFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxcbiAyODU6XFx0XFx0XFx0Lm1vZGUgPSBOVUxMLFxcbiAyODY6XFx0XFx0XFx0LnRjID0gXFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcXG4gMjg3OlxcdFxcdFxcdC5tbWMgPSBcXHUwMDI2ZHd4Z21hY19tbWNfb3BzLFxcbiAyODg6XFx0XFx0XFx0LmVzdCA9IFxcdTAwMjZkd21hYzUxMF9lc3Rfb3BzLFxcbiAyODk6XFx0XFx0XFx0LnNldHVwID0gZHd4bGdtYWMyX3NldHVwLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNToyOS4wMjY1NjA4NTNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk0OTQzODU3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIHRob3VnaHRzLCBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgU3RtbWFjIERyaXZlciBJbXBhY3QqKlxuXG5BbHJpZ2h0LCBJIHNlZSB0aGVzZSBpZGVudGlmaWVycywgYERXWEdNQUNfSURgIGFuZCBgRFdYTEdNQUNfSURgLCBwb3BwaW5nIHVwLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGVpciBjb25uZWN0aW9uLCBidXQgdGhpcyBwYXRjaCBhbHNvIHRvdWNoZXMgYHN0bW1hY19tYWluLmNgLiBUaGF0J3MgYSByZWQgZmxhZy4gYHN0bW1hY19tYWluLmNgIGlzIHRoZSBjb3JlLCBnZW5lcmljIGNvZGUgZm9yIGFsbCBgc3RtbWFjYCBkcml2ZXJzLiBBbnkgY2hhbmdlIHRoZXJlIGNvdWxkIGhhdmUgd2lkZS1yZWFjaGluZyBlZmZlY3RzLlxuXG5TcGVjaWZpY2FsbHksIEknbSBub3RpbmcgdGhlIGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gIGZ1bmN0aW9uLiBBbmQgaXQncyBjYWxsZWQgdW5jb25kaXRpb25hbGx5IHdpdGhpbiBgc3RtbWFjX21haW4uY2AuIFNvLCBJIHJlYWxseSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgaW1wbGljYXRpb25zIG9mIGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gIGZyb20gdGhhdCBtb2R1bGUuIEl0IGNvdWxkIGJlIGFmZmVjdGVkLCBhbmQgSSBoYXZlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc0MCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE1OjMzLjk3NjAwMjcwNloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTg0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTY5LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNTY5OlxcdFxcdFxcdHN0bW1hY19zdG9wX3R4X2RtYShwcml2LCBjaGFuKTtcXG4yNTcwOlxcdH1cXG4yNTcxOlxcdFxcbjI1NzI6XFx0LyoqXFxuMjU3MzpcXHQgKiBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24gLSBvcmRlcmVkIGRhdGFwYXRoIHRlYXJkb3duIGFzIHBlciBJUCBzcGVjaWZpY2F0aW9uXFxuMjU3NDpcXHQgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXFxuMjU3NTpcXHQgKiBEZXNjcmlwdGlvbjpcXG4yNTc2OlxcdCAqIFdoZW4gdGVhcmRvd24gb3BzIGFyZSBhdmFpbGFibGUsIGZvbGxvdyB0aGUgZGF0YWJvb2sgb3JkZXJlZCB0ZWFyZG93blxcbjI1Nzc6XFx0ICogc2VxdWVuY2UuXFxuMjU3ODpcXHQgKiBGb2xsb3dzIHRoZSBsZWdhY3kgc3RvcCArIE1BQyBkaXNhYmxlIGZvciB2YXJpYW50cyB3aXRob3V0IHRoZSBmZWF0dXJlLlxcbjI1Nzk6XFx0ICovXFxuMjU4MDpcXHRzdGF0aWMgdm9pZCBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbjI1ODE6XFx0e1xcbjI1ODI6XFx0XFx0dTMyIHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcXG4yNTgzOlxcdFxcdHUzMiB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXR4X3F1ZXVlc190b191c2U7XFxuMjU4NDpcXHRcXHR1MzIgY2hhbjtcXG4yNTg1OlxcdFxcbjI1ODY6XFx0XFx0LyogU3RvcCBhbGwgVFggRE1BIGNoYW5uZWxzICovXFxuMjU4NzpcXHRcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG4yNTg4OlxcdFxcdFxcdHN0bW1hY19zdG9wX3R4X2RtYShwcml2LCBjaGFuKTtcXG4yNTg5OlxcdFxcbjI1OTA6XFx0XFx0LyogV2FpdCBmb3IgZXZlcnkgVFggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovXFxuMjU5MTpcXHRcXHRpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZWRtYS1cXHUwMDNldHhfZG1hX3N0b3BwZWQpXFxuMjU5MjpcXHRcXHRcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG4yNTkzOlxcdFxcdFxcdFxcdHN0bW1hY190eF9kbWFfc3RvcHBlZChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIGNoYW4pO1xcbjI1OTQ6XFx0XFxuMjU5NTpcXHRcXHQvKiBXYWl0IGZvciB0aGUgTVRMIFRYIHF1ZXVlcyB0byBmaW5pc2ggcHVzaGluZyBpbnRvIHRoZSBNQUMgKi9cXG4yNTk2OlxcdFxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlZG1hLVxcdTAwM2V0eF9tdGxfZHJhaW4pXFxuMjU5NzpcXHRcXHRcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG4yNTk4OlxcdFxcdFxcdFxcdHN0bW1hY190eF9tdGxfZHJhaW4ocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCBjaGFuKTtcXG4yNTk5OlxcdFxcbjI2MDA6XFx0XFx0LyogRGlzYWJsZSB0aGUgTUFDIFRYIGFuZCBSWCAqL1xcbjI2MDE6XFx0XFx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCBmYWxzZSk7XFxuMjYwMjpcXHRcXG4yNjAzOlxcdFxcdC8qIFdhaXQgZm9yIHRoZSBNVEwgUlggcXVldWVzIHRvIGRyYWluIGludG8gdGhlIFJYIERNQSAqL1xcbjI2MDQ6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VkbWEtXFx1MDAzZXJ4X210bF9kcmFpbilcXG4yNjA1OlxcdFxcdFxcdGZvciAoY2hhbiA9IDA7IGNoYW4gXFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxcbjI2MDY6XFx0XFx0XFx0XFx0c3RtbWFjX3J4X210bF9kcmFpbihwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIGNoYW4pO1xcbjI2MDc6XFx0XFxuMjYwODpcXHRcXHQvKiBTdG9wIGFsbCBSWCBETUEgY2hhbm5lbHMgKi9cXG4yNjA5OlxcdFxcdGZvciAoY2hhbiA9IDA7IGNoYW4gXFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxcbjI2MTA6XFx0XFx0XFx0c3RtbWFjX3N0b3BfcnhfZG1hKHByaXYsIGNoYW4pO1xcbjI2MTE6XFx0XFxuMjYxMjpcXHRcXHQvKiBXYWl0IGZvciBldmVyeSBSWCBETUEgY2hhbm5lbCB0byByZXBvcnQgaXRzZWxmIHN0b3BwZWQgKi9cXG4yNjEzOlxcdFxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlZG1hLVxcdTAwM2VyeF9kbWFfc3RvcHBlZClcXG4yNjE0OlxcdFxcdFxcdGZvciAoY2hhbiA9IDA7IGNoYW4gXFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxcbjI2MTU6XFx0XFx0XFx0XFx0c3RtbWFjX3J4X2RtYV9zdG9wcGVkKHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgY2hhbik7XFxuMjYxNjpcXHR9XFxuMjYxNzpcXHRcXG4yNjE4OlxcdC8qKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNTozMy45NzYzNjQ4NzZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyNjEyNzM5MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGggRnV6emluZyAtIEEgRGVlcCBEaXZlKipcblxuT2theSwgc28gYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAgaXMgdGhlIGNvcmUgb2YgdGhpcywgaXQncyBnZW5lcmljIGFuZCBjYWxsZWQgYnkgYWxsIHZhcmlhbnRzLiBJZiBhIHNwZWNpZmljIHZhcmlhbnQgZG9lc24ndCBoYXZlIHRoZSBleHBsaWNpdCBjaGVja3MgZm9yIGB0eF9kbWFfc3RvcHBlZGAgYW5kIGZyaWVuZHMsIGl0IGp1c3Qgc2tpcHMgdGhlIHdhaXQgYW5kIHByb2NlZWRzIHdpdGggdGhlIHN0b3AgYW5kIE1BQyBkaXNhYmxlLiBUaGlzIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBidXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIGl0IHdvcnRoIGZ1enppbmc/XG5cblRoZSBwYXRjaCBpdHNlbGYgaW50cm9kdWNlcyBhIHRlYXJkb3duIHNlcXVlbmNlLiBJdCB3YWl0cyBmb3IgRE1BIGFuZCBNVEwgcXVldWVzIHRvIGRyYWluLiBUaGlzIGZ1bmRhbWVudGFsbHkgY2hhbmdlcyB0aGUgc3luY2hyb25pemF0aW9uIGFuZCB0ZWFyZG93biBwcm9jZXNzLiAgQ3J1Y2lhbGx5LCBpdCBtb2RpZmllcyBgX19zdG1tYWNfcmVsZWFzZWAgKHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgYG5kb19zdG9wYCksIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9vcGVuYCwgYW5kIGBzdG1tYWNfc3VzcGVuZGAuIFRoYXQncyBmdW5jdGlvbmFsLiBUaGlzIGludHJvZHVjZXMgcG90ZW50aWFsIGRlYWRsb2NrcyBpZiB0aGUgaGFyZHdhcmUgZG9lc24ndCBjb29wZXJhdGUsIG9yIGl0IGNvdWxkICpmaXgqIGV4aXN0aW5nIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLlxuXG5Ob3csIHRob3NlIGByZWFkbF9wb2xsX3RpbWVvdXRgIGNhbGxzIGluIGBkd3hnbWFjMl9kbWEuY2AgLSB0aGV5J2xsIGxvb3AgZm9yIHVwIHRvIDEwbXMuIElmIHRoZSBoYXJkd2FyZSBpcyBlbXVsYXRlZCwgd2UgbWlnaHQgc2VlIHRpbWVvdXRzLCBidXQgbm90IG5lY2Vzc2FyaWx5IGEgY3Jhc2guIEhvd2V2ZXIsIHRoZSAqY2hhbmdlIGluIHRlYXJkb3duIG9yZGVyKiBhbmQgdGhlICphZGRpdGlvbiBvZiBwb2xsaW5nKiBtYWtlIHRoaXMgd29ydGggYSBjbG9zZXIgbG9vay5cblxuSGFuZyBvbi4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgLi4uIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3NcIi4gQnV0IGBfX3N0bW1hY19yZWxlYXNlYCBpcyB0aWVkIHRvIGBuZG9fc3RvcGAsIHdoaWNoIHJ1bnMgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIGJyb3VnaHQgZG93biB2aWEgYGlwIGxpbmsgc2V0IGRldiBldGgwIGRvd25gLiBUaGF0J3MgKm5vdCogYSBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbjsgaXQncyBhIG5ldHdvcmsgaW50ZXJmYWNlIHN0YXRlIGNoYW5nZS4gU3l6a2FsbGVyIGhpdHMgdGhhdCBraW5kIG9mIHRoaW5nIGNvbnN0YW50bHkuIEFuZCB3ZSBhbHNvIGhhdmUgYHN0bW1hY194ZHBfb3BlbmAgYW5kIGBzdG1tYWNfeGRwX3JlbGVhc2VgIHdoaWNoIGFyZSB0cmlnZ2VyZWQgYnkgWERQIHByb2dyYW0gYXR0YWNobWVudCBhbmQgZGV0YWNobWVudC4gVGhpcyBpcyBkZWZpbml0ZWx5IGZ1enphYmxlIHVuZGVyIG5vcm1hbCBvcGVyYXRpb25zIVxuXG5MZXQncyBuYWlsIGRvd24gdGhvc2UgZm9jdXMgc3ltYm9sczpcblxuKiAgIGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gXG4qICAgYHN0bW1hY194ZHBfb3BlbmBcbiogICBgc3RtbWFjX3hkcF9yZWxlYXNlYFxuKiAgIGBzdG1tYWNfc3VzcGVuZGBcbiogICBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgXG4qICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmBcbiogICBgZHd4Z21hYzJfcnhfbXRsX2RyYWluYFxuKiAgIGBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZGBcblxuV2FpdCwgYHN0bW1hY19zdXNwZW5kYCBpcyBhIHBvd2VyIG1hbmFnZW1lbnQgY2FsbGJhY2suIFN5emthbGxlciBjYW4gZWFzaWx5IHRyaWdnZXIgc3VzcGVuZC9yZXN1bWUgY3ljbGVzLiAgYHN0bW1hY194ZHBfb3BlbmAgYW5kIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFyZSB0aGUgWERQIHNldHVwL3RlYXJkb3duIHBvaW50cy4gIEFuZCBhbHRob3VnaCBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgaXQncyBjYWxsZWQgZnJvbSB0aG9zZSB2ZXJ5IGltcG9ydGFudCBlbnRyeSBwb2ludHM6IGBfX3N0bW1hY19yZWxlYXNlYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGFuZCBgc3RtbWFjX3N1c3BlbmRgLiBIb2xkIG9uLCBgX19zdG1tYWNfcmVsZWFzZWAgaXMgc3RhdGljLCB3aGljaCBtZWFucyBgc3RtbWFjX3JlbGVhc2VgICh0aGUgYG5kb19zdG9wYCBjYWxsYmFjaykgaXMgdGhlIHB1YmxpYyBlbnRyeSBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5ODYsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNTo0NS4yMzc2NDI2NDFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTc4OTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19yZWxlYXNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz05Mzk9c3RhdGljIHZvaWQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTk1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjk1MzpzdGF0aWMgdm9pZCBzdG1tYWNfcmVsZWFzZV9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtOTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Mjg3Mj1zdGF0aWMgaW50IHN0bW1hY190eF9jbGVhbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBidWRnZXQsIHUzMiBxdWV1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjk5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI5OTM6XFx0XFx0c3RtbWFjX3JlbGVhc2VfdHhfZGVzYyhwcml2LCBwLCBwcml2LVxcdTAwM2VkZXNjcmlwdG9yX21vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjk5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDE4Mj1zdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMjY6XFx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIyNy1pbml0X2Vycm9yOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MjMxPXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyODI6c3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI4My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MzA2OlxcdHN0bW1hY19yZWxlYXNlX3B0cChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMTItLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MzEzOiAqICBzdG1tYWNfcmVsZWFzZSAtIGNsb3NlIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMTQtICogIEBkZXYgOiBkZXZpY2UgcG9pbnRlci5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDMxNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQzMTg6c3RhdGljIGludCBzdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDMxOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MzI5OlxcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxNDk9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxODM6XFx0XFx0X19zdG1tYWNfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzM1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzU1LVxcdC5uZG9fZmVhdHVyZXNfY2hlY2sgPSBzdG1tYWNfZmVhdHVyZXNfY2hlY2ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzU2OlxcdC5uZG9fc3RvcCA9IHN0bW1hY19yZWxlYXNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzM1Ny1cXHQubmRvX2NoYW5nZV9tdHUgPSBzdG1tYWNfY2hhbmdlX210dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYzOT1pbnQgc3RtbWFjX3JlaW5pdF9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggcnhfY250LCB1OCB0eF9jbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDQtXFx0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2NDU6XFx0XFx0c3RtbWFjX3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc2NjQ9aW50IHN0bW1hY19yZWluaXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiByeF9zaXplLCB1MzIgdHhfc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzY2OS1cXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzY3MDpcXHRcXHRzdG1tYWNfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzY3MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTU6NDUuMjk3ODMwNzM0WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0Mzc1NDc2NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgU1RNTUFDIFN5bWJvbCBWaXNpYmlsaXR5KipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBJJ20gbG9va2luZyBhdCBgc3RtbWFjX3JlbGVhc2VgIHdoaWNoLCBhcyBJIHN1c3BlY3RlZCwgY2FsbHMgYF9fc3RtbWFjX3JlbGVhc2VgLiBUaGF0IG1lYW5zIEkgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHMgdG8gdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgY29kZSBwYXRoczogYHN0bW1hY19yZWxlYXNlYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBhbmQgYHN0bW1hY19zdXNwZW5kYC4gQWxzbywgSSBuZWVkIHRvIGluY2x1ZGUgdGhlc2UgcmVsYXRlZCBETUEgZnVuY3Rpb25zOiBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgLCBgZHd4Z21hYzJfdHhfbXRsX2RyYWluYCwgYGR3eGdtYWMyX3J4X210bF9kcmFpbmAsIGFuZCBgZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRgLlxuXG5Ib2xkIG9uLi4uIHRob3NlIGBkd3hnbWFjMl8qYCBmdW5jdGlvbnMuIFRoZXkncmUgZGVmaW5lZCBhcyBgc3RhdGljYCB3aXRoaW4gYGR3eGdtYWMyX2RtYS5jYC4gTXkgaW5pdGlhbCBjb25jZXJuIGlzIHdoZXRoZXIgdGhleSBtaWdodCBiZSBpbmxpbmVkLiBJIG5lZWQgdG8gYmUgc3VyZSBJIGNhbiBhY3R1YWxseSB0cmFjayB0aGVtIGFzIGRpc3RpbmN0IHN5bWJvbHMuXG5cbkFoLCByaWdodC4gTG9va2luZyBhdCB0aGUgY29kZSwgdGhvc2UgZnVuY3Rpb25zIGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYSBgc3RydWN0IHN0bW1hY19kbWFfb3BzYC4gVGhhdCBjb25maXJtcyB0aGV5ICphcmVuJ3QqIGlubGluZWQuIFRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGJlY2F1c2UgdGhleSdyZSBiZWluZyBwb2ludGVkIHRvIGJ5IGEgc3RydWN0LiBHb29kLCB0aGF0IG1ha2VzIG15IGpvYiBlYXNpZXIuIFRoZXkncmUgY2xlYXJseSBpbnRlbmRlZCB0byBiZSBjYWxsZWQgdmlhIHRob3NlIGZ1bmN0aW9uIHBvaW50ZXJzLlxuXG5Ob3csIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBjb2RlIHBhdGggaXMgYmVpbmcgY29tcGlsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTEyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE1OjUwLjczNTM4MjEwOVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5ODM0ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19FVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE1OjUwLjc5MzM2OTM3MloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzUyNjczNzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYFNUTU1BQ19FVEhgIG1vZHVsZS4gQmVmb3JlIGRpdmluZyBpbnRvIGNvZGUsIEknbSB0aGlua2luZyBJIHNob3VsZCByZWFsbHkgdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGZpcnN0LiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUsIGlkZW50aWZ5aW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBhbmQsIG9mIGNvdXJzZSwgdHJvdWJsZXNob290aW5nIGFueSBmdXR1cmUgaXNzdWVzLiBXaGVyZSBkb2VzIGl0IHB1bGwgaXRzIGRhdGEgZnJvbT8gV2hhdCBvdGhlciBtb2R1bGVzIGRvZXMgaXQgbmVlZCB0byBmdW5jdGlvbiBwcm9wZXJseT8gQW55IGV4dGVybmFsIGxpYnJhcmllcz8gVGltZSB0byBtYXAgdGhpcyBvdXQgbWV0aG9kaWNhbGx5LiBJIG5lZWQgdG8gYmUgc3VyZSBJJ20gdGhpbmtpbmcgb2YgZXZlcnl0aGluZyBhbmQgbm90IG1pc3Npbmcgc29tZXRoaW5nIHNpbXBsZSB0aGF0IHdpbGwgYml0ZSBtZSBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4OTUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNTo1NC4xNDYwNDczMTVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTVE1NQUNfRVRIXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcXG4gICA3OlxcdFxcdHNlbGVjdCBNSUlcXG4gICA4OlxcdFxcdHNlbGVjdCBQQ1NfWFBDU1xcbiAgIDk6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgMTA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG4gIDEzOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcXG4gIDE2OlxcdFxcdCAgU3lub3BzeXMgSVAgQ29yZS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgU1RNTUFDX0VUSFxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNTo1NC4xNDYxNjcwMDVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1ODI2MjQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipEaWdnaW5nIGludG8gdGhlIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgRXRoZXJuZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBgU1RNTUFDX0VUSGAuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuIEJ1dCBob2xkIG9uLCBJIGp1c3Qgc2F3IHNvbWV0aGluZyBhYm91dCBgZHdtYWMtc3VuOGlgLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlci4gTm93LCB0aGF0J3MgaW50ZXJlc3RpbmcuIEkga25vdyBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBidXQgd2hhdCBjb25maWd1cmF0aW9uIHNldHRpbmcgKmVuYWJsZXMqIHRoYXQgcGFydGljdWxhciBkcml2ZXI/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGR3bWFjLXN1bjhpYCB0byB0aGUgYnJvYWRlciBjb25maWd1cmF0aW9uLCBzbyBJIGNhbiB1bmRlcnN0YW5kIGhvdyBpdCdzIGludGVncmF0ZWQgYW5kIHdoZXJlIGl0IGZpdHMgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaGlzIGxldmVsIG9mIGRldGFpbCBpcyBjcml0aWNhbCBmb3IgcHJvcGVyIHVuZGVyc3RhbmRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MzUwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNTo1Ny4zMDQ0MzI0N1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg0MjI4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERXTUFDX1NVTjhJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNzc9Y29uZmlnIERXTUFDX1NVTlhJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI4ODpjb25maWcgRFdNQUNfU1VOOElcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4OS1cXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIHN1bjhpIEdNQUMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTU6NTcuMzkyODYwNzRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMTAzNTA5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIERXTUFDX1NVTjhJIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIGBEV01BQ19TVU44SWAgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgc2V0IHVwLCBlc3BlY2lhbGx5IHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgb24gdGhlIFN1bjhpIHBsYXRmb3JtLiBJJ20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3Iga2V5IHJlZ2lzdGVycyBhbmQgdGhlaXIgZXhwZWN0ZWQgdmFsdWVzLiBJJ2xsIGJlIHNjcnV0aW5pemluZyB0aGUgaW50ZXJydXB0IG1hcHBpbmcsIERNQSBjb25maWd1cmF0aW9uLCBhbmQgYW55IHBvd2VyIG1hbmFnZW1lbnQgc2V0dGluZ3Mg4oCTIHRob3NlIGFyZSB1c3VhbGx5IHRoZSB0cm91YmxlIHNwb3RzLiBJJ2xsIGJlIHRoaW5raW5nIGFib3V0IGhvdyB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVzIHRvIHRoZSB1bmRlcmx5aW5nIFBIWSBhbmQgdGhlIGV4dGVybmFsIGludGVyZmFjZSwgYmVjYXVzZSBhbnkgbWlzbWF0Y2ggdGhlcmUgaXMgZ29pbmcgdG8gY2F1c2UgaW1tZWRpYXRlIGlzc3Vlcy4gQW55IGNsb2NrIGNvbmZpZ3VyYXRpb24gaXMgY3JpdGljYWwsIHNvIEknbGwgYmUgZHJpbGxpbmcgZG93biBpbnRvIHRoZSBjbG9jayB0cmVlIHRvIGNvbmZpcm0gdGhhdCBldmVyeXRoaW5nIGlzIGJlaW5nIGRyaXZlbiBhdCB0aGUgcmlnaHQgZnJlcXVlbmNpZXMgZm9yIHRoZSBEV01BQydzIGNhcGFiaWxpdGllcy4gRmluYWxseSwgSSdsbCBiZSBjcm9zcy1yZWZlcmVuY2luZyB0aGlzIGNvbmZpZyBhZ2FpbnN0IHRoZSBkYXRhc2hlZXQgYW5kIGFueSBleGlzdGluZyBlcnJhdGEgZm9yIHRoZSBTdW44aSBTb0NzOyBrbm93aW5nIHRoZSBoYXJkd2FyZSdzIHF1aXJrcyBpcyBlc3NlbnRpYWwgdG8gYSBzbW9vdGggZGVwbG95bWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3MDcsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjowMS4xMDM4OTk4WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjg4LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjg4OlxcdGNvbmZpZyBEV01BQ19TVU44SVxcbiAyODk6XFx0XFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW44aSBHTUFDIHN1cHBvcnRcXFwiXFxuIDI5MDpcXHRcXHRkZWZhdWx0IEFSQ0hfU1VOWElcXG4gMjkxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxcbiAyOTI6XFx0XFx0c2VsZWN0IE1ESU9fQlVTX01VWFxcbiAyOTM6XFx0XFx0aGVscFxcbiAyOTQ6XFx0XFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgSDMgQTgzVCBBNjQgRU1BQyBldGhlcm5ldCBjb250cm9sbGVycy5cXG4gMjk1OlxcdFxcbiAyOTY6XFx0XFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxcbiAyOTc6XFx0XFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgSDMvQTgzVC9BNjRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTY6MDEuMTAzOTg0NDRaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ0MjA2MDAxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBEV01BQ19TVU44SWAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBpbml0aWFsbHkgdGhpbmtpbmcgYERXTUFDX1NVTjhJYCBzZWVtcyBsaWtlIGEgc29saWQgY29uZmlndXJhdGlvbiB0byBlbmFibGUuIEhvd2V2ZXIsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBEb2VzIHRoaXMgY29uZmlndXJhdGlvbiBhY3R1YWxseSBsZXZlcmFnZSB0aGUgYGR3eGdtYWMyYCBoYXJkd2FyZT8gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBkd3hnbWFjMmAgc3BlY2lmaWNhbGx5IHJlbGF0ZXMgdG8gWEdNQUMgKDEwIEdpZ2FiaXQpIGNhcGFiaWxpdGllcywgd2hlcmVhcyB0aGUgYHN1bjhpYCBwbGF0Zm9ybSBpcyBmb2N1c2VkIG9uIEdNQUMgKDEgR2lnYWJpdCkuXG5cbkhvbGQgb24sIHRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIEknbSBsb29raW5nIGF0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgZHd4Z21hYzJfZG1hLmNgLCB3aGljaCwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGlzIGRpcmVjdGx5IGFzc29jaWF0ZWQgd2l0aCBgZHd4Z21hYzJgLiBUaGF0IHJhaXNlcyBhIGZsYWcuIFNvLCB3aGF0IHBsYXRmb3JtIGRyaXZlciBpbiB0aGUgY29kZSBiYXNlIGlzIGFjdHVhbGx5ICp1c2luZyogdGhlIGBkd3hnbWFjMmAgaW1wbGVtZW50YXRpb24/IFRoaXMgZGlzY3JlcGFuY3kgbmVlZHMgY2xhcmlmaWNhdGlvbi5cblxuUmlnaHQsIHRpbWUgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIHRyYWNrIGRvd24gaG93IGBEV1hHTUFDX0lEYCBvciBgRFdYTEdNQUNfSURgIGFyZSBiZWluZyB1dGlsaXplZCB3aXRoaW4gdGhlIGRyaXZlciBzeXN0ZW0uIE9yLCBtb3JlIGJyb2FkbHksIHRvIGRldGVybWluZSB3aGljaCBkcml2ZXJzIGFyZSBzZWxlY3RpbmcgWEdNQUMgZnVuY3Rpb25hbGl0eS4gVGhpcyBzaG91bGQgaGVscCBtZSByZWNvbmNpbGUgdGhlIGNvZGUncyBpbnRlbmRlZCB1c2Ugd2l0aCB0aGUgbW9kaWZpY2F0aW9ucyBiZWluZyBtYWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzE3MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjA1LjU0NjA0Nzc5M1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEzMzg1MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFdYR01BQ19JRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00NS0vKiBEZXZpY2UgSUQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo0NjojZGVmaW5lIERXWEdNQUNfSURcXHRcXHQweDc2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDctI2RlZmluZSBEV1hMR01BQ19JRFxcdFxcdDB4MjdcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ5LVxcdFxcdC5taW5faWQgPSBEV1hHTUFDX0NPUkVfMl8xMCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjUwOlxcdFxcdC5kZXZfaWQgPSBEV1hHTUFDX0lELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTEtXFx0XFx0LnJlZ3MgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjA1LjYwNzM5MjQ1NloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc5NTM4MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSGFyZHdhcmUgSWRlbnRpZmljYXRpb24gYW5kIERyaXZlciBBc3NvY2lhdGlvbioqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGlzIGBod2lmLmNgIGZpbGUgYW5kIGhvdyBpdCB0aWVzIGludG8gaGFyZHdhcmUgaWRlbnRpZmljYXRpb24uIEl0IGxvb2tzIGxpa2UgaXQgY29uZmlybXMgdGhhdCB0aGUgaGFyZHdhcmUgSUQgcmVhZCBmcm9tIHRoZSBNQUMgcmVnaXN0ZXJzIGlzIGNvcnJlY3RseSBtYXRjaGVkLiBUaGlzIG1lYW5zIGFueSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCBiaW5kcyB0byBhIGRldmljZSB3aXRoIGBEV1hHTUFDX0lEYCBpcyBnb2luZyB0byB1dGlsaXplIHRoZSBgZHd4Z21hYzJgIGRyaXZlciwgd2hpY2ggbWFrZXMgc2Vuc2UuIE5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBwbGF0Zm9ybSBkcml2ZXJzIGFyZSBkZXNpZ25lZCB0byB3b3JrIHdpdGggWEdNQUMgc3BlY2lmaWNhbGx5LiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSB0byBpbnZlc3RpZ2F0ZSBkcml2ZXJzIHRoYXQgdXNlIHNvbWV0aGluZyBsaWtlIGBEV01BQ19DT1JFX1hHTUFDYCBvciB0aGUgbW9yZSBnZW5lcmFsIGBzdG1tYWNfcHJvYmVfY29uZmlnX2R0YCBmdW5jdGlvbiwgcGVyaGFwcyBzb21ldGhpbmcgZWxzZSB0b28uIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCBjb25uZWN0cyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg2NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjA5Ljc4NjkzMzUxMVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMyMTYyMjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhnbWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjA5Ljg4MDE1ODUxWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MjAzMDAzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVW5jb25kaXRpb25hbCBDb21waWxhdGlvbiBDb25jZXJucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSwgYW5kIHNvbWV0aGluZydzIHBpbmdpbmcgbXkgcmFkYXIuIEl0IHNlZW1zIGxpa2UgdGhlIG1vZHVsZSBgZHd4Z21hYzJgIGdldHMgY29tcGlsZWQgbm8gbWF0dGVyIHdoYXQsIGFzIGxvbmcgYXMgYFNUTU1BQ19FVEhgIGlzIGRlZmluZWQuIFRoYXQncyBhIGxpdHRsZeKApiB1bmV4cGVjdGVkLiBUeXBpY2FsbHksIHlvdSB3YW50IG1vcmUgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHdoYXQgZ2V0cyBidWlsdCBpbnRvIHRoZSBrZXJuZWwsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGFyZHdhcmUgZHJpdmVycy4gSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy5cblxuSXMgYGR3eGdtYWMyYCAqdHJ1bHkqIGVzc2VudGlhbCBmb3IgYWxsIGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIGBTVE1NQUNfRVRIYD8gT3IgaXMgdGhlcmUgYSBtb3JlIHNwZWNpZmljIGRlcGVuZGVuY3kgdGhhdCBzaG91bGQgYmUgY2hlY2tlZD8gSWYgaXQncyBhbHdheXMgaW5jbHVkZWQsIGV2ZW4gd2hlbiBpdCdzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnksIHdlJ3JlIGludHJvZHVjaW5nIHVubmVjZXNzYXJ5IGNvZGUgYmxvYXQgYW5kIHBvdGVudGlhbGx5IGluY3JlYXNpbmcgdGhlIGF0dGFjayBzdXJmYWNlLiBXZSBhbHNvIG5lZWQgdG8gYmUgbWluZGZ1bCBvZiByZXNvdXJjZXMgdXNlZCBvbiBlbWJlZGRlZCBzeXN0ZW1zLlxuXG5JIG5lZWQgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgdW5jb25kaXRpb25hbCBjb21waWxhdGlvbiBleGlzdHMuIElzIHRoZXJlIGEgaGlzdG9yaWNhbCByZWFzb24/IERvZXMgaXQgcmVseSBvbiBzb21lIGltcGxpY2l0IGRlcGVuZGVuY3k/IENvdWxkIHRoaXMgYmUgYSBidWc/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIHNvbWV3aGVyZSB0aGF0IGFyZSBiZWluZyBvdmVybG9va2VkPyBUaGUgbmV4dCBzdGVwcyBhcmUgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgd2h5IHRoaXMgaXMgc2V0IHVwIHRoaXMgd2F5LCBsb29rIGZvciBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cywgYW5kIG1ha2Ugc3VyZSB0aGF0IGl0IGFsbCBtYWtlcyBzZW5zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgxNjMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjoxMy41MDA0NjE1OVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ4MTkzMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mz1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNy1cXHQgICAgICBkd21hYzRfZG1hLm8gZHdtYWM0X2xpYi5vIGR3bWFjNF9jb3JlLm8gZHdtYWM1Lm8gaHdpZi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo4OlxcdCAgICAgIHN0bW1hY190Yy5vIGR3eGdtYWMyX2NvcmUubyBkd3hnbWFjMl9kbWEubyBkd3hnbWFjMl9kZXNjcy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS05LVxcdCAgICAgIHN0bW1hY194ZHAubyBzdG1tYWNfZXN0Lm8gc3RtbWFjX2ZwZS5vIHN0bW1hY192bGFuLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjoxMy41OTUyODg2MjlaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4MDMxOTE5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERlcGVuZGVuY3kgQ2hhaW4qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIG1vZHVsZSwgYGR3eGdtYWMyX2RtYS5vYCwgYW5kIGl0J3MgYWx3YXlzIGJ1aWx0IHdoZW4gYFNUTU1BQ19FVEhgIGlzIGRlZmluZWQuIEV4Y2VsbGVudC4gU28sIG15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIGVuc3VyaW5nIGBTVE1NQUNfRVRIYCBpcyBzZXQgY29ycmVjdGx5LiBOb3csIHRvIGdldCB0aGVyZSwgSSBrbm93IEkgbmVlZCBhIHBsYXRmb3JtIG9yIFBDSSBkcml2ZXIgdGhhdCBwcm92aWRlcyBhIGRldmljZSB3aXRoIHRoZSBgRFdYR01BQ19JRGAuIE5vIHByb2JsZW0sIEkgcmVtZW1iZXIgc2VlaW5nIGBzdG1tYWNfcGNpLmNgIGluIHRoZSB0cmVlLiBQZXJmZWN0LCB0aGVyZSdzIGEgUENJIGRyaXZlci4gQnV0LCBkb2VzIGl0IGFjdHVhbGx5IHN1cHBvcnQgdGhlIFhHTUFDIHZhcmlhbnQ/IFRoYXQncyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uIFRpbWUgdG8gZGl2ZSBpbnRvIGBzdG1tYWNfcGNpLmNgIGFuZCBzZWUgd2hhdCBpdCdzIGRvaW5nLiBMZXQncyBzZWUgaWYgaXQncyBnb3QgdGhlIHJpZ2h0IGRldmljZSBJRHMgYW5kIGZlYXR1cmVzIGJha2VkIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODczNiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjoxNy43NzU2MTI2MDRaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjU2NjkwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE5OlxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTkyPXN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA0LVxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjoxNy44ODIxODM5MTFaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwMDg5MjU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIGBzdG1tYWNfaWRfdGFibGVgKipcblxuUmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IGBzdG1tYWNfaWRfdGFibGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHRhYmxlLCBpdHMgc3RydWN0dXJlLCBhbmQgd2hhdCBpdCdzIGRlZmluaW5nLiBJIGV4cGVjdCBpdCdzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIGRyaXZlciwgbGlrZWx5IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gdXNlZCB0byBpZGVudGlmeSBzcGVjaWZpYyBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGNvbnRyb2xsZXJzLiBJdCdzIHByb2JhYmx5IGEgZGV2aWNlIElEIHRhYmxlLCB1c2VkIGJ5IHRoZSBkcml2ZXIgdG8gbWF0Y2ggYWdhaW5zdCBkZXRlY3RlZCBoYXJkd2FyZS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqVmVuZG9yIGFuZCBEZXZpY2UgSURzOioqIFRoZXNlIGFyZSB0aGUgYmVkcm9jayBmb3IgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24uIEknbGwgZXhwZWN0IHRvIHNlZSBwYWlycyBvciBncm91cHMgb2YgSURzIHRoYXQgbWFwIGRpcmVjdGx5IHRvIHRoZSBzcGVjaWZpYyBTVE1NQUMgaGFyZHdhcmUgdmFyaWFudHMuXG4qICAgKipNb2R1bGUgQWxpYXNlczoqKiBJJ2xsIGJlIGN1cmlvdXMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbGlhc2VzIG9yIGlkZW50aWZpZXJzIGRlZmluZWQgdG8gaGVscCB3aXRoIG1vZHVsZSBsb2FkaW5nIGFuZCBkZXZpY2UgcHJvYmluZyBpbiB2YXJpb3VzIHN5c3RlbXMuXG4qICAgKipEcml2ZXIgRGF0YToqKiBJdCdzIHVubGlrZWx5LCBidXQgbm90IGltcG9zc2libGUsIHRoYXQgc29tZSBzcGVjaWZpYyBkcml2ZXItcmVsYXRlZCBpbmZvcm1hdGlvbiBpcyBlbWJlZGRlZCBoZXJlLCB0b28uIFBlcmhhcHMgc29tZSBjb25maWd1cmF0aW9uIGRlZmF1bHRzIG9yIGZsYWdzIHBlciBoYXJkd2FyZSB2YXJpYW50LiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyB3aGljaCBpbmZvcm1hdGlvbiwgYW5kIHRvIGFzc2VzcyB3aGV0aGVyIGl0IGNvdWxkIGJlIGJldHRlciBkZXNjcmliZWQgaW4gYSBzZXBhcmF0ZSBzdHJ1Y3R1cmUuXG4qICAgKipQbGF0Zm9ybSBEZXBlbmRlbmNpZXM6KiogSSdsbCBiZSBjaGVja2luZyB0byBzZWUgaWYgdGhlcmUncyBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgaW5mb3JtYXRpb24uIEl0IGlzIGltcG9ydGFudCB0byBrbm93IGlmIHRoZSB0YWJsZSBzdXBwb3J0cyBtdWx0aXBsZSBwbGF0Zm9ybSB2ZXJzaW9ucywgb3IgaGFzIGRpZmZlcmVudCBydWxlcy5cbiogICAqKlJldmlzaW9uczoqKiBHb29kIHByYWN0aWNlIHdvdWxkIGJlIHRvIGluY2x1ZGUgcmV2aXNpb24gZGF0YSB0aGF0IGNhbiBkaXN0aW5ndWlzaCB2YXJpYW50cyBhbmQgZW5zdXJlIHRoZSBkcml2ZXIgZnVuY3Rpb25zIGNvcnJlY3RseSB3aXRoIGEgcGFydGljdWxhciBzaWxpY29uIHJldmlzaW9uLlxuXG5VbmRlcnN0YW5kaW5nIHRoZSBpbmZvcm1hdGlvbiB3aXRoaW4gdGhpcyB0YWJsZSBpcyBjcnVjaWFsIHRvIHRoZSBkcml2ZXIncyBhYmlsaXR5IHRvIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlIGNvcnJlY3RseS4gSXQncyB0aGUgZmlyc3Qgc3RlcCBpbiBlbnN1cmluZyBwcm9wZXIgZGV2aWNlIGRldGVjdGlvbiBhbmQgYXNzb2NpYXRpb24uIE15IGdvYWwgaXMgdG8gZ3Jhc3AgaG93IGl0IHdvcmtzIGFuZCB3aGF0IGl0J3MgdGVsbGluZyB0aGUgZHJpdmVyIGFib3V0IHN1cHBvcnRlZCBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzOTYsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjoyMi4xODMwNzk0MDFaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMDpcXHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1xcdFxcdDB4MTEwOFxcbiAyMDE6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXFx0XFx0MHg3MTAyXFxuIDIwMjpcXHRcXG4gMjAzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4gMjA0OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDU6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDY6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG4gMjA3OlxcdFxcdHt9XFxuIDIwODpcXHR9O1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG4gMjExOlxcdFxcbiAyMTI6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbiAyMTM6XFx0XFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG4gMjE0OlxcdFxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTY6MjIuMTgzMTY5OTUxWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4NjM5NjIyMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYSBTeXprYWxsZXItRm91bmQgQnVnIGluIFNUTU1BQyoqXG5cbk9rYXksIHNvIEkgc2VlIGBzdG1tYWNfcGNpX2luZm9gIGFuZCBgc25wc19nbWFjNV9wY2lfaW5mb2AgbWVudGlvbmVkLiBJbnRlcmVzdGluZy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBob3cgc3l6a2FsbGVyIG1pZ2h0IGhhdmUgdHJpZ2dlcmVkIHRoaXMsIGFuZCBJIGJyaWVmbHkgY29uc2lkZXIgdGhlIFBDSSBkZXZpY2UgYW5nbGUuIERvZXMgc3l6a2FsbGVyIGV2ZW4gZnV6eiBQQ0kgZGV2aWNlcyBkaXJlY3RseSwgb3IgZG9lcyBpdCByZWx5IG9uIFFFTVUgZW11bGF0aW9uIG9yIGBzeXpfcGNpX3NldHVwYD8gVGhlbiBJIHJlbWVtYmVyIHRoYXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIGhlcmU7IHRoZSBrZXkgaXMgdGhhdCBzeXprYWxsZXIgKmZvdW5kKiB0aGlzIGJ1Zy5cblxuSSBxdWlja2x5IHNoaWZ0IHRvIHRoaW5raW5nIGFib3V0IHRoZSBwYXRod2F5LiBDb3VsZCBpdCBoYXZlIGJlZW4gdmlhIGBzdG1tYWNfcGxhdGZvcm1gPyBTeXprYWxsZXIgY2FuIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzIHRocm91Z2ggZGV2aWNlIHRyZWUgb3ZlcmxheXMgb3IgYC9zeXMvZGV2aWNlcy9wbGF0Zm9ybWAsIHJpZ2h0PyBUaGVuIEkgdGhpbmsgYWJvdXQgdGhlIHBzZXVkby1zeXNjYWxscyBJJ20gZmFtaWxpYXIgd2l0aCwgbGlrZSBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYC4gSXMgdGhlcmUgYW4gYHN0bW1hY2Agc3BlY2lmaWMgcHNldWRvLXN5c2NhbGw/IE5vLCB3YWl0LCB0aGF0J3Mgbm90IHJlbGV2YW50LiBUaGUgcHJvbXB0IGNsZWFybHkgc3RhdGVzIHRoYXQgc3l6a2FsbGVyIGludGVybmFscywgc3BlY2lmaWNhbGx5IHN5emxhbmcgZGVzY3JpcHRpb25zLCBhcmUgbm90IHdoYXQgSSBuZWVkIHRvIGZvY3VzIG9uLlxuXG5UaGUgaW1wb3J0YW50IHRoaW5nIGlzIHRoYXQgc3l6a2FsbGVyIHJlYWNoZWQgaXQuIEl0J3MgYSBuZXR3b3JrIGRyaXZlciBidWcuIFRoYXQncyB3aGF0IG1hdHRlcnMuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBtb2RpZmllcyBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYC4gVGhpcyBmdW5jdGlvbiBpcyB1bmNvbmRpdGlvbmFsbHkgY2FsbGVkIGluIGBzdG1tYWNfbWFpbi5jYCBmb3IgKmFsbCogdmFyaWFudHMgb2YgYHN0bW1hY2AuIEV2ZW4gaWYgYSBwYXJ0aWN1bGFyIHZhcmlhbnQsIGxpa2UgYGR3eGdtYWMyYCwgZG9lc24ndCBoYXZlIGB0eF9kbWFfc3RvcHBlZGAsIGl0IHN0aWxsIGV4ZWN1dGVzIHRoZSByZXN0IG9mIGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gLiBJdCdzIGEgZnVuZGFtZW50YWwgY2hhbmdlIHRvIHRoZSBETUEgaGFuZGxpbmcgYW5kIE1BQyBkaXNhYmxlIGxvZ2ljLiBQcmV2aW91c2x5IGl0IHdhcyBoYW5kbGVkIGRpZmZlcmVudGx5OyBub3cgaXQnczogc3RvcCBUWCBETUEsIGRpc2FibGUgTUFDLCBzdG9wIFJYIERNQS4gVGhpcyBvcmRlciBpcyBhIGNydWNpYWwgc2hpZnQuXG5cblRoaXMgYWZmZWN0cyAqYWxsKiBgc3RtbWFjYCBkZXZpY2VzLiBUaGF0IGluY2x1ZGVzIHRoZSBgc3VuOGktZW1hY2AsIHdoaWNoIGlzLCBjb252ZW5pZW50bHksIGVtdWxhdGVkIGluIFFFTVUhIFRoYXQgbWFrZXMgaXQgaW5jcmVkaWJseSB2YWx1YWJsZSBmb3IgZnV6emluZy4gVGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgd29ydGggbXkgdGltZS5cblxuVGltZSB0byB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb25zLiBJJ2xsIG5lZWQgYFNUTU1BQ19FVEhgLCBvZiBjb3Vyc2UuIFNpbmNlIHRoZSBgc3VuOGktZW1hY2AgaXMgaW4gUUVNVSwgSSdsbCBkZWZpbml0ZWx5IGVuYWJsZSBgRFdNQUNfU1VOOElgLiBNaWdodCBhcyB3ZWxsIGVuYWJsZSBgRFdNQUNfR0VORVJJQ2AgdG9vLCBmb3IgZ29vZCBtZWFzdXJlLiBBbmQgb2YgY291cnNlLCBgU1RNTUFDX1BDSWAgdG8gY292ZXIgdGhlIFBDSSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMTc3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjkwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTY6MzIuMDQ3MTM1MjkyWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTE1Mzk5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjMyLjEwMjI5NTE0NVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDgxNzA2Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB0aGUgZXhwZXJ0IGFuZCBjb25zaWRlcmluZyBob3cgSSdkIGFwcHJvYWNoIGl0OlxuXG4qKkNoZWNraW5nIGBEV01BQ19HRU5FUklDYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBcIkxldCdzIGNoZWNrIGBEV01BQ19HRU5FUklDYFwiIOKAkyB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBpbnRlcm5hbCBwcm9jZXNzIGtpY2tzIG9mZiB3aXRoIGEgcXVpY2sgbWVudGFsIHNjYW4uIEknbSBpbW1lZGlhdGVseSB0aGlua2luZywgXCJPa2F5LCBgRFdNQUNfR0VORVJJQ2AuIFRoYXQgbGlrZWx5IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGdlbmVyaWMgRGF0YSBXYXJlaG91c2UgTWFuYWdlbWVudCBBY2Nlc3MgQ29udHJvbCAoRFdNQUMpIHNldHVwLiBPciBwZXJoYXBzIGEgbWFjcm8gdGhhdCB3b3VsZCBwZXJmb3JtIHRoZSBnZW5lcmljIHdvcmtcIlxuXG5JJ20gcHJvYmFibHkgYXNzZXNzaW5nIHRoZSBjb250ZXh0LiBXaGF0IHByb2JsZW0gYXJlIHdlIHRyeWluZyB0byBzb2x2ZT8gV2h5IGFyZSB3ZSBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCAqdGhpcyogZWxlbWVudD8gSXMgdGhlcmUgYSByZXBvcnRlZCBlcnJvcj8gT3IgYW0gSSBqdXN0IGRvaW5nIGEgcm91dGluZSBjaGVjaz8gXCJHZW5lcmljXCIgY291bGQgc2lnbmlmeSBhIGJhc2UgbGV2ZWwsIGEgZGVmYXVsdCBzZXR0aW5nLCBvciBhIGJyb2FkIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSB1c2UtY2FzZSBmb3IgdGhlIHRlcm0uXG5cblRoZSBuZXh0IHRoaW5nIEknZCBkbyBpcyBsaWtlbHkgcHVsbCB1cCBkb2N1bWVudGF0aW9uIGlmIEkgaGF2ZSBpdCBhdmFpbGFibGUuIE9yIEkgd291bGQgb3BlbiB1cCBteSBJREUgYW5kIHN0YXJ0IHNlYXJjaGluZyB0aHJvdWdoIHRoZSBjb2RlIGJhc2UuIEkgd2lsbCBiZSBsb29raW5nIGZvcjpcblxuKiAgICoqRGVmaW5pdGlvbioqOiBXaGVyZSBpcyB0aGlzIHZhcmlhYmxlL2Z1bmN0aW9uL21vZHVsZSBkZWZpbmVkPyBXaGF0IGV4YWN0bHkgZG9lcyBpdCByZXByZXNlbnQ/IFdoYXQncyB0aGUgaW1wbGVtZW50YXRpb24/XG4qICAgKipEZXBlbmRlbmNpZXMqKjogV2hhdCBvdGhlciBlbGVtZW50cyByZWx5IG9uIGBEV01BQ19HRU5FUklDYD8gQXJlIHRoZXJlIHJlbGF0ZWQgY29tcG9uZW50cyBvciB1cHN0cmVhbS9kb3duc3RyZWFtIGRlcGVuZGVuY2llcz8gSWYgdGhpcyBmYWlscywgd2hhdCBvdGhlciBzeXN0ZW1zIGNvdWxkIGJlIGltcGFjdGVkP1xuKiAgICoqQ29uZmlndXJhdGlvbioqOiBEb2VzIGBEV01BQ19HRU5FUklDYCBoYXZlIGFzc29jaWF0ZWQgcGFyYW1ldGVycyBvciBzZXR0aW5ncz8gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHZhbHVlcyB0aGF0IG1pZ2h0IGJlIGNydWNpYWw/XG4qICAgKipFcnJvciBIYW5kbGluZyoqOiBJcyB0aGVyZSBhbnkgZXhjZXB0aW9uIGhhbmRsaW5nIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoaXM/IFdoYXQgaGFwcGVucyBpZiB0aGlzIGZhaWxzIG9yIHJldHVybnMgYW4gdW5leHBlY3RlZCByZXN1bHQ/IEFyZSB0aGVyZSBhbnkgbG9ncz9cbiogICAqKlNlY3VyaXR5IENvbnRleHQqKjogSG93IGRvZXMgdGhlIERXTUFDIHN5c3RlbSBpbnRlcmFjdCB3aXRoIHNlY3VyaXR5IHByb3RvY29scyBhbmQgbWVhc3VyZXM/XG5cblRoZSBvYmplY3RpdmUgaGVyZSBpcyBzaW1wbGU6IHRvIGdyYXNwIHRoZSBwdXJwb3NlLCBmdW5jdGlvbmFsaXR5LCBhbmQgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIHBpZWNlLiBVbHRpbWF0ZWx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0gYW5kIGRldGVybWluZSBpZiBpdCdzIGJlaGF2aW5nIGFzIGV4cGVjdGVkIG9yIGlmIHRoZXJlJ3MgYW4gYXJlYSB0aGF0IG5lZWRzIG15IGZvY3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTU5MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjM3LjE4NDAwNDY3M1oiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg4NzE5OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERXTUFDX0dFTkVSSUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTQ0PWNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjUyOmNvbmZpZyBEV01BQ19HRU5FUklDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjozNy4yNDI4ODMyNDZaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODAwOTM3NjI4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBTVE1NQUMgRHJpdmVyIFRlYXJkb3duKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIHRoYXQgbmVlZCBlbmFibGluZzogYFNUTU1BQ19FVEhgLCBgRFdNQUNfU1VOOElgLCBgRFdNQUNfR0VORVJJQ2AsIGFuZCBgU1RNTUFDX1BDSWAuIE5vdGhpbmcgdG9vIHN1cnByaXNpbmcgdGhlcmU7IGl0J3MgdGhlIHVzdWFsIHN1c3BlY3RzIHdoZW4gd29ya2luZyB3aXRoIHRoaXMgZHJpdmVyLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBwYXJ0OiBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYC4gSSByZW1lbWJlciB0aGF0IGZ1bmN0aW9uLiBJdCdzIGNhbGxlZCBmcm9tIGEgZmV3IGtleSBwbGFjZXM6IGBzdG1tYWNfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9vcGVuYCwgYW5kIGBzdG1tYWNfc3VzcGVuZGAuIE9rYXksIHRpbWUgdG8gbGlzdCBteSBmb2NhbCBwb2ludHM6XG5cbiogICBgc3RtbWFjX3JlbGVhc2VgXG4qICAgYHN0bW1hY194ZHBfcmVsZWFzZWBcbiogICBgc3RtbWFjX3hkcF9vcGVuYFxuKiAgIGBzdG1tYWNfc3VzcGVuZGBcbiogICBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgXG4qICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmBcbiogICBgZHd4Z21hYzJfcnhfbXRsX2RyYWluYFxuKiAgIGBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZGBcblxuQWxyaWdodCwgYHN0bW1hY19yZWxlYXNlYCBpcyB0aGUgYG5kb19zdG9wYCBjYWxsYmFjay4gVGhhdCBtYWtlcyBpdCBhIGhpZ2gtcHJpb3JpdHkgdGFyZ2V0IGZvciBhbmFseXNpcywgZ2l2ZW4gaXRzIHJvbGUgaW4gc2h1dHRpbmcgdGhpbmdzIGRvd24uIGBzdG1tYWNfeGRwX29wZW5gIGFuZCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhcmUgY2xlYXJseSBYRFAtcmVsYXRlZCwgYW5kIGBzdG1tYWNfc3VzcGVuZGAgaGFuZGxlcyB0aGUgc3lzdGVtIHN1c3BlbmQuIFRoZW4gdGhlcmUgYXJlIHRoZSBuZXcgZnVuY3Rpb25zIHdpdGggdGhlIFwiZHd4Z21hYzJcIiBwcmVmaXgsIGFkZGVkIGJ5IHRoZSBwYXRjaC5cblxuTm93LCBsZXQncyBkb3VibGUtY2hlY2sgaG93IGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gIHdvcmtzLiBJcyBpdCBzdGF0aWMgYW5kIGxpa2VseSB0byBiZSBpbmxpbmVkPyBJdCdzIHN0YXRpYywgd2hpY2ggaXMgZ29vZC4gSG93ZXZlciwgaXQncyBwcm9iYWJseSBwcmV0dHkgbGFyZ2UsIHNvIGlubGluaW5nIGlzIHVubGlrZWx5LiBTbyBJJ2xsIGZvY3VzIG9uIHRoZSBjYWxsZXJzIGluc3RlYWQuIEl0J3MgY2FsbGVkIGJ5IGBfX3N0bW1hY19yZWxlYXNlYCwgd2hpY2ggaXMgc3RhdGljLCBhbmQgaW4gdHVybiB1c2VkIGJ5IGBzdG1tYWNfcmVsZWFzZWAsIGBzdG1tYWNfY2hhbmdlX210dWAsIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AsIGFuZCBgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1gLiBIYW5nIG9uLi4uIGBfX3N0bW1hY19yZWxlYXNlYCBpcyAqaXRzZWxmKiBjYWxsZWQgYnkgYHN0bW1hY19yZWxlYXNlYC4gT2theSwgSSdsbCBzdGljayB3aXRoIGBzdG1tYWNfcmVsZWFzZWAgYXMgbXkgcHJpbWFyeSBmb2N1cy5cblxuT2gsIGFuZCB3YWl0LCBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYXJlIG5vdCBzdGF0aWMhIFRoYXQgbWlnaHQgYmUgaW1wb3J0YW50IGxhdGVyLCBmb3IgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyMzIsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTY6NDUuMjUyMjY1ODc2WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjE1MTA2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYz0xMDI9aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTM0LVxcdGlmIChpZl9ydW5uaW5nIFxcdTAwMjZcXHUwMDI2IG5lZWRfdXBkYXRlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzoxMzU6XFx0XFx0c3RtbWFjX3hkcF9vcGVuKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEzNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTY6NDUuMzQ0NDIzMjE1WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTY3MjE1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIE1vZHVsZSBJbml0aWFsaXphdGlvbiAtIEEgUXVpY2sgUmVmcmVzaGVyKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIFNUTU1BQyBkcml2ZXIgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBYRFAgaW1wbGVtZW50YXRpb24sIGFuZCBJJ20gYSBiaXQgc3VycHJpc2VkLiBNeSBpbml0aWFsIGV4cGVjdGF0aW9uIHdhcyB0aGF0IHRoZSBYRFAtcmVsYXRlZCBpbml0aWFsaXphdGlvbiB3b3VsZCBiZSB0dWNrZWQgYXdheSBpbiBpdHMgb3duIGRlZGljYXRlZCBzb3VyY2UgZmlsZSwgeW91IGtub3csIGZvciBiZXR0ZXIgbW9kdWxhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LiBCdXQgaGFuZyBvbi4uLiBgc3RtbWFjX3hkcF9vcGVuYC4uLiB0aGF0J3MgYWN0dWFsbHkgKmluKiBgc3RtbWFjX21haW4uY2A/IEludGVyZXN0aW5nLiBJIHdvdWxkIGhhdmUgZXhwZWN0ZWQgYSBtb3JlIG1vZHVsYXIgc3RydWN0dXJlLCBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIGBzdG1tYWNfeGRwLmNgLiBJdCdzIG5vdCBpbmhlcmVudGx5IGJhZCwgYnV0IGl0IGRvZXMgbWFrZSBtZSB3b25kZXIgYWJvdXQgdGhlIG92ZXJhbGwgZGVzaWduIGNob2ljZXMsIHRoZSBoaXN0b3JpY2FsIGNvbnRleHQsIGFuZCBwb3RlbnRpYWwgZnV0dXJlIG1haW50YWluYWJpbGl0eSwgYW5kIGl0IHdpbGwgdGFrZSBzb21lIHRpbWUgdG8gcmV2aWV3LiBMZXQgbWUgcmUtZXhhbWluZSB0aGUgZmlsZSBzdHJ1Y3R1cmUgYWdhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNTE4LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTY6NDguOTYxMTQ4NTI3WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDU2NzY2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxNDE9dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxNzE6aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE3Mi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjQ5LjAzNTcyMzYyOFoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzYzOTMwMzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgU1RNMzJNQUMgRHJpdmVyIFN0YXRpYyBEZWNsYXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBjb25jZXJuIHdhcyB3aGV0aGVyIHRoZSByZWxldmFudCBmdW5jdGlvbnMgd2VyZSBkZWNsYXJlZCB3aXRoaW4gYHN0bW1hY19tYWluLmNgIGFuZCB3ZXJlIGFsc28gc3RhdGljLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IHRoZXkgKmFyZSogbG9jYXRlZCBpbiBgc3RtbWFjX21haW4uY2AsIGFuZCBpbXBvcnRhbnRseSwgdGhleSdyZSAqbm90KiBzdGF0aWMuIFRoaXMgaGFzIGltcGxpY2F0aW9ucyBmb3IgcG90ZW50aWFsIHZpc2liaWxpdHkgYW5kIGxpbmtpbmcsIHdoaWNoIGFsaWducyB3aXRoIGhvdyBJJ2QgZXhwZWN0IHRoaXMgZHJpdmVyIHRvIGJlIHN0cnVjdHVyZWQuIEdpdmVuIHRoaXMgaW5pdGlhbCBmaW5kaW5nLCBpdCBtYWtlcyBzZW5zZSB0byBjb25maXJtIHdoZXRoZXIgYHN0bW1hY19zdXNwZW5kYCAqaXMqIGRlY2xhcmVkIHN0YXRpYywgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlcidzIHN0YXRlIGFuZCBjb250ZXh0IGFyZSBtYW5hZ2VkIGR1cmluZyBzeXN0ZW0gc3VzcGVuZCBvcGVyYXRpb25zLiBUaGF0IHdpbGwgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHN1c3BlbmQgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIHRvIG90aGVyIG1vZHVsZXMgb3IgaXMgaW50ZXJuYWwgdG8gdGhlIGBzdG1tYWNfbWFpbi5jYCBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzk0NywiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjUyLjM5OTY1NzU5OVoiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIyMDMwOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3N1c3BlbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyMDk9RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9yZW1vdmUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjExLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODIxMjogKiBzdG1tYWNfc3VzcGVuZCAtIHN1c3BlbmQgY2FsbGJhY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyMTMtICogQGRldjogZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIxNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgyMTg6aW50IHN0bW1hY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjY3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgyNjg6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3N1c3BlbmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9ODM5OT1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcmVzdW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODQwMS0vKiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyBFWFBPUlRfR1BMX1NJTVBMRV9ERVZfUE1fT1BTKCkgd2hlbiBDT05GSUdfUE09biAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODQwMjpERUZJTkVfU0lNUExFX0RFVl9QTV9PUFMoc3RtbWFjX3NpbXBsZV9wbV9vcHMsIHN0bW1hY19zdXNwZW5kLCBzdG1tYWNfcmVzdW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTg0MDMtRVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3NpbXBsZV9wbV9vcHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjo1Mi40ODE4NzAwNloiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzcyNzI5MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBNb2R1bGUncyBTdXNwZW5zaW9uIGFuZCBSZWxhdGVkIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYHN0bW1hY19zdXNwZW5kYCAqaXMqIGluZGVlZCBleHBvcnRlZCwgdGhhdCdzIGdvb2QuIE5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhpcyBzdXNwZW5zaW9uIHByb2Nlc3MuIEknbSBzZWVpbmc6XG5cbiogICBgc3RtbWFjX3JlbGVhc2VgXG4qICAgYHN0bW1hY194ZHBfcmVsZWFzZWBcbiogICBgc3RtbWFjX3hkcF9vcGVuYFxuKiAgIGBzdG1tYWNfc3VzcGVuZGAgLSBvYnZpb3VzbHkgYSBjZW50cmFsIHBhcnQgb2YgdGhpcy5cbiogICBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgXG4qICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmBcbiogICBgZHd4Z21hYzJfcnhfbXRsX2RyYWluYFxuKiAgIGBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZGBcblxuSSdtIG1ha2luZyBhIG1lbnRhbCBub3RlIG9mIGFsbCB0aGVzZSBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5IGFyZSBhbGwgaW1wb3J0YW50IHRvIHRoZSBwcm9jZXNzLlxuXG5Ob3csIEknbSB0aGlua2luZywgYXJlIHRoZXJlIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyBpbiBwbGF5IHRoYXQgbWlnaHQgYmUgaW52b2x2ZWQgb3IgaGF2ZSBiZWVuIG1vZGlmaWVkPyBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrLlxuXG5NeSBzdXNwaWNpb24gaXMgdGhhdCB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgcmVsYXRlZCB0byBETUEgY29udHJvbC4gTGV0J3MgZGVsdmUgaW50byBgZHd4Z21hYzJfZG1hLmNgLiBZZXMsIGhlcmUgd2UgZ286IEkgc2VlIGBkd3hnbWFjMl9kbWFfc3RhcnRfdHhgLCBgZHd4Z21hYzJfZG1hX3N0b3BfdHhgLCBgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4YCwgYW5kIGBkd3hnbWFjMl9kbWFfc3RvcF9yeGAuIFRoZXNlIERNQSBmdW5jdGlvbnMgYXJlIGRlZmluaXRlbHkgcmVsZXZhbnQgdG8gc3VzcGVuc2lvbiBhbmQgcmVzdW1wdGlvbi4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBjb25maXJtIGlmIHRoZXNlIHNwZWNpZmljIERNQSBmdW5jdGlvbnMgYXJlIHN0YXRpYywgdG8gZGV0ZXJtaW5lIHRoZWlyIHNjb3BlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc4NiwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjo1Ny4yNTQ2MDIyMjNaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MDAwNDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR3eGdtYWMyX2RtYV9zdGFydF90eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0yMzY9c3RhdGljIHZvaWQgZHd4Z21hYzJfZGlzYWJsZV9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTI0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoyNTA6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0yNTEtXFx0XFx0XFx0XFx0ICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz02NTE9Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTY2Mi1cXHQuZGlzYWJsZV9kbWFfaXJxID0gZHd4Z21hYzJfZGlzYWJsZV9kbWFfaXJxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjY2MzpcXHQuc3RhcnRfdHggPSBkd3hnbWFjMl9kbWFfc3RhcnRfdHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNjY0LVxcdC5zdG9wX3R4ID0gZHd4Z21hYzJfZG1hX3N0b3BfdHgsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjU3LjMwOTYwODQzN1oiLCJTZXEiOjU5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDczNjk1NDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgVGhpbmtpbmcgb24gRE1BIE9wZXJhdGlvbnMgYW5kIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBETUEgb3BlcmF0aW9ucywgc3BlY2lmaWNhbGx5IHRob3NlIGFzc29jaWF0ZWQgd2l0aCBgZHd4Z21hYzIxMF9kbWFfb3BzYC4gVGhleSdyZSBzdGF0aWMsIGJ1dCB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcywgc28gdGhleSdyZSBkZWZpbml0ZWx5IG5vdCBpbmxpbmVkLiBUaGF0IG1lYW5zIHdlIGNhbiBzYWZlbHkgYWRkIHRoZW0gdG8gdGhlIGZvY3VzIHN5bWJvbHMuIEknbGwgYWRkIGBkd3hnbWFjMl9kbWFfc3RhcnRfdHhgLCBgZHd4Z21hYzJfZG1hX3N0b3BfdHhgLCBgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4YCwgYW5kIGBkd3hnbWFjMl9kbWFfc3RvcF9yeGAgdG8gdGhlIGxpc3QuXG5cbk5vdywgbGV0IG1lIGdvIGJhY2sgYW5kIHJldmlldyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYWdhaW46IGBTVE1NQUNfRVRIYCwgYERXTUFDX1NVTjhJYCwgYERXTUFDX0dFTkVSSUNgLCBhbmQgYFNUTU1BQ19QQ0lgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBjb3ZlcmVkLlxuXG5IbW0sIHdhaXQgYSBtaW51dGUsIGRvZXMgYERXTUFDX1NVTjhJYCBoYXZlIGFueSBkZXBlbmRlbmNpZXM/IExldCBtZSBzZWUuLi4geWVzLCBpdCBkZXBlbmRzIG9uIGBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKWAuICBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHRoaXMuIElmIHdlIGp1c3QgcHJvdmlkZSBgRFdNQUNfU1VOOElgLCBpdCdsbCBlbmFibGUgaXQgaWYgdGhvc2UgZGVwZW5kZW5jaWVzIGFyZSBtZXQuIEkgY291bGQgYWRkIGBDT01QSUxFX1RFU1RgIGV4cGxpY2l0bHkgdG8gYmUgc3VyZSwgYnV0IFN5emthbGxlciB1c3VhbGx5IGVuYWJsZXMgdGhhdCBhbnl3YXkuIE5vIG5lZWQgZm9yIHRoYXQuIEFscmlnaHQsIGxldCdzIGFsc28gY2hlY2sgYFNUTU1BQ19QQ0lgJ3MgZGVwZW5kZW5jaWVzLiBBaCwgaXQgZGVwZW5kcyBvbiBgUENJIFx1MDAyNlx1MDAyNiBTVE1NQUNfRVRIYC4gT2theSwgbm90ZWQuIEFuZCBgRFdNQUNfR0VORVJJQ2A/ICBUaGF0IGRlcGVuZHMgb24gYFNUTU1BQ19FVEhgLiBHb29kLCBzbyB3ZSdyZSBzZXQuXG5cblNvLCB0aGUgY29uZmlndXJhdGlvbnMgYXJlIGNvbmZpcm1lZCBhczogYFNUTU1BQ19FVEhgLCBgRFdNQUNfU1VOOElgLCBgRFdNQUNfR0VORVJJQ2AsIGBTVE1NQUNfUENJYC5cblxuQWxyaWdodCwgbGV0J3MgZ28gYmFjayB0byB0aG9zZSBmb2N1cyBzeW1ib2xzLiBJJ3ZlIGdvdDogYHN0bW1hY19yZWxlYXNlYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBgc3RtbWFjX3N1c3BlbmRgLCBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgLCBgZHd4Z21hYzJfdHhfbXRsX2RyYWluYCwgYGR3eGdtYWMyX3J4X210bF9kcmFpbmAsIGBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZGAsIGFuZCB0aGVuIHRoZSBuZXcgb25lcyBJIGFkZGVkOiBgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4YCwgYGR3eGdtYWMyX2RtYV9zdG9wX3R4YCwgYGR3eGdtYWMyX2RtYV9zdGFydF9yeGAsIGBkd3hnbWFjMl9kbWFfc3RvcF9yeGAuXG5cbldhaXQgYSBzZWNvbmQsIGBzdG1tYWNfcmVsZWFzZWAgaXMgZXNzZW50aWFsbHkgYG5kb19zdG9wYCwgd2hpY2ggaXMgYSBjb21tb24gcGF0aC4gVGhlIG5vdGVzIHNheSB0byBcImF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zXCIuIElzIGBzdG1tYWNfcmVsZWFzZWAgYSBob3QtcGF0aD8gTm8sIGl0J3Mgb25seSBjYWxsZWQgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIGJyb3VnaHQgZG93biwgbm90IGR1cmluZyByZWd1bGFyIG9wZXJhdGlvbi4gU2ltaWxhcmx5LCBgc3RtbWFjX3hkcF9vcGVuYCBpcyBub3QgYSBob3QtcGF0aCAtIG9ubHkgY2FsbGVkIHdoZW4gYXR0YWNoaW5nIGFuIFhEUCBwcm9ncmFtLiBXaGF0IGFib3V0IGBkd3hnbWFjMl9kbWFfc3RhcnRfdHhgPyAgWWVzLCB0aGlzIG9uZSBpcyB1c2VkIHRvIHN0YXJ0IHRoZSBUWCBETUEsIHRoYXQgY291bGQgYmUgbW9yZSBpbnRlcmVzdGluZy4gTGV0J3Mgc2VlLi4ud2hlbiBpcyBpdCBhY3R1YWxseSBjYWxsZWQ/IE5lZWQgdG8gY2hlY2sgd2hlcmUgdGhlIGBzdGFydF90eGAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTgwMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNzowNi43ODMzMDcxODRaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzOTc1ODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YXJ0X3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MzYyPXN0YXRpYyB2b2lkIHN1bjhpX2R3bWFjX2Rpc2FibGVfZG1hX2lycShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTM3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjM3NjpzdGF0aWMgdm9pZCBzdW44aV9kd21hY19kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMzc3LVxcdFxcdFxcdFxcdCAgICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz01NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBzdW44aV9kd21hY19kbWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy01NjQtXFx0LmRpc2FibGVfZG1hX2lycSA9IHN1bjhpX2R3bWFjX2Rpc2FibGVfZG1hX2lycSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjU2NTpcXHQuc3RhcnRfdHggPSBzdW44aV9kd21hY19kbWFfc3RhcnRfdHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy01NjYtXFx0LnN0b3BfdHggPSBzdW44aV9kd21hY19kbWFfc3RvcF90eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYz0yNTM9Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3bWFjMTAwMF9kbWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTI2NS1cXHQuZGlzYWJsZV9kbWFfaXJxID0gZHdtYWNfZGlzYWJsZV9kbWFfaXJxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYzoyNjY6XFx0LnN0YXJ0X3R4ID0gZHdtYWNfZG1hX3N0YXJ0X3R4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYy0yNjctXFx0LnN0b3BfdHggPSBkd21hY19kbWFfc3RvcF90eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2RtYS5jPTEwOT1jb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHdtYWMxMDBfZG1hX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2RtYS5jLTExOS1cXHQuZGlzYWJsZV9kbWFfaXJxID0gZHdtYWNfZGlzYWJsZV9kbWFfaXJxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2RtYS5jOjEyMDpcXHQuc3RhcnRfdHggPSBkd21hY19kbWFfc3RhcnRfdHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDBfZG1hLmMtMTIxLVxcdC5zdG9wX3R4ID0gZHdtYWNfZG1hX3N0b3BfdHgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM9NTQ2PWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd21hYzRfZG1hX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy01NTctXFx0LmRpc2FibGVfZG1hX2lycSA9IGR3bWFjNF9kaXNhYmxlX2RtYV9pcnEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jOjU1ODpcXHQuc3RhcnRfdHggPSBkd21hYzRfZG1hX3N0YXJ0X3R4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy01NTktXFx0LnN0b3BfdHggPSBkd21hYzRfZG1hX3N0b3BfdHgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM9NTc1PWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd21hYzQxMF9kbWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jLTU4Ni1cXHQuZGlzYWJsZV9kbWFfaXJxID0gZHdtYWM0X2Rpc2FibGVfZG1hX2lycSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM6NTg3OlxcdC5zdGFydF90eCA9IGR3bWFjNF9kbWFfc3RhcnRfdHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jLTU4OC1cXHQuc3RvcF90eCA9IGR3bWFjNF9kbWFfc3RvcF90eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuaD0xNzk9dm9pZCBkd21hYzRfZGlzYWJsZV9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5oLTE4MC1cXHRcXHRcXHQgICAgdTMyIGNoYW4sIGJvb2wgcngsIGJvb2wgdHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuaDoxODE6dm9pZCBkd21hYzRfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5oLTE4Mi1cXHRcXHRcXHQgdTMyIGNoYW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jPTM3PXZvaWQgZHdtYWM0X3NldF90eF90YWlsX3B0cihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jLTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9saWIuYzo0NTp2b2lkIGR3bWFjNF9kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfbGliLmMtNDYtXFx0XFx0XFx0IHUzMiBjaGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWNfZG1hLmg9MTQ5PXZvaWQgZHdtYWNfZGlzYWJsZV9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWNfZG1hLmgtMTUwLVxcdFxcdFxcdCAgIHUzMiBjaGFuLCBib29sIHJ4LCBib29sIHR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hY19kbWEuaDoxNTE6dm9pZCBkd21hY19kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hY19kbWEuaC0xNTItXFx0XFx0XFx0dTMyIGNoYW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWNfbGliLmM9NTQ9dm9pZCBkd21hY19kaXNhYmxlX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjX2xpYi5jLTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjX2xpYi5jOjY3OnZvaWQgZHdtYWNfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWNfbGliLmMtNjgtXFx0XFx0XFx0dTMyIGNoYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0yMzY9c3RhdGljIHZvaWQgZHd4Z21hYzJfZGlzYWJsZV9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTI0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoyNTA6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0yNTEtXFx0XFx0XFx0XFx0ICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz02NTE9Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTY2Mi1cXHQuZGlzYWJsZV9kbWFfaXJxID0gZHd4Z21hYzJfZGlzYWJsZV9kbWFfaXJxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjY2MzpcXHQuc3RhcnRfdHggPSBkd3hnbWFjMl9kbWFfc3RhcnRfdHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNjY0LVxcdC5zdG9wX3R4ID0gZHd4Z21hYzJfZG1hX3N0b3BfdHgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg9MTY3PXN0cnVjdCBzdG1tYWNfZG1hX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtMTk3LVxcdFxcdFxcdFxcdHUzMiBjaGFuLCBib29sIHJ4LCBib29sIHR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6MTk4OlxcdHZvaWQgKCpzdGFydF90eCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtMTk5LVxcdFxcdFxcdCB1MzIgY2hhbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtMjY4LVxcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBkaXNhYmxlX2RtYV9pcnEsIF9fcHJpdiwgX19hcmdzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDoyNjk6I2RlZmluZSBzdG1tYWNfc3RhcnRfdHgoX19wcml2LCBfX2FyZ3MuLi4pIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6MjcwOlxcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBzdGFydF90eCwgX19wcml2LCBfX2FyZ3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTI3MS0jZGVmaW5lIHN0bW1hY19zdG9wX3R4KF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI0NzI9c3RhdGljIHZvaWQgc3RtbWFjX3N0YXJ0X3J4X2RtYShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBjaGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNDc4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjQ3OTogKiBzdG1tYWNfc3RhcnRfdHhfZG1hIC0gc3RhcnQgVFggRE1BIGNoYW5uZWxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0ODAtICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNDg0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjQ4NTpzdGF0aWMgdm9pZCBzdG1tYWNfc3RhcnRfdHhfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGNoYW4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNDg2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0ODctXFx0bmV0ZGV2X2RiZyhwcml2LVxcdTAwM2VkZXYsIFxcXCJETUEgVFggcHJvY2Vzc2VzIHN0YXJ0ZWQgaW4gY2hhbm5lbCAlZFxcXFxuXFxcIiwgY2hhbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNDg4OlxcdHN0bW1hY19zdGFydF90eChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIGNoYW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ4OS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI1NDA9c3RhdGljIHZvaWQgc3RtbWFjX3N0YXJ0X2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNTQ5LVxcdGZvciAoY2hhbiA9IDA7IGNoYW4gXFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjU1MDpcXHRcXHRzdG1tYWNfc3RhcnRfdHhfZG1hKHByaXYsIGNoYW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjU1MS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTMwNjE9c3RhdGljIHZvaWQgc3RtbWFjX3R4X2VycihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBjaGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMDcyLVxcdFxcdFxcdCAgICB0eF9xLVxcdTAwM2VkbWFfdHhfcGh5LCBjaGFuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjMwNzM6XFx0c3RtbWFjX3N0YXJ0X3R4X2RtYShwcml2LCBjaGFuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTMwNzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxMDM9dm9pZCBzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzEzNDpcXHRzdG1tYWNfc3RhcnRfdHhfZG1hKHByaXYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMzUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE3OjA2Ljg3NzI4OTcyM1oiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDE2NDk3ODE5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBGb2N1cyBTeW1ib2xzIGFuZCBQYXRjaCBTY29wZSoqXG5cbk9rYXksIGxldCdzIHNvbGlkaWZ5IHRoaXMgYW5hbHlzaXMuIEl0IGxvb2tzIGxpa2UgYHN0bW1hY19zdGFydF90eF9kbWFgIGlzIGNhbGxlZCBmcm9tIGEgZmV3IHBsYWNlcywgYnV0IG5vdCBvbiAqZXZlcnkqIHBhY2tldCB0cmFuc21pc3Npb24uIEl0J3MgbW9yZSBvZiBhIHNldHVwLCBlcnJvciBoYW5kbGluZywgYW5kIHF1ZXVlIGVuYWJsZSBmdW5jdGlvbi4gU28sIGBkd3hnbWFjMl9kbWFfc3RhcnRfdHhgIGlzbid0IGEgaG90IHBhdGgg4oCTIHdoaWNoIGFjdHVhbGx5IG1ha2VzIGl0IGEgKmdvb2QqIHN5bWJvbCB0byBmb2N1cyBvbi4gSXQncyBpbnZva2VkIGluIHRoZXNlIGxlc3MtZnJlcXVlbnQsIHBvdGVudGlhbGx5IG1vcmUgY29tcGxleCBzY2VuYXJpb3MuXG5cbkxldCdzIG5haWwgZG93biB0aGVzZSBmb2N1cyBzeW1ib2xzLiBJIGhhdmU6XG5cbiogICBgc3RtbWFjX3JlbGVhc2VgIChJJ2xsIGtlZXAgdGhpcyBhcyBpdCdzIHRoZSBtYWluIHRlYXJkb3duIGVudHJ5IHBvaW50IC0gYWx0aG91Z2ggaXQgaXMgYSBiaXQgZ2VuZXJpYy4pXG4qICAgYHN0bW1hY194ZHBfcmVsZWFzZWBcbiogICBgc3RtbWFjX3hkcF9vcGVuYFxuKiAgIGBzdG1tYWNfc3VzcGVuZGBcbiogICBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgXG4qICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmBcbiogICBgZHd4Z21hYzJfcnhfbXRsX2RyYWluYFxuKiAgIGBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZGBcbiogICBgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4YFxuKiAgIGBkd3hnbWFjMl9kbWFfc3RvcF90eGBcbiogICBgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4YFxuKiAgIGBkd3hnbWFjMl9kbWFfc3RvcF9yeGBcblxuTm93LCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiBwbGF5OiBgU1RNTUFDX0VUSGAsIGBEV01BQ19TVU44SWAsIGBEV01BQ19HRU5FUklDYCwgYW5kIGBTVE1NQUNfUENJYC5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGBkd3hnbWFjMl9kbWEuY2AgYW5kIGBzdG1tYWNfbWFpbi5jYC4gVGhlIGNvcmUgcmVhc29uaW5nIGJlaGluZCB0aGUgY2hhbmdlcyBpcyBhZGRpbmcgYW4gb3JkZXJlZCB0ZWFyZG93biBzZXF1ZW5jZSB0byB0aGUgc3RtbWFjIGRyaXZlci4gV2UncmUgdGFsa2luZyBhYm91dCBpbmNsdWRpbmcgcG9sbGluZyBsb29wcyB0byBlbnN1cmUgRE1BIGFuZCBNVEwgcXVldWVzIGFyZSBkcmFpbmVkIGJlZm9yZSBkaXNhYmxpbmcgdGhlIE1BQywgd2hpY2ggYWZmZWN0cyBhbGwgc3RtbWFjIHZhcmlhbnRzLCBldmVuIHRob3NlIGVtdWxhdGVkIGluIFFFTVUuIFRoZXNlIGNoYW5nZXMgaW1wYWN0IFhEUCBzZXR1cC90ZWFyZG93biBhbmQgdGhlIHN1c3BlbmQgY2FsbGJhY2tzLiBDcnVjaWFsbHksIHRoZXNlIG1vZGlmaWNhdGlvbnMgYXJlIHRyaWdnZXJlZCBieSBub3JtYWwgaW50ZXJmYWNlIHN0YXRlIGNoYW5nZXMgKGxpa2UgYGlwIGxpbmsgc2V0IGRldiBldGgwIGRvd25gKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudC4gVGhlcmVmb3JlLCB0aGV5IHNlZW0gZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCB3b3J0aCBmdXp6aW5nLlxuXG5BbHJpZ2h0LCBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDc1OSwiT3V0cHV0VG9rZW5zIjozMjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTc6MTcuMDQyMjcyMjE4WiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NTc3ODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19TVU44SVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19yZWxlYXNlXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiLFxuICAgIFwic3RtbWFjX3N1c3BlbmRcIixcbiAgICBcImR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkXCIsXG4gICAgXCJkd3hnbWFjMl90eF9tdGxfZHJhaW5cIixcbiAgICBcImR3eGdtYWMyX3J4X210bF9kcmFpblwiLFxuICAgIFwiZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF90eFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfdHhcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF9yeFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfcnhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLCBhZGRpbmcgcG9sbGluZyBsb29wcyB0byB3YWl0IGZvciBETUEgYW5kIE1UTCBxdWV1ZXMgdG8gZHJhaW4gYmVmb3JlIGRpc2FibGluZyB0aGUgTUFDLiBUaGlzIGFmZmVjdHMgdGhlIHRlYXJkb3duIHBhdGggb2YgYWxsIHN0bW1hYyB2YXJpYW50cyAoaW5jbHVkaW5nIHRob3NlIGVtdWxhdGVkIGluIFFFTVUgbGlrZSBzdW44aS1lbWFjKSBhbmQgbW9kaWZpZXMgdGhlIFhEUCBzZXR1cC90ZWFyZG93biBhbmQgc3VzcGVuZCBjYWxsYmFja3MuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZHVyaW5nIG5vcm1hbCBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlcyAoZS5nLiwgYnJpbmdpbmcgdGhlIGludGVyZmFjZSBkb3duKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudCwgbWFraW5nIHRoZW0gZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19TVU44SVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19yZWxlYXNlXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiLFxuICAgIFwic3RtbWFjX3N1c3BlbmRcIixcbiAgICBcImR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkXCIsXG4gICAgXCJkd3hnbWFjMl90eF9tdGxfZHJhaW5cIixcbiAgICBcImR3eGdtYWMyX3J4X210bF9kcmFpblwiLFxuICAgIFwiZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF90eFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfdHhcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF9yeFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfcnhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLCBhZGRpbmcgcG9sbGluZyBsb29wcyB0byB3YWl0IGZvciBETUEgYW5kIE1UTCBxdWV1ZXMgdG8gZHJhaW4gYmVmb3JlIGRpc2FibGluZyB0aGUgTUFDLiBUaGlzIGFmZmVjdHMgdGhlIHRlYXJkb3duIHBhdGggb2YgYWxsIHN0bW1hYyB2YXJpYW50cyAoaW5jbHVkaW5nIHRob3NlIGVtdWxhdGVkIGluIFFFTVUgbGlrZSBzdW44aS1lbWFjKSBhbmQgbW9kaWZpZXMgdGhlIFhEUCBzZXR1cC90ZWFyZG93biBhbmQgc3VzcGVuZCBjYWxsYmFja3MuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZHVyaW5nIG5vcm1hbCBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlcyAoZS5nLiwgYnJpbmdpbmcgdGhlIGludGVyZmFjZSBkb3duKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudCwgbWFraW5nIHRoZW0gZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTc6MTcuMTg2ODU3NTQxWiIsIlNlcSI6NjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODAxOTkxNTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTc6MTcuMTg3MzU3MDkxWiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc4MDE0ODg0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGhhcmR3YXJlIGNvbnRyb2wgZmxvdyBmb3Igc3RvcHBpbmcgRE1BIGNoYW5uZWxzIGFuZCBkcmFpbmluZyBNQUMgcXVldWVzIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBhbHRlciBidWZmZXIgYWxsb2NhdGlvbnMgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMzkxMjA0NmVmMDYxMzBlOGFmNGUzNzdhMDJkNDFkMzI2YmU4NWYyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMDg6MTQ6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaFxuaW5kZXggNTE5NDM3MDVhMmIwMy4uMmUzZjI2MDAwZDMzNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcbkBAIC0yOTEsNiArMjkxLDEwIEBAXG4gI2RlZmluZSBYR01BQ19UVENcdFx0XHRHRU5NQVNLKDYsIDQpXG4gI2RlZmluZSBYR01BQ19UWFFFTlx0XHRcdEdFTk1BU0soMywgMilcbiAjZGVmaW5lIFhHTUFDX1RTRlx0XHRcdEJJVCgxKVxuKyNkZWZpbmUgWEdNQUNfTVRMX1RYUV9ERUJVRyh4KVx0XHQoMHgwMDAwMTEwOCArICgweDgwICogKHgpKSlcbisjZGVmaW5lIFhHTUFDX1RYUVNUU1x0XHRcdEJJVCg0KVxuKyNkZWZpbmUgWEdNQUNfVFJDU1RTXHRcdFx0R0VOTUFTSygyLCAxKVxuKyNkZWZpbmUgWEdNQUNfVFJDU1RTX1JFQURcdFx0MHgxXG4gI2RlZmluZSBYR01BQ19NVExfVEN4X0VUU19DT05UUk9MKHgpXHQoMHgwMDAwMTExMCArICgweDgwICogKHgpKSlcbiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfUVVBTlRVTV9XRUlHSFQoeClcdCgweDAwMDAxMTE4ICsgKDB4ODAgKiAoeCkpKVxuICNkZWZpbmUgWEdNQUNfTVRMX1RDeF9TRU5EU0xPUEUoeClcdCgweDAwMDAxMTFjICsgKDB4ODAgKiAoeCkpKVxuQEAgLTMwNiw2ICszMTAsOSBAQFxuICNkZWZpbmUgWEdNQUNfRUhGQ1x0XHRcdEJJVCg3KVxuICNkZWZpbmUgWEdNQUNfUlNGXHRcdFx0QklUKDUpXG4gI2RlZmluZSBYR01BQ19SVENcdFx0XHRHRU5NQVNLKDEsIDApXG4rI2RlZmluZSBYR01BQ19NVExfUlhRX0RFQlVHKHgpXHRcdCgweDAwMDAxMTQ4ICsgKDB4ODAgKiAoeCkpKVxuKyNkZWZpbmUgWEdNQUNfUFJYUVx0XHRcdEdFTk1BU0soMjksIDE2KVxuKyNkZWZpbmUgWEdNQUNfUlhRU1RTXHRcdFx0R0VOTUFTSyg1LCA0KVxuICNkZWZpbmUgWEdNQUNfTVRMX1JYUV9GTE9XX0NPTlRST0woeClcdCgweDAwMDAxMTUwICsgKDB4ODAgKiAoeCkpKVxuICNkZWZpbmUgWEdNQUNfUkZEXHRcdFx0R0VOTUFTSygzMSwgMTcpXG4gI2RlZmluZSBYR01BQ19SRkFcdFx0XHRHRU5NQVNLKDE1LCAxKVxuQEAgLTM4OSw2ICszOTYsNyBAQFxuICNkZWZpbmUgWEdNQUNfTklTXHRcdFx0QklUKDE1KVxuICNkZWZpbmUgWEdNQUNfQUlTXHRcdFx0QklUKDE0KVxuICNkZWZpbmUgWEdNQUNfRkJFXHRcdFx0QklUKDEyKVxuKyNkZWZpbmUgWEdNQUNfUlBTXHRcdFx0QklUKDgpXG4gI2RlZmluZSBYR01BQ19SQlVcdFx0XHRCSVQoNylcbiAjZGVmaW5lIFhHTUFDX1JJXHRcdFx0QklUKDYpXG4gI2RlZmluZSBYR01BQ19UQlVcdFx0XHRCSVQoMilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXG5pbmRleCAwMzQzN2YxY2YzZGYzLi44ZTI3YmM1OGNjMDU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXG5AQCAtNCw2ICs0LDcgQEBcbiAgKiBzdG1tYWMgWEdNQUMgc3VwcG9ydC5cbiAgKi9cbiBcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiAjaW5jbHVkZSBcInN0bW1hYy5oXCJcbiAjaW5jbHVkZSBcImR3eGdtYWMyLmhcIlxuQEAgLTI1MSwxMyArMjUyLDEyIEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4ge1xuIFx0dTMyIHZhbHVlO1xuIFxuK1x0LyogVFBTIGlzIGxhdGNoZWQgb25jZSBzZXQsIHNvIGNsZWFyIGl0IG9uIGV2ZXJ5IFR4IERNQSBzdGFydC4gKi9cbitcdHdyaXRlbChYR01BQ19UUFMsIGlvYWRkciArIFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbikpO1xuK1xuIFx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XG4gXHR2YWx1ZSB8PSBYR01BQ19UWFNUO1xuIFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XG4tXG4tXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX1RYX0NPTkZJRyk7XG4tXHR2YWx1ZSB8PSBYR01BQ19DT05GSUdfVEU7XG4tXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX1RYX0NPTkZJRyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG5AQCAtMjY4LDEwICsyNjgsNiBAQCBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RvcF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XG4gXHR2YWx1ZSBcdTAwMjY9IH5YR01BQ19UWFNUO1xuIFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XG4tXG4tXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX1RYX0NPTkZJRyk7XG4tXHR2YWx1ZSBcdTAwMjY9IH5YR01BQ19DT05GSUdfVEU7XG4tXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX1RYX0NPTkZJRyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5AQCAtMjc5LDEzICsyNzUsMTIgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiB7XG4gXHR1MzIgdmFsdWU7XG4gXG4rXHQvKiBSUFMgaXMgbGF0Y2hlZCBvbmNlIHNldCwgc28gY2xlYXIgaXQgb24gZXZlcnkgUnggRE1BIHN0YXJ0LiAqL1xuK1x0d3JpdGVsKFhHTUFDX1JQUywgaW9hZGRyICsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSk7XG4rXG4gXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX0RNQV9DSF9SWF9DT05UUk9MKGNoYW4pKTtcbiBcdHZhbHVlIHw9IFhHTUFDX1JYU1Q7XG4gXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX0RNQV9DSF9SWF9DT05UUk9MKGNoYW4pKTtcbi1cbi1cdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfUlhfQ09ORklHKTtcbi1cdHZhbHVlIHw9IFhHTUFDX0NPTkZJR19SRTtcbi1cdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICsgWEdNQUNfUlhfQ09ORklHKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0b3Bfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbkBAIC01ODIsNiArNTc3LDc3IEBAIHN0YXRpYyBpbnQgZHd4Z21hYzJfZW5hYmxlX3RicyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyBpbnQgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuK1x0XHRcdFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuK3tcbitcdHUzMiB2YWx1ZTtcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSwgdmFsdWUsXG4rXHRcdFx0XHQgdmFsdWUgXHUwMDI2IFhHTUFDX1RQUywgMTAwLCAxMDAwMCk7XG4rXHRpZiAocmV0KVxuK1x0XHRuZXRkZXZfd2Fybihwcml2LVx1MDAzZWRldiwgXCJUeCBETUEgY2hhbm5lbCAldSBzdG9wIHRpbWVvdXRcXG5cIixcbitcdFx0XHQgICAgY2hhbik7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitzdGF0aWMgaW50IGR3eGdtYWMyX3R4X210bF9kcmFpbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4rXHRcdFx0XHQgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBxdWV1ZSlcbit7XG4rXHR1MzIgdmFsdWU7XG4rXHRpbnQgcmV0O1xuK1xuK1x0LyogV2FpdCB1bnRpbCB0aGUgcXVldWUgaXMgZW1wdHkgYW5kIGl0cyByZWFkIGNvbnRyb2xsZXIgaXMgbm8gbG9uZ2VyXG4rXHQgKiBwdWxsaW5nIGEgZnJhbWUgb3V0IHRvd2FyZHMgdGhlIE1BQy5cbitcdCAqL1xuK1x0cmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciArIFhHTUFDX01UTF9UWFFfREVCVUcocXVldWUpLCB2YWx1ZSxcbitcdFx0XHRcdCAhKHZhbHVlIFx1MDAyNiBYR01BQ19UWFFTVFMpIFx1MDAyNlx1MDAyNlxuK1x0XHRcdFx0IEZJRUxEX0dFVChYR01BQ19UUkNTVFMsIHZhbHVlKSAhPVxuK1x0XHRcdFx0IFhHTUFDX1RSQ1NUU19SRUFELFxuK1x0XHRcdFx0IDEwMCwgMTAwMDApO1xuK1x0aWYgKHJldClcbitcdFx0bmV0ZGV2X3dhcm4ocHJpdi1cdTAwM2VkZXYsIFwiTVRMIFR4IHF1ZXVlICV1IGRyYWluIHRpbWVvdXRcXG5cIixcbitcdFx0XHQgICAgcXVldWUpO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludCBkd3hnbWFjMl9yeF9tdGxfZHJhaW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuK1x0XHRcdFx0IHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgcXVldWUpXG4re1xuK1x0dTMyIHZhbHVlO1xuK1x0aW50IHJldDtcbitcbitcdC8qIFdhaXQgdW50aWwgbm8gcGFja2V0IGlzIGxlZnQgaW4gdGhlIHF1ZXVlIGFuZCB0aGUgcXVldWUgcmVwb3J0c1xuK1x0ICogaXRzZWxmIGVtcHR5LlxuK1x0ICovXG4rXHRyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICsgWEdNQUNfTVRMX1JYUV9ERUJVRyhxdWV1ZSksIHZhbHVlLFxuK1x0XHRcdFx0ICFGSUVMRF9HRVQoWEdNQUNfUFJYUSwgdmFsdWUpIFx1MDAyNlx1MDAyNlxuK1x0XHRcdFx0ICFGSUVMRF9HRVQoWEdNQUNfUlhRU1RTLCB2YWx1ZSksXG4rXHRcdFx0XHQgMTAwLCAxMDAwMCk7XG4rXHRpZiAocmV0KVxuK1x0XHRuZXRkZXZfd2Fybihwcml2LVx1MDAzZWRldiwgXCJNVEwgUnggcXVldWUgJXUgZHJhaW4gdGltZW91dFxcblwiLFxuK1x0XHRcdCAgICBxdWV1ZSk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitzdGF0aWMgaW50IGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbitcdFx0XHRcdCAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbilcbit7XG4rXHR1MzIgdmFsdWU7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciArIFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbiksIHZhbHVlLFxuK1x0XHRcdFx0IHZhbHVlIFx1MDAyNiBYR01BQ19SUFMsIDEwMCwgMTAwMDApO1xuK1x0aWYgKHJldClcbitcdFx0bmV0ZGV2X3dhcm4ocHJpdi1cdTAwM2VkZXYsIFwiUnggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XFxuXCIsXG4rXHRcdFx0ICAgIGNoYW4pO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4gY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcbiBcdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcbiBcdC5pbml0ID0gZHd4Z21hYzJfZG1hX2luaXQsXG5AQCAtNjEwLDQgKzY3Niw4IEBAIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XG4gXHQuc2V0X2Jmc2l6ZSA9IGR3eGdtYWMyX3NldF9iZnNpemUsXG4gXHQuZW5hYmxlX3NwaCA9IGR3eGdtYWMyX2VuYWJsZV9zcGgsXG4gXHQuZW5hYmxlX3RicyA9IGR3eGdtYWMyX2VuYWJsZV90YnMsXG4rXHQudHhfZG1hX3N0b3BwZWQgPSBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZCxcbitcdC50eF9tdGxfZHJhaW4gPSBkd3hnbWFjMl90eF9tdGxfZHJhaW4sXG4rXHQucnhfbXRsX2RyYWluID0gZHd4Z21hYzJfcnhfbXRsX2RyYWluLFxuK1x0LnJ4X2RtYV9zdG9wcGVkID0gZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWQsXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbmluZGV4IGU2MzE3Yjk0ZmZmN2QuLjIzYTY5MTVhY2RmYmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuQEAgLTIyOSw2ICsyMjksMTUgQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHtcbiBcdFx0XHQgICBib29sIGVuLCB1MzIgY2hhbik7XG4gXHRpbnQgKCplbmFibGVfdGJzKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0XHRcdCAgYm9vbCBlbiwgdTMyIGNoYW4pO1xuK1x0LyogT3JkZXJlZCBkYXRhcGF0aCB0ZWFyZG93biAqL1xuK1x0aW50ICgqdHhfZG1hX3N0b3BwZWQpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4rXHRcdFx0ICAgICAgdTMyIGNoYW4pO1xuK1x0aW50ICgqdHhfbXRsX2RyYWluKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuK1x0XHRcdCAgICB1MzIgcXVldWUpO1xuK1x0aW50ICgqcnhfbXRsX2RyYWluKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuK1x0XHRcdCAgICB1MzIgcXVldWUpO1xuK1x0aW50ICgqcnhfZG1hX3N0b3BwZWQpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4rXHRcdFx0ICAgICAgdTMyIGNoYW4pO1xuIH07XG4gXG4gI2RlZmluZSBzdG1tYWNfZG1hX2luaXQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG5AQCAtMjg5LDYgKzI5OCwxNCBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMge1xuIFx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGVuYWJsZV9zcGgsIF9fcHJpdiwgX19hcmdzKVxuICNkZWZpbmUgc3RtbWFjX2VuYWJsZV90YnMoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4gXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIGVuYWJsZV90YnMsIF9fcHJpdiwgX19hcmdzKVxuKyNkZWZpbmUgc3RtbWFjX3R4X2RtYV9zdG9wcGVkKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuK1x0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCB0eF9kbWFfc3RvcHBlZCwgX19wcml2LCBfX2FyZ3MpXG4rI2RlZmluZSBzdG1tYWNfdHhfbXRsX2RyYWluKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuK1x0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCB0eF9tdGxfZHJhaW4sIF9fcHJpdiwgX19hcmdzKVxuKyNkZWZpbmUgc3RtbWFjX3J4X210bF9kcmFpbihfX3ByaXYsIF9fYXJncy4uLikgXFxcbitcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgcnhfbXRsX2RyYWluLCBfX3ByaXYsIF9fYXJncylcbisjZGVmaW5lIHN0bW1hY19yeF9kbWFfc3RvcHBlZChfX3ByaXYsIF9fYXJncy4uLikgXFxcbitcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgcnhfZG1hX3N0b3BwZWQsIF9fcHJpdiwgX19hcmdzKVxuIFxuIHN0cnVjdCBtYWNfZGV2aWNlX2luZm87XG4gc3RydWN0IG5ldF9kZXZpY2U7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDM1OTE3NTVlYTMwYmUuLmNjM2EwYWUwYzU2ZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjU2OSw2ICsyNTY5LDUyIEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zdG9wX2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0XHRzdG1tYWNfc3RvcF90eF9kbWEocHJpdiwgY2hhbik7XG4gfVxuIFxuKy8qKlxuKyAqIHN0bW1hY19kYXRhcGF0aF90ZWFyZG93biAtIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gYXMgcGVyIElQIHNwZWNpZmljYXRpb25cbisgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXG4rICogRGVzY3JpcHRpb246XG4rICogV2hlbiB0ZWFyZG93biBvcHMgYXJlIGF2YWlsYWJsZSwgZm9sbG93IHRoZSBkYXRhYm9vayBvcmRlcmVkIHRlYXJkb3duXG4rICogc2VxdWVuY2UuXG4rICogRm9sbG93cyB0aGUgbGVnYWN5IHN0b3AgKyBNQUMgZGlzYWJsZSBmb3IgdmFyaWFudHMgd2l0aG91dCB0aGUgZmVhdHVyZS5cbisgKi9cbitzdGF0aWMgdm9pZCBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdHUzMiByeF9jaGFubmVsc19jb3VudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VyeF9xdWV1ZXNfdG9fdXNlO1xuK1x0dTMyIHR4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7XG4rXHR1MzIgY2hhbjtcbitcbitcdC8qIFN0b3AgYWxsIFRYIERNQSBjaGFubmVscyAqL1xuK1x0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcbitcdFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xuK1xuK1x0LyogV2FpdCBmb3IgZXZlcnkgVFggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovXG4rXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNldHhfZG1hX3N0b3BwZWQpXG4rXHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXG4rXHRcdFx0c3RtbWFjX3R4X2RtYV9zdG9wcGVkKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBjaGFuKTtcbitcbitcdC8qIFdhaXQgZm9yIHRoZSBNVEwgVFggcXVldWVzIHRvIGZpbmlzaCBwdXNoaW5nIGludG8gdGhlIE1BQyAqL1xuK1x0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlZG1hLVx1MDAzZXR4X210bF9kcmFpbilcbitcdFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcbitcdFx0XHRzdG1tYWNfdHhfbXRsX2RyYWluKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBjaGFuKTtcbitcbitcdC8qIERpc2FibGUgdGhlIE1BQyBUWCBhbmQgUlggKi9cbitcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBmYWxzZSk7XG4rXG4rXHQvKiBXYWl0IGZvciB0aGUgTVRMIFJYIHF1ZXVlcyB0byBkcmFpbiBpbnRvIHRoZSBSWCBETUEgKi9cbitcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZWRtYS1cdTAwM2VyeF9tdGxfZHJhaW4pXG4rXHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXG4rXHRcdFx0c3RtbWFjX3J4X210bF9kcmFpbihwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4rXG4rXHQvKiBTdG9wIGFsbCBSWCBETUEgY2hhbm5lbHMgKi9cbitcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXG4rXHRcdHN0bW1hY19zdG9wX3J4X2RtYShwcml2LCBjaGFuKTtcbitcbitcdC8qIFdhaXQgZm9yIGV2ZXJ5IFJYIERNQSBjaGFubmVsIHRvIHJlcG9ydCBpdHNlbGYgc3RvcHBlZCAqL1xuK1x0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlZG1hLVx1MDAzZXJ4X2RtYV9zdG9wcGVkKVxuK1x0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxuK1x0XHRcdHN0bW1hY19yeF9kbWFfc3RvcHBlZChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4rfVxuK1xuIC8qKlxuICAqICBzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlIC0gSFcgRE1BIG9wZXJhdGlvbiBtb2RlXG4gICogIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcbkBAIC0zNjkyLDkgKzM3MzgsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRwcml2LVx1MDAzZWh3LVx1MDAzZXJ4X2NzdW0gPSAwO1xuIFx0fVxuIFxuLVx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbi1cdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbi1cbiBcdC8qIFNldCB0aGUgSFcgRE1BIG1vZGUgYW5kIHRoZSBDT0UgKi9cbiBcdHN0bW1hY19kbWFfb3BlcmF0aW9uX21vZGUocHJpdik7XG4gXG5AQCAtMzc1MCw2ICszNzkzLDkgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIFN0YXJ0IHRoZSBiYWxsIHJvbGxpbmcuLi4gKi9cbiBcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xuIFxuK1x0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbitcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbitcbiBcdHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi1cdTAwM2VwaHlsaW5rKTtcbiBcdHN0bW1hY19zZXRfaHdfdmxhbl9tb2RlKHByaXYsIHByaXYtXHUwMDNlaHcpO1xuIFx0cGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKHByaXYtXHUwMDNlcGh5bGluayk7XG5AQCAtNDIzOCw5ICs0Mjg0LDYgQEAgc3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHU4IGNoYW47XG4gXG4tXHQvKiBTdG9wIGFuZCBkaXNjb25uZWN0IHRoZSBQSFkgKi9cbi1cdHBoeWxpbmtfc3RvcChwcml2LVx1MDAzZXBoeWxpbmspO1xuLVxuIFx0c3RtbWFjX2Rpc2FibGVfYWxsX3F1ZXVlcyhwcml2KTtcbiBcbiBcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuKyspXG5AQCAtNDI1MSw4ICs0Mjk0LDExIEBAIHN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuIFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiBcbi1cdC8qIFN0b3AgVFgvUlggRE1BIGFuZCBjbGVhciB0aGUgZGVzY3JpcHRvcnMgKi9cbi1cdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4rXHQvKiBIYXMgdG8gcnVuIGJlZm9yZSBtYWNfbGlua19kb3duKCkgZGlzYWJsZXMgdGhlIE1BQy4gKi9cbitcdHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihwcml2KTtcbitcbitcdC8qIFN0b3AgYW5kIGRpc2Nvbm5lY3QgdGhlIFBIWSAqL1xuK1x0cGh5bGlua19zdG9wKHByaXYtXHUwMDNlcGh5bGluayk7XG4gXG4gXHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cbiBcdGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYpO1xuQEAgLTcxMDksMTUgKzcxNTUsMTIgQEAgdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuIFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiBcbi1cdC8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovXG4tXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuK1x0LyogU3RvcCB0aGUgTUFDIGFuZCB0aGUgVFgvUlggRE1BIGNoYW5uZWxzICovXG4rXHRzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7XG4gXG4gXHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cbiBcdGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYpO1xuIFxuLVx0LyogRGlzYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgZmFsc2UpO1xuLVxuIFx0Lyogc2V0IHRyYW5zX3N0YXJ0IHNvIHdlIGRvbid0IGdldCBzcHVyaW91c1xuIFx0ICogd2F0Y2hkb2dzIGR1cmluZyByZXNldFxuIFx0ICovXG5AQCAtNzE4OSwxMiArNzIzMiwxMiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdGhydGltZXJfc2V0dXAoXHUwMDI2dHhfcS1cdTAwM2V0eHRpbWVyLCBzdG1tYWNfdHhfdGltZXIsIENMT0NLX01PTk9UT05JQywgSFJUSU1FUl9NT0RFX1JFTCk7XG4gXHR9XG4gXG4tXHQvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqL1xuLVx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIHRydWUpO1xuLVxuIFx0LyogU3RhcnQgUnggXHUwMDI2IFR4IERNQSBDaGFubmVscyAqL1xuIFx0c3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7XG4gXG4rXHQvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqL1xuK1x0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIHRydWUpO1xuK1xuIFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGlycV9lcnJvcjtcbkBAIC04MTk1LDE3ICs4MjM4LDE1IEBAIGludCBzdG1tYWNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnByaXYtXHUwMDNlZWVlX2N0cmxfdGltZXIpO1xuIFx0fVxuIFxuLVx0LyogU3RvcCBUWC9SWCBETUEgKi9cbi1cdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4tXG4tXHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuLVxuIFx0LyogRW5hYmxlIFBvd2VyIGRvd24gbW9kZSBieSBwcm9ncmFtbWluZyB0aGUgUE1UIHJlZ3MgKi9cbiBcdGlmIChwcml2LVx1MDAzZXdvbG9wdHMpIHtcbitcdFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbitcdFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcbiBcdFx0c3RtbWFjX3BtdChwcml2LCBwcml2LVx1MDAzZWh3LCBwcml2LVx1MDAzZXdvbG9wdHMpO1xuIFx0XHRwcml2LVx1MDAzZWlycV93YWtlID0gMTtcbiBcdH0gZWxzZSB7XG4tXHRcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBmYWxzZSk7XG4rXHRcdHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihwcml2KTtcbitcdFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcbiBcdFx0cGluY3RybF9wbV9zZWxlY3Rfc2xlZXBfc3RhdGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTc6MTcuMTg3MzU4MjIxWiIsIlNlcSI6NjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4MDE0NjkxMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU3RtbWFjIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBzcXVhcmVseSBvbiB0aGUgYHN0bW1hY2AgZXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGhhcmR3YXJlIHRlYXJkb3duIHNlcXVlbmNlLiBJIHNlZSBpdCBpbnRyb2R1Y2VzIGEgbmV3IGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUga2V5LiBUaGlzIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgYSBtb3JlIG9yZGVyZWQgYW5kIGNvbnRyb2xsZWQgd2F5IHRvIHNodXQgZG93biB0aGUgVFgvUlggRE1BIGNoYW5uZWxzIGFuZCBkcmFpbiB0aGUgTVRMIHF1ZXVlcy4gSSBjYW4gc2VlIHRoYXQgaXQncyBhZGRpbmcgc29tZSBuZXcgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLCBsaWtlIGBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZGAsIGBkd3hnbWFjMl90eF9tdGxfZHJhaW5gLCBhbmQgc28gb24uXG5cblRoZSBtYWluIGltcGFjdCBzZWVtcyB0byBiZSBpbiBgc3RtbWFjX21haW4uY2AsIHdoZXJlIHRoZXkncmUgcmVwbGFjaW5nIHRoZSBvbGRlciBgc3RtbWFjX3N0b3BfYWxsX2RtYWAgYW5kIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHdpdGggdGhpcyBuZXcgYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAgZnVuY3Rpb24gaW4ga2V5IGFyZWFzIGxpa2UgYF9fc3RtbWFjX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYW5kIGBzdG1tYWNfc3VzcGVuZGAuIEFsc28sIHRoZXkndmUgcmVvcmdhbml6ZWQgaG93IGBzdG1tYWNfbWFjX3NldGAgYW5kIGBzdG1tYWNfc3RhcnRfYWxsX2RtYWAgYXJlIGNhbGxlZCBpbiBgc3RtbWFjX2h3X3NldHVwYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAuIFRoYXQncyBpbXBvcnRhbnQgdG8ga2VlcCB0cmFjayBvZi5cblxuR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBoYXJkd2FyZSBkcml2ZXJzLCB0aGlzIGFsbCBtYWtlcyBzZW5zZS4gSXQncyBlc3NlbnRpYWxseSBhIHN0YXRlIG1hY2hpbmUgaXNzdWUg4oCTIGVuc3VyaW5nIHRoZSBNQUMgYW5kIERNQSBhcmUgc2h1dCBkb3duIGNvcnJlY3RseSBhbmQgY2xlYW5seS4gQ3J1Y2lhbGx5LCBhcyBJIGFuYWx5emUgdGhpcywgSSBkb24ndCBzZWUgYW55IGNoYW5nZXMgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGVyZSdzIG5vIG1vZGlmaWNhdGlvbiBvZiBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBubyBjaGFuZ2VzIHRvIGJ1ZmZlciBhbGxvY2F0aW9uIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IG1pZ2h0IGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIEl0J3MgYWxsIGFib3V0IGhhcmR3YXJlIGNvbnRyb2wgYW5kIHJlZ2lzdGVyIG1hbmlwdWxhdGlvbi5cblxuVGhlcmVmb3JlLCBmcm9tIGEgbWVtb3J5IHNhZmV0eSBwZXJzcGVjdGl2ZSwgYSBLTVNBTiBzZXNzaW9uIGlzbid0IHJlYWxseSBuZWVkZWQgaGVyZS4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIHBlcmZlY3RseSBjYXBhYmxlIG9mIGNhdGNoaW5nIGFueSBvdXQtb2YtYm91bmRzIG9yIHVzZS1hZnRlci1mcmVlIGVycm9ycyB0aGF0IG1pZ2h0IGNyZWVwIGluLCBhbmQgaG9uZXN0bHksIHRoZSB0ZWFyZG93biBzZXF1ZW5jZSBsb29rcyBwcmV0dHkgc2FmZS4gU28sIEknbSBjb25maWRlbnQgaW4gbWFya2luZyB0aGlzIGFzIGBOZWVkc0tNU0FOOiBmYWxzZWAuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGp1c3QgaXNuJ3QgdGhlcmUsIGFuZCB0aGF0J3MgdGhlIHByaW1hcnkgY29uY2VybiBvZiBLTVNBTi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM4NCwiT3V0cHV0VG9rZW5zIjoxMDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNzoyNC45ODg4Mjk2MTZaIiwiU2VxIjo2NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGhhcmR3YXJlIGNvbnRyb2wgZmxvdyBmb3Igc3RvcHBpbmcgRE1BIGNoYW5uZWxzIGFuZCBkcmFpbmluZyBNQUMgcXVldWVzIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBhbHRlciBidWZmZXIgYWxsb2NhdGlvbnMgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBoYXJkd2FyZSBjb250cm9sIGZsb3cgZm9yIHN0b3BwaW5nIERNQSBjaGFubmVscyBhbmQgZHJhaW5pbmcgTUFDIHF1ZXVlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgYnVmZmVyIGFsbG9jYXRpb25zIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6n9ct[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 08:12:32 +0000 UTC FinishedAt: 2026-08-13 08:17:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "DWMAC_SUN8I", "DWMAC_GENERIC", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "DWMAC_SUN8I", "DWMAC_GENERIC", "STMMAC_PCI" ], "series_id": "ffc291f9-0810-4f58-bcae-5f31664ec729" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_release", "stmmac_xdp_release", "stmmac_xdp_open", "stmmac_suspend", "dwxgmac2_tx_dma_stopped", "dwxgmac2_tx_mtl_drain", "dwxgmac2_rx_mtl_drain", "dwxgmac2_rx_dma_stopped", "dwxgmac2_dma_start_tx", "dwxgmac2_dma_stop_tx", "dwxgmac2_dma_start_rx", "dwxgmac2_dma_stop_rx" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7RFdNQUNfU1VOOEkmIzM0OywKICAgICYjMzQ7RFdNQUNfR0VORVJJQyYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9yZWxlYXNlJiMzNDssCiAgICAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICAgJiMzNDtzdG1tYWNfc3VzcGVuZCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl90eF9kbWFfc3RvcHBlZCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl90eF9tdGxfZHJhaW4mIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfcnhfbXRsX2RyYWluJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX3J4X2RtYV9zdG9wcGVkJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYV9zdGFydF90eCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kbWFfc3RvcF90eCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kbWFfc3RhcnRfcngmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfZG1hX3N0b3BfcngmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBoYXJkd2FyZSBjb250cm9sIGZsb3cgZm9yIHN0b3BwaW5nIERNQSBjaGFubmVscyBhbmQgZHJhaW5pbmcgTUFDIHF1ZXVlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgYnVmZmVyIGFsbG9jYXRpb25zIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYW4gb3JkZXJlZCBkYXRhcGF0aCB0ZWFyZG93biBzZXF1ZW5jZSBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsIGFkZGluZyBwb2xsaW5nIGxvb3BzIHRvIHdhaXQgZm9yIERNQSBhbmQgTVRMIHF1ZXVlcyB0byBkcmFpbiBiZWZvcmUgZGlzYWJsaW5nIHRoZSBNQUMuIFRoaXMgYWZmZWN0cyB0aGUgdGVhcmRvd24gcGF0aCBvZiBhbGwgc3RtbWFjIHZhcmlhbnRzIChpbmNsdWRpbmcgdGhvc2UgZW11bGF0ZWQgaW4gUUVNVSBsaWtlIHN1bjhpLWVtYWMpIGFuZCBtb2RpZmllcyB0aGUgWERQIHNldHVwL3RlYXJkb3duIGFuZCBzdXNwZW5kIGNhbGxiYWNrcy4gVGhlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIGludGVyZmFjZSBzdGF0ZSBjaGFuZ2VzIChlLmcuLCBicmluZ2luZyB0aGUgaW50ZXJmYWNlIGRvd24pIGFuZCBYRFAgcHJvZ3JhbSBhdHRhY2htZW50LCBtYWtpbmcgdGhlbSBmdW5jdGlvbmFsbHkgaW1wYWN0ZnVsIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzM5MTIwNDZlZjA2MTMwZThhZjRlMzc3YTAyZDQxZDMyNmJlODVmMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDA4OjE0OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXG5pbmRleCA1MTk0MzcwNWEyYjAzLi4yZTNmMjYwMDBkMzM1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaFxuQEAgLTI5MSw2ICYjNDM7MjkxLDEwIEBAXG4gI2RlZmluZSBYR01BQ19UVENcdFx0XHRHRU5NQVNLKDYsIDQpXG4gI2RlZmluZSBYR01BQ19UWFFFTlx0XHRcdEdFTk1BU0soMywgMilcbiAjZGVmaW5lIFhHTUFDX1RTRlx0XHRcdEJJVCgxKVxuJiM0MzsjZGVmaW5lIFhHTUFDX01UTF9UWFFfREVCVUcoeClcdFx0KDB4MDAwMDExMDggJiM0MzsgKDB4ODAgKiAoeCkpKVxuJiM0MzsjZGVmaW5lIFhHTUFDX1RYUVNUU1x0XHRcdEJJVCg0KVxuJiM0MzsjZGVmaW5lIFhHTUFDX1RSQ1NUU1x0XHRcdEdFTk1BU0soMiwgMSlcbiYjNDM7I2RlZmluZSBYR01BQ19UUkNTVFNfUkVBRFx0XHQweDFcbiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfRVRTX0NPTlRST0woeClcdCgweDAwMDAxMTEwICYjNDM7ICgweDgwICogKHgpKSlcbiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfUVVBTlRVTV9XRUlHSFQoeClcdCgweDAwMDAxMTE4ICYjNDM7ICgweDgwICogKHgpKSlcbiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfU0VORFNMT1BFKHgpXHQoMHgwMDAwMTExYyAmIzQzOyAoMHg4MCAqICh4KSkpXG5AQCAtMzA2LDYgJiM0MzszMTAsOSBAQFxuICNkZWZpbmUgWEdNQUNfRUhGQ1x0XHRcdEJJVCg3KVxuICNkZWZpbmUgWEdNQUNfUlNGXHRcdFx0QklUKDUpXG4gI2RlZmluZSBYR01BQ19SVENcdFx0XHRHRU5NQVNLKDEsIDApXG4mIzQzOyNkZWZpbmUgWEdNQUNfTVRMX1JYUV9ERUJVRyh4KVx0XHQoMHgwMDAwMTE0OCAmIzQzOyAoMHg4MCAqICh4KSkpXG4mIzQzOyNkZWZpbmUgWEdNQUNfUFJYUVx0XHRcdEdFTk1BU0soMjksIDE2KVxuJiM0MzsjZGVmaW5lIFhHTUFDX1JYUVNUU1x0XHRcdEdFTk1BU0soNSwgNClcbiAjZGVmaW5lIFhHTUFDX01UTF9SWFFfRkxPV19DT05UUk9MKHgpXHQoMHgwMDAwMTE1MCAmIzQzOyAoMHg4MCAqICh4KSkpXG4gI2RlZmluZSBYR01BQ19SRkRcdFx0XHRHRU5NQVNLKDMxLCAxNylcbiAjZGVmaW5lIFhHTUFDX1JGQVx0XHRcdEdFTk1BU0soMTUsIDEpXG5AQCAtMzg5LDYgJiM0MzszOTYsNyBAQFxuICNkZWZpbmUgWEdNQUNfTklTXHRcdFx0QklUKDE1KVxuICNkZWZpbmUgWEdNQUNfQUlTXHRcdFx0QklUKDE0KVxuICNkZWZpbmUgWEdNQUNfRkJFXHRcdFx0QklUKDEyKVxuJiM0MzsjZGVmaW5lIFhHTUFDX1JQU1x0XHRcdEJJVCg4KVxuICNkZWZpbmUgWEdNQUNfUkJVXHRcdFx0QklUKDcpXG4gI2RlZmluZSBYR01BQ19SSVx0XHRcdEJJVCg2KVxuICNkZWZpbmUgWEdNQUNfVEJVXHRcdFx0QklUKDIpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xuaW5kZXggMDM0MzdmMWNmM2RmMy4uOGUyN2JjNThjYzA1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xuQEAgLTQsNiAmIzQzOzQsNyBAQFxuICAqIHN0bW1hYyBYR01BQyBzdXBwb3J0LlxuICAqL1xuIFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2R3eGdtYWMyLmhcJiMzNDtcbkBAIC0yNTEsMTMgJiM0MzsyNTIsMTIgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiB7XG4gXHR1MzIgdmFsdWU7XG4gXG4mIzQzO1x0LyogVFBTIGlzIGxhdGNoZWQgb25jZSBzZXQsIHNvIGNsZWFyIGl0IG9uIGV2ZXJ5IFR4IERNQSBzdGFydC4gKi9cbiYjNDM7XHR3cml0ZWwoWEdNQUNfVFBTLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSk7XG4mIzQzO1xuIFx0dmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xuIFx0dmFsdWUgfD0gWEdNQUNfVFhTVDtcbiBcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9UWF9DT05UUk9MKGNoYW4pKTtcbi1cbi1cdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX1RYX0NPTkZJRyk7XG4tXHR2YWx1ZSB8PSBYR01BQ19DT05GSUdfVEU7XG4tXHR3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBYR01BQ19UWF9DT05GSUcpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RvcF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuQEAgLTI2OCwxMCAmIzQzOzI2OCw2IEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4gXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XG4gXHR2YWx1ZSBcdTAwMjY9IH5YR01BQ19UWFNUO1xuIFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xuLVxuLVx0dmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfVFhfQ09ORklHKTtcbi1cdHZhbHVlIFx1MDAyNj0gflhHTUFDX0NPTkZJR19URTtcbi1cdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX1RYX0NPTkZJRyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5AQCAtMjc5LDEzICYjNDM7Mjc1LDEyIEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4ge1xuIFx0dTMyIHZhbHVlO1xuIFxuJiM0MztcdC8qIFJQUyBpcyBsYXRjaGVkIG9uY2Ugc2V0LCBzbyBjbGVhciBpdCBvbiBldmVyeSBSeCBETUEgc3RhcnQuICovXG4mIzQzO1x0d3JpdGVsKFhHTUFDX1JQUywgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbikpO1xuJiM0MztcbiBcdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9SWF9DT05UUk9MKGNoYW4pKTtcbiBcdHZhbHVlIHw9IFhHTUFDX1JYU1Q7XG4gXHR3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfUlhfQ09OVFJPTChjaGFuKSk7XG4tXG4tXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19SWF9DT05GSUcpO1xuLVx0dmFsdWUgfD0gWEdNQUNfQ09ORklHX1JFO1xuLVx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfUlhfQ09ORklHKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0b3Bfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbkBAIC01ODIsNiAmIzQzOzU3Nyw3NyBAQCBzdGF0aWMgaW50IGR3eGdtYWMyX2VuYWJsZV90YnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzQzO1x0XHRcdFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuJiM0Mzt7XG4mIzQzO1x0dTMyIHZhbHVlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSwgdmFsdWUsXG4mIzQzO1x0XHRcdFx0IHZhbHVlIFx1MDAyNiBYR01BQ19UUFMsIDEwMCwgMTAwMDApO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRuZXRkZXZfd2Fybihwcml2LVx1MDAzZWRldiwgXCYjMzQ7VHggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgY2hhbik7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgZHd4Z21hYzJfdHhfbXRsX2RyYWluKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiYjNDM7XHRcdFx0XHQgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBxdWV1ZSlcbiYjNDM7e1xuJiM0MztcdHUzMiB2YWx1ZTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHQvKiBXYWl0IHVudGlsIHRoZSBxdWV1ZSBpcyBlbXB0eSBhbmQgaXRzIHJlYWQgY29udHJvbGxlciBpcyBubyBsb25nZXJcbiYjNDM7XHQgKiBwdWxsaW5nIGEgZnJhbWUgb3V0IHRvd2FyZHMgdGhlIE1BQy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICYjNDM7IFhHTUFDX01UTF9UWFFfREVCVUcocXVldWUpLCB2YWx1ZSxcbiYjNDM7XHRcdFx0XHQgISh2YWx1ZSBcdTAwMjYgWEdNQUNfVFhRU1RTKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0XHQgRklFTERfR0VUKFhHTUFDX1RSQ1NUUywgdmFsdWUpICE9XG4mIzQzO1x0XHRcdFx0IFhHTUFDX1RSQ1NUU19SRUFELFxuJiM0MztcdFx0XHRcdCAxMDAsIDEwMDAwKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0bmV0ZGV2X3dhcm4ocHJpdi1cdTAwM2VkZXYsIFwmIzM0O01UTCBUeCBxdWV1ZSAldSBkcmFpbiB0aW1lb3V0XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgcXVldWUpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGR3eGdtYWMyX3J4X210bF9kcmFpbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzQzO1x0XHRcdFx0IHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgcXVldWUpXG4mIzQzO3tcbiYjNDM7XHR1MzIgdmFsdWU7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0LyogV2FpdCB1bnRpbCBubyBwYWNrZXQgaXMgbGVmdCBpbiB0aGUgcXVldWUgYW5kIHRoZSBxdWV1ZSByZXBvcnRzXG4mIzQzO1x0ICogaXRzZWxmIGVtcHR5LlxuJiM0MztcdCAqL1xuJiM0MztcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgJiM0MzsgWEdNQUNfTVRMX1JYUV9ERUJVRyhxdWV1ZSksIHZhbHVlLFxuJiM0MztcdFx0XHRcdCAhRklFTERfR0VUKFhHTUFDX1BSWFEsIHZhbHVlKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0XHQgIUZJRUxEX0dFVChYR01BQ19SWFFTVFMsIHZhbHVlKSxcbiYjNDM7XHRcdFx0XHQgMTAwLCAxMDAwMCk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdG5ldGRldl93YXJuKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtNVEwgUnggcXVldWUgJXUgZHJhaW4gdGltZW91dFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgIHF1ZXVlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzQzO1x0XHRcdFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuJiM0Mzt7XG4mIzQzO1x0dTMyIHZhbHVlO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSwgdmFsdWUsXG4mIzQzO1x0XHRcdFx0IHZhbHVlIFx1MDAyNiBYR01BQ19SUFMsIDEwMCwgMTAwMDApO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRuZXRkZXZfd2Fybihwcml2LVx1MDAzZWRldiwgXCYjMzQ7UnggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgY2hhbik7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4gY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcbiBcdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcbiBcdC5pbml0ID0gZHd4Z21hYzJfZG1hX2luaXQsXG5AQCAtNjEwLDQgJiM0Mzs2NzYsOCBAQCBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzID0ge1xuIFx0LnNldF9iZnNpemUgPSBkd3hnbWFjMl9zZXRfYmZzaXplLFxuIFx0LmVuYWJsZV9zcGggPSBkd3hnbWFjMl9lbmFibGVfc3BoLFxuIFx0LmVuYWJsZV90YnMgPSBkd3hnbWFjMl9lbmFibGVfdGJzLFxuJiM0MztcdC50eF9kbWFfc3RvcHBlZCA9IGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkLFxuJiM0MztcdC50eF9tdGxfZHJhaW4gPSBkd3hnbWFjMl90eF9tdGxfZHJhaW4sXG4mIzQzO1x0LnJ4X210bF9kcmFpbiA9IGR3eGdtYWMyX3J4X210bF9kcmFpbixcbiYjNDM7XHQucnhfZG1hX3N0b3BwZWQgPSBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZCxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuaW5kZXggZTYzMTdiOTRmZmY3ZC4uMjNhNjkxNWFjZGZiYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5AQCAtMjI5LDYgJiM0MzsyMjksMTUgQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHtcbiBcdFx0XHQgICBib29sIGVuLCB1MzIgY2hhbik7XG4gXHRpbnQgKCplbmFibGVfdGJzKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0XHRcdCAgYm9vbCBlbiwgdTMyIGNoYW4pO1xuJiM0MztcdC8qIE9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gKi9cbiYjNDM7XHRpbnQgKCp0eF9kbWFfc3RvcHBlZCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiYjNDM7XHRcdFx0ICAgICAgdTMyIGNoYW4pO1xuJiM0MztcdGludCAoKnR4X210bF9kcmFpbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiYjNDM7XHRcdFx0ICAgIHUzMiBxdWV1ZSk7XG4mIzQzO1x0aW50ICgqcnhfbXRsX2RyYWluKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuJiM0MztcdFx0XHQgICAgdTMyIHF1ZXVlKTtcbiYjNDM7XHRpbnQgKCpyeF9kbWFfc3RvcHBlZCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiYjNDM7XHRcdFx0ICAgICAgdTMyIGNoYW4pO1xuIH07XG4gXG4gI2RlZmluZSBzdG1tYWNfZG1hX2luaXQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG5AQCAtMjg5LDYgJiM0MzsyOTgsMTQgQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHtcbiBcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfc3BoLCBfX3ByaXYsIF9fYXJncylcbiAjZGVmaW5lIHN0bW1hY19lbmFibGVfdGJzKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuIFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfdGJzLCBfX3ByaXYsIF9fYXJncylcbiYjNDM7I2RlZmluZSBzdG1tYWNfdHhfZG1hX3N0b3BwZWQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4mIzQzO1x0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCB0eF9kbWFfc3RvcHBlZCwgX19wcml2LCBfX2FyZ3MpXG4mIzQzOyNkZWZpbmUgc3RtbWFjX3R4X210bF9kcmFpbihfX3ByaXYsIF9fYXJncy4uLikgXFxcbiYjNDM7XHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHR4X210bF9kcmFpbiwgX19wcml2LCBfX2FyZ3MpXG4mIzQzOyNkZWZpbmUgc3RtbWFjX3J4X210bF9kcmFpbihfX3ByaXYsIF9fYXJncy4uLikgXFxcbiYjNDM7XHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHJ4X210bF9kcmFpbiwgX19wcml2LCBfX2FyZ3MpXG4mIzQzOyNkZWZpbmUgc3RtbWFjX3J4X2RtYV9zdG9wcGVkKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuJiM0MztcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgcnhfZG1hX3N0b3BwZWQsIF9fcHJpdiwgX19hcmdzKVxuIFxuIHN0cnVjdCBtYWNfZGV2aWNlX2luZm87XG4gc3RydWN0IG5ldF9kZXZpY2U7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDM1OTE3NTVlYTMwYmUuLmNjM2EwYWUwYzU2ZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjU2OSw2ICYjNDM7MjU2OSw1MiBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIHN0bW1hY19kYXRhcGF0aF90ZWFyZG93biAtIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gYXMgcGVyIElQIHNwZWNpZmljYXRpb25cbiYjNDM7ICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuJiM0MzsgKiBEZXNjcmlwdGlvbjpcbiYjNDM7ICogV2hlbiB0ZWFyZG93biBvcHMgYXJlIGF2YWlsYWJsZSwgZm9sbG93IHRoZSBkYXRhYm9vayBvcmRlcmVkIHRlYXJkb3duXG4mIzQzOyAqIHNlcXVlbmNlLlxuJiM0MzsgKiBGb2xsb3dzIHRoZSBsZWdhY3kgc3RvcCAmIzQzOyBNQUMgZGlzYWJsZSBmb3IgdmFyaWFudHMgd2l0aG91dCB0aGUgZmVhdHVyZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHR1MzIgcnhfY2hhbm5lbHNfY291bnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbiYjNDM7XHR1MzIgdHhfY2hhbm5lbHNfY291bnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTtcbiYjNDM7XHR1MzIgY2hhbjtcbiYjNDM7XG4mIzQzO1x0LyogU3RvcCBhbGwgVFggRE1BIGNoYW5uZWxzICovXG4mIzQzO1x0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KVxuJiM0MztcdFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xuJiM0MztcbiYjNDM7XHQvKiBXYWl0IGZvciBldmVyeSBUWCBETUEgY2hhbm5lbCB0byByZXBvcnQgaXRzZWxmIHN0b3BwZWQgKi9cbiYjNDM7XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNldHhfZG1hX3N0b3BwZWQpXG4mIzQzO1x0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdHN0bW1hY190eF9kbWFfc3RvcHBlZChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4mIzQzO1xuJiM0MztcdC8qIFdhaXQgZm9yIHRoZSBNVEwgVFggcXVldWVzIHRvIGZpbmlzaCBwdXNoaW5nIGludG8gdGhlIE1BQyAqL1xuJiM0MztcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZWRtYS1cdTAwM2V0eF9tdGxfZHJhaW4pXG4mIzQzO1x0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdHN0bW1hY190eF9tdGxfZHJhaW4ocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4pO1xuJiM0MztcbiYjNDM7XHQvKiBEaXNhYmxlIHRoZSBNQUMgVFggYW5kIFJYICovXG4mIzQzO1x0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGZhbHNlKTtcbiYjNDM7XG4mIzQzO1x0LyogV2FpdCBmb3IgdGhlIE1UTCBSWCBxdWV1ZXMgdG8gZHJhaW4gaW50byB0aGUgUlggRE1BICovXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlZG1hLVx1MDAzZXJ4X210bF9kcmFpbilcbiYjNDM7XHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0c3RtbWFjX3J4X210bF9kcmFpbihwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4mIzQzO1xuJiM0MztcdC8qIFN0b3AgYWxsIFJYIERNQSBjaGFubmVscyAqL1xuJiM0MztcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOylcbiYjNDM7XHRcdHN0bW1hY19zdG9wX3J4X2RtYShwcml2LCBjaGFuKTtcbiYjNDM7XG4mIzQzO1x0LyogV2FpdCBmb3IgZXZlcnkgUlggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovXG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlZG1hLVx1MDAzZXJ4X2RtYV9zdG9wcGVkKVxuJiM0MztcdFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRzdG1tYWNfcnhfZG1hX3N0b3BwZWQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4pO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqICBzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlIC0gSFcgRE1BIG9wZXJhdGlvbiBtb2RlXG4gICogIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcbkBAIC0zNjkyLDkgJiM0MzszNzM4LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0cHJpdi1cdTAwM2Vody1cdTAwM2VyeF9jc3VtID0gMDtcbiBcdH1cbiBcbi1cdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4tXG4gXHQvKiBTZXQgdGhlIEhXIERNQSBtb2RlIGFuZCB0aGUgQ09FICovXG4gXHRzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYpO1xuIFxuQEAgLTM3NTAsNiAmIzQzOzM3OTMsOSBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0LyogU3RhcnQgdGhlIGJhbGwgcm9sbGluZy4uLiAqL1xuIFx0c3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7XG4gXG4mIzQzO1x0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbiYjNDM7XHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4mIzQzO1xuIFx0cGh5bGlua19yeF9jbGtfc3RvcF9ibG9jayhwcml2LVx1MDAzZXBoeWxpbmspO1xuIFx0c3RtbWFjX3NldF9od192bGFuX21vZGUocHJpdiwgcHJpdi1cdTAwM2Vodyk7XG4gXHRwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2socHJpdi1cdTAwM2VwaHlsaW5rKTtcbkBAIC00MjM4LDkgJiM0Mzs0Mjg0LDYgQEAgc3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHU4IGNoYW47XG4gXG4tXHQvKiBTdG9wIGFuZCBkaXNjb25uZWN0IHRoZSBQSFkgKi9cbi1cdHBoeWxpbmtfc3RvcChwcml2LVx1MDAzZXBoeWxpbmspO1xuLVxuIFx0c3RtbWFjX2Rpc2FibGVfYWxsX3F1ZXVlcyhwcml2KTtcbiBcbiBcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOylcbkBAIC00MjUxLDggJiM0Mzs0Mjk0LDExIEBAIHN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuIFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiBcbi1cdC8qIFN0b3AgVFgvUlggRE1BIGFuZCBjbGVhciB0aGUgZGVzY3JpcHRvcnMgKi9cbi1cdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4mIzQzO1x0LyogSGFzIHRvIHJ1biBiZWZvcmUgbWFjX2xpbmtfZG93bigpIGRpc2FibGVzIHRoZSBNQUMuICovXG4mIzQzO1x0c3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHByaXYpO1xuJiM0MztcbiYjNDM7XHQvKiBTdG9wIGFuZCBkaXNjb25uZWN0IHRoZSBQSFkgKi9cbiYjNDM7XHRwaHlsaW5rX3N0b3AocHJpdi1cdTAwM2VwaHlsaW5rKTtcbiBcbiBcdC8qIFJlbGVhc2UgYW5kIGZyZWUgdGhlIFJ4L1R4IHJlc291cmNlcyAqL1xuIFx0ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZik7XG5AQCAtNzEwOSwxNSAmIzQzOzcxNTUsMTIgQEAgdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuIFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiBcbi1cdC8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovXG4tXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuJiM0MztcdC8qIFN0b3AgdGhlIE1BQyBhbmQgdGhlIFRYL1JYIERNQSBjaGFubmVscyAqL1xuJiM0MztcdHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihwcml2KTtcbiBcbiBcdC8qIFJlbGVhc2UgYW5kIGZyZWUgdGhlIFJ4L1R4IHJlc291cmNlcyAqL1xuIFx0ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZik7XG4gXG4tXHQvKiBEaXNhYmxlIHRoZSBNQUMgUngvVHggKi9cbi1cdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBmYWxzZSk7XG4tXG4gXHQvKiBzZXQgdHJhbnNfc3RhcnQgc28gd2UgZG9uJiMzOTt0IGdldCBzcHVyaW91c1xuIFx0ICogd2F0Y2hkb2dzIGR1cmluZyByZXNldFxuIFx0ICovXG5AQCAtNzE4OSwxMiAmIzQzOzcyMzIsMTIgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRocnRpbWVyX3NldHVwKFx1MDAyNnR4X3EtXHUwMDNldHh0aW1lciwgc3RtbWFjX3R4X3RpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpO1xuIFx0fVxuIFxuLVx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbi1cdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbi1cbiBcdC8qIFN0YXJ0IFJ4IFx1MDAyNiBUeCBETUEgQ2hhbm5lbHMgKi9cbiBcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xuIFxuJiM0MztcdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4mIzQzO1x0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIHRydWUpO1xuJiM0MztcbiBcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBpcnFfZXJyb3I7XG5AQCAtODE5NSwxNyAmIzQzOzgyMzgsMTUgQEAgaW50IHN0bW1hY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2VlZWVfY3RybF90aW1lcik7XG4gXHR9XG4gXG4tXHQvKiBTdG9wIFRYL1JYIERNQSAqL1xuLVx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbi1cbi1cdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XG4tXG4gXHQvKiBFbmFibGUgUG93ZXIgZG93biBtb2RlIGJ5IHByb2dyYW1taW5nIHRoZSBQTVQgcmVncyAqL1xuIFx0aWYgKHByaXYtXHUwMDNld29sb3B0cykge1xuJiM0MztcdFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbiYjNDM7XHRcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XG4gXHRcdHN0bW1hY19wbXQocHJpdiwgcHJpdi1cdTAwM2VodywgcHJpdi1cdTAwM2V3b2xvcHRzKTtcbiBcdFx0cHJpdi1cdTAwM2VpcnFfd2FrZSA9IDE7XG4gXHR9IGVsc2Uge1xuLVx0XHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgZmFsc2UpO1xuJiM0MztcdFx0c3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHByaXYpO1xuJiM0MztcdFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcbiBcdFx0cGluY3RybF9wbV9zZWxlY3Rfc2xlZXBfc3RhdGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O0RXTUFDX1NVTjhJJiMzNDssCiAgICAmIzM0O0RXTUFDX0dFTkVSSUMmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19yZWxlYXNlJiMzNDssCiAgICAmIzM0O3N0bW1hY194ZHBfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX29wZW4mIzM0OywKICAgICYjMzQ7c3RtbWFjX3N1c3BlbmQmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWQmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfdHhfbXRsX2RyYWluJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX3J4X210bF9kcmFpbiYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kbWFfc3RhcnRfdHgmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfZG1hX3N0b3BfdHgmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfZG1hX3N0YXJ0X3J4JiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYV9zdG9wX3J4JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYW4gb3JkZXJlZCBkYXRhcGF0aCB0ZWFyZG93biBzZXF1ZW5jZSBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsIGFkZGluZyBwb2xsaW5nIGxvb3BzIHRvIHdhaXQgZm9yIERNQSBhbmQgTVRMIHF1ZXVlcyB0byBkcmFpbiBiZWZvcmUgZGlzYWJsaW5nIHRoZSBNQUMuIFRoaXMgYWZmZWN0cyB0aGUgdGVhcmRvd24gcGF0aCBvZiBhbGwgc3RtbWFjIHZhcmlhbnRzIChpbmNsdWRpbmcgdGhvc2UgZW11bGF0ZWQgaW4gUUVNVSBsaWtlIHN1bjhpLWVtYWMpIGFuZCBtb2RpZmllcyB0aGUgWERQIHNldHVwL3RlYXJkb3duIGFuZCBzdXNwZW5kIGNhbGxiYWNrcy4gVGhlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIGludGVyZmFjZSBzdGF0ZSBjaGFuZ2VzIChlLmcuLCBicmluZ2luZyB0aGUgaW50ZXJmYWNlIGRvd24pIGFuZCBYRFAgcHJvZ3JhbSBhdHRhY2htZW50LCBtYWtpbmcgdGhlbSBmdW5jdGlvbmFsbHkgaW1wYWN0ZnVsIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzM5MTIwNDZlZjA2MTMwZThhZjRlMzc3YTAyZDQxZDMyNmJlODVmMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDA4OjE0OjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgKaW5kZXggNTE5NDM3MDVhMmIwMy4uMmUzZjI2MDAwZDMzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oCkBAIC0yOTEsNiAmIzQzOzI5MSwxMCBAQAogI2RlZmluZSBYR01BQ19UVEMJCQlHRU5NQVNLKDYsIDQpCiAjZGVmaW5lIFhHTUFDX1RYUUVOCQkJR0VOTUFTSygzLCAyKQogI2RlZmluZSBYR01BQ19UU0YJCQlCSVQoMSkKJiM0MzsjZGVmaW5lIFhHTUFDX01UTF9UWFFfREVCVUcoeCkJCSgweDAwMDAxMTA4ICYjNDM7ICgweDgwICogKHgpKSkKJiM0MzsjZGVmaW5lIFhHTUFDX1RYUVNUUwkJCUJJVCg0KQomIzQzOyNkZWZpbmUgWEdNQUNfVFJDU1RTCQkJR0VOTUFTSygyLCAxKQomIzQzOyNkZWZpbmUgWEdNQUNfVFJDU1RTX1JFQUQJCTB4MQogI2RlZmluZSBYR01BQ19NVExfVEN4X0VUU19DT05UUk9MKHgpCSgweDAwMDAxMTEwICYjNDM7ICgweDgwICogKHgpKSkKICNkZWZpbmUgWEdNQUNfTVRMX1RDeF9RVUFOVFVNX1dFSUdIVCh4KQkoMHgwMDAwMTExOCAmIzQzOyAoMHg4MCAqICh4KSkpCiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfU0VORFNMT1BFKHgpCSgweDAwMDAxMTFjICYjNDM7ICgweDgwICogKHgpKSkKQEAgLTMwNiw2ICYjNDM7MzEwLDkgQEAKICNkZWZpbmUgWEdNQUNfRUhGQwkJCUJJVCg3KQogI2RlZmluZSBYR01BQ19SU0YJCQlCSVQoNSkKICNkZWZpbmUgWEdNQUNfUlRDCQkJR0VOTUFTSygxLCAwKQomIzQzOyNkZWZpbmUgWEdNQUNfTVRMX1JYUV9ERUJVRyh4KQkJKDB4MDAwMDExNDggJiM0MzsgKDB4ODAgKiAoeCkpKQomIzQzOyNkZWZpbmUgWEdNQUNfUFJYUQkJCUdFTk1BU0soMjksIDE2KQomIzQzOyNkZWZpbmUgWEdNQUNfUlhRU1RTCQkJR0VOTUFTSyg1LCA0KQogI2RlZmluZSBYR01BQ19NVExfUlhRX0ZMT1dfQ09OVFJPTCh4KQkoMHgwMDAwMTE1MCAmIzQzOyAoMHg4MCAqICh4KSkpCiAjZGVmaW5lIFhHTUFDX1JGRAkJCUdFTk1BU0soMzEsIDE3KQogI2RlZmluZSBYR01BQ19SRkEJCQlHRU5NQVNLKDE1LCAxKQpAQCAtMzg5LDYgJiM0MzszOTYsNyBAQAogI2RlZmluZSBYR01BQ19OSVMJCQlCSVQoMTUpCiAjZGVmaW5lIFhHTUFDX0FJUwkJCUJJVCgxNCkKICNkZWZpbmUgWEdNQUNfRkJFCQkJQklUKDEyKQomIzQzOyNkZWZpbmUgWEdNQUNfUlBTCQkJQklUKDgpCiAjZGVmaW5lIFhHTUFDX1JCVQkJCUJJVCg3KQogI2RlZmluZSBYR01BQ19SSQkJCUJJVCg2KQogI2RlZmluZSBYR01BQ19UQlUJCQlCSVQoMikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMKaW5kZXggMDM0MzdmMWNmM2RmMy4uOGUyN2JjNThjYzA1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMKQEAgLTQsNiAmIzQzOzQsNyBAQAogICogc3RtbWFjIFhHTUFDIHN1cHBvcnQuCiAgKi8KIAomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2lvcG9sbC5oJmd0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2R3eGdtYWMyLmgmIzM0OwpAQCAtMjUxLDEzICYjNDM7MjUyLDEyIEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiB7CiAJdTMyIHZhbHVlOwogCiYjNDM7CS8qIFRQUyBpcyBsYXRjaGVkIG9uY2Ugc2V0LCBzbyBjbGVhciBpdCBvbiBldmVyeSBUeCBETUEgc3RhcnQuICovCiYjNDM7CXdyaXRlbChYR01BQ19UUFMsIGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pKTsKJiM0MzsKIAl2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7CiAJdmFsdWUgfD0gWEdNQUNfVFhTVDsKIAl3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7Ci0KLQl2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19UWF9DT05GSUcpOwotCXZhbHVlIHw9IFhHTUFDX0NPTkZJR19URTsKLQl3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBYR01BQ19UWF9DT05GSUcpOwogfQogCiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RvcF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLApAQCAtMjY4LDEwICYjNDM7MjY4LDYgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0b3BfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKIAl2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7CiAJdmFsdWUgJmFtcDs9IH5YR01BQ19UWFNUOwogCXdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9UWF9DT05UUk9MKGNoYW4pKTsKLQotCXZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX1RYX0NPTkZJRyk7Ci0JdmFsdWUgJmFtcDs9IH5YR01BQ19DT05GSUdfVEU7Ci0Jd3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfVFhfQ09ORklHKTsKIH0KIAogc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKQEAgLTI3OSwxMyAmIzQzOzI3NSwxMiBAQCBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RhcnRfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogewogCXUzMiB2YWx1ZTsKIAomIzQzOwkvKiBSUFMgaXMgbGF0Y2hlZCBvbmNlIHNldCwgc28gY2xlYXIgaXQgb24gZXZlcnkgUnggRE1BIHN0YXJ0LiAqLwomIzQzOwl3cml0ZWwoWEdNQUNfUlBTLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSk7CiYjNDM7CiAJdmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1JYX0NPTlRST0woY2hhbikpOwogCXZhbHVlIHw9IFhHTUFDX1JYU1Q7CiAJd3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1JYX0NPTlRST0woY2hhbikpOwotCi0JdmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfUlhfQ09ORklHKTsKLQl2YWx1ZSB8PSBYR01BQ19DT05GSUdfUkU7Ci0Jd3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfUlhfQ09ORklHKTsKIH0KIAogc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0b3Bfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKQEAgLTU4Miw2ICYjNDM7NTc3LDc3IEBAIHN0YXRpYyBpbnQgZHd4Z21hYzJfZW5hYmxlX3RicyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiYjNDM7CQkJCSAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbikKJiM0Mzt7CiYjNDM7CXUzMiB2YWx1ZTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pLCB2YWx1ZSwKJiM0MzsJCQkJIHZhbHVlICZhbXA7IFhHTUFDX1RQUywgMTAwLCAxMDAwMCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQluZXRkZXZfd2Fybihwcml2LSZndDtkZXYsICYjMzQ7VHggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XG4mIzM0OywKJiM0MzsJCQkgICAgY2hhbik7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgZHd4Z21hYzJfdHhfbXRsX2RyYWluKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKJiM0MzsJCQkJIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgcXVldWUpCiYjNDM7ewomIzQzOwl1MzIgdmFsdWU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CS8qIFdhaXQgdW50aWwgdGhlIHF1ZXVlIGlzIGVtcHR5IGFuZCBpdHMgcmVhZCBjb250cm9sbGVyIGlzIG5vIGxvbmdlcgomIzQzOwkgKiBwdWxsaW5nIGEgZnJhbWUgb3V0IHRvd2FyZHMgdGhlIE1BQy4KJiM0MzsJICovCiYjNDM7CXJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgJiM0MzsgWEdNQUNfTVRMX1RYUV9ERUJVRyhxdWV1ZSksIHZhbHVlLAomIzQzOwkJCQkgISh2YWx1ZSAmYW1wOyBYR01BQ19UWFFTVFMpICZhbXA7JmFtcDsKJiM0MzsJCQkJIEZJRUxEX0dFVChYR01BQ19UUkNTVFMsIHZhbHVlKSAhPQomIzQzOwkJCQkgWEdNQUNfVFJDU1RTX1JFQUQsCiYjNDM7CQkJCSAxMDAsIDEwMDAwKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCW5ldGRldl93YXJuKHByaXYtJmd0O2RldiwgJiMzNDtNVEwgVHggcXVldWUgJXUgZHJhaW4gdGltZW91dFxuJiMzNDssCiYjNDM7CQkJICAgIHF1ZXVlKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBkd3hnbWFjMl9yeF9tdGxfZHJhaW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBxdWV1ZSkKJiM0Mzt7CiYjNDM7CXUzMiB2YWx1ZTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJLyogV2FpdCB1bnRpbCBubyBwYWNrZXQgaXMgbGVmdCBpbiB0aGUgcXVldWUgYW5kIHRoZSBxdWV1ZSByZXBvcnRzCiYjNDM7CSAqIGl0c2VsZiBlbXB0eS4KJiM0MzsJICovCiYjNDM7CXJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgJiM0MzsgWEdNQUNfTVRMX1JYUV9ERUJVRyhxdWV1ZSksIHZhbHVlLAomIzQzOwkJCQkgIUZJRUxEX0dFVChYR01BQ19QUlhRLCB2YWx1ZSkgJmFtcDsmYW1wOwomIzQzOwkJCQkgIUZJRUxEX0dFVChYR01BQ19SWFFTVFMsIHZhbHVlKSwKJiM0MzsJCQkJIDEwMCwgMTAwMDApOwomIzQzOwlpZiAocmV0KQomIzQzOwkJbmV0ZGV2X3dhcm4ocHJpdi0mZ3Q7ZGV2LCAmIzM0O01UTCBSeCBxdWV1ZSAldSBkcmFpbiB0aW1lb3V0XG4mIzM0OywKJiM0MzsJCQkgICAgcXVldWUpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKJiM0MzsJCQkJICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKQomIzQzO3sKJiM0MzsJdTMyIHZhbHVlOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbiksIHZhbHVlLAomIzQzOwkJCQkgdmFsdWUgJmFtcDsgWEdNQUNfUlBTLCAxMDAsIDEwMDAwKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCW5ldGRldl93YXJuKHByaXYtJmd0O2RldiwgJiMzNDtSeCBETUEgY2hhbm5lbCAldSBzdG9wIHRpbWVvdXRcbiYjMzQ7LAomIzQzOwkJCSAgICBjaGFuKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzID0gewogCS5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCwKIAkuaW5pdCA9IGR3eGdtYWMyX2RtYV9pbml0LApAQCAtNjEwLDQgJiM0Mzs2NzYsOCBAQCBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzID0gewogCS5zZXRfYmZzaXplID0gZHd4Z21hYzJfc2V0X2Jmc2l6ZSwKIAkuZW5hYmxlX3NwaCA9IGR3eGdtYWMyX2VuYWJsZV9zcGgsCiAJLmVuYWJsZV90YnMgPSBkd3hnbWFjMl9lbmFibGVfdGJzLAomIzQzOwkudHhfZG1hX3N0b3BwZWQgPSBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZCwKJiM0MzsJLnR4X210bF9kcmFpbiA9IGR3eGdtYWMyX3R4X210bF9kcmFpbiwKJiM0MzsJLnJ4X210bF9kcmFpbiA9IGR3eGdtYWMyX3J4X210bF9kcmFpbiwKJiM0MzsJLnJ4X2RtYV9zdG9wcGVkID0gZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWQsCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oCmluZGV4IGU2MzE3Yjk0ZmZmN2QuLjIzYTY5MTVhY2RmYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgKQEAgLTIyOSw2ICYjNDM7MjI5LDE1IEBAIHN0cnVjdCBzdG1tYWNfZG1hX29wcyB7CiAJCQkgICBib29sIGVuLCB1MzIgY2hhbik7CiAJaW50ICgqZW5hYmxlX3Ricykoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKIAkJCSAgYm9vbCBlbiwgdTMyIGNoYW4pOwomIzQzOwkvKiBPcmRlcmVkIGRhdGFwYXRoIHRlYXJkb3duICovCiYjNDM7CWludCAoKnR4X2RtYV9zdG9wcGVkKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLAomIzQzOwkJCSAgICAgIHUzMiBjaGFuKTsKJiM0MzsJaW50ICgqdHhfbXRsX2RyYWluKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLAomIzQzOwkJCSAgICB1MzIgcXVldWUpOwomIzQzOwlpbnQgKCpyeF9tdGxfZHJhaW4pKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsCiYjNDM7CQkJICAgIHUzMiBxdWV1ZSk7CiYjNDM7CWludCAoKnJ4X2RtYV9zdG9wcGVkKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLAomIzQzOwkJCSAgICAgIHUzMiBjaGFuKTsKIH07CiAKICNkZWZpbmUgc3RtbWFjX2RtYV9pbml0KF9fcHJpdiwgX19hcmdzLi4uKSBcCkBAIC0yODksNiAmIzQzOzI5OCwxNCBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgewogCXN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfc3BoLCBfX3ByaXYsIF9fYXJncykKICNkZWZpbmUgc3RtbWFjX2VuYWJsZV90YnMoX19wcml2LCBfX2FyZ3MuLi4pIFwKIAlzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIGVuYWJsZV90YnMsIF9fcHJpdiwgX19hcmdzKQomIzQzOyNkZWZpbmUgc3RtbWFjX3R4X2RtYV9zdG9wcGVkKF9fcHJpdiwgX19hcmdzLi4uKSBcCiYjNDM7CXN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgdHhfZG1hX3N0b3BwZWQsIF9fcHJpdiwgX19hcmdzKQomIzQzOyNkZWZpbmUgc3RtbWFjX3R4X210bF9kcmFpbihfX3ByaXYsIF9fYXJncy4uLikgXAomIzQzOwlzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHR4X210bF9kcmFpbiwgX19wcml2LCBfX2FyZ3MpCiYjNDM7I2RlZmluZSBzdG1tYWNfcnhfbXRsX2RyYWluKF9fcHJpdiwgX19hcmdzLi4uKSBcCiYjNDM7CXN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgcnhfbXRsX2RyYWluLCBfX3ByaXYsIF9fYXJncykKJiM0MzsjZGVmaW5lIHN0bW1hY19yeF9kbWFfc3RvcHBlZChfX3ByaXYsIF9fYXJncy4uLikgXAomIzQzOwlzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHJ4X2RtYV9zdG9wcGVkLCBfX3ByaXYsIF9fYXJncykKIAogc3RydWN0IG1hY19kZXZpY2VfaW5mbzsKIHN0cnVjdCBuZXRfZGV2aWNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggMzU5MTc1NWVhMzBiZS4uY2MzYTBhZTBjNTZmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC0yNTY5LDYgJiM0MzsyNTY5LDUyIEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zdG9wX2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCQlzdG1tYWNfc3RvcF90eF9kbWEocHJpdiwgY2hhbik7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24gLSBvcmRlcmVkIGRhdGFwYXRoIHRlYXJkb3duIGFzIHBlciBJUCBzcGVjaWZpY2F0aW9uCiYjNDM7ICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZQomIzQzOyAqIERlc2NyaXB0aW9uOgomIzQzOyAqIFdoZW4gdGVhcmRvd24gb3BzIGFyZSBhdmFpbGFibGUsIGZvbGxvdyB0aGUgZGF0YWJvb2sgb3JkZXJlZCB0ZWFyZG93bgomIzQzOyAqIHNlcXVlbmNlLgomIzQzOyAqIEZvbGxvd3MgdGhlIGxlZ2FjeSBzdG9wICYjNDM7IE1BQyBkaXNhYmxlIGZvciB2YXJpYW50cyB3aXRob3V0IHRoZSBmZWF0dXJlLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwl1MzIgcnhfY2hhbm5lbHNfY291bnQgPSBwcml2LSZndDtwbGF0LSZndDtyeF9xdWV1ZXNfdG9fdXNlOwomIzQzOwl1MzIgdHhfY2hhbm5lbHNfY291bnQgPSBwcml2LSZndDtwbGF0LSZndDt0eF9xdWV1ZXNfdG9fdXNlOwomIzQzOwl1MzIgY2hhbjsKJiM0MzsKJiM0MzsJLyogU3RvcCBhbGwgVFggRE1BIGNoYW5uZWxzICovCiYjNDM7CWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspCiYjNDM7CQlzdG1tYWNfc3RvcF90eF9kbWEocHJpdiwgY2hhbik7CiYjNDM7CiYjNDM7CS8qIFdhaXQgZm9yIGV2ZXJ5IFRYIERNQSBjaGFubmVsIHRvIHJlcG9ydCBpdHNlbGYgc3RvcHBlZCAqLwomIzQzOwlpZiAocHJpdi0mZ3Q7aHctJmd0O2RtYS0mZ3Q7dHhfZG1hX3N0b3BwZWQpCiYjNDM7CQlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KQomIzQzOwkJCXN0bW1hY190eF9kbWFfc3RvcHBlZChwcml2LCBwcml2LSZndDtpb2FkZHIsIGNoYW4pOwomIzQzOwomIzQzOwkvKiBXYWl0IGZvciB0aGUgTVRMIFRYIHF1ZXVlcyB0byBmaW5pc2ggcHVzaGluZyBpbnRvIHRoZSBNQUMgKi8KJiM0MzsJaWYgKHByaXYtJmd0O2h3LSZndDtkbWEtJmd0O3R4X210bF9kcmFpbikKJiM0MzsJCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspCiYjNDM7CQkJc3RtbWFjX3R4X210bF9kcmFpbihwcml2LCBwcml2LSZndDtpb2FkZHIsIGNoYW4pOwomIzQzOwomIzQzOwkvKiBEaXNhYmxlIHRoZSBNQUMgVFggYW5kIFJYICovCiYjNDM7CXN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtJmd0O2lvYWRkciwgZmFsc2UpOwomIzQzOwomIzQzOwkvKiBXYWl0IGZvciB0aGUgTVRMIFJYIHF1ZXVlcyB0byBkcmFpbiBpbnRvIHRoZSBSWCBETUEgKi8KJiM0MzsJaWYgKHByaXYtJmd0O2h3LSZndDtkbWEtJmd0O3J4X210bF9kcmFpbikKJiM0MzsJCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyByeF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspCiYjNDM7CQkJc3RtbWFjX3J4X210bF9kcmFpbihwcml2LCBwcml2LSZndDtpb2FkZHIsIGNoYW4pOwomIzQzOwomIzQzOwkvKiBTdG9wIGFsbCBSWCBETUEgY2hhbm5lbHMgKi8KJiM0MzsJZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOykKJiM0MzsJCXN0bW1hY19zdG9wX3J4X2RtYShwcml2LCBjaGFuKTsKJiM0MzsKJiM0MzsJLyogV2FpdCBmb3IgZXZlcnkgUlggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovCiYjNDM7CWlmIChwcml2LSZndDtody0mZ3Q7ZG1hLSZndDtyeF9kbWFfc3RvcHBlZCkKJiM0MzsJCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyByeF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspCiYjNDM7CQkJc3RtbWFjX3J4X2RtYV9zdG9wcGVkKHByaXYsIHByaXYtJmd0O2lvYWRkciwgY2hhbik7CiYjNDM7fQomIzQzOwogLyoqCiAgKiAgc3RtbWFjX2RtYV9vcGVyYXRpb25fbW9kZSAtIEhXIERNQSBvcGVyYXRpb24gbW9kZQogICogIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUKQEAgLTM2OTIsOSAmIzQzOzM3MzgsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlwcml2LSZndDtody0mZ3Q7cnhfY3N1bSA9IDA7CiAJfQogCi0JLyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi8KLQlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIHRydWUpOwotCiAJLyogU2V0IHRoZSBIVyBETUEgbW9kZSBhbmQgdGhlIENPRSAqLwogCXN0bW1hY19kbWFfb3BlcmF0aW9uX21vZGUocHJpdik7CiAKQEAgLTM3NTAsNiAmIzQzOzM3OTMsOSBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCS8qIFN0YXJ0IHRoZSBiYWxsIHJvbGxpbmcuLi4gKi8KIAlzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTsKIAomIzQzOwkvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqLwomIzQzOwlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIHRydWUpOwomIzQzOwogCXBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi0mZ3Q7cGh5bGluayk7CiAJc3RtbWFjX3NldF9od192bGFuX21vZGUocHJpdiwgcHJpdi0mZ3Q7aHcpOwogCXBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jayhwcml2LSZndDtwaHlsaW5rKTsKQEAgLTQyMzgsOSAmIzQzOzQyODQsNiBAQCBzdGF0aWMgdm9pZCBfX3N0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJc3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAl1OCBjaGFuOwogCi0JLyogU3RvcCBhbmQgZGlzY29ubmVjdCB0aGUgUEhZICovCi0JcGh5bGlua19zdG9wKHByaXYtJmd0O3BoeWxpbmspOwotCiAJc3RtbWFjX2Rpc2FibGVfYWxsX3F1ZXVlcyhwcml2KTsKIAogCWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyBwcml2LSZndDtwbGF0LSZndDt0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuJiM0MzsmIzQzOykKQEAgLTQyNTEsOCAmIzQzOzQyOTQsMTEgQEAgc3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCS8qIEZyZWUgdGhlIElSUSBsaW5lcyAqLwogCXN0bW1hY19mcmVlX2lycShkZXYsIFJFUV9JUlFfRVJSX0FMTCwgMCk7CiAKLQkvKiBTdG9wIFRYL1JYIERNQSBhbmQgY2xlYXIgdGhlIGRlc2NyaXB0b3JzICovCi0Jc3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTsKJiM0MzsJLyogSGFzIHRvIHJ1biBiZWZvcmUgbWFjX2xpbmtfZG93bigpIGRpc2FibGVzIHRoZSBNQUMuICovCiYjNDM7CXN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihwcml2KTsKJiM0MzsKJiM0MzsJLyogU3RvcCBhbmQgZGlzY29ubmVjdCB0aGUgUEhZICovCiYjNDM7CXBoeWxpbmtfc3RvcChwcml2LSZndDtwaHlsaW5rKTsKIAogCS8qIFJlbGVhc2UgYW5kIGZyZWUgdGhlIFJ4L1R4IHJlc291cmNlcyAqLwogCWZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsICZhbXA7cHJpdi0mZ3Q7ZG1hX2NvbmYpOwpAQCAtNzEwOSwxNSAmIzQzOzcxNTUsMTIgQEAgdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi8KIAlzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApOwogCi0JLyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi8KLQlzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpOwomIzQzOwkvKiBTdG9wIHRoZSBNQUMgYW5kIHRoZSBUWC9SWCBETUEgY2hhbm5lbHMgKi8KJiM0MzsJc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHByaXYpOwogCiAJLyogUmVsZWFzZSBhbmQgZnJlZSB0aGUgUngvVHggcmVzb3VyY2VzICovCiAJZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgJmFtcDtwcml2LSZndDtkbWFfY29uZik7CiAKLQkvKiBEaXNhYmxlIHRoZSBNQUMgUngvVHggKi8KLQlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIGZhbHNlKTsKLQogCS8qIHNldCB0cmFuc19zdGFydCBzbyB3ZSBkb24mIzM5O3QgZ2V0IHNwdXJpb3VzCiAJICogd2F0Y2hkb2dzIGR1cmluZyByZXNldAogCSAqLwpAQCAtNzE4OSwxMiAmIzQzOzcyMzIsMTIgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlocnRpbWVyX3NldHVwKCZhbXA7dHhfcS0mZ3Q7dHh0aW1lciwgc3RtbWFjX3R4X3RpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpOwogCX0KIAotCS8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovCi0Jc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCB0cnVlKTsKLQogCS8qIFN0YXJ0IFJ4ICZhbXA7IFR4IERNQSBDaGFubmVscyAqLwogCXN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpOwogCiYjNDM7CS8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovCiYjNDM7CXN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtJmd0O2lvYWRkciwgdHJ1ZSk7CiYjNDM7CiAJcmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7CiAJaWYgKHJldCkKIAkJZ290byBpcnFfZXJyb3I7CkBAIC04MTk1LDE3ICYjNDM7ODIzOCwxNSBAQCBpbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQogCQl0aW1lcl9kZWxldGVfc3luYygmYW1wO3ByaXYtJmd0O2VlZV9jdHJsX3RpbWVyKTsKIAl9CiAKLQkvKiBTdG9wIFRYL1JYIERNQSAqLwotCXN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7Ci0KLQlzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpOwotCiAJLyogRW5hYmxlIFBvd2VyIGRvd24gbW9kZSBieSBwcm9ncmFtbWluZyB0aGUgUE1UIHJlZ3MgKi8KIAlpZiAocHJpdi0mZ3Q7d29sb3B0cykgewomIzQzOwkJc3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTsKJiM0MzsJCXN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7CiAJCXN0bW1hY19wbXQocHJpdiwgcHJpdi0mZ3Q7aHcsIHByaXYtJmd0O3dvbG9wdHMpOwogCQlwcml2LSZndDtpcnFfd2FrZSA9IDE7CiAJfSBlbHNlIHsKLQkJc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCBmYWxzZSk7CiYjNDM7CQlzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7CiYjNDM7CQlzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpOwogCQlwaW5jdHJsX3BtX3NlbGVjdF9zbGVlcF9zdGF0ZShwcml2LSZndDtkZXZpY2UpOwogCX0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mzg3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgTmV0d29yayBEcml2ZXIgUGF0Y2ggaW4gUUVNVSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIGBzdG1tYWNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgZHd4Z21hYzJgIGhhcmR3YXJlLiBJdCBpbnRyb2R1Y2VzIGEgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgdG8gZW5zdXJlIGEgY2xlYW4gc2h1dGRvd24sIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgRE1BLWJhc2VkIGhhcmR3YXJlLiBUaGlzIHRvdWNoZXMgYSBmZXcga2V5IGZ1bmN0aW9uczogYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAsIHBsdXMgbW9kaWZpY2F0aW9ucyB0byBgc3RtbWFjX2h3X3NldHVwYCwgYF9fc3RtbWFjX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfb3BlbmAsIGFuZCBgc3RtbWFjX3N1c3BlbmRgLiBTaW5jZSBgc3RtbWFjYCBpcyBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBNQUNzLCB0aGUgYmlnIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gVGhhdCYjMzk7cyB0aGUgY3J1eCBvZiB0aGlzLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgJiMzNDtEb2VzIFFFTVUgZXZlbiAqZW11bGF0ZSogYHN0bW1hY2A/JiMzNDsgSSBrbm93IGl0IGhhcyBlbXVsYXRpb25zIGZvciB0aGluZ3MgbGlrZSBJbnRlbCYjMzk7cyBpR0IsIGUxMDAwLCBhbmQgUlRMODEzOSwgYXMgd2VsbCBhcyBWaXJ0SU8gYW5kIFZNWE5FVDMuIEJ1dCBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGEgZGlyZWN0IGBzdG1tYWNgIGVtdWxhdGlvbiBpbiB0aGUgdHlwaWNhbCBRRU1VIG5ldHdvcmsgZGV2aWNlIGxpc3QuIEkgZXZlbiBzdGFydGVkIHRvIGxvb2suCgpUaGVuIEkgc2F3IHNvbWUgKnNpbWlsYXIqIG5ldHdvcmsgaGFyZHdhcmUgZW11bGF0ZWQgYnkgUUVNVSBsaWtlIGBpbXhfZmVjLmNgLCBgY2FkZW5jZV9nZW0uY2AsIGBmdGdtYWMxMDAuY2AsIGBucGNtN3h4X2VtYy5jYCwgYGFsbHdpbm5lci1zdW44aS1lbWFjLmNgLCBhbmQgYGFsbHdpbm5lci1lbWFjLmNgLiAmIzM0O1dhaXQsIGRvZXMgUUVNVSBoYXZlIGEgYGR3bWFjYCBlbXVsYXRpb24/JiMzNDsgSSB0aG91Z2h0LiBOb3QgZGlyZWN0bHksIGJ1dC4uLiBgc3RtbWFjYCBpcyB1c2VkIGJ5IGEgKnRvbiogb2YgQVJNIFNvQ3MuIFRoZSBpbXBsaWNhdGlvbiBpcywgUUVNVSBtaWdodCBlbXVsYXRlIHRoZSBTb0MgKmFzIGEgd2hvbGUqLCBpbmNsdWRpbmcgdGhlIGBzdG1tYWNgIGRyaXZlciBhcyBwYXJ0IG9mIHRoZSBib2FyZCBlbXVsYXRpb24uCgpTbywgSSB3YXMgYWJvdXQgdG8gZ28gc2VhcmNoIFFFTVUgZm9yIGBzdG1tYWNgIG9yIGBkd21hY2Agd2hlbiBJIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgZW1waGFzaXplZCBjb2RlIHBhdGhzIHRoYXQgYXJlICp1bnJlYWNoYWJsZSogaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gVGhhdCBnb3QgbWUgdGhpbmtpbmcuLi4gaXMgdGhlcmUgYW5vdGhlciBhdmVudWU/CgpUaGVuIEkgcmVtZW1iZXJlZCB0aGF0IGBzdG1tYWNgLCB3aGlsZSBwcmltYXJpbHkgYSBwbGF0Zm9ybSBkcml2ZXIsICphbHNvKiBoYXMgUENJIGJpbmRpbmdzLiBUaGF0IG1pZ2h0IGJlIGEgd2F5IHRvIHJlYWNoIHRoZSBjb2RlLiBTbywgbXkgbmV4dCBjaGVjayBpcyBnb2luZyB0byBiZSB0byBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYSBgc3RtbWFjYCBQQ0kgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlci4qc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDU2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBzZWFyY2g6CgoqKkluaXRpYWwgSW5xdWlyeTogVGFyZ2V0aW5nIHRoZSBSaWdodCBLZXl3b3JkcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmluZCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGBzdG1tYWNfcGNpYCBvciBzb21ldGhpbmcgc2ltaWxhci4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSB0aGlua2luZyB0aGF0JiMzOTtzIHRoZSBsaWtlbHkgZHJpdmVyIG1vZHVsZSBuYW1lIGZvciBhIHNwZWNpZmljIFBDSS1iYXNlZCBFdGhlcm5ldCBjb250cm9sbGVyIHVzaW5nIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgKFNUTU1BQykgYXJjaGl0ZWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIG5hcnJvdyBteSBzZWFyY2ggYW5kIGdldCB0aGUgaW5mb3JtYXRpb24gSSBuZWVkLCBzcGVjaWZpY2FsbHksIGJlY2F1c2UgdGhlcmUgYXJlIG90aGVyIGRyaXZlcnMgYW5kIGNvbnRyb2xsZXJzIG91dCB0aGVyZS4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGZpbmQgd2hhdCBJIGFjdHVhbGx5IHdhbnQsIG5vdCBhIGdlbmVyYWwgb3ZlcnZpZXcuIFNvIEkmIzM5O2xsIHN0YXJ0IHdpdGggdGhpcyBzcGVjaWZpYyB0ZXJtLCBidXQgSSYjMzk7bGwgbmVlZCB0byBrZWVwIGFuIG9wZW4gbWluZCBmb3IgdmFyaWF0aW9ucyBvciByZWxhdGVkIGNvbmNlcHRzIGlmIHRoaXMgcHJpbWFyeSBzZWFyY2ggZG9lc24mIzM5O3QgZGVsaXZlciBwcmVjaXNlIGVub3VnaCByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjkzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFNUTU1BQyBQQ0kgRHJpdmVyKioKCkFscmlnaHQsIHRpbWUgdG8gdHJvdWJsZXNob290IHRoaXMgbmV0d29ya2luZyBpc3N1ZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgcHJvYmxlbSAqc2VlbXMqIHRvIGJlIHJlbGF0ZWQgdG8gdGhlIFNUTU1BQyBkcml2ZXIsIGFuZCBzaW5jZSB0aGUgc3lzdGVtIHVzZXMgUENJLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYC4gVGhhdCBmaWxlIGlzIHRoZSBtb3N0IGxpa2VseSBjYW5kaWRhdGUgZm9yIGhhbmRsaW5nIHRoZSBQQ0ktc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIG9wZXJhdGlvbiBvZiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgY29kZSB0aGF0IGRlYWxzIHdpdGggUENJIGRldmljZSBwcm9iZSwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgb3RoZXIgUENJLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gY2FyZWZ1bGx5IHJldmlldyBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgUENJIGJ1cywgZXNwZWNpYWxseSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIERNQSBzZXR1cCwgYnVmZmVyIG1hbmFnZW1lbnQsIG9yIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmVzLiBBbnkgb2YgdGhlc2UgY291bGQgZWFzaWx5IGJlIHRoZSBzb3VyY2Ugb2YgdGhlIGludGVybWl0dGVudCBvciBwZXJmb3JtYW5jZS1yZWxhdGVkIHByb2JsZW1zIEkmIzM5O20gY2hhc2luZy4gTXkgcHJpbWFyeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgU1RNTUFDIGNvcmUgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2NoYWluX21vZGUuYyYjMzQ7LAogICAgJiMzNDtjb21tb24uaCYjMzQ7LAogICAgJiMzNDtkZXNjcy5oJiMzNDssCiAgICAmIzM0O2Rlc2NzX2NvbS5oJiMzNDssCiAgICAmIzM0O2R3bWFjLWFuYXJpb24uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1kd2MtcW9zLWV0aC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWVpYzc3MDAuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1nZW5lcmljLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtaW14LmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtaW5nZW5pYy5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWludGVsLXBsYXQuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1pbnRlbC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWludGVsLmgmIzM0OywKICAgICYjMzQ7ZHdtYWMtaXBxODA2eC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWxvb25nc29uLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbG9vbmdzb24xLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbHBjMTh4eC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLW1lZGlhdGVrLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbWVzb24uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1tZXNvbjhiLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbW90b3Jjb21tLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbnV2b3Rvbi5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXFjb20tZXRocW9zLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtcmVuZXNhcy1nYmV0aC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXJrLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtcnpuMS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXMzMi5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXNvY2ZwZ2EuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zb3BoZ28uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zcGFjZW1pdC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXN0YXJmaXZlLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3RpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3RtMzIuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zdW41NWkuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zdW44aS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXN1bnhpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtdGVncmEuYyYjMzQ7LAogICAgJiMzNDtkd21hYy10aGVhZC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXZpc2NvbnRpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDAuaCYjMzQ7LAogICAgJiMzNDtkd21hYzEwMDAuaCYjMzQ7LAogICAgJiMzNDtkd21hYzEwMDBfY29yZS5jJiMzNDssCiAgICAmIzM0O2R3bWFjMTAwMF9kbWEuYyYjMzQ7LAogICAgJiMzNDtkd21hYzEwMF9jb3JlLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDBfZG1hLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM0LmgmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2NvcmUuYyYjMzQ7LAogICAgJiMzNDtkd21hYzRfZGVzY3MuYyYjMzQ7LAogICAgJiMzNDtkd21hYzRfZGVzY3MuaCYjMzQ7LAogICAgJiMzNDtkd21hYzRfZG1hLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2RtYS5oJiMzNDssCiAgICAmIzM0O2R3bWFjNF9saWIuYyYjMzQ7LAogICAgJiMzNDtkd21hYzUuYyYjMzQ7LAogICAgJiMzNDtkd21hYzUuaCYjMzQ7LAogICAgJiMzNDtkd21hY19kbWEuaCYjMzQ7LAogICAgJiMzNDtkd21hY19saWIuYyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMi5oJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2NvcmUuYyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kZXNjcy5jJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYS5jJiMzNDssCiAgICAmIzM0O2R3eGxnbWFjMi5oJiMzNDssCiAgICAmIzM0O2VuaF9kZXNjLmMmIzM0OywKICAgICYjMzQ7aHdpZi5jJiMzNDssCiAgICAmIzM0O2h3aWYuaCYjMzQ7LAogICAgJiMzNDttbWMuaCYjMzQ7LAogICAgJiMzNDttbWNfY29yZS5jJiMzNDssCiAgICAmIzM0O25vcm1fZGVzYy5jJiMzNDssCiAgICAmIzM0O3JpbmdfbW9kZS5jJiMzNDssCiAgICAmIzM0O3N0bW1hYy5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19lc3QuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZXN0LmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX2V0aHRvb2wuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZnBlLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2ZwZS5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19od3RzdGFtcC5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19saWJwY2kuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfbGlicGNpLmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX21haW4uYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfbWRpby5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19wY2kuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGNzLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3Bjcy5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19wbGF0Zm9ybS5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19wbGF0Zm9ybS5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19wdHAuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcHRwLmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX3NlbGZ0ZXN0cy5jJiMzNDssCiAgICAmIzM0O3N0bW1hY190Yy5jJiMzNDssCiAgICAmIzM0O3N0bW1hY192bGFuLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3ZsYW4uaCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcC5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTQ5CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBzdG1tYWNfcGNpLmMqKgoKT2theSwgaGVyZSB3ZSBhcmUsIHN0YXJpbmcgYXQgYHN0bW1hY19wY2kuY2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gc3RhcnQgZGlzc2VjdGluZyB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlLCByaWdodCBvZmYgdGhlIGJhdC4gSXQmIzM5O3MgdGhlIFBDSSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU1RNTUFDIGRyaXZlciwgYW5kIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIFBDSSBidXMgaXRzZWxmLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBQQ0kgY29uZmlndXJhdGlvbiByZWdpc3RlcnMsIHJlc291cmNlIGFsbG9jYXRpb24sIGludGVycnVwdCBoYW5kbGluZyDigJMgdGhlIHVzdWFsIHN1c3BlY3RzIGZvciBhIFBDSSBkcml2ZXIuIEkmIzM5O20gYW50aWNpcGF0aW5nIHNvbWUgcG90ZW50aWFsbHkgdmVuZG9yLXNwZWNpZmljIHJlZ2lzdGVyIGFjY2VzcyBoZXJlIGFzIHdlbGwsIGdpdmVuIHRoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIHByb3ByaWV0YXJ5IFNvQyBhbmQgUEhZLCBhbmQgSSBuZWVkIHRvIGtlZXAgYW4gZXllIG91dCBmb3IgdGhhdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXnigJl2ZSBoYW5kbGVkIHRoZSBsaW5rIGluaXRpYWxpemF0aW9uLCBETUEgc2V0dXAsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBQQ0kgZnJhbWV3b3JrLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gc3RvcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjI1CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHNwZWFraW5nIGZyb20gYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHBlcnNwZWN0aXZlLCBhbmQgc3RhcnRpbmcgd2l0aCBhIGJvbGRlZCBoZWFkZXI6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBSZWdpc3RyYXRpb24gUHJvY2VzcyoqCgpBbHJpZ2h0LCBob2xkIG9uIGEgc2Vjb25kLiAmIzM0O0hvdyBpcyBpdCByZWdpc3RlcmVkPyYjMzQ7IEkgaW1tZWRpYXRlbHkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZWNoYW5pc20gYmVoaW5kIHRoZSByZWdpc3RyYXRpb24uIElzIGl0IGEgZGlyZWN0IG1hcHBpbmc/IEFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZSBzb3J0IG9mIG1ldGFkYXRhIHN0cnVjdHVyZT8gT3IgaXMgaXQgbW9yZSBhYnN0cmFjdCBhbmQgc2VtYW50aWMtYmFzZWQ/IFRoZSBudWFuY2VzIGhlcmUgYXJlIGNyaXRpY2FsLiBLbm93aW5nIHRoZSB1bmRlcmx5aW5nIHJlZ2lzdHJhdGlvbiBtZXRob2RvbG9neSB3aWxsIGNvbXBsZXRlbHkgZGljdGF0ZSB0aGUgc3Vic2VxdWVudCBzdGVwcyBJIHRha2UgaW4gYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgbWFuaXB1bGF0aW9uLiBJIG5lZWQgdGhlIGRldGFpbC4gVGhlIGFyY2hpdGVjdHVyZSBpbiBxdWVzdGlvbiBsaWtlbHkgcGxheXMgaW50byB0aGlzIHJlZ2lzdHJhdGlvbiBhbmQgdGhlIGhvdy93aHkgb2YgdGhhdCBpcyB3aGF0IEkgbmVlZCB0byB1bnBhY2sgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1ODMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA3MzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IG9mIGEgUENJIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSBmdXp6IGl0IGVmZmVjdGl2ZWx5IHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBpZiBRRU1VIGVtdWxhdGVzIHRoZSBkZXZpY2UuIFVuZm9ydHVuYXRlbHksIFFFTVUgZG9lc24mIzM5O3QgZGlyZWN0bHkgZW11bGF0ZSB0aGUgYHN0bW1hY2AgZGV2aWNlLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIG9mdGVuIHVzZWQgb24gSW50ZWwgUXVhcmsgYW5kIEVsa2hhcnQgTGFrZSBzeXN0ZW1zLgoKVGhlIGltbWVkaWF0ZSBuZXh0IHRob3VnaHQgaXMgdG8gY29uc2lkZXIgU3l6a2FsbGVyLiBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgd29ya2Fyb3VuZCB3aXRoIGEgcHNldWRvLWRldmljZSBvciBhIG1ldGhvZCBsZXZlcmFnaW5nIGBzeXpfcGNpX3NldHVwYD8gQnV0IFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emluZyByZWxpZXMgb24gdGhlIHRhcmdldCBkZXZpY2UgYmVpbmcgZW11bGF0ZWQgd2l0aGluIFFFTVUsIG9yIHBvdGVudGlhbGx5IHRocm91Z2ggdXNlIG9mIGBzeXpfcGNpX3NldHVwYC4gSWYgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGl0LCB0aGVyZSYjMzk7cyBhIHByb2JsZW0uIFRoZSBwcm9tcHQgbWVudGlvbnMgYSBmZXcgY2F0ZWdvcmllcyBvZiB1bnJlYWNoYWJsZSBjb2RlOiBob3QtdW5wbHVnLCBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMsIGFuZCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gSSBxdWlja2x5IHJ1bGUgb3V0IGBzdG1tYWNgIGZhbGxpbmcgaW50byB0aGF0IGxhc3QgY2F0ZWdvcnkg4oCTIGl0JiMzOTtzIGFuIEV0aGVybmV0IE1BQyBkcml2ZXIsIG5vdCBhIHNwZWNpYWxpemVkIGRldmljZS4KCk5vdywgZG9lcyBRRU1VIGVtdWxhdGUgYSBzaW1pbGFyIGRldmljZT8gUUVNVSBkb2VzIGVtdWxhdGUgYGR3bWFjYCBpbiBzb21lIEFSTSBtYWNoaW5lcyDigJMgbGlrZSB0aGUgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCBmaWxlIGZvciB0aGUgc3VuOGkgc3lzdGVtLiBCdXQgc3VuOGkgaGFzIGl0cyBvd24gZW1hYy4gSXQgZG9lcyBlbXVsYXRlIG90aGVyIE1BQ3MgbGlrZSBgaW14X2ZlYy5jYCwgYGNhZGVuY2VfZ2VtLmNgLCBgZnRnbWFjMTAwLmNgLCBhbmQgYG5wY203eHhfZW1jLmNgLiBCdXQgbm8gYHN0bW1hY2AgZW11bGF0aW9uIGlzIHByZXNlbnQuIEluIGZhY3QsIGBzdG1tYWNgIGlzIGEgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyAoRFdNQUMpLgoKU28sIHRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgaGF2ZSBhIGdlbmVyaWMgRFdNQUMgUENJIGRldmljZT8gTm8uIEFuZCBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBtYWdpYyB0aGF0IGNyZWF0ZXMgYW4gZW11bGF0b3IgaWYgUUVNVSBkb2VzIG5vdC4gSXQgY2FuIGluamVjdCBVU0IgZGV2aWNlcyAodmlhIGR1bW15X2hjZC9yYXctZ2FkZ2V0KSwgYnV0IG5vdCBQQ0kgZGV2aWNlcy4gU3l6a2FsbGVyIGxldmVyYWdlcyBgdmhjaWAgZm9yIEJsdWV0b290aCwgYG1hYzgwMjExX2h3c2ltYCBmb3IgV2lGaSwgYHVpbnB1dGAgZm9yIGlucHV0LCBhbmQgYHZpdmlkYCBmb3IgVjRMMi4gQWxsIHNvZnR3YXJlLWJhc2VkIGVtdWxhdGlvbnMuIEl0IGRvZXNuJiMzOTt0IGhhdmUgYSBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgUENJLiBTbywgaWYgYHN0bW1hY2AgaXMgYSBQQ0kgZGV2aWNlLCBJIGFtIHN0dWNrIHVubGVzcyBRRU1VIGVtdWxhdGVzIGl0LgoKQWhhISBXYWl0LCBRRU1VICpkb2VzKiBlbXVsYXRlIERXTUFDIGluIHNvbWUgQVJNIGJvYXJkcyEgVGhpcyBnaXZlcyBtZSBob3BlLiBJIHJlY2FsbCBzZWVpbmcgYGh3L25ldC9kZXNpZ253YXJlLmNgIHdpdGhpbiBRRU1VLiBOb3csIHRvIHZlcmlmeSBpZiBRRU1VIGRvZXMgaW5kZWVkIGVtdWxhdGUgdGhlIGBkZXNpZ253YXJlLmNgIGludGVyZmFjZSB0byBnYWluIGFjY2VzcyB0byB0aGUgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rlc2lnbndhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTY5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFN5emthbGxlciBSZXBvcnQgb24gc3RtbWFjKioKCk9rYXksIHRoZSByZXBvcnQgcG9pbnRzIHRvIGBzdG1tYWNgIGFzIHRoZSBkcml2ZXIgaW52b2x2ZWQuIFJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHN5emthbGxlciBpcyBhY3RpdmVseSBmdXp6aW5nIGBzdG1tYWNgLiBUaGUgY29tbWl0IGF1dGhvciBpcyB0aGF0IGZhbWlsaWFyIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YCBoYW5kbGUsIHdoaWNoIG1lYW5zIHN5emthbGxlciAqZGlkKiBpbmRlZWQgZmluZCBhIGJ1ZyBpbiBgc3RtbWFjYCEgVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhdHRhY2sgdmVjdG9yLiBIb3cgZGlkIHN5emthbGxlciBldmVuICpyZWFjaCogdGhlIGBzdG1tYWNgIGRyaXZlcj8gTXkgZmlyc3QgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIHByb2JhYmx5IGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBtYXliZSBzeXprYWxsZXIgaXMgaW5zdGFudGlhdGluZyBpdCB0aHJvdWdoIGRldmljZSB0cmVlIG92ZXJsYXlzLiBBIG1vcmUgY29tcGxldGUgaW52ZXN0aWdhdGlvbiBpcyBsaWtlbHkgbmVlZGVkIHRob3VnaCwgdGhlcmUgYXJlIG1hbnkgcG9zc2libGUgZW50cnkgcG9pbnRzLiBMZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBzdG1tYWNfcGxhdGZvcm0uY2AgYW5kIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM0MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJgKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3Mgc2VlIHdoYXQgYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJgIGlzIGRvaW5nLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIHNwZWNpZmljIG1vZHVsZSBpcyBpbnRlcmFjdGluZyB3aXRoIHRoZSBwbGF0Zm9ybSBkcml2ZXIgZnJhbWV3b3JrLiBJcyBpdCBhIHN0YW5kYXJkIGltcGxlbWVudGF0aW9uLCBvciBhcmUgdGhlcmUgYW55IGN1c3RvbSBleHRlbnNpb25zIG9yIG92ZXJyaWRlcyBpbiBwbGF5PyBJIHdhbnQgdG8gcXVpY2tseSBldmFsdWF0ZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgcmVkIGZsYWdzIGluIHRlcm1zIG9mIHJlc291cmNlIG1hbmFnZW1lbnQsIGVycm9yIGhhbmRsaW5nLCBvciBpbnRlcnJ1cHQgaGFuZGxpbmcsIGVzcGVjaWFsbHkgbG9va2luZyBhdCB0aGUgcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIGRyaXZlciYjMzk7cyBkZXZpY2UgbWF0Y2ggdGFibGUgaXMgY29ycmVjdGx5IGRlZmluZWQgYW5kIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIGRyaXZlcnMuIEnigJlsbCBiZSBwYXJ0aWN1bGFybHkgZm9jdXNlZCBvbiBob3cgaXQgaGFuZGxlcyBpdHMgZGV2aWNlLXNwZWNpZmljIGRhdGEgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgaWYgdGhlcmUgaXMgYW55LiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFuYXJpb25fZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzItfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMzM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhbmFyaW9uX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTM0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3Y19ldGhfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM3MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGR3Y19ldGhfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzcxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYz0yNzM9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZWljNzcwMF9kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTI4MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGVpYzc3MDBfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTY5PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3bWFjX2dlbmVyaWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03Ni19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjc3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZHdtYWNfZ2VuZXJpY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTc4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTM5Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbXhfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQwMC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NDAxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoaW14X2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy00MDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTI3Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbmdlbmljX21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI3OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI4MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGluZ2VuaWNfbWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz0xMzk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW50ZWxfZXRoX3BsYXRfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNDctfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxNDg6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbnRlbF9ldGhfcGxhdF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTE0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9NDk3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGlwcTgwNnhfZ21hY19kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTUwNS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjUwNjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGlwcTgwNnhfZ21hY19kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTUwNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0yMjk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbHMxeF9kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjM1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMzY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihsczF4X2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTc3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGxwYzE4eHhfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy04NS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jOjg2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobHBjMTh4eF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NjcyPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1lZGlhdGVrX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY4MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2ODE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtZWRpYXRla19kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02ODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz04Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZXNvbjZfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtOTAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6OTE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtZXNvbjZfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtOTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTUwNz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZXNvbjhiX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNTE1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NTE2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWVzb244Yl9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUxNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG52dF9kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEzMy19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjEzNDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG52dF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEzNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jPTgwOT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBxY29tX2V0aHFvc19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy04MTYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6ODE3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocWNvbV9ldGhxb3NfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0yMjQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcmVuZXNhc19nYmV0aF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIzMS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIzMjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHJlbmVzYXNfZ2JldGhfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNjM3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHJrX2dtYWNfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTY0NC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNjQ1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocmtfZ21hY19kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz04MT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciByem4xX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtODgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo4OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHJ6bjFfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy05MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0yMjI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgczMyX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMzAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIzMTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHMzMl9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMjMyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz02ODE9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc29jZnBnYV9kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY4OC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjY4OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHNvY2ZwZ2FfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02OTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9ODA9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc29waGdvX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy04OC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM6ODk6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzb3BoZ29fZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTkwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MjE0PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNwYWNlbWl0X2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIyMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMjM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzcGFjZW1pdF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMjQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz0xMzc9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RhcmZpdmVfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTQ1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE0Njptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN0YXJmaXZlX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYz0zMDI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RpX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0zMDktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjMxMDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN0aV9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM9NjcxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN0bTMyX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY3OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo2ODA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdG0zMl9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy02ODEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTQ3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjU1aV9nbWFjMjAwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xNTQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjE1NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjU1aV9nbWFjMjAwX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xNTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjg1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjhpX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyOTQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI5NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjhpX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyOTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYz0xNTY9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3VuN2lfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTYzLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjE2NDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjdpX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTE2NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTQwNT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0ZWdyYV9tZ2JlX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTQxMy19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzo0MTQ6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih0ZWdyYV9tZ2JlX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTQxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jPTI3Mz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0aGVhZF9kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yODAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjgxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodGhlYWRfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHZpc2NvbnRpX2V0aF9kd21hY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNjgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjY5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodmlzY29udGlfZXRoX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI3MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxMzUKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiA2NjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAgaW4gUUVNVSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGFib3V0IHBsYXRmb3JtIGRyaXZlcnMsIGJ1dCB0aGVuIEkgcmVtZW1iZXJlZCBgc3l6a2FsbGVyYCBhbmQgaXRzIGFiaWxpdHkgdG8gZnV6eiBQQ0kgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJIHJlY2FsbGVkIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX3NldHVwYCwgYnV0IHRoYXQmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LiBJdCYjMzk7cyBtb3JlIHRoYXQgc3l6a2FsbGVyIGNhbiBmdXp6ICphbnkqIFBDSSBkZXZpY2UgaWYgcHJlc2VudC4gTm93LCB3YWl0LCBpcyBgc3RtbWFjYCByZWxldmFudCBoZXJlPyBJIGtub3cgaXQmIzM5O3MgdXNlZCBpbiBJbnRlbCBRdWFyayBhbmQgRWxraGFydCBMYWtlLCBhbmQgdGhlcmUmIzM5O3MgdGhlIGBzdG1tYWNfcGNpLmNgIGRyaXZlciBmb3IgdGhvc2UuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBEb2VzIFFFTVUgZW11bGF0ZSB0aG9zZT8gTm8sIHByb2JhYmx5IG5vdCBkaXJlY3RseS4gQW5kIHRoZW4gdGhlIHF1ZXN0aW9uIGlzLCBpZiBzeXprYWxsZXIgaXMgcnVubmluZyBvbiBRRU1VLCBob3cgd291bGQgaXQgZXZlbiBmaW5kIGEgUENJIGRldmljZSBsaWtlIHRoaXM/IFRoZSBkZWZhdWx0IGlzIFFFTVUsIG5vdCByZWFsIGhhcmR3YXJlLiBJdCBjb3VsZG4mIzM5O3QgZmluZCBpdCBkaXJlY3RseSB2aWEgYSB2aXJ0dWFsIFBDSSBkZXZpY2UgYmVjYXVzZSBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIGhhcmR3YXJlLiBUaGUgbmV4dCB0aG91Z2h0IHdhcywgcGVyaGFwcyBgc3RtbWFjX3BsYXRmb3JtLmNgPyBBaCwgeWVzLCBzeXprYWxsZXIgY2FuIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzIHZpYSB0aGUgYC9zeXMvZGV2aWNlcy9wbGF0Zm9ybWAgb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMhCgpCdXQgaGFuZyBvbiwgc3l6a2FsbGVyIGFsc28gaGFzIHRoaW5ncyBsaWtlIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlfaWRgLiBTbywgdWx0aW1hdGVseSwgaXQgY2FuIGZ1enogYHN0bW1hY2AgKmlmKiB0aGUgaW5zdGFuY2Ugb2YgYHN0bW1hY2AgZXhpc3RzLgoKVGhlIHByb21wdCwgb2YgY291cnNlLCBwb2ludHMgb3V0IHRoZSBpc3N1ZTogY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBlc3BlY2lhbGx5IGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRoYXQgYXJlIGNhbGxlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLiBJbiB0aGlzIHNwZWNpZmljIGNhc2UsIHRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYC4gQ3J1Y2lhbGx5LCB0aGF0JiMzOTtzIGNhbGxlZCBmcm9tIGBfX3N0bW1hY19yZWxlYXNlYCAod2hpY2ggaXMgdGhlIGBuZG9fc3RvcGAgY2FsbGJhY2spLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfb3BlbmAsIGFuZCBgc3RtbWFjX3N1c3BlbmRgLgoKYF9fc3RtbWFjX3JlbGVhc2VgIGlzIGBuZG9fc3RvcGAsIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyBicm91Z2h0IGRvd24sIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBpcCBsaW5rIHNldCBkZXYgZXRoMCBkb3duYC4gTm93LCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlICppZiogdGhlIGRldmljZSBleGlzdHMuIFRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gdGhlbiBpczogRG9lcyB0aGUgZGV2aWNlIGV4aXN0IGluIFFFTVU/CgpTbywgSSBsb29rZWQgaW50byBRRU1VJiMzOTtzIGRldmljZSBtb2RlbHMuIEkgcmVtZW1iZXJlZCBzb21ldGhpbmcgbGlrZSBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIGJlaW5nIGluIFFFTVUuIFRoYXQmIzM5O3MgZm9yIGBzdW44aS1lbWFjYC4gQnV0IHdhaXQsIGlzbiYjMzk7dCB0aGVyZSBzb21ldGhpbmcgYWJvdXQgYGR3bWFjLXN1bjhpYCBmb3IgYHN0bW1hY2A/IEl0IGxvb2tzIGxpa2UgYGR3bWFjLXN1bjhpLmNgIGlzIHRoZSBvbmUgdGhhdCYjMzk7cyByZWxldmFudC4KClRoZSBrZXkgdGhlbiBpcyB3aGV0aGVyIFFFTVUmIzM5O3MgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBpcyBjb21wYXRpYmxlIHdpdGggYGR3bWFjLXN1bjhpYC4gSSBjaGVja2VkIHRoZSBRRU1VIGNvZGUsIGFuZCBjb25maXJtZWQgdGhhdCBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIHN1cHBvcnRzIGAmIzM0O2FsbHdpbm5lcixzdW44aS1oMy1lbWFjJiMzNDtgLiBBbmQsIGluIHRoZSBMaW51eCBrZXJuZWwsIGBkd21hYy1zdW44aS5jYCBhbHNvIG1hdGNoZXMgYCYjMzQ7YWxsd2lubmVyLHN1bjhpLWgzLWVtYWMmIzM0O2AuIFRoZXJlZm9yZSwgSSBjb25jbHVkZSB0aGF0IFFFTVUgZG9lcyBlbXVsYXRlIHRoZSBoYXJkd2FyZSwgYW5kIHRoZSBjb2RlIHBhdGggaXMgaW5kZWVkIHJlYWNoYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxsd2lubmVyLHN1bjhpLWgzLWVtYWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTI2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW44aV9kd21hY19tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjY5Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2FsbHdpbm5lcixzdW44aS1oMy1lbWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjcwLVx0XHQuZGF0YSA9IFx1MDAyNmVtYWNfdmFyaWFudF9oMyB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc1NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBTVE1NQUMgaW4gUUVNVTogQSBWZXJpZmljYXRpb24gQ2hlY2sqKgoKT2theSwgeWVzLCB0aGlzIGlzIGdyZWF0ISBRRU1VICpkb2VzKiBlbXVsYXRlIHRoZSBgYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNgLCB3aGljaCByZWxpZXMgb24gYGR3bWFjLXN1bjhpLmNgIGFuZCB0aGF0IGluIHR1cm4sIHVzZXMgYHN0bW1hY2AuIEZhbnRhc3RpYywgdGhhdCBtZWFucyBgc3RtbWFjYCAqaXMqIGRlZmluaXRlbHkgYWNjZXNzaWJsZSBpbiB0aGUgUUVNVSBlbnZpcm9ubWVudCEgSSB3YXMgc3RhcnRpbmcgdG8gdGhpbmsgaXQgd291bGRuJiMzOTt0IGJlIGFuZCB0aGF0IHdvdWxkIGhhdmUgYmVlbiBhIG1hc3NpdmUgc2V0YmFjay4KCkhhbmcgb24gYSBzZWNvbmQuLi4gdGhlIHNwZWNpZmljIHBhdGNoIEkmIzM5O20gYW5hbHl6aW5nIGlzIHRhcmdldGluZyBgZHd4Z21hYzJfZG1hLmNgLiBOb3csIHRoYXQgZmlsZSBpcyBhc3NvY2lhdGVkIHdpdGggYGR3eGdtYWMyYCDigJMgc3BlY2lmaWNhbGx5LCBEZXNpZ25XYXJlIFhHTUFDIDIuMTAuIEhvbGQgb24uIElzICp0aGF0KiBjb21wb25lbnQgcmVhY2hhYmxlPyBJcyB0aGUgc2NvcGUgb2YgdGhlIHBhdGNoIHJlbGV2YW50PwoKSSBzaG91bGQgcHJvYmFibHkgcXVpY2tseSB2ZXJpZnkgd2hlcmUgYGR3eGdtYWMyMTBfZG1hX29wc2AgaXMgYWN0dWFsbHkgdXNlZCBhbmQgbWFrZSBzdXJlIHRoYXQgaXQgaXMgc3VwcG9ydGVkLiBHb3R0YSBrZWVwIHRoZSBkZXRhaWxzIHJpZ2h0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkd3hnbWFjMjEwX2RtYV9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oPTQ3MD1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6NDcxOmV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC00NzItZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZGVzY19vcHMgZHd4Z21hYzIxMF9kZXNjX29wcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz02MzY9c3RhdGljIGludCBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNjUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NjUxOmNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy02NTItXHQucmVzZXQgPSBkd3hnbWFjMl9kbWFfcmVzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjU3LVx0XHQuZGVzYyA9IFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjU4Olx0XHQuZG1hID0gXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1OS1cdFx0Lm1hYyA9IFx1MDAyNmR3eGdtYWMyMTBfb3BzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNzktXHRcdC5kZXNjID0gXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyODA6XHRcdC5kbWEgPSBcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjgxLVx0XHQubWFjID0gXHUwMDI2ZHd4bGdtYWMyX29wcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3NTcKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgaHdpZi5jYCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgY29kZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBwcmFjdGljYWwgYXBwcm9hY2guIEJlZm9yZSBkaWdnaW5nIGRlZXAgaW50byB0aGUgYWN0dWFsIGxvZ2ljLCBsZXQmIzM5O3MgZ2V0IGEgaGFuZGxlIG9uIHRoZSBzY29wZS4gSSYjMzk7bGwgbmVlZCB0byBpZGVudGlmeSBhbGwgdGhlIGVudHJpZXMgd2l0aGluIGBod2lmLmNgIHRoYXQgKmFjdHVhbGx5KiB1dGlsaXplIHRoaXMgZnVuY3Rpb24gb3IgZGF0YSBzdHJ1Y3R1cmUgaW4gcXVlc3Rpb24uIFRoYXQmIzM5O3MgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcnMgYW5kIGNvbnN1bWVycyBvZiB0aGlzIGNvZGUgaXMgZnVuZGFtZW50YWwgdG8gZ2F1Z2luZyBpdHMgYnJvYWRlciBpbXBsaWNhdGlvbnMgYW5kIGF2b2lkaW5nIGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cyBmcm9tIGNoYW5nZXMuIFRoaXMgZGVwZW5kZW5jeSBhbmFseXNpcyBpcyB3aGVyZSBJ4oCZbGwgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRcdFx0LmRldl9pZCA9IERXWEdNQUNfSUQsXG4gMjUxOlx0XHRcdC5yZWdzID0ge1xuIDI1MjpcdFx0XHRcdC5wdHBfb2ZmID0gUFRQX1hHTUFDX09GRlNFVCxcbiAyNTM6XHRcdFx0XHQubW1jX29mZiA9IE1NQ19YR01BQ19PRkZTRVQsXG4gMjU0Olx0XHRcdFx0LmVzdF9vZmYgPSBFU1RfWEdNQUNfT0ZGU0VULFxuIDI1NTpcdFx0XHRcdC5mcGVfcmVnID0gXHUwMDI2ZHd4Z21hYzNfZnBlX3JlZyxcbiAyNTY6XHRcdFx0fSxcbiAyNTc6XHRcdFx0LmRlc2MgPSBcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxuIDI1ODpcdFx0XHQuZG1hID0gXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxuIDI1OTpcdFx0XHQubWFjID0gXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXG4gMjYwOlx0XHRcdC52bGFuID0gXHUwMDI2ZHd4Z21hYzIxMF92bGFuX29wcyxcbiAyNjE6XHRcdFx0Lmh3dGltZXN0YW1wID0gXHUwMDI2c3RtbWFjX3B0cCxcbiAyNjI6XHRcdFx0LnB0cCA9IFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxuIDI2MzpcdFx0XHQubW9kZSA9IE5VTEwsXG4gMjY0Olx0XHRcdC50YyA9IFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcbiAyNjU6XHRcdFx0Lm1tYyA9IFx1MDAyNmR3eGdtYWNfbW1jX29wcyxcbiAyNjY6XHRcdFx0LmVzdCA9IFx1MDAyNmR3bWFjNTEwX2VzdF9vcHMsXG4gMjY3Olx0XHRcdC5zZXR1cCA9IGR3eGdtYWMyX3NldHVwLFxuIDI2ODpcdFx0XHQucXVpcmtzID0gTlVMTCxcbiAyNjk6XHRcdH0sIHtcbiAyNzA6XHRcdFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXG4gMjcxOlx0XHRcdC5taW5faWQgPSBEV1hMR01BQ19DT1JFXzJfMDAsXG4gMjcyOlx0XHRcdC5kZXZfaWQgPSBEV1hMR01BQ19JRCxcbiAyNzM6XHRcdFx0LnJlZ3MgPSB7XG4gMjc0Olx0XHRcdFx0LnB0cF9vZmYgPSBQVFBfWEdNQUNfT0ZGU0VULFxuIDI3NTpcdFx0XHRcdC5tbWNfb2ZmID0gTU1DX1hHTUFDX09GRlNFVCxcbiAyNzY6XHRcdFx0XHQuZXN0X29mZiA9IEVTVF9YR01BQ19PRkZTRVQsXG4gMjc3Olx0XHRcdFx0LmZwZV9yZWcgPSBcdTAwMjZkd3hnbWFjM19mcGVfcmVnLFxuIDI3ODpcdFx0XHR9LFxuIDI3OTpcdFx0XHQuZGVzYyA9IFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXG4gMjgwOlx0XHRcdC5kbWEgPSBcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXG4gMjgxOlx0XHRcdC5tYWMgPSBcdTAwMjZkd3hsZ21hYzJfb3BzLFxuIDI4MjpcdFx0XHQudmxhbiA9IFx1MDAyNmR3eGxnbWFjMl92bGFuX29wcyxcbiAyODM6XHRcdFx0Lmh3dGltZXN0YW1wID0gXHUwMDI2c3RtbWFjX3B0cCxcbiAyODQ6XHRcdFx0LnB0cCA9IFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxuIDI4NTpcdFx0XHQubW9kZSA9IE5VTEwsXG4gMjg2Olx0XHRcdC50YyA9IFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcbiAyODc6XHRcdFx0Lm1tYyA9IFx1MDAyNmR3eGdtYWNfbW1jX29wcyxcbiAyODg6XHRcdFx0LmVzdCA9IFx1MDAyNmR3bWFjNTEwX2VzdF9vcHMsXG4gMjg5Olx0XHRcdC5zZXR1cCA9IGR3eGxnbWFjMl9zZXR1cCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3NDAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyBQb3RlbnRpYWwgU3RtbWFjIERyaXZlciBJbXBhY3QqKgoKQWxyaWdodCwgSSBzZWUgdGhlc2UgaWRlbnRpZmllcnMsIGBEV1hHTUFDX0lEYCBhbmQgYERXWExHTUFDX0lEYCwgcG9wcGluZyB1cC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlaXIgY29ubmVjdGlvbiwgYnV0IHRoaXMgcGF0Y2ggYWxzbyB0b3VjaGVzIGBzdG1tYWNfbWFpbi5jYC4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnLiBgc3RtbWFjX21haW4uY2AgaXMgdGhlIGNvcmUsIGdlbmVyaWMgY29kZSBmb3IgYWxsIGBzdG1tYWNgIGRyaXZlcnMuIEFueSBjaGFuZ2UgdGhlcmUgY291bGQgaGF2ZSB3aWRlLXJlYWNoaW5nIGVmZmVjdHMuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gbm90aW5nIHRoZSBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYCBmdW5jdGlvbi4gQW5kIGl0JiMzOTtzIGNhbGxlZCB1bmNvbmRpdGlvbmFsbHkgd2l0aGluIGBzdG1tYWNfbWFpbi5jYC4gU28sIEkgcmVhbGx5IG5lZWQgdG8gY2hlY2sgb3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAgZnJvbSB0aGF0IG1vZHVsZS4gSXQgY291bGQgYmUgYWZmZWN0ZWQsIGFuZCBJIGhhdmUgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1NjksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjU2OTpcdFx0XHRzdG1tYWNfc3RvcF90eF9kbWEocHJpdiwgY2hhbik7XG4yNTcwOlx0fVxuMjU3MTpcdFxuMjU3MjpcdC8qKlxuMjU3MzpcdCAqIHN0bW1hY19kYXRhcGF0aF90ZWFyZG93biAtIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gYXMgcGVyIElQIHNwZWNpZmljYXRpb25cbjI1NzQ6XHQgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXG4yNTc1Olx0ICogRGVzY3JpcHRpb246XG4yNTc2Olx0ICogV2hlbiB0ZWFyZG93biBvcHMgYXJlIGF2YWlsYWJsZSwgZm9sbG93IHRoZSBkYXRhYm9vayBvcmRlcmVkIHRlYXJkb3duXG4yNTc3Olx0ICogc2VxdWVuY2UuXG4yNTc4Olx0ICogRm9sbG93cyB0aGUgbGVnYWN5IHN0b3AgJiM0MzsgTUFDIGRpc2FibGUgZm9yIHZhcmlhbnRzIHdpdGhvdXQgdGhlIGZlYXR1cmUuXG4yNTc5Olx0ICovXG4yNTgwOlx0c3RhdGljIHZvaWQgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbjI1ODE6XHR7XG4yNTgyOlx0XHR1MzIgcnhfY2hhbm5lbHNfY291bnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbjI1ODM6XHRcdHUzMiB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xuMjU4NDpcdFx0dTMyIGNoYW47XG4yNTg1Olx0XG4yNTg2Olx0XHQvKiBTdG9wIGFsbCBUWCBETUEgY2hhbm5lbHMgKi9cbjI1ODc6XHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOylcbjI1ODg6XHRcdFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xuMjU4OTpcdFxuMjU5MDpcdFx0LyogV2FpdCBmb3IgZXZlcnkgVFggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovXG4yNTkxOlx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNldHhfZG1hX3N0b3BwZWQpXG4yNTkyOlx0XHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOylcbjI1OTM6XHRcdFx0XHRzdG1tYWNfdHhfZG1hX3N0b3BwZWQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4pO1xuMjU5NDpcdFxuMjU5NTpcdFx0LyogV2FpdCBmb3IgdGhlIE1UTCBUWCBxdWV1ZXMgdG8gZmluaXNoIHB1c2hpbmcgaW50byB0aGUgTUFDICovXG4yNTk2Olx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNldHhfbXRsX2RyYWluKVxuMjU5NzpcdFx0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspXG4yNTk4Olx0XHRcdFx0c3RtbWFjX3R4X210bF9kcmFpbihwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4yNTk5Olx0XG4yNjAwOlx0XHQvKiBEaXNhYmxlIHRoZSBNQUMgVFggYW5kIFJYICovXG4yNjAxOlx0XHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgZmFsc2UpO1xuMjYwMjpcdFxuMjYwMzpcdFx0LyogV2FpdCBmb3IgdGhlIE1UTCBSWCBxdWV1ZXMgdG8gZHJhaW4gaW50byB0aGUgUlggRE1BICovXG4yNjA0Olx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNlcnhfbXRsX2RyYWluKVxuMjYwNTpcdFx0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspXG4yNjA2Olx0XHRcdFx0c3RtbWFjX3J4X210bF9kcmFpbihwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4yNjA3Olx0XG4yNjA4Olx0XHQvKiBTdG9wIGFsbCBSWCBETUEgY2hhbm5lbHMgKi9cbjI2MDk6XHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOylcbjI2MTA6XHRcdFx0c3RtbWFjX3N0b3BfcnhfZG1hKHByaXYsIGNoYW4pO1xuMjYxMTpcdFxuMjYxMjpcdFx0LyogV2FpdCBmb3IgZXZlcnkgUlggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovXG4yNjEzOlx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNlcnhfZG1hX3N0b3BwZWQpXG4yNjE0Olx0XHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOylcbjI2MTU6XHRcdFx0XHRzdG1tYWNfcnhfZG1hX3N0b3BwZWQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4pO1xuMjYxNjpcdH1cbjI2MTc6XHRcbjI2MTg6XHQvKipcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5ODYKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA2NjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGggRnV6emluZyAtIEEgRGVlcCBEaXZlKioKCk9rYXksIHNvIGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gIGlzIHRoZSBjb3JlIG9mIHRoaXMsIGl0JiMzOTtzIGdlbmVyaWMgYW5kIGNhbGxlZCBieSBhbGwgdmFyaWFudHMuIElmIGEgc3BlY2lmaWMgdmFyaWFudCBkb2VzbiYjMzk7dCBoYXZlIHRoZSBleHBsaWNpdCBjaGVja3MgZm9yIGB0eF9kbWFfc3RvcHBlZGAgYW5kIGZyaWVuZHMsIGl0IGp1c3Qgc2tpcHMgdGhlIHdhaXQgYW5kIHByb2NlZWRzIHdpdGggdGhlIHN0b3AgYW5kIE1BQyBkaXNhYmxlLiBUaGlzIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBidXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIGl0IHdvcnRoIGZ1enppbmc/CgpUaGUgcGF0Y2ggaXRzZWxmIGludHJvZHVjZXMgYSB0ZWFyZG93biBzZXF1ZW5jZS4gSXQgd2FpdHMgZm9yIERNQSBhbmQgTVRMIHF1ZXVlcyB0byBkcmFpbi4gVGhpcyBmdW5kYW1lbnRhbGx5IGNoYW5nZXMgdGhlIHN5bmNocm9uaXphdGlvbiBhbmQgdGVhcmRvd24gcHJvY2Vzcy4gIENydWNpYWxseSwgaXQgbW9kaWZpZXMgYF9fc3RtbWFjX3JlbGVhc2VgICh3aGljaCBpcyBjYWxsZWQgZHVyaW5nIGBuZG9fc3RvcGApLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfb3BlbmAsIGFuZCBgc3RtbWFjX3N1c3BlbmRgLiBUaGF0JiMzOTtzIGZ1bmN0aW9uYWwuIFRoaXMgaW50cm9kdWNlcyBwb3RlbnRpYWwgZGVhZGxvY2tzIGlmIHRoZSBoYXJkd2FyZSBkb2VzbiYjMzk7dCBjb29wZXJhdGUsIG9yIGl0IGNvdWxkICpmaXgqIGV4aXN0aW5nIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLgoKTm93LCB0aG9zZSBgcmVhZGxfcG9sbF90aW1lb3V0YCBjYWxscyBpbiBgZHd4Z21hYzJfZG1hLmNgIC0gdGhleSYjMzk7bGwgbG9vcCBmb3IgdXAgdG8gMTBtcy4gSWYgdGhlIGhhcmR3YXJlIGlzIGVtdWxhdGVkLCB3ZSBtaWdodCBzZWUgdGltZW91dHMsIGJ1dCBub3QgbmVjZXNzYXJpbHkgYSBjcmFzaC4gSG93ZXZlciwgdGhlICpjaGFuZ2UgaW4gdGVhcmRvd24gb3JkZXIqIGFuZCB0aGUgKmFkZGl0aW9uIG9mIHBvbGxpbmcqIG1ha2UgdGhpcyB3b3J0aCBhIGNsb3NlciBsb29rLgoKSGFuZyBvbi4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgLi4uIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MmIzM0Oy4gQnV0IGBfX3N0bW1hY19yZWxlYXNlYCBpcyB0aWVkIHRvIGBuZG9fc3RvcGAsIHdoaWNoIHJ1bnMgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIGJyb3VnaHQgZG93biB2aWEgYGlwIGxpbmsgc2V0IGRldiBldGgwIGRvd25gLiBUaGF0JiMzOTtzICpub3QqIGEgZHJpdmVyIHVuYmluZCBvcGVyYXRpb247IGl0JiMzOTtzIGEgbmV0d29yayBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlLiBTeXprYWxsZXIgaGl0cyB0aGF0IGtpbmQgb2YgdGhpbmcgY29uc3RhbnRseS4gQW5kIHdlIGFsc28gaGF2ZSBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgd2hpY2ggYXJlIHRyaWdnZXJlZCBieSBYRFAgcHJvZ3JhbSBhdHRhY2htZW50IGFuZCBkZXRhY2htZW50LiBUaGlzIGlzIGRlZmluaXRlbHkgZnV6emFibGUgdW5kZXIgbm9ybWFsIG9wZXJhdGlvbnMhCgpMZXQmIzM5O3MgbmFpbCBkb3duIHRob3NlIGZvY3VzIHN5bWJvbHM6CgoqICAgYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAKKiAgIGBzdG1tYWNfeGRwX29wZW5gCiogICBgc3RtbWFjX3hkcF9yZWxlYXNlYAoqICAgYHN0bW1hY19zdXNwZW5kYAoqICAgYGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkYAoqICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmAKKiAgIGBkd3hnbWFjMl9yeF9tdGxfZHJhaW5gCiogICBgZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRgCgpXYWl0LCBgc3RtbWFjX3N1c3BlbmRgIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBjYWxsYmFjay4gU3l6a2FsbGVyIGNhbiBlYXNpbHkgdHJpZ2dlciBzdXNwZW5kL3Jlc3VtZSBjeWNsZXMuICBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYXJlIHRoZSBYRFAgc2V0dXAvdGVhcmRvd24gcG9pbnRzLiAgQW5kIGFsdGhvdWdoIGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBpdCYjMzk7cyBjYWxsZWQgZnJvbSB0aG9zZSB2ZXJ5IGltcG9ydGFudCBlbnRyeSBwb2ludHM6IGBfX3N0bW1hY19yZWxlYXNlYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGFuZCBgc3RtbWFjX3N1c3BlbmRgLiBIb2xkIG9uLCBgX19zdG1tYWNfcmVsZWFzZWAgaXMgc3RhdGljLCB3aGljaCBtZWFucyBgc3RtbWFjX3JlbGVhc2VgICh0aGUgYG5kb19zdG9wYCBjYWxsYmFjaykgaXMgdGhlIHB1YmxpYyBlbnRyeSBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3JlbGVhc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9OTM5PXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtOTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo5NTM6c3RhdGljIHZvaWQgc3RtbWFjX3JlbGVhc2VfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtOTU0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI4NzI9c3RhdGljIGludCBzdG1tYWNfdHhfY2xlYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgYnVkZ2V0LCB1MzIgcXVldWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yOTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyOTkzOlx0XHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIHAsIHByaXYtXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjk5NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQxODI9c3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MjI2Olx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjI3LWluaXRfZXJyb3I6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MjMxPXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyODEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyODI6c3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjgzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQzMDY6XHRzdG1tYWNfcmVsZWFzZV9wdHAocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MzEyLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MzEzOiAqICBzdG1tYWNfcmVsZWFzZSAtIGNsb3NlIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDMxNC0gKiAgQGRldiA6IGRldmljZSBwb2ludGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDMxNy0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDMxODpzdGF0aWMgaW50IHN0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMTkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDMyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDMyOTpcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDMzMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxNDk9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxODM6XHRcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczNTI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczNTUtXHQubmRvX2ZlYXR1cmVzX2NoZWNrID0gc3RtbWFjX2ZlYXR1cmVzX2NoZWNrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzU2Olx0Lm5kb19zdG9wID0gc3RtbWFjX3JlbGVhc2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczNTctXHQubmRvX2NoYW5nZV9tdHUgPSBzdG1tYWNfY2hhbmdlX210dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc2Mzk9aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzY0NC1cdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2NDU6XHRcdHN0bW1hY19yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjY0PWludCBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhfc2l6ZSwgdTMyIHR4X3NpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjY5LVx0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzY3MDpcdFx0c3RtbWFjX3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzY3MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxMTIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgU1RNTUFDIFN5bWJvbCBWaXNpYmlsaXR5KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gbG9va2luZyBhdCBgc3RtbWFjX3JlbGVhc2VgIHdoaWNoLCBhcyBJIHN1c3BlY3RlZCwgY2FsbHMgYF9fc3RtbWFjX3JlbGVhc2VgLiBUaGF0IG1lYW5zIEkgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHMgdG8gdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgY29kZSBwYXRoczogYHN0bW1hY19yZWxlYXNlYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBhbmQgYHN0bW1hY19zdXNwZW5kYC4gQWxzbywgSSBuZWVkIHRvIGluY2x1ZGUgdGhlc2UgcmVsYXRlZCBETUEgZnVuY3Rpb25zOiBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgLCBgZHd4Z21hYzJfdHhfbXRsX2RyYWluYCwgYGR3eGdtYWMyX3J4X210bF9kcmFpbmAsIGFuZCBgZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRgLgoKSG9sZCBvbi4uLiB0aG9zZSBgZHd4Z21hYzJfKmAgZnVuY3Rpb25zLiBUaGV5JiMzOTtyZSBkZWZpbmVkIGFzIGBzdGF0aWNgIHdpdGhpbiBgZHd4Z21hYzJfZG1hLmNgLiBNeSBpbml0aWFsIGNvbmNlcm4gaXMgd2hldGhlciB0aGV5IG1pZ2h0IGJlIGlubGluZWQuIEkgbmVlZCB0byBiZSBzdXJlIEkgY2FuIGFjdHVhbGx5IHRyYWNrIHRoZW0gYXMgZGlzdGluY3Qgc3ltYm9scy4KCkFoLCByaWdodC4gTG9va2luZyBhdCB0aGUgY29kZSwgdGhvc2UgZnVuY3Rpb25zIGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYSBgc3RydWN0IHN0bW1hY19kbWFfb3BzYC4gVGhhdCBjb25maXJtcyB0aGV5ICphcmVuJiMzOTt0KiBpbmxpbmVkLiBUaGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBiZWNhdXNlIHRoZXkmIzM5O3JlIGJlaW5nIHBvaW50ZWQgdG8gYnkgYSBzdHJ1Y3QuIEdvb2QsIHRoYXQgbWFrZXMgbXkgam9iIGVhc2llci4gVGhleSYjMzk7cmUgY2xlYXJseSBpbnRlbmRlZCB0byBiZSBjYWxsZWQgdmlhIHRob3NlIGZ1bmN0aW9uIHBvaW50ZXJzLgoKTm93LCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5zdXJlIHRoZSBjb3JyZWN0IGNvZGUgcGF0aCBpcyBiZWluZyBjb21waWxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19FVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODk1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBgU1RNTUFDX0VUSGAgbW9kdWxlLiBCZWZvcmUgZGl2aW5nIGludG8gY29kZSwgSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCByZWFsbHkgdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGZpcnN0LiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUsIGlkZW50aWZ5aW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBhbmQsIG9mIGNvdXJzZSwgdHJvdWJsZXNob290aW5nIGFueSBmdXR1cmUgaXNzdWVzLiBXaGVyZSBkb2VzIGl0IHB1bGwgaXRzIGRhdGEgZnJvbT8gV2hhdCBvdGhlciBtb2R1bGVzIGRvZXMgaXQgbmVlZCB0byBmdW5jdGlvbiBwcm9wZXJseT8gQW55IGV4dGVybmFsIGxpYnJhcmllcz8gVGltZSB0byBtYXAgdGhpcyBvdXQgbWV0aG9kaWNhbGx5LiBJIG5lZWQgdG8gYmUgc3VyZSBJJiMzOTttIHRoaW5raW5nIG9mIGV2ZXJ5dGhpbmcgYW5kIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBzaW1wbGUgdGhhdCB3aWxsIGJpdGUgbWUgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTVE1NQUNfRVRIXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA2Olx0XHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xuICAgNzpcdFx0c2VsZWN0IE1JSVxuICAgODpcdFx0c2VsZWN0IFBDU19YUENTXG4gICA5Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDEwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuICAxMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxuICAxNjpcdFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxuICAxNzpcdFxuICAxODpcdGlmIFNUTU1BQ19FVEhcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjM1MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipEaWdnaW5nIGludG8gdGhlIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBFdGhlcm5ldCBkcml2ZXIgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IGBTVE1NQUNfRVRIYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuIEJ1dCBob2xkIG9uLCBJIGp1c3Qgc2F3IHNvbWV0aGluZyBhYm91dCBgZHdtYWMtc3VuOGlgLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlci4gTm93LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIGtub3cgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIGJ1dCB3aGF0IGNvbmZpZ3VyYXRpb24gc2V0dGluZyAqZW5hYmxlcyogdGhhdCBwYXJ0aWN1bGFyIGRyaXZlcj8gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgZHdtYWMtc3VuOGlgIHRvIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24sIHNvIEkgY2FuIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgYW5kIHdoZXJlIGl0IGZpdHMgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaGlzIGxldmVsIG9mIGRldGFpbCBpcyBjcml0aWNhbCBmb3IgcHJvcGVyIHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEV01BQ19TVU44SSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNzc9Y29uZmlnIERXTUFDX1NVTlhJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI4ODpjb25maWcgRFdNQUNfU1VOOElcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjg5LVx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIHN1bjhpIEdNQUMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjcwNwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEV01BQ19TVU44SSBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgYERXTUFDX1NVTjhJYCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpcyBiZWluZyBzZXQgdXAsIGVzcGVjaWFsbHkgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGludGVyYWN0aW9ucyBvbiB0aGUgU3VuOGkgcGxhdGZvcm0uIEkmIzM5O20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3Iga2V5IHJlZ2lzdGVycyBhbmQgdGhlaXIgZXhwZWN0ZWQgdmFsdWVzLiBJJiMzOTtsbCBiZSBzY3J1dGluaXppbmcgdGhlIGludGVycnVwdCBtYXBwaW5nLCBETUEgY29uZmlndXJhdGlvbiwgYW5kIGFueSBwb3dlciBtYW5hZ2VtZW50IHNldHRpbmdzIOKAkyB0aG9zZSBhcmUgdXN1YWxseSB0aGUgdHJvdWJsZSBzcG90cy4gSSYjMzk7bGwgYmUgdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZXMgdG8gdGhlIHVuZGVybHlpbmcgUEhZIGFuZCB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlLCBiZWNhdXNlIGFueSBtaXNtYXRjaCB0aGVyZSBpcyBnb2luZyB0byBjYXVzZSBpbW1lZGlhdGUgaXNzdWVzLiBBbnkgY2xvY2sgY29uZmlndXJhdGlvbiBpcyBjcml0aWNhbCwgc28gSSYjMzk7bGwgYmUgZHJpbGxpbmcgZG93biBpbnRvIHRoZSBjbG9jayB0cmVlIHRvIGNvbmZpcm0gdGhhdCBldmVyeXRoaW5nIGlzIGJlaW5nIGRyaXZlbiBhdCB0aGUgcmlnaHQgZnJlcXVlbmNpZXMgZm9yIHRoZSBEV01BQyYjMzk7cyBjYXBhYmlsaXRpZXMuIEZpbmFsbHksIEkmIzM5O2xsIGJlIGNyb3NzLXJlZmVyZW5jaW5nIHRoaXMgY29uZmlnIGFnYWluc3QgdGhlIGRhdGFzaGVldCBhbmQgYW55IGV4aXN0aW5nIGVycmF0YSBmb3IgdGhlIFN1bjhpIFNvQ3M7IGtub3dpbmcgdGhlIGhhcmR3YXJlJiMzOTtzIHF1aXJrcyBpcyBlc3NlbnRpYWwgdG8gYSBzbW9vdGggZGVwbG95bWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjg4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyODg6XHRjb25maWcgRFdNQUNfU1VOOElcbiAyODk6XHRcdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBzdW44aSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAyOTA6XHRcdGRlZmF1bHQgQVJDSF9TVU5YSVxuIDI5MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxuIDI5MjpcdFx0c2VsZWN0IE1ESU9fQlVTX01VWFxuIDI5MzpcdFx0aGVscFxuIDI5NDpcdFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgSDMgQTgzVCBBNjQgRU1BQyBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyOTU6XHRcbiAyOTY6XHRcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcbiAyOTc6XHRcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MTcyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYERXTUFDX1NVTjhJYCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gaW5pdGlhbGx5IHRoaW5raW5nIGBEV01BQ19TVU44SWAgc2VlbXMgbGlrZSBhIHNvbGlkIGNvbmZpZ3VyYXRpb24gdG8gZW5hYmxlLiBIb3dldmVyLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gRG9lcyB0aGlzIGNvbmZpZ3VyYXRpb24gYWN0dWFsbHkgbGV2ZXJhZ2UgdGhlIGBkd3hnbWFjMmAgaGFyZHdhcmU/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgZHd4Z21hYzJgIHNwZWNpZmljYWxseSByZWxhdGVzIHRvIFhHTUFDICgxMCBHaWdhYml0KSBjYXBhYmlsaXRpZXMsIHdoZXJlYXMgdGhlIGBzdW44aWAgcGxhdGZvcm0gaXMgZm9jdXNlZCBvbiBHTUFDICgxIEdpZ2FiaXQpLgoKSG9sZCBvbiwgdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgZHd4Z21hYzJfZG1hLmNgLCB3aGljaCwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGlzIGRpcmVjdGx5IGFzc29jaWF0ZWQgd2l0aCBgZHd4Z21hYzJgLiBUaGF0IHJhaXNlcyBhIGZsYWcuIFNvLCB3aGF0IHBsYXRmb3JtIGRyaXZlciBpbiB0aGUgY29kZSBiYXNlIGlzIGFjdHVhbGx5ICp1c2luZyogdGhlIGBkd3hnbWFjMmAgaW1wbGVtZW50YXRpb24/IFRoaXMgZGlzY3JlcGFuY3kgbmVlZHMgY2xhcmlmaWNhdGlvbi4KClJpZ2h0LCB0aW1lIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB0cmFjayBkb3duIGhvdyBgRFdYR01BQ19JRGAgb3IgYERXWExHTUFDX0lEYCBhcmUgYmVpbmcgdXRpbGl6ZWQgd2l0aGluIHRoZSBkcml2ZXIgc3lzdGVtLiBPciwgbW9yZSBicm9hZGx5LCB0byBkZXRlcm1pbmUgd2hpY2ggZHJpdmVycyBhcmUgc2VsZWN0aW5nIFhHTUFDIGZ1bmN0aW9uYWxpdHkuIFRoaXMgc2hvdWxkIGhlbHAgbWUgcmVjb25jaWxlIHRoZSBjb2RlJiMzOTtzIGludGVuZGVkIHVzZSB3aXRoIHRoZSBtb2RpZmljYXRpb25zIGJlaW5nIG1hZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RXWEdNQUNfSUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00NS0vKiBEZXZpY2UgSUQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjQ2OiNkZWZpbmUgRFdYR01BQ19JRFx0XHQweDc2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00Ny0jZGVmaW5lIERXWExHTUFDX0lEXHRcdDB4Mjdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDktXHRcdC5taW5faWQgPSBEV1hHTUFDX0NPUkVfMl8xMCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTA6XHRcdC5kZXZfaWQgPSBEV1hHTUFDX0lELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1MS1cdFx0LnJlZ3MgPSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODY1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBIYXJkd2FyZSBJZGVudGlmaWNhdGlvbiBhbmQgRHJpdmVyIEFzc29jaWF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhpcyBgaHdpZi5jYCBmaWxlIGFuZCBob3cgaXQgdGllcyBpbnRvIGhhcmR3YXJlIGlkZW50aWZpY2F0aW9uLiBJdCBsb29rcyBsaWtlIGl0IGNvbmZpcm1zIHRoYXQgdGhlIGhhcmR3YXJlIElEIHJlYWQgZnJvbSB0aGUgTUFDIHJlZ2lzdGVycyBpcyBjb3JyZWN0bHkgbWF0Y2hlZC4gVGhpcyBtZWFucyBhbnkgcGxhdGZvcm0gZHJpdmVyIHRoYXQgYmluZHMgdG8gYSBkZXZpY2Ugd2l0aCBgRFdYR01BQ19JRGAgaXMgZ29pbmcgdG8gdXRpbGl6ZSB0aGUgYGR3eGdtYWMyYCBkcml2ZXIsIHdoaWNoIG1ha2VzIHNlbnNlLiBOb3cgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggcGxhdGZvcm0gZHJpdmVycyBhcmUgZGVzaWduZWQgdG8gd29yayB3aXRoIFhHTUFDIHNwZWNpZmljYWxseS4gTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgdG8gaW52ZXN0aWdhdGUgZHJpdmVycyB0aGF0IHVzZSBzb21ldGhpbmcgbGlrZSBgRFdNQUNfQ09SRV9YR01BQ2Agb3IgdGhlIG1vcmUgZ2VuZXJhbCBgc3RtbWFjX3Byb2JlX2NvbmZpZ19kdGAgZnVuY3Rpb24sIHBlcmhhcHMgc29tZXRoaW5nIGVsc2UgdG9vLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQgY29ubmVjdHMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4Z21hYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODE2MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVW5jb25kaXRpb25hbCBDb21waWxhdGlvbiBDb25jZXJucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBhbmQgc29tZXRoaW5nJiMzOTtzIHBpbmdpbmcgbXkgcmFkYXIuIEl0IHNlZW1zIGxpa2UgdGhlIG1vZHVsZSBgZHd4Z21hYzJgIGdldHMgY29tcGlsZWQgbm8gbWF0dGVyIHdoYXQsIGFzIGxvbmcgYXMgYFNUTU1BQ19FVEhgIGlzIGRlZmluZWQuIFRoYXQmIzM5O3MgYSBsaXR0bGXigKYgdW5leHBlY3RlZC4gVHlwaWNhbGx5LCB5b3Ugd2FudCBtb3JlIGdyYW51bGFyIGNvbnRyb2wgb3ZlciB3aGF0IGdldHMgYnVpbHQgaW50byB0aGUga2VybmVsLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGhhcmR3YXJlIGRyaXZlcnMuIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgaW1wbGljYXRpb25zLgoKSXMgYGR3eGdtYWMyYCAqdHJ1bHkqIGVzc2VudGlhbCBmb3IgYWxsIGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIGBTVE1NQUNfRVRIYD8gT3IgaXMgdGhlcmUgYSBtb3JlIHNwZWNpZmljIGRlcGVuZGVuY3kgdGhhdCBzaG91bGQgYmUgY2hlY2tlZD8gSWYgaXQmIzM5O3MgYWx3YXlzIGluY2x1ZGVkLCBldmVuIHdoZW4gaXQmIzM5O3Mgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSwgd2UmIzM5O3JlIGludHJvZHVjaW5nIHVubmVjZXNzYXJ5IGNvZGUgYmxvYXQgYW5kIHBvdGVudGlhbGx5IGluY3JlYXNpbmcgdGhlIGF0dGFjayBzdXJmYWNlLiBXZSBhbHNvIG5lZWQgdG8gYmUgbWluZGZ1bCBvZiByZXNvdXJjZXMgdXNlZCBvbiBlbWJlZGRlZCBzeXN0ZW1zLgoKSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIHVuY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZXhpc3RzLiBJcyB0aGVyZSBhIGhpc3RvcmljYWwgcmVhc29uPyBEb2VzIGl0IHJlbHkgb24gc29tZSBpbXBsaWNpdCBkZXBlbmRlbmN5PyBDb3VsZCB0aGlzIGJlIGEgYnVnPyBBcmUgdGhlcmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyBzb21ld2hlcmUgdGhhdCBhcmUgYmVpbmcgb3Zlcmxvb2tlZD8gVGhlIG5leHQgc3RlcHMgYXJlIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIHdoeSB0aGlzIGlzIHNldCB1cCB0aGlzIHdheSwgbG9vayBmb3IgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMsIGFuZCBtYWtlIHN1cmUgdGhhdCBpdCBhbGwgbWFrZXMgc2Vuc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3eGdtYWMyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mz1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXHRcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTctXHQgICAgICBkd21hYzRfZG1hLm8gZHdtYWM0X2xpYi5vIGR3bWFjNF9jb3JlLm8gZHdtYWM1Lm8gaHdpZi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo4Olx0ICAgICAgc3RtbWFjX3RjLm8gZHd4Z21hYzJfY29yZS5vIGR3eGdtYWMyX2RtYS5vIGR3eGdtYWMyX2Rlc2NzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTktXHQgICAgICBzdG1tYWNfeGRwLm8gc3RtbWFjX2VzdC5vIHN0bW1hY19mcGUubyBzdG1tYWNfdmxhbi5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NzM2CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBDaGFpbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBtb2R1bGUsIGBkd3hnbWFjMl9kbWEub2AsIGFuZCBpdCYjMzk7cyBhbHdheXMgYnVpbHQgd2hlbiBgU1RNTUFDX0VUSGAgaXMgZGVmaW5lZC4gRXhjZWxsZW50LiBTbywgbXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gZW5zdXJpbmcgYFNUTU1BQ19FVEhgIGlzIHNldCBjb3JyZWN0bHkuIE5vdywgdG8gZ2V0IHRoZXJlLCBJIGtub3cgSSBuZWVkIGEgcGxhdGZvcm0gb3IgUENJIGRyaXZlciB0aGF0IHByb3ZpZGVzIGEgZGV2aWNlIHdpdGggdGhlIGBEV1hHTUFDX0lEYC4gTm8gcHJvYmxlbSwgSSByZW1lbWJlciBzZWVpbmcgYHN0bW1hY19wY2kuY2AgaW4gdGhlIHRyZWUuIFBlcmZlY3QsIHRoZXJlJiMzOTtzIGEgUENJIGRyaXZlci4gQnV0LCBkb2VzIGl0IGFjdHVhbGx5IHN1cHBvcnQgdGhlIFhHTUFDIHZhcmlhbnQ/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byBgc3RtbWFjX3BjaS5jYCBhbmQgc2VlIHdoYXQgaXQmIzM5O3MgZG9pbmcuIExldCYjMzk7cyBzZWUgaWYgaXQmIzM5O3MgZ290IHRoZSByaWdodCBkZXZpY2UgSURzIGFuZCBmZWF0dXJlcyBiYWtlZCBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RldmljZV9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTk6XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xOTI9c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNC1cdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5Mzk2CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgYHN0bW1hY19pZF90YWJsZWAqKgoKUmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgc3RtbWFjX2lkX3RhYmxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0YWJsZSwgaXRzIHN0cnVjdHVyZSwgYW5kIHdoYXQgaXQmIzM5O3MgZGVmaW5pbmcuIEkgZXhwZWN0IGl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIGRyaXZlciwgbGlrZWx5IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gdXNlZCB0byBpZGVudGlmeSBzcGVjaWZpYyBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGNvbnRyb2xsZXJzLiBJdCYjMzk7cyBwcm9iYWJseSBhIGRldmljZSBJRCB0YWJsZSwgdXNlZCBieSB0aGUgZHJpdmVyIHRvIG1hdGNoIGFnYWluc3QgZGV0ZWN0ZWQgaGFyZHdhcmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqVmVuZG9yIGFuZCBEZXZpY2UgSURzOioqIFRoZXNlIGFyZSB0aGUgYmVkcm9jayBmb3IgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24uIEkmIzM5O2xsIGV4cGVjdCB0byBzZWUgcGFpcnMgb3IgZ3JvdXBzIG9mIElEcyB0aGF0IG1hcCBkaXJlY3RseSB0byB0aGUgc3BlY2lmaWMgU1RNTUFDIGhhcmR3YXJlIHZhcmlhbnRzLgoqICAgKipNb2R1bGUgQWxpYXNlczoqKiBJJiMzOTtsbCBiZSBjdXJpb3VzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYWxpYXNlcyBvciBpZGVudGlmaWVycyBkZWZpbmVkIHRvIGhlbHAgd2l0aCBtb2R1bGUgbG9hZGluZyBhbmQgZGV2aWNlIHByb2JpbmcgaW4gdmFyaW91cyBzeXN0ZW1zLgoqICAgKipEcml2ZXIgRGF0YToqKiBJdCYjMzk7cyB1bmxpa2VseSwgYnV0IG5vdCBpbXBvc3NpYmxlLCB0aGF0IHNvbWUgc3BlY2lmaWMgZHJpdmVyLXJlbGF0ZWQgaW5mb3JtYXRpb24gaXMgZW1iZWRkZWQgaGVyZSwgdG9vLiBQZXJoYXBzIHNvbWUgY29uZmlndXJhdGlvbiBkZWZhdWx0cyBvciBmbGFncyBwZXIgaGFyZHdhcmUgdmFyaWFudC4gSXQgaXMgaW1wb3J0YW50IHRvIGtub3cgd2hpY2ggaW5mb3JtYXRpb24sIGFuZCB0byBhc3Nlc3Mgd2hldGhlciBpdCBjb3VsZCBiZSBiZXR0ZXIgZGVzY3JpYmVkIGluIGEgc2VwYXJhdGUgc3RydWN0dXJlLgoqICAgKipQbGF0Zm9ybSBEZXBlbmRlbmNpZXM6KiogSSYjMzk7bGwgYmUgY2hlY2tpbmcgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBpbmZvcm1hdGlvbi4gSXQgaXMgaW1wb3J0YW50IHRvIGtub3cgaWYgdGhlIHRhYmxlIHN1cHBvcnRzIG11bHRpcGxlIHBsYXRmb3JtIHZlcnNpb25zLCBvciBoYXMgZGlmZmVyZW50IHJ1bGVzLgoqICAgKipSZXZpc2lvbnM6KiogR29vZCBwcmFjdGljZSB3b3VsZCBiZSB0byBpbmNsdWRlIHJldmlzaW9uIGRhdGEgdGhhdCBjYW4gZGlzdGluZ3Vpc2ggdmFyaWFudHMgYW5kIGVuc3VyZSB0aGUgZHJpdmVyIGZ1bmN0aW9ucyBjb3JyZWN0bHkgd2l0aCBhIHBhcnRpY3VsYXIgc2lsaWNvbiByZXZpc2lvbi4KClVuZGVyc3RhbmRpbmcgdGhlIGluZm9ybWF0aW9uIHdpdGhpbiB0aGlzIHRhYmxlIGlzIGNydWNpYWwgdG8gdGhlIGRyaXZlciYjMzk7cyBhYmlsaXR5IHRvIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlIGNvcnJlY3RseS4gSXQmIzM5O3MgdGhlIGZpcnN0IHN0ZXAgaW4gZW5zdXJpbmcgcHJvcGVyIGRldmljZSBkZXRlY3Rpb24gYW5kIGFzc29jaWF0aW9uLiBNeSBnb2FsIGlzIHRvIGdyYXNwIGhvdyBpdCB3b3JrcyBhbmQgd2hhdCBpdCYjMzk7cyB0ZWxsaW5nIHRoZSBkcml2ZXIgYWJvdXQgc3VwcG9ydGVkIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcdFx0MHgxMTA4XG4gMjAxOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXHRcdDB4NzEwMlxuIDIwMjpcdFxuIDIwMzpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbiAyMDQ6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG4gMjA1Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbiAyMDY6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcbiAyMDc6XHRcdHt9XG4gMjA4Olx0fTtcbiAyMDk6XHRcbiAyMTA6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbiAyMTE6XHRcbiAyMTI6XHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XG4gMjEzOlx0XHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxuIDIxNDpcdFx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDE3NwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDY5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiBhIFN5emthbGxlci1Gb3VuZCBCdWcgaW4gU1RNTUFDKioKCk9rYXksIHNvIEkgc2VlIGBzdG1tYWNfcGNpX2luZm9gIGFuZCBgc25wc19nbWFjNV9wY2lfaW5mb2AgbWVudGlvbmVkLiBJbnRlcmVzdGluZy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBob3cgc3l6a2FsbGVyIG1pZ2h0IGhhdmUgdHJpZ2dlcmVkIHRoaXMsIGFuZCBJIGJyaWVmbHkgY29uc2lkZXIgdGhlIFBDSSBkZXZpY2UgYW5nbGUuIERvZXMgc3l6a2FsbGVyIGV2ZW4gZnV6eiBQQ0kgZGV2aWNlcyBkaXJlY3RseSwgb3IgZG9lcyBpdCByZWx5IG9uIFFFTVUgZW11bGF0aW9uIG9yIGBzeXpfcGNpX3NldHVwYD8gVGhlbiBJIHJlbWVtYmVyIHRoYXQgZG9lc24mIzM5O3QgcmVhbGx5IG1hdHRlciBoZXJlOyB0aGUga2V5IGlzIHRoYXQgc3l6a2FsbGVyICpmb3VuZCogdGhpcyBidWcuCgpJIHF1aWNrbHkgc2hpZnQgdG8gdGhpbmtpbmcgYWJvdXQgdGhlIHBhdGh3YXkuIENvdWxkIGl0IGhhdmUgYmVlbiB2aWEgYHN0bW1hY19wbGF0Zm9ybWA/IFN5emthbGxlciBjYW4gaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgdGhyb3VnaCBkZXZpY2UgdHJlZSBvdmVybGF5cyBvciBgL3N5cy9kZXZpY2VzL3BsYXRmb3JtYCwgcmlnaHQ/IFRoZW4gSSB0aGluayBhYm91dCB0aGUgcHNldWRvLXN5c2NhbGxzIEkmIzM5O20gZmFtaWxpYXIgd2l0aCwgbGlrZSBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYC4gSXMgdGhlcmUgYW4gYHN0bW1hY2Agc3BlY2lmaWMgcHNldWRvLXN5c2NhbGw/IE5vLCB3YWl0LCB0aGF0JiMzOTtzIG5vdCByZWxldmFudC4gVGhlIHByb21wdCBjbGVhcmx5IHN0YXRlcyB0aGF0IHN5emthbGxlciBpbnRlcm5hbHMsIHNwZWNpZmljYWxseSBzeXpsYW5nIGRlc2NyaXB0aW9ucywgYXJlIG5vdCB3aGF0IEkgbmVlZCB0byBmb2N1cyBvbi4KClRoZSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhhdCBzeXprYWxsZXIgcmVhY2hlZCBpdC4gSXQmIzM5O3MgYSBuZXR3b3JrIGRyaXZlciBidWcuIFRoYXQmIzM5O3Mgd2hhdCBtYXR0ZXJzLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBtb2RpZmllcyBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYC4gVGhpcyBmdW5jdGlvbiBpcyB1bmNvbmRpdGlvbmFsbHkgY2FsbGVkIGluIGBzdG1tYWNfbWFpbi5jYCBmb3IgKmFsbCogdmFyaWFudHMgb2YgYHN0bW1hY2AuIEV2ZW4gaWYgYSBwYXJ0aWN1bGFyIHZhcmlhbnQsIGxpa2UgYGR3eGdtYWMyYCwgZG9lc24mIzM5O3QgaGF2ZSBgdHhfZG1hX3N0b3BwZWRgLCBpdCBzdGlsbCBleGVjdXRlcyB0aGUgcmVzdCBvZiBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgdG8gdGhlIERNQSBoYW5kbGluZyBhbmQgTUFDIGRpc2FibGUgbG9naWMuIFByZXZpb3VzbHkgaXQgd2FzIGhhbmRsZWQgZGlmZmVyZW50bHk7IG5vdyBpdCYjMzk7czogc3RvcCBUWCBETUEsIGRpc2FibGUgTUFDLCBzdG9wIFJYIERNQS4gVGhpcyBvcmRlciBpcyBhIGNydWNpYWwgc2hpZnQuCgpUaGlzIGFmZmVjdHMgKmFsbCogYHN0bW1hY2AgZGV2aWNlcy4gVGhhdCBpbmNsdWRlcyB0aGUgYHN1bjhpLWVtYWNgLCB3aGljaCBpcywgY29udmVuaWVudGx5LCBlbXVsYXRlZCBpbiBRRU1VISBUaGF0IG1ha2VzIGl0IGluY3JlZGlibHkgdmFsdWFibGUgZm9yIGZ1enppbmcuIFRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHdvcnRoIG15IHRpbWUuCgpUaW1lIHRvIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbnMuIEkmIzM5O2xsIG5lZWQgYFNUTU1BQ19FVEhgLCBvZiBjb3Vyc2UuIFNpbmNlIHRoZSBgc3VuOGktZW1hY2AgaXMgaW4gUUVNVSwgSSYjMzk7bGwgZGVmaW5pdGVseSBlbmFibGUgYERXTUFDX1NVTjhJYC4gTWlnaHQgYXMgd2VsbCBlbmFibGUgYERXTUFDX0dFTkVSSUNgIHRvbywgZm9yIGdvb2QgbWVhc3VyZS4gQW5kIG9mIGNvdXJzZSwgYFNUTU1BQ19QQ0lgIHRvIGNvdmVyIHRoZSBQQ0kgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX1BDSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTU5MgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIHRoZSBleHBlcnQgYW5kIGNvbnNpZGVyaW5nIGhvdyBJJiMzOTtkIGFwcHJvYWNoIGl0OgoKKipDaGVja2luZyBgRFdNQUNfR0VORVJJQ2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiAmIzM0O0xldCYjMzk7cyBjaGVjayBgRFdNQUNfR0VORVJJQ2AmIzM0OyDigJMgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGludGVybmFsIHByb2Nlc3Mga2lja3Mgb2ZmIHdpdGggYSBxdWljayBtZW50YWwgc2Nhbi4gSSYjMzk7bSBpbW1lZGlhdGVseSB0aGlua2luZywgJiMzNDtPa2F5LCBgRFdNQUNfR0VORVJJQ2AuIFRoYXQgbGlrZWx5IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBnZW5lcmljIERhdGEgV2FyZWhvdXNlIE1hbmFnZW1lbnQgQWNjZXNzIENvbnRyb2wgKERXTUFDKSBzZXR1cC4gT3IgcGVyaGFwcyBhIG1hY3JvIHRoYXQgd291bGQgcGVyZm9ybSB0aGUgZ2VuZXJpYyB3b3JrJiMzNDsKCkkmIzM5O20gcHJvYmFibHkgYXNzZXNzaW5nIHRoZSBjb250ZXh0LiBXaGF0IHByb2JsZW0gYXJlIHdlIHRyeWluZyB0byBzb2x2ZT8gV2h5IGFyZSB3ZSBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCAqdGhpcyogZWxlbWVudD8gSXMgdGhlcmUgYSByZXBvcnRlZCBlcnJvcj8gT3IgYW0gSSBqdXN0IGRvaW5nIGEgcm91dGluZSBjaGVjaz8gJiMzNDtHZW5lcmljJiMzNDsgY291bGQgc2lnbmlmeSBhIGJhc2UgbGV2ZWwsIGEgZGVmYXVsdCBzZXR0aW5nLCBvciBhIGJyb2FkIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSB1c2UtY2FzZSBmb3IgdGhlIHRlcm0uCgpUaGUgbmV4dCB0aGluZyBJJiMzOTtkIGRvIGlzIGxpa2VseSBwdWxsIHVwIGRvY3VtZW50YXRpb24gaWYgSSBoYXZlIGl0IGF2YWlsYWJsZS4gT3IgSSB3b3VsZCBvcGVuIHVwIG15IElERSBhbmQgc3RhcnQgc2VhcmNoaW5nIHRocm91Z2ggdGhlIGNvZGUgYmFzZS4gSSB3aWxsIGJlIGxvb2tpbmcgZm9yOgoKKiAgICoqRGVmaW5pdGlvbioqOiBXaGVyZSBpcyB0aGlzIHZhcmlhYmxlL2Z1bmN0aW9uL21vZHVsZSBkZWZpbmVkPyBXaGF0IGV4YWN0bHkgZG9lcyBpdCByZXByZXNlbnQ/IFdoYXQmIzM5O3MgdGhlIGltcGxlbWVudGF0aW9uPwoqICAgKipEZXBlbmRlbmNpZXMqKjogV2hhdCBvdGhlciBlbGVtZW50cyByZWx5IG9uIGBEV01BQ19HRU5FUklDYD8gQXJlIHRoZXJlIHJlbGF0ZWQgY29tcG9uZW50cyBvciB1cHN0cmVhbS9kb3duc3RyZWFtIGRlcGVuZGVuY2llcz8gSWYgdGhpcyBmYWlscywgd2hhdCBvdGhlciBzeXN0ZW1zIGNvdWxkIGJlIGltcGFjdGVkPwoqICAgKipDb25maWd1cmF0aW9uKio6IERvZXMgYERXTUFDX0dFTkVSSUNgIGhhdmUgYXNzb2NpYXRlZCBwYXJhbWV0ZXJzIG9yIHNldHRpbmdzPyBBcmUgdGhlcmUgYW55IGRlZmF1bHQgdmFsdWVzIHRoYXQgbWlnaHQgYmUgY3J1Y2lhbD8KKiAgICoqRXJyb3IgSGFuZGxpbmcqKjogSXMgdGhlcmUgYW55IGV4Y2VwdGlvbiBoYW5kbGluZyBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGlzPyBXaGF0IGhhcHBlbnMgaWYgdGhpcyBmYWlscyBvciByZXR1cm5zIGFuIHVuZXhwZWN0ZWQgcmVzdWx0PyBBcmUgdGhlcmUgYW55IGxvZ3M/CiogICAqKlNlY3VyaXR5IENvbnRleHQqKjogSG93IGRvZXMgdGhlIERXTUFDIHN5c3RlbSBpbnRlcmFjdCB3aXRoIHNlY3VyaXR5IHByb3RvY29scyBhbmQgbWVhc3VyZXM/CgpUaGUgb2JqZWN0aXZlIGhlcmUgaXMgc2ltcGxlOiB0byBncmFzcCB0aGUgcHVycG9zZSwgZnVuY3Rpb25hbGl0eSwgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhpcyBwaWVjZS4gVWx0aW1hdGVseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgc3lzdGVtIGFuZCBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgYmVoYXZpbmcgYXMgZXhwZWN0ZWQgb3IgaWYgdGhlcmUmIzM5O3MgYW4gYXJlYSB0aGF0IG5lZWRzIG15IGZvY3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFdNQUNfR0VORVJJQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00ND1jb25maWcgRFdNQUNfRFdDX1FPU19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo1Mjpjb25maWcgRFdNQUNfR0VORVJJQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjIzMgoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQ2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBTVE1NQUMgRHJpdmVyIFRlYXJkb3duKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbnMgdGhhdCBuZWVkIGVuYWJsaW5nOiBgU1RNTUFDX0VUSGAsIGBEV01BQ19TVU44SWAsIGBEV01BQ19HRU5FUklDYCwgYW5kIGBTVE1NQUNfUENJYC4gTm90aGluZyB0b28gc3VycHJpc2luZyB0aGVyZTsgaXQmIzM5O3MgdGhlIHVzdWFsIHN1c3BlY3RzIHdoZW4gd29ya2luZyB3aXRoIHRoaXMgZHJpdmVyLgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydDogYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAuIEkgcmVtZW1iZXIgdGhhdCBmdW5jdGlvbi4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYSBmZXcga2V5IHBsYWNlczogYHN0bW1hY19yZWxlYXNlYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBhbmQgYHN0bW1hY19zdXNwZW5kYC4gT2theSwgdGltZSB0byBsaXN0IG15IGZvY2FsIHBvaW50czoKCiogICBgc3RtbWFjX3JlbGVhc2VgCiogICBgc3RtbWFjX3hkcF9yZWxlYXNlYAoqICAgYHN0bW1hY194ZHBfb3BlbmAKKiAgIGBzdG1tYWNfc3VzcGVuZGAKKiAgIGBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZGAKKiAgIGBkd3hnbWFjMl90eF9tdGxfZHJhaW5gCiogICBgZHd4Z21hYzJfcnhfbXRsX2RyYWluYAoqICAgYGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkYAoKQWxyaWdodCwgYHN0bW1hY19yZWxlYXNlYCBpcyB0aGUgYG5kb19zdG9wYCBjYWxsYmFjay4gVGhhdCBtYWtlcyBpdCBhIGhpZ2gtcHJpb3JpdHkgdGFyZ2V0IGZvciBhbmFseXNpcywgZ2l2ZW4gaXRzIHJvbGUgaW4gc2h1dHRpbmcgdGhpbmdzIGRvd24uIGBzdG1tYWNfeGRwX29wZW5gIGFuZCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhcmUgY2xlYXJseSBYRFAtcmVsYXRlZCwgYW5kIGBzdG1tYWNfc3VzcGVuZGAgaGFuZGxlcyB0aGUgc3lzdGVtIHN1c3BlbmQuIFRoZW4gdGhlcmUgYXJlIHRoZSBuZXcgZnVuY3Rpb25zIHdpdGggdGhlICYjMzQ7ZHd4Z21hYzImIzM0OyBwcmVmaXgsIGFkZGVkIGJ5IHRoZSBwYXRjaC4KCk5vdywgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayBob3cgYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAgd29ya3MuIElzIGl0IHN0YXRpYyBhbmQgbGlrZWx5IHRvIGJlIGlubGluZWQ/IEl0JiMzOTtzIHN0YXRpYywgd2hpY2ggaXMgZ29vZC4gSG93ZXZlciwgaXQmIzM5O3MgcHJvYmFibHkgcHJldHR5IGxhcmdlLCBzbyBpbmxpbmluZyBpcyB1bmxpa2VseS4gU28gSSYjMzk7bGwgZm9jdXMgb24gdGhlIGNhbGxlcnMgaW5zdGVhZC4gSXQmIzM5O3MgY2FsbGVkIGJ5IGBfX3N0bW1hY19yZWxlYXNlYCwgd2hpY2ggaXMgc3RhdGljLCBhbmQgaW4gdHVybiB1c2VkIGJ5IGBzdG1tYWNfcmVsZWFzZWAsIGBzdG1tYWNfY2hhbmdlX210dWAsIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AsIGFuZCBgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1gLiBIYW5nIG9uLi4uIGBfX3N0bW1hY19yZWxlYXNlYCBpcyAqaXRzZWxmKiBjYWxsZWQgYnkgYHN0bW1hY19yZWxlYXNlYC4gT2theSwgSSYjMzk7bGwgc3RpY2sgd2l0aCBgc3RtbWFjX3JlbGVhc2VgIGFzIG15IHByaW1hcnkgZm9jdXMuCgpPaCwgYW5kIHdhaXQsIGBzdG1tYWNfeGRwX29wZW5gIGFuZCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhcmUgbm90IHN0YXRpYyEgVGhhdCBtaWdodCBiZSBpbXBvcnRhbnQgbGF0ZXIsIGZvciBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfeGRwX29wZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTEwMj1pbnQgc3RtbWFjX3hkcF9zZXRfcHJvZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTM0LVx0aWYgKGlmX3J1bm5pbmcgXHUwMDI2XHUwMDI2IG5lZWRfdXBkYXRlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjEzNTpcdFx0c3RtbWFjX3hkcF9vcGVuKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTM2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzUxOAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIE1vZHVsZSBJbml0aWFsaXphdGlvbiAtIEEgUXVpY2sgUmVmcmVzaGVyKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgU1RNTUFDIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIFhEUCBpbXBsZW1lbnRhdGlvbiwgYW5kIEkmIzM5O20gYSBiaXQgc3VycHJpc2VkLiBNeSBpbml0aWFsIGV4cGVjdGF0aW9uIHdhcyB0aGF0IHRoZSBYRFAtcmVsYXRlZCBpbml0aWFsaXphdGlvbiB3b3VsZCBiZSB0dWNrZWQgYXdheSBpbiBpdHMgb3duIGRlZGljYXRlZCBzb3VyY2UgZmlsZSwgeW91IGtub3csIGZvciBiZXR0ZXIgbW9kdWxhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LiBCdXQgaGFuZyBvbi4uLiBgc3RtbWFjX3hkcF9vcGVuYC4uLiB0aGF0JiMzOTtzIGFjdHVhbGx5ICppbiogYHN0bW1hY19tYWluLmNgPyBJbnRlcmVzdGluZy4gSSB3b3VsZCBoYXZlIGV4cGVjdGVkIGEgbW9yZSBtb2R1bGFyIHN0cnVjdHVyZSwgcGVyaGFwcyBzb21ldGhpbmcgbGlrZSBgc3RtbWFjX3hkcC5jYC4gSXQmIzM5O3Mgbm90IGluaGVyZW50bHkgYmFkLCBidXQgaXQgZG9lcyBtYWtlIG1lIHdvbmRlciBhYm91dCB0aGUgb3ZlcmFsbCBkZXNpZ24gY2hvaWNlcywgdGhlIGhpc3RvcmljYWwgY29udGV4dCwgYW5kIHBvdGVudGlhbCBmdXR1cmUgbWFpbnRhaW5hYmlsaXR5LCBhbmQgaXQgd2lsbCB0YWtlIHNvbWUgdGltZSB0byByZXZpZXcuIExldCBtZSByZS1leGFtaW5lIHRoZSBmaWxlIHN0cnVjdHVyZSBhZ2Fpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxNDE9dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxNzE6aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTcyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM5NDcKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgU1RNMzJNQUMgRHJpdmVyIFN0YXRpYyBEZWNsYXJhdGlvbnMqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgY29uY2VybiB3YXMgd2hldGhlciB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIHdlcmUgZGVjbGFyZWQgd2l0aGluIGBzdG1tYWNfbWFpbi5jYCBhbmQgd2VyZSBhbHNvIHN0YXRpYy4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhleSAqYXJlKiBsb2NhdGVkIGluIGBzdG1tYWNfbWFpbi5jYCwgYW5kIGltcG9ydGFudGx5LCB0aGV5JiMzOTtyZSAqbm90KiBzdGF0aWMuIFRoaXMgaGFzIGltcGxpY2F0aW9ucyBmb3IgcG90ZW50aWFsIHZpc2liaWxpdHkgYW5kIGxpbmtpbmcsIHdoaWNoIGFsaWducyB3aXRoIGhvdyBJJiMzOTtkIGV4cGVjdCB0aGlzIGRyaXZlciB0byBiZSBzdHJ1Y3R1cmVkLiBHaXZlbiB0aGlzIGluaXRpYWwgZmluZGluZywgaXQgbWFrZXMgc2Vuc2UgdG8gY29uZmlybSB3aGV0aGVyIGBzdG1tYWNfc3VzcGVuZGAgKmlzKiBkZWNsYXJlZCBzdGF0aWMsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXImIzM5O3Mgc3RhdGUgYW5kIGNvbnRleHQgYXJlIG1hbmFnZWQgZHVyaW5nIHN5c3RlbSBzdXNwZW5kIG9wZXJhdGlvbnMuIFRoYXQgd2lsbCBkZXRlcm1pbmUgd2hldGhlciB0aGUgc3VzcGVuZCBmdW5jdGlvbiBpcyBhdmFpbGFibGUgdG8gb3RoZXIgbW9kdWxlcyBvciBpcyBpbnRlcm5hbCB0byB0aGUgYHN0bW1hY19tYWluLmNgIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19zdXNwZW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyMDk9RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9yZW1vdmUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIxMS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODIxMjogKiBzdG1tYWNfc3VzcGVuZCAtIHN1c3BlbmQgY2FsbGJhY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIxMy0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIxNy0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODIxODppbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjE5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyNjctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MjY4OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19zdXNwZW5kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI2OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgzOTk9RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04NDAxLS8qIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIEVYUE9SVF9HUExfU0lNUExFX0RFVl9QTV9PUFMoKSB3aGVuIENPTkZJR19QTT1uICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjg0MDI6REVGSU5FX1NJTVBMRV9ERVZfUE1fT1BTKHN0bW1hY19zaW1wbGVfcG1fb3BzLCBzdG1tYWNfc3VzcGVuZCwgc3RtbWFjX3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTg0MDMtRVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3NpbXBsZV9wbV9vcHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDc4NgoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgTW9kdWxlJiMzOTtzIFN1c3BlbnNpb24gYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBzdG1tYWNfc3VzcGVuZGAgKmlzKiBpbmRlZWQgZXhwb3J0ZWQsIHRoYXQmIzM5O3MgZ29vZC4gTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhpcyBzdXNwZW5zaW9uIHByb2Nlc3MuIEkmIzM5O20gc2VlaW5nOgoKKiAgIGBzdG1tYWNfcmVsZWFzZWAKKiAgIGBzdG1tYWNfeGRwX3JlbGVhc2VgCiogICBgc3RtbWFjX3hkcF9vcGVuYAoqICAgYHN0bW1hY19zdXNwZW5kYCAtIG9idmlvdXNseSBhIGNlbnRyYWwgcGFydCBvZiB0aGlzLgoqICAgYGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkYAoqICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmAKKiAgIGBkd3hnbWFjMl9yeF9tdGxfZHJhaW5gCiogICBgZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRgCgpJJiMzOTttIG1ha2luZyBhIG1lbnRhbCBub3RlIG9mIGFsbCB0aGVzZSBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5IGFyZSBhbGwgaW1wb3J0YW50IHRvIHRoZSBwcm9jZXNzLgoKTm93LCBJJiMzOTttIHRoaW5raW5nLCBhcmUgdGhlcmUgYW55ICpvdGhlciogZnVuY3Rpb25zIGluIHBsYXkgdGhhdCBtaWdodCBiZSBpbnZvbHZlZCBvciBoYXZlIGJlZW4gbW9kaWZpZWQ/IEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrLgoKTXkgc3VzcGljaW9uIGlzIHRoYXQgdGhlcmUgbWlnaHQgYmUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gRE1BIGNvbnRyb2wuIExldCYjMzk7cyBkZWx2ZSBpbnRvIGBkd3hnbWFjMl9kbWEuY2AuIFllcywgaGVyZSB3ZSBnbzogSSBzZWUgYGR3eGdtYWMyX2RtYV9zdGFydF90eGAsIGBkd3hnbWFjMl9kbWFfc3RvcF90eGAsIGBkd3hnbWFjMl9kbWFfc3RhcnRfcnhgLCBhbmQgYGR3eGdtYWMyX2RtYV9zdG9wX3J4YC4gVGhlc2UgRE1BIGZ1bmN0aW9ucyBhcmUgZGVmaW5pdGVseSByZWxldmFudCB0byBzdXNwZW5zaW9uIGFuZCByZXN1bXB0aW9uLiBTbywgdGhlIG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGNvbmZpcm0gaWYgdGhlc2Ugc3BlY2lmaWMgRE1BIGZ1bmN0aW9ucyBhcmUgc3RhdGljLCB0byBkZXRlcm1pbmUgdGhlaXIgc2NvcGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3eGdtYWMyX2RtYV9zdGFydF90eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTIzNj1zdGF0aWMgdm9pZCBkd3hnbWFjMl9kaXNhYmxlX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTI0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjI1MDpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMjUxLVx0XHRcdFx0ICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9NjUxPWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNjYyLVx0LmRpc2FibGVfZG1hX2lycSA9IGR3eGdtYWMyX2Rpc2FibGVfZG1hX2lycSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjY2MzpcdC5zdGFydF90eCA9IGR3eGdtYWMyX2RtYV9zdGFydF90eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTY2NC1cdC5zdG9wX3R4ID0gZHd4Z21hYzJfZG1hX3N0b3BfdHgsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1ODAzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgVGhpbmtpbmcgb24gRE1BIE9wZXJhdGlvbnMgYW5kIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIERNQSBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgdGhvc2UgYXNzb2NpYXRlZCB3aXRoIGBkd3hnbWFjMjEwX2RtYV9vcHNgLiBUaGV5JiMzOTtyZSBzdGF0aWMsIGJ1dCB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcywgc28gdGhleSYjMzk7cmUgZGVmaW5pdGVseSBub3QgaW5saW5lZC4gVGhhdCBtZWFucyB3ZSBjYW4gc2FmZWx5IGFkZCB0aGVtIHRvIHRoZSBmb2N1cyBzeW1ib2xzLiBJJiMzOTtsbCBhZGQgYGR3eGdtYWMyX2RtYV9zdGFydF90eGAsIGBkd3hnbWFjMl9kbWFfc3RvcF90eGAsIGBkd3hnbWFjMl9kbWFfc3RhcnRfcnhgLCBhbmQgYGR3eGdtYWMyX2RtYV9zdG9wX3J4YCB0byB0aGUgbGlzdC4KCk5vdywgbGV0IG1lIGdvIGJhY2sgYW5kIHJldmlldyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYWdhaW46IGBTVE1NQUNfRVRIYCwgYERXTUFDX1NVTjhJYCwgYERXTUFDX0dFTkVSSUNgLCBhbmQgYFNUTU1BQ19QQ0lgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBjb3ZlcmVkLgoKSG1tLCB3YWl0IGEgbWludXRlLCBkb2VzIGBEV01BQ19TVU44SWAgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzPyBMZXQgbWUgc2VlLi4uIHllcywgaXQgZGVwZW5kcyBvbiBgT0YgJmFtcDsmYW1wOyAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpYC4gIFN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhpcy4gSWYgd2UganVzdCBwcm92aWRlIGBEV01BQ19TVU44SWAsIGl0JiMzOTtsbCBlbmFibGUgaXQgaWYgdGhvc2UgZGVwZW5kZW5jaWVzIGFyZSBtZXQuIEkgY291bGQgYWRkIGBDT01QSUxFX1RFU1RgIGV4cGxpY2l0bHkgdG8gYmUgc3VyZSwgYnV0IFN5emthbGxlciB1c3VhbGx5IGVuYWJsZXMgdGhhdCBhbnl3YXkuIE5vIG5lZWQgZm9yIHRoYXQuIEFscmlnaHQsIGxldCYjMzk7cyBhbHNvIGNoZWNrIGBTVE1NQUNfUENJYCYjMzk7cyBkZXBlbmRlbmNpZXMuIEFoLCBpdCBkZXBlbmRzIG9uIGBQQ0kgJmFtcDsmYW1wOyBTVE1NQUNfRVRIYC4gT2theSwgbm90ZWQuIEFuZCBgRFdNQUNfR0VORVJJQ2A/ICBUaGF0IGRlcGVuZHMgb24gYFNUTU1BQ19FVEhgLiBHb29kLCBzbyB3ZSYjMzk7cmUgc2V0LgoKU28sIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgY29uZmlybWVkIGFzOiBgU1RNTUFDX0VUSGAsIGBEV01BQ19TVU44SWAsIGBEV01BQ19HRU5FUklDYCwgYFNUTU1BQ19QQ0lgLgoKQWxyaWdodCwgbGV0JiMzOTtzIGdvIGJhY2sgdG8gdGhvc2UgZm9jdXMgc3ltYm9scy4gSSYjMzk7dmUgZ290OiBgc3RtbWFjX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfb3BlbmAsIGBzdG1tYWNfc3VzcGVuZGAsIGBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZGAsIGBkd3hnbWFjMl90eF9tdGxfZHJhaW5gLCBgZHd4Z21hYzJfcnhfbXRsX2RyYWluYCwgYGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkYCwgYW5kIHRoZW4gdGhlIG5ldyBvbmVzIEkgYWRkZWQ6IGBkd3hnbWFjMl9kbWFfc3RhcnRfdHhgLCBgZHd4Z21hYzJfZG1hX3N0b3BfdHhgLCBgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4YCwgYGR3eGdtYWMyX2RtYV9zdG9wX3J4YC4KCldhaXQgYSBzZWNvbmQsIGBzdG1tYWNfcmVsZWFzZWAgaXMgZXNzZW50aWFsbHkgYG5kb19zdG9wYCwgd2hpY2ggaXMgYSBjb21tb24gcGF0aC4gVGhlIG5vdGVzIHNheSB0byAmIzM0O2F2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zJiMzNDsuIElzIGBzdG1tYWNfcmVsZWFzZWAgYSBob3QtcGF0aD8gTm8sIGl0JiMzOTtzIG9ubHkgY2FsbGVkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBicm91Z2h0IGRvd24sIG5vdCBkdXJpbmcgcmVndWxhciBvcGVyYXRpb24uIFNpbWlsYXJseSwgYHN0bW1hY194ZHBfb3BlbmAgaXMgbm90IGEgaG90LXBhdGggLSBvbmx5IGNhbGxlZCB3aGVuIGF0dGFjaGluZyBhbiBYRFAgcHJvZ3JhbS4gV2hhdCBhYm91dCBgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4YD8gIFllcywgdGhpcyBvbmUgaXMgdXNlZCB0byBzdGFydCB0aGUgVFggRE1BLCB0aGF0IGNvdWxkIGJlIG1vcmUgaW50ZXJlc3RpbmcuIExldCYjMzk7cyBzZWUuLi53aGVuIGlzIGl0IGFjdHVhbGx5IGNhbGxlZD8gTmVlZCB0byBjaGVjayB3aGVyZSB0aGUgYHN0YXJ0X3R4YCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YXJ0X3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0zNjI9c3RhdGljIHZvaWQgc3VuOGlfZHdtYWNfZGlzYWJsZV9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTM3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6Mzc2OnN0YXRpYyB2b2lkIHN1bjhpX2R3bWFjX2RtYV9zdGFydF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTM3Ny1cdFx0XHRcdCAgICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9NTU0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgc3VuOGlfZHdtYWNfZG1hX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTU2NC1cdC5kaXNhYmxlX2RtYV9pcnEgPSBzdW44aV9kd21hY19kaXNhYmxlX2RtYV9pcnEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjU2NTpcdC5zdGFydF90eCA9IHN1bjhpX2R3bWFjX2RtYV9zdGFydF90eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtNTY2LVx0LnN0b3BfdHggPSBzdW44aV9kd21hY19kbWFfc3RvcF90eCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmM9MjUzPWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd21hYzEwMDBfZG1hX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmMtMjY1LVx0LmRpc2FibGVfZG1hX2lycSA9IGR3bWFjX2Rpc2FibGVfZG1hX2lycSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYzoyNjY6XHQuc3RhcnRfdHggPSBkd21hY19kbWFfc3RhcnRfdHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmMtMjY3LVx0LnN0b3BfdHggPSBkd21hY19kbWFfc3RvcF90eCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9kbWEuYz0xMDk9Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3bWFjMTAwX2RtYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDBfZG1hLmMtMTE5LVx0LmRpc2FibGVfZG1hX2lycSA9IGR3bWFjX2Rpc2FibGVfZG1hX2lycSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2RtYS5jOjEyMDpcdC5zdGFydF90eCA9IGR3bWFjX2RtYV9zdGFydF90eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2RtYS5jLTEyMS1cdC5zdG9wX3R4ID0gZHdtYWNfZG1hX3N0b3BfdHgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jPTU0Nj1jb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHdtYWM0X2RtYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jLTU1Ny1cdC5kaXNhYmxlX2RtYV9pcnEgPSBkd21hYzRfZGlzYWJsZV9kbWFfaXJxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jOjU1ODpcdC5zdGFydF90eCA9IGR3bWFjNF9kbWFfc3RhcnRfdHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMtNTU5LVx0LnN0b3BfdHggPSBkd21hYzRfZG1hX3N0b3BfdHgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jPTU3NT1jb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHdtYWM0MTBfZG1hX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMtNTg2LVx0LmRpc2FibGVfZG1hX2lycSA9IGR3bWFjNF9kaXNhYmxlX2RtYV9pcnEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM6NTg3Olx0LnN0YXJ0X3R4ID0gZHdtYWM0X2RtYV9zdGFydF90eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy01ODgtXHQuc3RvcF90eCA9IGR3bWFjNF9kbWFfc3RvcF90eCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmg9MTc5PXZvaWQgZHdtYWM0X2Rpc2FibGVfZG1hX2lycShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5oLTE4MC1cdFx0XHQgICAgdTMyIGNoYW4sIGJvb2wgcngsIGJvb2wgdHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5oOjE4MTp2b2lkIGR3bWFjNF9kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuaC0xODItXHRcdFx0IHUzMiBjaGFuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfbGliLmM9Mzc9dm9pZCBkd21hYzRfc2V0X3R4X3RhaWxfcHRyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jOjQ1OnZvaWQgZHdtYWM0X2RtYV9zdGFydF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jLTQ2LVx0XHRcdCB1MzIgY2hhbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hY19kbWEuaD0xNDk9dm9pZCBkd21hY19kaXNhYmxlX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjX2RtYS5oLTE1MC1cdFx0XHQgICB1MzIgY2hhbiwgYm9vbCByeCwgYm9vbCB0eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hY19kbWEuaDoxNTE6dm9pZCBkd21hY19kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjX2RtYS5oLTE1Mi1cdFx0XHR1MzIgY2hhbik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWNfbGliLmM9NTQ9dm9pZCBkd21hY19kaXNhYmxlX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hY19saWIuYy02Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjX2xpYi5jOjY3OnZvaWQgZHdtYWNfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hY19saWIuYy02OC1cdFx0XHR1MzIgY2hhbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0yMzY9c3RhdGljIHZvaWQgZHd4Z21hYzJfZGlzYWJsZV9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0yNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoyNTA6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTI1MS1cdFx0XHRcdCAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTY1MT1jb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTY2Mi1cdC5kaXNhYmxlX2RtYV9pcnEgPSBkd3hnbWFjMl9kaXNhYmxlX2RtYV9pcnEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo2NjM6XHQuc3RhcnRfdHggPSBkd3hnbWFjMl9kbWFfc3RhcnRfdHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy02NjQtXHQuc3RvcF90eCA9IGR3eGdtYWMyX2RtYV9zdG9wX3R4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaD0xNjc9c3RydWN0IHN0bW1hY19kbWFfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtMTk3LVx0XHRcdFx0dTMyIGNoYW4sIGJvb2wgcngsIGJvb2wgdHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjE5ODpcdHZvaWQgKCpzdGFydF90eCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaC0xOTktXHRcdFx0IHUzMiBjaGFuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtMjY4LVx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGRpc2FibGVfZG1hX2lycSwgX19wcml2LCBfX2FyZ3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6MjY5OiNkZWZpbmUgc3RtbWFjX3N0YXJ0X3R4KF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oOjI3MDpcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBzdGFydF90eCwgX19wcml2LCBfX2FyZ3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtMjcxLSNkZWZpbmUgc3RtbWFjX3N0b3BfdHgoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNDcyPXN0YXRpYyB2b2lkIHN0bW1hY19zdGFydF9yeF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgY2hhbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0NzgtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI0Nzk6ICogc3RtbWFjX3N0YXJ0X3R4X2RtYSAtIHN0YXJ0IFRYIERNQSBjaGFubmVsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0ODAtICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ4NC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjQ4NTpzdGF0aWMgdm9pZCBzdG1tYWNfc3RhcnRfdHhfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGNoYW4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0ODYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNDg3LVx0bmV0ZGV2X2RiZyhwcml2LVx1MDAzZWRldiwgXCYjMzQ7RE1BIFRYIHByb2Nlc3NlcyBzdGFydGVkIGluIGNoYW5uZWwgJWRcXG5cJiMzNDssIGNoYW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNDg4Olx0c3RtbWFjX3N0YXJ0X3R4KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBjaGFuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ4OS19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yNTQwPXN0YXRpYyB2b2lkIHN0bW1hY19zdGFydF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI1NDktXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI1NTA6XHRcdHN0bW1hY19zdGFydF90eF9kbWEocHJpdiwgY2hhbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI1NTEtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzA2MT1zdGF0aWMgdm9pZCBzdG1tYWNfdHhfZXJyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGNoYW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMDcyLVx0XHRcdCAgICB0eF9xLVx1MDAzZWRtYV90eF9waHksIGNoYW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozMDczOlx0c3RtbWFjX3N0YXJ0X3R4X2RtYShwcml2LCBjaGFuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzA3NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxMDM9dm9pZCBzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzEzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzEzNDpcdHN0bW1hY19zdGFydF90eF9kbWEocHJpdiwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTM1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDc1OQoJCQkJCQkJb3V0cHV0OiAzMjYKCQkJCQkJCXRob3VnaHRzOiA1MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgRm9jdXMgU3ltYm9scyBhbmQgUGF0Y2ggU2NvcGUqKgoKT2theSwgbGV0JiMzOTtzIHNvbGlkaWZ5IHRoaXMgYW5hbHlzaXMuIEl0IGxvb2tzIGxpa2UgYHN0bW1hY19zdGFydF90eF9kbWFgIGlzIGNhbGxlZCBmcm9tIGEgZmV3IHBsYWNlcywgYnV0IG5vdCBvbiAqZXZlcnkqIHBhY2tldCB0cmFuc21pc3Npb24uIEl0JiMzOTtzIG1vcmUgb2YgYSBzZXR1cCwgZXJyb3IgaGFuZGxpbmcsIGFuZCBxdWV1ZSBlbmFibGUgZnVuY3Rpb24uIFNvLCBgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4YCBpc24mIzM5O3QgYSBob3QgcGF0aCDigJMgd2hpY2ggYWN0dWFsbHkgbWFrZXMgaXQgYSAqZ29vZCogc3ltYm9sIHRvIGZvY3VzIG9uLiBJdCYjMzk7cyBpbnZva2VkIGluIHRoZXNlIGxlc3MtZnJlcXVlbnQsIHBvdGVudGlhbGx5IG1vcmUgY29tcGxleCBzY2VuYXJpb3MuCgpMZXQmIzM5O3MgbmFpbCBkb3duIHRoZXNlIGZvY3VzIHN5bWJvbHMuIEkgaGF2ZToKCiogICBgc3RtbWFjX3JlbGVhc2VgIChJJiMzOTtsbCBrZWVwIHRoaXMgYXMgaXQmIzM5O3MgdGhlIG1haW4gdGVhcmRvd24gZW50cnkgcG9pbnQgLSBhbHRob3VnaCBpdCBpcyBhIGJpdCBnZW5lcmljLikKKiAgIGBzdG1tYWNfeGRwX3JlbGVhc2VgCiogICBgc3RtbWFjX3hkcF9vcGVuYAoqICAgYHN0bW1hY19zdXNwZW5kYAoqICAgYGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkYAoqICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmAKKiAgIGBkd3hnbWFjMl9yeF9tdGxfZHJhaW5gCiogICBgZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRgCiogICBgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4YAoqICAgYGR3eGdtYWMyX2RtYV9zdG9wX3R4YAoqICAgYGR3eGdtYWMyX2RtYV9zdGFydF9yeGAKKiAgIGBkd3hnbWFjMl9kbWFfc3RvcF9yeGAKCk5vdywgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIHBsYXk6IGBTVE1NQUNfRVRIYCwgYERXTUFDX1NVTjhJYCwgYERXTUFDX0dFTkVSSUNgLCBhbmQgYFNUTU1BQ19QQ0lgLgoKVGhlIHBhdGNoIG1vZGlmaWVzIGBkd3hnbWFjMl9kbWEuY2AgYW5kIGBzdG1tYWNfbWFpbi5jYC4gVGhlIGNvcmUgcmVhc29uaW5nIGJlaGluZCB0aGUgY2hhbmdlcyBpcyBhZGRpbmcgYW4gb3JkZXJlZCB0ZWFyZG93biBzZXF1ZW5jZSB0byB0aGUgc3RtbWFjIGRyaXZlci4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgaW5jbHVkaW5nIHBvbGxpbmcgbG9vcHMgdG8gZW5zdXJlIERNQSBhbmQgTVRMIHF1ZXVlcyBhcmUgZHJhaW5lZCBiZWZvcmUgZGlzYWJsaW5nIHRoZSBNQUMsIHdoaWNoIGFmZmVjdHMgYWxsIHN0bW1hYyB2YXJpYW50cywgZXZlbiB0aG9zZSBlbXVsYXRlZCBpbiBRRU1VLiBUaGVzZSBjaGFuZ2VzIGltcGFjdCBYRFAgc2V0dXAvdGVhcmRvd24gYW5kIHRoZSBzdXNwZW5kIGNhbGxiYWNrcy4gQ3J1Y2lhbGx5LCB0aGVzZSBtb2RpZmljYXRpb25zIGFyZSB0cmlnZ2VyZWQgYnkgbm9ybWFsIGludGVyZmFjZSBzdGF0ZSBjaGFuZ2VzIChsaWtlIGBpcCBsaW5rIHNldCBkZXYgZXRoMCBkb3duYCkgYW5kIFhEUCBwcm9ncmFtIGF0dGFjaG1lbnQuIFRoZXJlZm9yZSwgdGhleSBzZWVtIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBhbmQgd29ydGggZnV6emluZy4KCkFscmlnaHQsIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtEV01BQ19TVU44SSYjMzQ7LAogICAgJiMzNDtEV01BQ19HRU5FUklDJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDssCiAgICAmIzM0O3N0bW1hY19zdXNwZW5kJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX3R4X2RtYV9zdG9wcGVkJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX3R4X210bF9kcmFpbiYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9yeF9tdGxfZHJhaW4mIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWQmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfZG1hX3N0YXJ0X3R4JiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYV9zdG9wX3R4JiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYV9zdGFydF9yeCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kbWFfc3RvcF9yeCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLCBhZGRpbmcgcG9sbGluZyBsb29wcyB0byB3YWl0IGZvciBETUEgYW5kIE1UTCBxdWV1ZXMgdG8gZHJhaW4gYmVmb3JlIGRpc2FibGluZyB0aGUgTUFDLiBUaGlzIGFmZmVjdHMgdGhlIHRlYXJkb3duIHBhdGggb2YgYWxsIHN0bW1hYyB2YXJpYW50cyAoaW5jbHVkaW5nIHRob3NlIGVtdWxhdGVkIGluIFFFTVUgbGlrZSBzdW44aS1lbWFjKSBhbmQgbW9kaWZpZXMgdGhlIFhEUCBzZXR1cC90ZWFyZG93biBhbmQgc3VzcGVuZCBjYWxsYmFja3MuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZHVyaW5nIG5vcm1hbCBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlcyAoZS5nLiwgYnJpbmdpbmcgdGhlIGludGVyZmFjZSBkb3duKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudCwgbWFraW5nIHRoZW0gZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtEV01BQ19TVU44SSYjMzQ7LAogICAgJiMzNDtEV01BQ19HRU5FUklDJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDssCiAgICAmIzM0O3N0bW1hY19zdXNwZW5kJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX3R4X2RtYV9zdG9wcGVkJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX3R4X210bF9kcmFpbiYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9yeF9tdGxfZHJhaW4mIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWQmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfZG1hX3N0YXJ0X3R4JiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYV9zdG9wX3R4JiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYV9zdGFydF9yeCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kbWFfc3RvcF9yeCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLCBhZGRpbmcgcG9sbGluZyBsb29wcyB0byB3YWl0IGZvciBETUEgYW5kIE1UTCBxdWV1ZXMgdG8gZHJhaW4gYmVmb3JlIGRpc2FibGluZyB0aGUgTUFDLiBUaGlzIGFmZmVjdHMgdGhlIHRlYXJkb3duIHBhdGggb2YgYWxsIHN0bW1hYyB2YXJpYW50cyAoaW5jbHVkaW5nIHRob3NlIGVtdWxhdGVkIGluIFFFTVUgbGlrZSBzdW44aS1lbWFjKSBhbmQgbW9kaWZpZXMgdGhlIFhEUCBzZXR1cC90ZWFyZG93biBhbmQgc3VzcGVuZCBjYWxsYmFja3MuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZHVyaW5nIG5vcm1hbCBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlcyAoZS5nLiwgYnJpbmdpbmcgdGhlIGludGVyZmFjZSBkb3duKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudCwgbWFraW5nIHRoZW0gZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBoYXJkd2FyZSBjb250cm9sIGZsb3cgZm9yIHN0b3BwaW5nIERNQSBjaGFubmVscyBhbmQgZHJhaW5pbmcgTUFDIHF1ZXVlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgYnVmZmVyIGFsbG9jYXRpb25zIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMzOTEyMDQ2ZWYwNjEzMGU4YWY0ZTM3N2EwMmQ0MWQzMjZiZTg1ZjIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAwODoxNDoyNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oCmluZGV4IDUxOTQzNzA1YTJiMDMuLjJlM2YyNjAwMGQzMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaApAQCAtMjkxLDYgJiM0MzsyOTEsMTAgQEAKICNkZWZpbmUgWEdNQUNfVFRDCQkJR0VOTUFTSyg2LCA0KQogI2RlZmluZSBYR01BQ19UWFFFTgkJCUdFTk1BU0soMywgMikKICNkZWZpbmUgWEdNQUNfVFNGCQkJQklUKDEpCiYjNDM7I2RlZmluZSBYR01BQ19NVExfVFhRX0RFQlVHKHgpCQkoMHgwMDAwMTEwOCAmIzQzOyAoMHg4MCAqICh4KSkpCiYjNDM7I2RlZmluZSBYR01BQ19UWFFTVFMJCQlCSVQoNCkKJiM0MzsjZGVmaW5lIFhHTUFDX1RSQ1NUUwkJCUdFTk1BU0soMiwgMSkKJiM0MzsjZGVmaW5lIFhHTUFDX1RSQ1NUU19SRUFECQkweDEKICNkZWZpbmUgWEdNQUNfTVRMX1RDeF9FVFNfQ09OVFJPTCh4KQkoMHgwMDAwMTExMCAmIzQzOyAoMHg4MCAqICh4KSkpCiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfUVVBTlRVTV9XRUlHSFQoeCkJKDB4MDAwMDExMTggJiM0MzsgKDB4ODAgKiAoeCkpKQogI2RlZmluZSBYR01BQ19NVExfVEN4X1NFTkRTTE9QRSh4KQkoMHgwMDAwMTExYyAmIzQzOyAoMHg4MCAqICh4KSkpCkBAIC0zMDYsNiAmIzQzOzMxMCw5IEBACiAjZGVmaW5lIFhHTUFDX0VIRkMJCQlCSVQoNykKICNkZWZpbmUgWEdNQUNfUlNGCQkJQklUKDUpCiAjZGVmaW5lIFhHTUFDX1JUQwkJCUdFTk1BU0soMSwgMCkKJiM0MzsjZGVmaW5lIFhHTUFDX01UTF9SWFFfREVCVUcoeCkJCSgweDAwMDAxMTQ4ICYjNDM7ICgweDgwICogKHgpKSkKJiM0MzsjZGVmaW5lIFhHTUFDX1BSWFEJCQlHRU5NQVNLKDI5LCAxNikKJiM0MzsjZGVmaW5lIFhHTUFDX1JYUVNUUwkJCUdFTk1BU0soNSwgNCkKICNkZWZpbmUgWEdNQUNfTVRMX1JYUV9GTE9XX0NPTlRST0woeCkJKDB4MDAwMDExNTAgJiM0MzsgKDB4ODAgKiAoeCkpKQogI2RlZmluZSBYR01BQ19SRkQJCQlHRU5NQVNLKDMxLCAxNykKICNkZWZpbmUgWEdNQUNfUkZBCQkJR0VOTUFTSygxNSwgMSkKQEAgLTM4OSw2ICYjNDM7Mzk2LDcgQEAKICNkZWZpbmUgWEdNQUNfTklTCQkJQklUKDE1KQogI2RlZmluZSBYR01BQ19BSVMJCQlCSVQoMTQpCiAjZGVmaW5lIFhHTUFDX0ZCRQkJCUJJVCgxMikKJiM0MzsjZGVmaW5lIFhHTUFDX1JQUwkJCUJJVCg4KQogI2RlZmluZSBYR01BQ19SQlUJCQlCSVQoNykKICNkZWZpbmUgWEdNQUNfUkkJCQlCSVQoNikKICNkZWZpbmUgWEdNQUNfVEJVCQkJQklUKDIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jCmluZGV4IDAzNDM3ZjFjZjNkZjMuLjhlMjdiYzU4Y2MwNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jCkBAIC00LDYgJiM0Mzs0LDcgQEAKICAqIHN0bW1hYyBYR01BQyBzdXBwb3J0LgogICovCiAKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYml0ZmllbGQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pb3BvbGwuaCZndDsKICNpbmNsdWRlICYjMzQ7c3RtbWFjLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkd3hnbWFjMi5oJiMzNDsKQEAgLTI1MSwxMyAmIzQzOzI1MiwxMiBAQCBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogewogCXUzMiB2YWx1ZTsKIAomIzQzOwkvKiBUUFMgaXMgbGF0Y2hlZCBvbmNlIHNldCwgc28gY2xlYXIgaXQgb24gZXZlcnkgVHggRE1BIHN0YXJ0LiAqLwomIzQzOwl3cml0ZWwoWEdNQUNfVFBTLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSk7CiYjNDM7CiAJdmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpOwogCXZhbHVlIHw9IFhHTUFDX1RYU1Q7CiAJd3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpOwotCi0JdmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfVFhfQ09ORklHKTsKLQl2YWx1ZSB8PSBYR01BQ19DT05GSUdfVEU7Ci0Jd3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfVFhfQ09ORklHKTsKIH0KIAogc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0b3BfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKQEAgLTI2OCwxMCAmIzQzOzI2OCw2IEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsCiAJdmFsdWUgPSByZWFkbChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpOwogCXZhbHVlICZhbXA7PSB+WEdNQUNfVFhTVDsKIAl3cml0ZWwodmFsdWUsIGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7Ci0KLQl2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19UWF9DT05GSUcpOwotCXZhbHVlICZhbXA7PSB+WEdNQUNfQ09ORklHX1RFOwotCXdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX1RYX0NPTkZJRyk7CiB9CiAKIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCkBAIC0yNzksMTMgJiM0MzsyNzUsMTIgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIHsKIAl1MzIgdmFsdWU7CiAKJiM0MzsJLyogUlBTIGlzIGxhdGNoZWQgb25jZSBzZXQsIHNvIGNsZWFyIGl0IG9uIGV2ZXJ5IFJ4IERNQSBzdGFydC4gKi8KJiM0MzsJd3JpdGVsKFhHTUFDX1JQUywgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbikpOwomIzQzOwogCXZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9SWF9DT05UUk9MKGNoYW4pKTsKIAl2YWx1ZSB8PSBYR01BQ19SWFNUOwogCXdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9DSF9SWF9DT05UUk9MKGNoYW4pKTsKLQotCXZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX1JYX0NPTkZJRyk7Ci0JdmFsdWUgfD0gWEdNQUNfQ09ORklHX1JFOwotCXdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX1JYX0NPTkZJRyk7CiB9CiAKIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsCkBAIC01ODIsNiAmIzQzOzU3Nyw3NyBAQCBzdGF0aWMgaW50IGR3eGdtYWMyX2VuYWJsZV90YnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkgICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pCiYjNDM7ewomIzQzOwl1MzIgdmFsdWU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSwgdmFsdWUsCiYjNDM7CQkJCSB2YWx1ZSAmYW1wOyBYR01BQ19UUFMsIDEwMCwgMTAwMDApOwomIzQzOwlpZiAocmV0KQomIzQzOwkJbmV0ZGV2X3dhcm4ocHJpdi0mZ3Q7ZGV2LCAmIzM0O1R4IERNQSBjaGFubmVsICV1IHN0b3AgdGltZW91dFxuJiMzNDssCiYjNDM7CQkJICAgIGNoYW4pOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGR3eGdtYWMyX3R4X210bF9kcmFpbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiYjNDM7CQkJCSB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIHF1ZXVlKQomIzQzO3sKJiM0MzsJdTMyIHZhbHVlOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwkvKiBXYWl0IHVudGlsIHRoZSBxdWV1ZSBpcyBlbXB0eSBhbmQgaXRzIHJlYWQgY29udHJvbGxlciBpcyBubyBsb25nZXIKJiM0MzsJICogcHVsbGluZyBhIGZyYW1lIG91dCB0b3dhcmRzIHRoZSBNQUMuCiYjNDM7CSAqLwomIzQzOwlyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICYjNDM7IFhHTUFDX01UTF9UWFFfREVCVUcocXVldWUpLCB2YWx1ZSwKJiM0MzsJCQkJICEodmFsdWUgJmFtcDsgWEdNQUNfVFhRU1RTKSAmYW1wOyZhbXA7CiYjNDM7CQkJCSBGSUVMRF9HRVQoWEdNQUNfVFJDU1RTLCB2YWx1ZSkgIT0KJiM0MzsJCQkJIFhHTUFDX1RSQ1NUU19SRUFELAomIzQzOwkJCQkgMTAwLCAxMDAwMCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQluZXRkZXZfd2Fybihwcml2LSZndDtkZXYsICYjMzQ7TVRMIFR4IHF1ZXVlICV1IGRyYWluIHRpbWVvdXRcbiYjMzQ7LAomIzQzOwkJCSAgICBxdWV1ZSk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgZHd4Z21hYzJfcnhfbXRsX2RyYWluKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKJiM0MzsJCQkJIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgcXVldWUpCiYjNDM7ewomIzQzOwl1MzIgdmFsdWU7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CS8qIFdhaXQgdW50aWwgbm8gcGFja2V0IGlzIGxlZnQgaW4gdGhlIHF1ZXVlIGFuZCB0aGUgcXVldWUgcmVwb3J0cwomIzQzOwkgKiBpdHNlbGYgZW1wdHkuCiYjNDM7CSAqLwomIzQzOwlyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICYjNDM7IFhHTUFDX01UTF9SWFFfREVCVUcocXVldWUpLCB2YWx1ZSwKJiM0MzsJCQkJICFGSUVMRF9HRVQoWEdNQUNfUFJYUSwgdmFsdWUpICZhbXA7JmFtcDsKJiM0MzsJCQkJICFGSUVMRF9HRVQoWEdNQUNfUlhRU1RTLCB2YWx1ZSksCiYjNDM7CQkJCSAxMDAsIDEwMDAwKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCW5ldGRldl93YXJuKHByaXYtJmd0O2RldiwgJiMzNDtNVEwgUnggcXVldWUgJXUgZHJhaW4gdGltZW91dFxuJiMzNDssCiYjNDM7CQkJICAgIHF1ZXVlKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiYjNDM7CQkJCSAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbikKJiM0Mzt7CiYjNDM7CXUzMiB2YWx1ZTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciAmIzQzOyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pLCB2YWx1ZSwKJiM0MzsJCQkJIHZhbHVlICZhbXA7IFhHTUFDX1JQUywgMTAwLCAxMDAwMCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQluZXRkZXZfd2Fybihwcml2LSZndDtkZXYsICYjMzQ7UnggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XG4mIzM0OywKJiM0MzsJCQkgICAgY2hhbik7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHsKIAkucmVzZXQgPSBkd3hnbWFjMl9kbWFfcmVzZXQsCiAJLmluaXQgPSBkd3hnbWFjMl9kbWFfaW5pdCwKQEAgLTYxMCw0ICYjNDM7Njc2LDggQEAgY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHsKIAkuc2V0X2Jmc2l6ZSA9IGR3eGdtYWMyX3NldF9iZnNpemUsCiAJLmVuYWJsZV9zcGggPSBkd3hnbWFjMl9lbmFibGVfc3BoLAogCS5lbmFibGVfdGJzID0gZHd4Z21hYzJfZW5hYmxlX3RicywKJiM0MzsJLnR4X2RtYV9zdG9wcGVkID0gZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWQsCiYjNDM7CS50eF9tdGxfZHJhaW4gPSBkd3hnbWFjMl90eF9tdGxfZHJhaW4sCiYjNDM7CS5yeF9tdGxfZHJhaW4gPSBkd3hnbWFjMl9yeF9tdGxfZHJhaW4sCiYjNDM7CS5yeF9kbWFfc3RvcHBlZCA9IGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkLAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaAppbmRleCBlNjMxN2I5NGZmZjdkLi4yM2E2OTE1YWNkZmJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oCkBAIC0yMjksNiAmIzQzOzIyOSwxNSBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgewogCQkJICAgYm9vbCBlbiwgdTMyIGNoYW4pOwogCWludCAoKmVuYWJsZV90YnMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsCiAJCQkgIGJvb2wgZW4sIHUzMiBjaGFuKTsKJiM0MzsJLyogT3JkZXJlZCBkYXRhcGF0aCB0ZWFyZG93biAqLwomIzQzOwlpbnQgKCp0eF9kbWFfc3RvcHBlZCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKJiM0MzsJCQkgICAgICB1MzIgY2hhbik7CiYjNDM7CWludCAoKnR4X210bF9kcmFpbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKJiM0MzsJCQkgICAgdTMyIHF1ZXVlKTsKJiM0MzsJaW50ICgqcnhfbXRsX2RyYWluKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLAomIzQzOwkJCSAgICB1MzIgcXVldWUpOwomIzQzOwlpbnQgKCpyeF9kbWFfc3RvcHBlZCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkciwKJiM0MzsJCQkgICAgICB1MzIgY2hhbik7CiB9OwogCiAjZGVmaW5lIHN0bW1hY19kbWFfaW5pdChfX3ByaXYsIF9fYXJncy4uLikgXApAQCAtMjg5LDYgJiM0MzsyOTgsMTQgQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHsKIAlzdG1tYWNfZG9fdm9pZF9jYWxsYmFjayhfX3ByaXYsIGRtYSwgZW5hYmxlX3NwaCwgX19wcml2LCBfX2FyZ3MpCiAjZGVmaW5lIHN0bW1hY19lbmFibGVfdGJzKF9fcHJpdiwgX19hcmdzLi4uKSBcCiAJc3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfdGJzLCBfX3ByaXYsIF9fYXJncykKJiM0MzsjZGVmaW5lIHN0bW1hY190eF9kbWFfc3RvcHBlZChfX3ByaXYsIF9fYXJncy4uLikgXAomIzQzOwlzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHR4X2RtYV9zdG9wcGVkLCBfX3ByaXYsIF9fYXJncykKJiM0MzsjZGVmaW5lIHN0bW1hY190eF9tdGxfZHJhaW4oX19wcml2LCBfX2FyZ3MuLi4pIFwKJiM0MzsJc3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCB0eF9tdGxfZHJhaW4sIF9fcHJpdiwgX19hcmdzKQomIzQzOyNkZWZpbmUgc3RtbWFjX3J4X210bF9kcmFpbihfX3ByaXYsIF9fYXJncy4uLikgXAomIzQzOwlzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHJ4X210bF9kcmFpbiwgX19wcml2LCBfX2FyZ3MpCiYjNDM7I2RlZmluZSBzdG1tYWNfcnhfZG1hX3N0b3BwZWQoX19wcml2LCBfX2FyZ3MuLi4pIFwKJiM0MzsJc3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCByeF9kbWFfc3RvcHBlZCwgX19wcml2LCBfX2FyZ3MpCiAKIHN0cnVjdCBtYWNfZGV2aWNlX2luZm87CiBzdHJ1Y3QgbmV0X2RldmljZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IDM1OTE3NTVlYTMwYmUuLmNjM2EwYWUwYzU2ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtMjU2OSw2ICYjNDM7MjU2OSw1MiBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAkJc3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pOwogfQogCiYjNDM7LyoqCiYjNDM7ICogc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duIC0gb3JkZXJlZCBkYXRhcGF0aCB0ZWFyZG93biBhcyBwZXIgSVAgc3BlY2lmaWNhdGlvbgomIzQzOyAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUKJiM0MzsgKiBEZXNjcmlwdGlvbjoKJiM0MzsgKiBXaGVuIHRlYXJkb3duIG9wcyBhcmUgYXZhaWxhYmxlLCBmb2xsb3cgdGhlIGRhdGFib29rIG9yZGVyZWQgdGVhcmRvd24KJiM0MzsgKiBzZXF1ZW5jZS4KJiM0MzsgKiBGb2xsb3dzIHRoZSBsZWdhY3kgc3RvcCAmIzQzOyBNQUMgZGlzYWJsZSBmb3IgdmFyaWFudHMgd2l0aG91dCB0aGUgZmVhdHVyZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQomIzQzO3sKJiM0MzsJdTMyIHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi0mZ3Q7cGxhdC0mZ3Q7cnhfcXVldWVzX3RvX3VzZTsKJiM0MzsJdTMyIHR4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi0mZ3Q7cGxhdC0mZ3Q7dHhfcXVldWVzX3RvX3VzZTsKJiM0MzsJdTMyIGNoYW47CiYjNDM7CiYjNDM7CS8qIFN0b3AgYWxsIFRYIERNQSBjaGFubmVscyAqLwomIzQzOwlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KQomIzQzOwkJc3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pOwomIzQzOwomIzQzOwkvKiBXYWl0IGZvciBldmVyeSBUWCBETUEgY2hhbm5lbCB0byByZXBvcnQgaXRzZWxmIHN0b3BwZWQgKi8KJiM0MzsJaWYgKHByaXYtJmd0O2h3LSZndDtkbWEtJmd0O3R4X2RtYV9zdG9wcGVkKQomIzQzOwkJZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuJiM0MzsmIzQzOykKJiM0MzsJCQlzdG1tYWNfdHhfZG1hX3N0b3BwZWQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCBjaGFuKTsKJiM0MzsKJiM0MzsJLyogV2FpdCBmb3IgdGhlIE1UTCBUWCBxdWV1ZXMgdG8gZmluaXNoIHB1c2hpbmcgaW50byB0aGUgTUFDICovCiYjNDM7CWlmIChwcml2LSZndDtody0mZ3Q7ZG1hLSZndDt0eF9tdGxfZHJhaW4pCiYjNDM7CQlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KQomIzQzOwkJCXN0bW1hY190eF9tdGxfZHJhaW4ocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCBjaGFuKTsKJiM0MzsKJiM0MzsJLyogRGlzYWJsZSB0aGUgTUFDIFRYIGFuZCBSWCAqLwomIzQzOwlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIGZhbHNlKTsKJiM0MzsKJiM0MzsJLyogV2FpdCBmb3IgdGhlIE1UTCBSWCBxdWV1ZXMgdG8gZHJhaW4gaW50byB0aGUgUlggRE1BICovCiYjNDM7CWlmIChwcml2LSZndDtody0mZ3Q7ZG1hLSZndDtyeF9tdGxfZHJhaW4pCiYjNDM7CQlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KQomIzQzOwkJCXN0bW1hY19yeF9tdGxfZHJhaW4ocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCBjaGFuKTsKJiM0MzsKJiM0MzsJLyogU3RvcCBhbGwgUlggRE1BIGNoYW5uZWxzICovCiYjNDM7CWZvciAoY2hhbiA9IDA7IGNoYW4gJmx0OyByeF9jaGFubmVsc19jb3VudDsgY2hhbiYjNDM7JiM0MzspCiYjNDM7CQlzdG1tYWNfc3RvcF9yeF9kbWEocHJpdiwgY2hhbik7CiYjNDM7CiYjNDM7CS8qIFdhaXQgZm9yIGV2ZXJ5IFJYIERNQSBjaGFubmVsIHRvIHJlcG9ydCBpdHNlbGYgc3RvcHBlZCAqLwomIzQzOwlpZiAocHJpdi0mZ3Q7aHctJmd0O2RtYS0mZ3Q7cnhfZG1hX3N0b3BwZWQpCiYjNDM7CQlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4mIzQzOyYjNDM7KQomIzQzOwkJCXN0bW1hY19yeF9kbWFfc3RvcHBlZChwcml2LCBwcml2LSZndDtpb2FkZHIsIGNoYW4pOwomIzQzO30KJiM0MzsKIC8qKgogICogIHN0bW1hY19kbWFfb3BlcmF0aW9uX21vZGUgLSBIVyBETUEgb3BlcmF0aW9uIG1vZGUKICAqICBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlCkBAIC0zNjkyLDkgJiM0MzszNzM4LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJcHJpdi0mZ3Q7aHctJmd0O3J4X2NzdW0gPSAwOwogCX0KIAotCS8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovCi0Jc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCB0cnVlKTsKLQogCS8qIFNldCB0aGUgSFcgRE1BIG1vZGUgYW5kIHRoZSBDT0UgKi8KIAlzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYpOwogCkBAIC0zNzUwLDYgJiM0MzszNzkzLDkgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkvKiBTdGFydCB0aGUgYmFsbCByb2xsaW5nLi4uICovCiAJc3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7CiAKJiM0MzsJLyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi8KJiM0MzsJc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCB0cnVlKTsKJiM0MzsKIAlwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKHByaXYtJmd0O3BoeWxpbmspOwogCXN0bW1hY19zZXRfaHdfdmxhbl9tb2RlKHByaXYsIHByaXYtJmd0O2h3KTsKIAlwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2socHJpdi0mZ3Q7cGh5bGluayk7CkBAIC00MjM4LDkgJiM0Mzs0Mjg0LDYgQEAgc3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCXN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7CiAJdTggY2hhbjsKIAotCS8qIFN0b3AgYW5kIGRpc2Nvbm5lY3QgdGhlIFBIWSAqLwotCXBoeWxpbmtfc3RvcChwcml2LSZndDtwaHlsaW5rKTsKLQogCXN0bW1hY19kaXNhYmxlX2FsbF9xdWV1ZXMocHJpdik7CiAKIAlmb3IgKGNoYW4gPSAwOyBjaGFuICZsdDsgcHJpdi0mZ3Q7cGxhdC0mZ3Q7dHhfcXVldWVzX3RvX3VzZTsgY2hhbiYjNDM7JiM0MzspCkBAIC00MjUxLDggJiM0Mzs0Mjk0LDExIEBAIHN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi8KIAlzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApOwogCi0JLyogU3RvcCBUWC9SWCBETUEgYW5kIGNsZWFyIHRoZSBkZXNjcmlwdG9ycyAqLwotCXN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7CiYjNDM7CS8qIEhhcyB0byBydW4gYmVmb3JlIG1hY19saW5rX2Rvd24oKSBkaXNhYmxlcyB0aGUgTUFDLiAqLwomIzQzOwlzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7CiYjNDM7CiYjNDM7CS8qIFN0b3AgYW5kIGRpc2Nvbm5lY3QgdGhlIFBIWSAqLwomIzQzOwlwaHlsaW5rX3N0b3AocHJpdi0mZ3Q7cGh5bGluayk7CiAKIAkvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi8KIAlmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhwcml2LCAmYW1wO3ByaXYtJmd0O2RtYV9jb25mKTsKQEAgLTcxMDksMTUgJiM0Mzs3MTU1LDEyIEBAIHZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJLyogRnJlZSB0aGUgSVJRIGxpbmVzICovCiAJc3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTsKIAotCS8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovCi0Jc3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTsKJiM0MzsJLyogU3RvcCB0aGUgTUFDIGFuZCB0aGUgVFgvUlggRE1BIGNoYW5uZWxzICovCiYjNDM7CXN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihwcml2KTsKIAogCS8qIFJlbGVhc2UgYW5kIGZyZWUgdGhlIFJ4L1R4IHJlc291cmNlcyAqLwogCWZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsICZhbXA7cHJpdi0mZ3Q7ZG1hX2NvbmYpOwogCi0JLyogRGlzYWJsZSB0aGUgTUFDIFJ4L1R4ICovCi0Jc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCBmYWxzZSk7Ci0KIAkvKiBzZXQgdHJhbnNfc3RhcnQgc28gd2UgZG9uJiMzOTt0IGdldCBzcHVyaW91cwogCSAqIHdhdGNoZG9ncyBkdXJpbmcgcmVzZXQKIAkgKi8KQEAgLTcxODksMTIgJiM0Mzs3MjMyLDEyIEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJaHJ0aW1lcl9zZXR1cCgmYW1wO3R4X3EtJmd0O3R4dGltZXIsIHN0bW1hY190eF90aW1lciwgQ0xPQ0tfTU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTsKIAl9CiAKLQkvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqLwotCXN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtJmd0O2lvYWRkciwgdHJ1ZSk7Ci0KIAkvKiBTdGFydCBSeCAmYW1wOyBUeCBETUEgQ2hhbm5lbHMgKi8KIAlzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTsKIAomIzQzOwkvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqLwomIzQzOwlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIHRydWUpOwomIzQzOwogCXJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpOwogCWlmIChyZXQpCiAJCWdvdG8gaXJxX2Vycm9yOwpAQCAtODE5NSwxNyAmIzQzOzgyMzgsMTUgQEAgaW50IHN0bW1hY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJdGltZXJfZGVsZXRlX3N5bmMoJmFtcDtwcml2LSZndDtlZWVfY3RybF90aW1lcik7CiAJfQogCi0JLyogU3RvcCBUWC9SWCBETUEgKi8KLQlzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpOwotCi0Jc3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTsKLQogCS8qIEVuYWJsZSBQb3dlciBkb3duIG1vZGUgYnkgcHJvZ3JhbW1pbmcgdGhlIFBNVCByZWdzICovCiAJaWYgKHByaXYtJmd0O3dvbG9wdHMpIHsKJiM0MzsJCXN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7CiYjNDM7CQlzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpOwogCQlzdG1tYWNfcG10KHByaXYsIHByaXYtJmd0O2h3LCBwcml2LSZndDt3b2xvcHRzKTsKIAkJcHJpdi0mZ3Q7aXJxX3dha2UgPSAxOwogCX0gZWxzZSB7Ci0JCXN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtJmd0O2lvYWRkciwgZmFsc2UpOwomIzQzOwkJc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHByaXYpOwomIzQzOwkJc3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTsKIAkJcGluY3RybF9wbV9zZWxlY3Rfc2xlZXBfc3RhdGUocHJpdi0mZ3Q7ZGV2aWNlKTsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczODQKCQkJCQkJCW91dHB1dDogMTA0CgkJCQkJCQl0aG91Z2h0czogNDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFN0bW1hYyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBmb2N1c2VkIHNxdWFyZWx5IG9uIHRoZSBgc3RtbWFjYCBldGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgaGFyZHdhcmUgdGVhcmRvd24gc2VxdWVuY2UuIEkgc2VlIGl0IGludHJvZHVjZXMgYSBuZXcgYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBrZXkuIFRoaXMgZnVuY3Rpb24gYXBwZWFycyB0byBiZSBhIG1vcmUgb3JkZXJlZCBhbmQgY29udHJvbGxlZCB3YXkgdG8gc2h1dCBkb3duIHRoZSBUWC9SWCBETUEgY2hhbm5lbHMgYW5kIGRyYWluIHRoZSBNVEwgcXVldWVzLiBJIGNhbiBzZWUgdGhhdCBpdCYjMzk7cyBhZGRpbmcgc29tZSBuZXcgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLCBsaWtlIGBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZGAsIGBkd3hnbWFjMl90eF9tdGxfZHJhaW5gLCBhbmQgc28gb24uCgpUaGUgbWFpbiBpbXBhY3Qgc2VlbXMgdG8gYmUgaW4gYHN0bW1hY19tYWluLmNgLCB3aGVyZSB0aGV5JiMzOTtyZSByZXBsYWNpbmcgdGhlIG9sZGVyIGBzdG1tYWNfc3RvcF9hbGxfZG1hYCBhbmQgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgd2l0aCB0aGlzIG5ldyBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYCBmdW5jdGlvbiBpbiBrZXkgYXJlYXMgbGlrZSBgX19zdG1tYWNfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBhbmQgYHN0bW1hY19zdXNwZW5kYC4gQWxzbywgdGhleSYjMzk7dmUgcmVvcmdhbml6ZWQgaG93IGBzdG1tYWNfbWFjX3NldGAgYW5kIGBzdG1tYWNfc3RhcnRfYWxsX2RtYWAgYXJlIGNhbGxlZCBpbiBgc3RtbWFjX2h3X3NldHVwYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIGtlZXAgdHJhY2sgb2YuCgpHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIGhhcmR3YXJlIGRyaXZlcnMsIHRoaXMgYWxsIG1ha2VzIHNlbnNlLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBhIHN0YXRlIG1hY2hpbmUgaXNzdWUg4oCTIGVuc3VyaW5nIHRoZSBNQUMgYW5kIERNQSBhcmUgc2h1dCBkb3duIGNvcnJlY3RseSBhbmQgY2xlYW5seS4gQ3J1Y2lhbGx5LCBhcyBJIGFuYWx5emUgdGhpcywgSSBkb24mIzM5O3Qgc2VlIGFueSBjaGFuZ2VzIHRoYXQgd291bGQgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gVGhlcmUmIzM5O3Mgbm8gbW9kaWZpY2F0aW9uIG9mIGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vIGNoYW5nZXMgdG8gYnVmZmVyIGFsbG9jYXRpb24gb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIHRoYXQgbWlnaHQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgZGF0YS4gSXQmIzM5O3MgYWxsIGFib3V0IGhhcmR3YXJlIGNvbnRyb2wgYW5kIHJlZ2lzdGVyIG1hbmlwdWxhdGlvbi4KClRoZXJlZm9yZSwgZnJvbSBhIG1lbW9yeSBzYWZldHkgcGVyc3BlY3RpdmUsIGEgS01TQU4gc2Vzc2lvbiBpc24mIzM5O3QgcmVhbGx5IG5lZWRlZCBoZXJlLiBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBhcmUgcGVyZmVjdGx5IGNhcGFibGUgb2YgY2F0Y2hpbmcgYW55IG91dC1vZi1ib3VuZHMgb3IgdXNlLWFmdGVyLWZyZWUgZXJyb3JzIHRoYXQgbWlnaHQgY3JlZXAgaW4sIGFuZCBob25lc3RseSwgdGhlIHRlYXJkb3duIHNlcXVlbmNlIGxvb2tzIHByZXR0eSBzYWZlLiBTbywgSSYjMzk7bSBjb25maWRlbnQgaW4gbWFya2luZyB0aGlzIGFzIGBOZWVkc0tNU0FOOiBmYWxzZWAuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGp1c3QgaXNuJiMzOTt0IHRoZXJlLCBhbmQgdGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBjb25jZXJuIG9mIEtNU0FOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBoYXJkd2FyZSBjb250cm9sIGZsb3cgZm9yIHN0b3BwaW5nIERNQSBjaGFubmVscyBhbmQgZHJhaW5pbmcgTUFDIHF1ZXVlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgYnVmZmVyIGFsbG9jYXRpb25zIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBoYXJkd2FyZSBjb250cm9sIGZsb3cgZm9yIHN0b3BwaW5nIERNQSBjaGFubmVscyBhbmQgZHJhaW5pbmcgTUFDIHF1ZXVlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgYnVmZmVyIGFsbG9jYXRpb25zIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjI1LjUyMjk2OTUxMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTQ2NTg4ODY4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19TVU44SVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19yZWxlYXNlXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiLFxuICAgIFwic3RtbWFjX3N1c3BlbmRcIixcbiAgICBcImR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkXCIsXG4gICAgXCJkd3hnbWFjMl90eF9tdGxfZHJhaW5cIixcbiAgICBcImR3eGdtYWMyX3J4X210bF9kcmFpblwiLFxuICAgIFwiZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF90eFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfdHhcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF9yeFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfcnhcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGhhcmR3YXJlIGNvbnRyb2wgZmxvdyBmb3Igc3RvcHBpbmcgRE1BIGNoYW5uZWxzIGFuZCBkcmFpbmluZyBNQUMgcXVldWVzIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBhbHRlciBidWZmZXIgYWxsb2NhdGlvbnMgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLCBhZGRpbmcgcG9sbGluZyBsb29wcyB0byB3YWl0IGZvciBETUEgYW5kIE1UTCBxdWV1ZXMgdG8gZHJhaW4gYmVmb3JlIGRpc2FibGluZyB0aGUgTUFDLiBUaGlzIGFmZmVjdHMgdGhlIHRlYXJkb3duIHBhdGggb2YgYWxsIHN0bW1hYyB2YXJpYW50cyAoaW5jbHVkaW5nIHRob3NlIGVtdWxhdGVkIGluIFFFTVUgbGlrZSBzdW44aS1lbWFjKSBhbmQgbW9kaWZpZXMgdGhlIFhEUCBzZXR1cC90ZWFyZG93biBhbmQgc3VzcGVuZCBjYWxsYmFja3MuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZHVyaW5nIG5vcm1hbCBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlcyAoZS5nLiwgYnJpbmdpbmcgdGhlIGludGVyZmFjZSBkb3duKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudCwgbWFraW5nIHRoZW0gZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTQ6MjUuNTIyOTc1NjkxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODcxNTU1MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzMzkxMjA0NmVmMDYxMzBlOGFmNGUzNzdhMDJkNDFkMzI2YmU4NWYyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDA4OjE0OjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXFxuaW5kZXggNTE5NDM3MDVhMmIwMy4uMmUzZjI2MDAwZDMzNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaFxcbkBAIC0yOTEsNiArMjkxLDEwIEBAXFxuICNkZWZpbmUgWEdNQUNfVFRDXFx0XFx0XFx0R0VOTUFTSyg2LCA0KVxcbiAjZGVmaW5lIFhHTUFDX1RYUUVOXFx0XFx0XFx0R0VOTUFTSygzLCAyKVxcbiAjZGVmaW5lIFhHTUFDX1RTRlxcdFxcdFxcdEJJVCgxKVxcbisjZGVmaW5lIFhHTUFDX01UTF9UWFFfREVCVUcoeClcXHRcXHQoMHgwMDAwMTEwOCArICgweDgwICogKHgpKSlcXG4rI2RlZmluZSBYR01BQ19UWFFTVFNcXHRcXHRcXHRCSVQoNClcXG4rI2RlZmluZSBYR01BQ19UUkNTVFNcXHRcXHRcXHRHRU5NQVNLKDIsIDEpXFxuKyNkZWZpbmUgWEdNQUNfVFJDU1RTX1JFQURcXHRcXHQweDFcXG4gI2RlZmluZSBYR01BQ19NVExfVEN4X0VUU19DT05UUk9MKHgpXFx0KDB4MDAwMDExMTAgKyAoMHg4MCAqICh4KSkpXFxuICNkZWZpbmUgWEdNQUNfTVRMX1RDeF9RVUFOVFVNX1dFSUdIVCh4KVxcdCgweDAwMDAxMTE4ICsgKDB4ODAgKiAoeCkpKVxcbiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfU0VORFNMT1BFKHgpXFx0KDB4MDAwMDExMWMgKyAoMHg4MCAqICh4KSkpXFxuQEAgLTMwNiw2ICszMTAsOSBAQFxcbiAjZGVmaW5lIFhHTUFDX0VIRkNcXHRcXHRcXHRCSVQoNylcXG4gI2RlZmluZSBYR01BQ19SU0ZcXHRcXHRcXHRCSVQoNSlcXG4gI2RlZmluZSBYR01BQ19SVENcXHRcXHRcXHRHRU5NQVNLKDEsIDApXFxuKyNkZWZpbmUgWEdNQUNfTVRMX1JYUV9ERUJVRyh4KVxcdFxcdCgweDAwMDAxMTQ4ICsgKDB4ODAgKiAoeCkpKVxcbisjZGVmaW5lIFhHTUFDX1BSWFFcXHRcXHRcXHRHRU5NQVNLKDI5LCAxNilcXG4rI2RlZmluZSBYR01BQ19SWFFTVFNcXHRcXHRcXHRHRU5NQVNLKDUsIDQpXFxuICNkZWZpbmUgWEdNQUNfTVRMX1JYUV9GTE9XX0NPTlRST0woeClcXHQoMHgwMDAwMTE1MCArICgweDgwICogKHgpKSlcXG4gI2RlZmluZSBYR01BQ19SRkRcXHRcXHRcXHRHRU5NQVNLKDMxLCAxNylcXG4gI2RlZmluZSBYR01BQ19SRkFcXHRcXHRcXHRHRU5NQVNLKDE1LCAxKVxcbkBAIC0zODksNiArMzk2LDcgQEBcXG4gI2RlZmluZSBYR01BQ19OSVNcXHRcXHRcXHRCSVQoMTUpXFxuICNkZWZpbmUgWEdNQUNfQUlTXFx0XFx0XFx0QklUKDE0KVxcbiAjZGVmaW5lIFhHTUFDX0ZCRVxcdFxcdFxcdEJJVCgxMilcXG4rI2RlZmluZSBYR01BQ19SUFNcXHRcXHRcXHRCSVQoOClcXG4gI2RlZmluZSBYR01BQ19SQlVcXHRcXHRcXHRCSVQoNylcXG4gI2RlZmluZSBYR01BQ19SSVxcdFxcdFxcdEJJVCg2KVxcbiAjZGVmaW5lIFhHTUFDX1RCVVxcdFxcdFxcdEJJVCgyKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXFxuaW5kZXggMDM0MzdmMWNmM2RmMy4uOGUyN2JjNThjYzA1OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXFxuQEAgLTQsNiArNCw3IEBAXFxuICAqIHN0bW1hYyBYR01BQyBzdXBwb3J0LlxcbiAgKi9cXG4gXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRmaWVsZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW9wb2xsLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImR3eGdtYWMyLmhcXFwiXFxuQEAgLTI1MSwxMyArMjUyLDEyIEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIHtcXG4gXFx0dTMyIHZhbHVlO1xcbiBcXG4rXFx0LyogVFBTIGlzIGxhdGNoZWQgb25jZSBzZXQsIHNvIGNsZWFyIGl0IG9uIGV2ZXJ5IFR4IERNQSBzdGFydC4gKi9cXG4rXFx0d3JpdGVsKFhHTUFDX1RQUywgaW9hZGRyICsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSk7XFxuK1xcbiBcXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX0RNQV9DSF9UWF9DT05UUk9MKGNoYW4pKTtcXG4gXFx0dmFsdWUgfD0gWEdNQUNfVFhTVDtcXG4gXFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XFxuLVxcbi1cXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX1RYX0NPTkZJRyk7XFxuLVxcdHZhbHVlIHw9IFhHTUFDX0NPTkZJR19URTtcXG4tXFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19UWF9DT05GSUcpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RvcF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbkBAIC0yNjgsMTAgKzI2OCw2IEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuIFxcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xcbiBcXHR2YWx1ZSBcXHUwMDI2PSB+WEdNQUNfVFhTVDtcXG4gXFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XFxuLVxcbi1cXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX1RYX0NPTkZJRyk7XFxuLVxcdHZhbHVlIFxcdTAwMjY9IH5YR01BQ19DT05GSUdfVEU7XFxuLVxcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICsgWEdNQUNfVFhfQ09ORklHKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5AQCAtMjc5LDEzICsyNzUsMTIgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4ge1xcbiBcXHR1MzIgdmFsdWU7XFxuIFxcbitcXHQvKiBSUFMgaXMgbGF0Y2hlZCBvbmNlIHNldCwgc28gY2xlYXIgaXQgb24gZXZlcnkgUnggRE1BIHN0YXJ0LiAqL1xcbitcXHR3cml0ZWwoWEdNQUNfUlBTLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pKTtcXG4rXFxuIFxcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfRE1BX0NIX1JYX0NPTlRST0woY2hhbikpO1xcbiBcXHR2YWx1ZSB8PSBYR01BQ19SWFNUO1xcbiBcXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX0RNQV9DSF9SWF9DT05UUk9MKGNoYW4pKTtcXG4tXFxuLVxcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfUlhfQ09ORklHKTtcXG4tXFx0dmFsdWUgfD0gWEdNQUNfQ09ORklHX1JFO1xcbi1cXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX1JYX0NPTkZJRyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuQEAgLTU4Miw2ICs1NzcsNzcgQEAgc3RhdGljIGludCBkd3hnbWFjMl9lbmFibGVfdGJzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4rXFx0XFx0XFx0XFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxcbit7XFxuK1xcdHUzMiB2YWx1ZTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgKyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pLCB2YWx1ZSxcXG4rXFx0XFx0XFx0XFx0IHZhbHVlIFxcdTAwMjYgWEdNQUNfVFBTLCAxMDAsIDEwMDAwKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0bmV0ZGV2X3dhcm4ocHJpdi1cXHUwMDNlZGV2LCBcXFwiVHggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgY2hhbik7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitzdGF0aWMgaW50IGR3eGdtYWMyX3R4X210bF9kcmFpbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuK1xcdFxcdFxcdFxcdCB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIHF1ZXVlKVxcbit7XFxuK1xcdHUzMiB2YWx1ZTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdC8qIFdhaXQgdW50aWwgdGhlIHF1ZXVlIGlzIGVtcHR5IGFuZCBpdHMgcmVhZCBjb250cm9sbGVyIGlzIG5vIGxvbmdlclxcbitcXHQgKiBwdWxsaW5nIGEgZnJhbWUgb3V0IHRvd2FyZHMgdGhlIE1BQy5cXG4rXFx0ICovXFxuK1xcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgKyBYR01BQ19NVExfVFhRX0RFQlVHKHF1ZXVlKSwgdmFsdWUsXFxuK1xcdFxcdFxcdFxcdCAhKHZhbHVlIFxcdTAwMjYgWEdNQUNfVFhRU1RTKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHRcXHQgRklFTERfR0VUKFhHTUFDX1RSQ1NUUywgdmFsdWUpICE9XFxuK1xcdFxcdFxcdFxcdCBYR01BQ19UUkNTVFNfUkVBRCxcXG4rXFx0XFx0XFx0XFx0IDEwMCwgMTAwMDApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRuZXRkZXZfd2Fybihwcml2LVxcdTAwM2VkZXYsIFxcXCJNVEwgVHggcXVldWUgJXUgZHJhaW4gdGltZW91dFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIHF1ZXVlKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgZHd4Z21hYzJfcnhfbXRsX2RyYWluKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4rXFx0XFx0XFx0XFx0IHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgcXVldWUpXFxuK3tcXG4rXFx0dTMyIHZhbHVlO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0LyogV2FpdCB1bnRpbCBubyBwYWNrZXQgaXMgbGVmdCBpbiB0aGUgcXVldWUgYW5kIHRoZSBxdWV1ZSByZXBvcnRzXFxuK1xcdCAqIGl0c2VsZiBlbXB0eS5cXG4rXFx0ICovXFxuK1xcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgKyBYR01BQ19NVExfUlhRX0RFQlVHKHF1ZXVlKSwgdmFsdWUsXFxuK1xcdFxcdFxcdFxcdCAhRklFTERfR0VUKFhHTUFDX1BSWFEsIHZhbHVlKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHRcXHQgIUZJRUxEX0dFVChYR01BQ19SWFFTVFMsIHZhbHVlKSxcXG4rXFx0XFx0XFx0XFx0IDEwMCwgMTAwMDApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRuZXRkZXZfd2Fybihwcml2LVxcdTAwM2VkZXYsIFxcXCJNVEwgUnggcXVldWUgJXUgZHJhaW4gdGltZW91dFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIHF1ZXVlKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbitcXHRcXHRcXHRcXHQgICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pXFxuK3tcXG4rXFx0dTMyIHZhbHVlO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciArIFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbiksIHZhbHVlLFxcbitcXHRcXHRcXHRcXHQgdmFsdWUgXFx1MDAyNiBYR01BQ19SUFMsIDEwMCwgMTAwMDApO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRuZXRkZXZfd2Fybihwcml2LVxcdTAwM2VkZXYsIFxcXCJSeCBETUEgY2hhbm5lbCAldSBzdG9wIHRpbWVvdXRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICBjaGFuKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XFxuIFxcdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcXG4gXFx0LmluaXQgPSBkd3hnbWFjMl9kbWFfaW5pdCxcXG5AQCAtNjEwLDQgKzY3Niw4IEBAIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XFxuIFxcdC5zZXRfYmZzaXplID0gZHd4Z21hYzJfc2V0X2Jmc2l6ZSxcXG4gXFx0LmVuYWJsZV9zcGggPSBkd3hnbWFjMl9lbmFibGVfc3BoLFxcbiBcXHQuZW5hYmxlX3RicyA9IGR3eGdtYWMyX2VuYWJsZV90YnMsXFxuK1xcdC50eF9kbWFfc3RvcHBlZCA9IGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkLFxcbitcXHQudHhfbXRsX2RyYWluID0gZHd4Z21hYzJfdHhfbXRsX2RyYWluLFxcbitcXHQucnhfbXRsX2RyYWluID0gZHd4Z21hYzJfcnhfbXRsX2RyYWluLFxcbitcXHQucnhfZG1hX3N0b3BwZWQgPSBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZCxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXFxuaW5kZXggZTYzMTdiOTRmZmY3ZC4uMjNhNjkxNWFjZGZiYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcXG5AQCAtMjI5LDYgKzIyOSwxNSBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMge1xcbiBcXHRcXHRcXHQgICBib29sIGVuLCB1MzIgY2hhbik7XFxuIFxcdGludCAoKmVuYWJsZV90YnMpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuIFxcdFxcdFxcdCAgYm9vbCBlbiwgdTMyIGNoYW4pO1xcbitcXHQvKiBPcmRlcmVkIGRhdGFwYXRoIHRlYXJkb3duICovXFxuK1xcdGludCAoKnR4X2RtYV9zdG9wcGVkKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbitcXHRcXHRcXHQgICAgICB1MzIgY2hhbik7XFxuK1xcdGludCAoKnR4X210bF9kcmFpbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4rXFx0XFx0XFx0ICAgIHUzMiBxdWV1ZSk7XFxuK1xcdGludCAoKnJ4X210bF9kcmFpbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4rXFx0XFx0XFx0ICAgIHUzMiBxdWV1ZSk7XFxuK1xcdGludCAoKnJ4X2RtYV9zdG9wcGVkKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbitcXHRcXHRcXHQgICAgICB1MzIgY2hhbik7XFxuIH07XFxuIFxcbiAjZGVmaW5lIHN0bW1hY19kbWFfaW5pdChfX3ByaXYsIF9fYXJncy4uLikgXFxcXFxcbkBAIC0yODksNiArMjk4LDE0IEBAIHN0cnVjdCBzdG1tYWNfZG1hX29wcyB7XFxuIFxcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfc3BoLCBfX3ByaXYsIF9fYXJncylcXG4gI2RlZmluZSBzdG1tYWNfZW5hYmxlX3RicyhfX3ByaXYsIF9fYXJncy4uLikgXFxcXFxcbiBcXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIGVuYWJsZV90YnMsIF9fcHJpdiwgX19hcmdzKVxcbisjZGVmaW5lIHN0bW1hY190eF9kbWFfc3RvcHBlZChfX3ByaXYsIF9fYXJncy4uLikgXFxcXFxcbitcXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHR4X2RtYV9zdG9wcGVkLCBfX3ByaXYsIF9fYXJncylcXG4rI2RlZmluZSBzdG1tYWNfdHhfbXRsX2RyYWluKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuK1xcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgdHhfbXRsX2RyYWluLCBfX3ByaXYsIF9fYXJncylcXG4rI2RlZmluZSBzdG1tYWNfcnhfbXRsX2RyYWluKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuK1xcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgcnhfbXRsX2RyYWluLCBfX3ByaXYsIF9fYXJncylcXG4rI2RlZmluZSBzdG1tYWNfcnhfZG1hX3N0b3BwZWQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXFxcXG4rXFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCByeF9kbWFfc3RvcHBlZCwgX19wcml2LCBfX2FyZ3MpXFxuIFxcbiBzdHJ1Y3QgbWFjX2RldmljZV9pbmZvO1xcbiBzdHJ1Y3QgbmV0X2RldmljZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5pbmRleCAzNTkxNzU1ZWEzMGJlLi5jYzNhMGFlMGM1NmY5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTI1NjksNiArMjU2OSw1MiBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFx0XFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xcbiB9XFxuIFxcbisvKipcXG4rICogc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duIC0gb3JkZXJlZCBkYXRhcGF0aCB0ZWFyZG93biBhcyBwZXIgSVAgc3BlY2lmaWNhdGlvblxcbisgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXFxuKyAqIERlc2NyaXB0aW9uOlxcbisgKiBXaGVuIHRlYXJkb3duIG9wcyBhcmUgYXZhaWxhYmxlLCBmb2xsb3cgdGhlIGRhdGFib29rIG9yZGVyZWQgdGVhcmRvd25cXG4rICogc2VxdWVuY2UuXFxuKyAqIEZvbGxvd3MgdGhlIGxlZ2FjeSBzdG9wICsgTUFDIGRpc2FibGUgZm9yIHZhcmlhbnRzIHdpdGhvdXQgdGhlIGZlYXR1cmUuXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbit7XFxuK1xcdHUzMiByeF9jaGFubmVsc19jb3VudCA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXJ4X3F1ZXVlc190b191c2U7XFxuK1xcdHUzMiB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXR4X3F1ZXVlc190b191c2U7XFxuK1xcdHUzMiBjaGFuO1xcbitcXG4rXFx0LyogU3RvcCBhbGwgVFggRE1BIGNoYW5uZWxzICovXFxuK1xcdGZvciAoY2hhbiA9IDA7IGNoYW4gXFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxcbitcXHRcXHRzdG1tYWNfc3RvcF90eF9kbWEocHJpdiwgY2hhbik7XFxuK1xcbitcXHQvKiBXYWl0IGZvciBldmVyeSBUWCBETUEgY2hhbm5lbCB0byByZXBvcnQgaXRzZWxmIHN0b3BwZWQgKi9cXG4rXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VkbWEtXFx1MDAzZXR4X2RtYV9zdG9wcGVkKVxcbitcXHRcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG4rXFx0XFx0XFx0c3RtbWFjX3R4X2RtYV9zdG9wcGVkKHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgY2hhbik7XFxuK1xcbitcXHQvKiBXYWl0IGZvciB0aGUgTVRMIFRYIHF1ZXVlcyB0byBmaW5pc2ggcHVzaGluZyBpbnRvIHRoZSBNQUMgKi9cXG4rXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VkbWEtXFx1MDAzZXR4X210bF9kcmFpbilcXG4rXFx0XFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXFxuK1xcdFxcdFxcdHN0bW1hY190eF9tdGxfZHJhaW4ocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCBjaGFuKTtcXG4rXFxuK1xcdC8qIERpc2FibGUgdGhlIE1BQyBUWCBhbmQgUlggKi9cXG4rXFx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCBmYWxzZSk7XFxuK1xcbitcXHQvKiBXYWl0IGZvciB0aGUgTVRMIFJYIHF1ZXVlcyB0byBkcmFpbiBpbnRvIHRoZSBSWCBETUEgKi9cXG4rXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VkbWEtXFx1MDAzZXJ4X210bF9kcmFpbilcXG4rXFx0XFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXFxuK1xcdFxcdFxcdHN0bW1hY19yeF9tdGxfZHJhaW4ocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCBjaGFuKTtcXG4rXFxuK1xcdC8qIFN0b3AgYWxsIFJYIERNQSBjaGFubmVscyAqL1xcbitcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG4rXFx0XFx0c3RtbWFjX3N0b3BfcnhfZG1hKHByaXYsIGNoYW4pO1xcbitcXG4rXFx0LyogV2FpdCBmb3IgZXZlcnkgUlggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovXFxuK1xcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlZG1hLVxcdTAwM2VyeF9kbWFfc3RvcHBlZClcXG4rXFx0XFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXFxuK1xcdFxcdFxcdHN0bW1hY19yeF9kbWFfc3RvcHBlZChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIGNoYW4pO1xcbit9XFxuK1xcbiAvKipcXG4gICogIHN0bW1hY19kbWFfb3BlcmF0aW9uX21vZGUgLSBIVyBETUEgb3BlcmF0aW9uIG1vZGVcXG4gICogIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG5AQCAtMzY5Miw5ICszNzM4LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZXJ4X2NzdW0gPSAwO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqL1xcbi1cXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIHRydWUpO1xcbi1cXG4gXFx0LyogU2V0IHRoZSBIVyBETUEgbW9kZSBhbmQgdGhlIENPRSAqL1xcbiBcXHRzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYpO1xcbiBcXG5AQCAtMzc1MCw2ICszNzkzLDkgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0LyogU3RhcnQgdGhlIGJhbGwgcm9sbGluZy4uLiAqL1xcbiBcXHRzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTtcXG4gXFxuK1xcdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXFxuK1xcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgdHJ1ZSk7XFxuK1xcbiBcXHRwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbiBcXHRzdG1tYWNfc2V0X2h3X3ZsYW5fbW9kZShwcml2LCBwcml2LVxcdTAwM2Vodyk7XFxuIFxcdHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jayhwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5AQCAtNDIzOCw5ICs0Mjg0LDYgQEAgc3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHR1OCBjaGFuO1xcbiBcXG4tXFx0LyogU3RvcCBhbmQgZGlzY29ubmVjdCB0aGUgUEhZICovXFxuLVxcdHBoeWxpbmtfc3RvcChwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG4tXFxuIFxcdHN0bW1hY19kaXNhYmxlX2FsbF9xdWV1ZXMocHJpdik7XFxuIFxcbiBcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbisrKVxcbkBAIC00MjUxLDggKzQyOTQsMTEgQEAgc3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHQvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi9cXG4gXFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcXG4gXFxuLVxcdC8qIFN0b3AgVFgvUlggRE1BIGFuZCBjbGVhciB0aGUgZGVzY3JpcHRvcnMgKi9cXG4tXFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcXG4rXFx0LyogSGFzIHRvIHJ1biBiZWZvcmUgbWFjX2xpbmtfZG93bigpIGRpc2FibGVzIHRoZSBNQUMuICovXFxuK1xcdHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihwcml2KTtcXG4rXFxuK1xcdC8qIFN0b3AgYW5kIGRpc2Nvbm5lY3QgdGhlIFBIWSAqL1xcbitcXHRwaHlsaW5rX3N0b3AocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuIFxcbiBcXHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cXG4gXFx0ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mKTtcXG5AQCAtNzEwOSwxNSArNzE1NSwxMiBAQCB2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHQvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi9cXG4gXFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcXG4gXFxuLVxcdC8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovXFxuLVxcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XFxuK1xcdC8qIFN0b3AgdGhlIE1BQyBhbmQgdGhlIFRYL1JYIERNQSBjaGFubmVscyAqL1xcbitcXHRzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7XFxuIFxcbiBcXHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cXG4gXFx0ZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mKTtcXG4gXFxuLVxcdC8qIERpc2FibGUgdGhlIE1BQyBSeC9UeCAqL1xcbi1cXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIGZhbHNlKTtcXG4tXFxuIFxcdC8qIHNldCB0cmFuc19zdGFydCBzbyB3ZSBkb24ndCBnZXQgc3B1cmlvdXNcXG4gXFx0ICogd2F0Y2hkb2dzIGR1cmluZyByZXNldFxcbiBcXHQgKi9cXG5AQCAtNzE4OSwxMiArNzIzMiwxMiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdFxcdGhydGltZXJfc2V0dXAoXFx1MDAyNnR4X3EtXFx1MDAzZXR4dGltZXIsIHN0bW1hY190eF90aW1lciwgQ0xPQ0tfTU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTtcXG4gXFx0fVxcbiBcXG4tXFx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cXG4tXFx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCB0cnVlKTtcXG4tXFxuIFxcdC8qIFN0YXJ0IFJ4IFxcdTAwMjYgVHggRE1BIENoYW5uZWxzICovXFxuIFxcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xcbiBcXG4rXFx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cXG4rXFx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCB0cnVlKTtcXG4rXFxuIFxcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRnb3RvIGlycV9lcnJvcjtcXG5AQCAtODE5NSwxNyArODIzOCwxNSBAQCBpbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRcXHR0aW1lcl9kZWxldGVfc3luYyhcXHUwMDI2cHJpdi1cXHUwMDNlZWVlX2N0cmxfdGltZXIpO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBTdG9wIFRYL1JYIERNQSAqL1xcbi1cXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xcbi1cXG4tXFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcXG4tXFxuIFxcdC8qIEVuYWJsZSBQb3dlciBkb3duIG1vZGUgYnkgcHJvZ3JhbW1pbmcgdGhlIFBNVCByZWdzICovXFxuIFxcdGlmIChwcml2LVxcdTAwM2V3b2xvcHRzKSB7XFxuK1xcdFxcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XFxuK1xcdFxcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XFxuIFxcdFxcdHN0bW1hY19wbXQocHJpdiwgcHJpdi1cXHUwMDNlaHcsIHByaXYtXFx1MDAzZXdvbG9wdHMpO1xcbiBcXHRcXHRwcml2LVxcdTAwM2VpcnFfd2FrZSA9IDE7XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgZmFsc2UpO1xcbitcXHRcXHRzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7XFxuK1xcdFxcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XFxuIFxcdFxcdHBpbmN0cmxfcG1fc2VsZWN0X3NsZWVwX3N0YXRlKHByaXYtXFx1MDAzZWRldmljZSk7XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjI2LjAxMTE1OTQ3M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE3MTE3NTY5NDAwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19TVU44SVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19yZWxlYXNlXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiLFxuICAgIFwic3RtbWFjX3N1c3BlbmRcIixcbiAgICBcImR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkXCIsXG4gICAgXCJkd3hnbWFjMl90eF9tdGxfZHJhaW5cIixcbiAgICBcImR3eGdtYWMyX3J4X210bF9kcmFpblwiLFxuICAgIFwiZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF90eFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfdHhcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF9yeFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfcnhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLCBhZGRpbmcgcG9sbGluZyBsb29wcyB0byB3YWl0IGZvciBETUEgYW5kIE1UTCBxdWV1ZXMgdG8gZHJhaW4gYmVmb3JlIGRpc2FibGluZyB0aGUgTUFDLiBUaGlzIGFmZmVjdHMgdGhlIHRlYXJkb3duIHBhdGggb2YgYWxsIHN0bW1hYyB2YXJpYW50cyAoaW5jbHVkaW5nIHRob3NlIGVtdWxhdGVkIGluIFFFTVUgbGlrZSBzdW44aS1lbWFjKSBhbmQgbW9kaWZpZXMgdGhlIFhEUCBzZXR1cC90ZWFyZG93biBhbmQgc3VzcGVuZCBjYWxsYmFja3MuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZHVyaW5nIG5vcm1hbCBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlcyAoZS5nLiwgYnJpbmdpbmcgdGhlIGludGVyZmFjZSBkb3duKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudCwgbWFraW5nIHRoZW0gZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzM5MTIwNDZlZjA2MTMwZThhZjRlMzc3YTAyZDQxZDMyNmJlODVmMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDA4OjE0OjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcbmluZGV4IDUxOTQzNzA1YTJiMDMuLjJlM2YyNjAwMGQzMzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXG5AQCAtMjkxLDYgKzI5MSwxMCBAQFxuICNkZWZpbmUgWEdNQUNfVFRDXHRcdFx0R0VOTUFTSyg2LCA0KVxuICNkZWZpbmUgWEdNQUNfVFhRRU5cdFx0XHRHRU5NQVNLKDMsIDIpXG4gI2RlZmluZSBYR01BQ19UU0ZcdFx0XHRCSVQoMSlcbisjZGVmaW5lIFhHTUFDX01UTF9UWFFfREVCVUcoeClcdFx0KDB4MDAwMDExMDggKyAoMHg4MCAqICh4KSkpXG4rI2RlZmluZSBYR01BQ19UWFFTVFNcdFx0XHRCSVQoNClcbisjZGVmaW5lIFhHTUFDX1RSQ1NUU1x0XHRcdEdFTk1BU0soMiwgMSlcbisjZGVmaW5lIFhHTUFDX1RSQ1NUU19SRUFEXHRcdDB4MVxuICNkZWZpbmUgWEdNQUNfTVRMX1RDeF9FVFNfQ09OVFJPTCh4KVx0KDB4MDAwMDExMTAgKyAoMHg4MCAqICh4KSkpXG4gI2RlZmluZSBYR01BQ19NVExfVEN4X1FVQU5UVU1fV0VJR0hUKHgpXHQoMHgwMDAwMTExOCArICgweDgwICogKHgpKSlcbiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfU0VORFNMT1BFKHgpXHQoMHgwMDAwMTExYyArICgweDgwICogKHgpKSlcbkBAIC0zMDYsNiArMzEwLDkgQEBcbiAjZGVmaW5lIFhHTUFDX0VIRkNcdFx0XHRCSVQoNylcbiAjZGVmaW5lIFhHTUFDX1JTRlx0XHRcdEJJVCg1KVxuICNkZWZpbmUgWEdNQUNfUlRDXHRcdFx0R0VOTUFTSygxLCAwKVxuKyNkZWZpbmUgWEdNQUNfTVRMX1JYUV9ERUJVRyh4KVx0XHQoMHgwMDAwMTE0OCArICgweDgwICogKHgpKSlcbisjZGVmaW5lIFhHTUFDX1BSWFFcdFx0XHRHRU5NQVNLKDI5LCAxNilcbisjZGVmaW5lIFhHTUFDX1JYUVNUU1x0XHRcdEdFTk1BU0soNSwgNClcbiAjZGVmaW5lIFhHTUFDX01UTF9SWFFfRkxPV19DT05UUk9MKHgpXHQoMHgwMDAwMTE1MCArICgweDgwICogKHgpKSlcbiAjZGVmaW5lIFhHTUFDX1JGRFx0XHRcdEdFTk1BU0soMzEsIDE3KVxuICNkZWZpbmUgWEdNQUNfUkZBXHRcdFx0R0VOTUFTSygxNSwgMSlcbkBAIC0zODksNiArMzk2LDcgQEBcbiAjZGVmaW5lIFhHTUFDX05JU1x0XHRcdEJJVCgxNSlcbiAjZGVmaW5lIFhHTUFDX0FJU1x0XHRcdEJJVCgxNClcbiAjZGVmaW5lIFhHTUFDX0ZCRVx0XHRcdEJJVCgxMilcbisjZGVmaW5lIFhHTUFDX1JQU1x0XHRcdEJJVCg4KVxuICNkZWZpbmUgWEdNQUNfUkJVXHRcdFx0QklUKDcpXG4gI2RlZmluZSBYR01BQ19SSVx0XHRcdEJJVCg2KVxuICNkZWZpbmUgWEdNQUNfVEJVXHRcdFx0QklUKDIpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xuaW5kZXggMDM0MzdmMWNmM2RmMy4uOGUyN2JjNThjYzA1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xuQEAgLTQsNiArNCw3IEBAXG4gICogc3RtbWFjIFhHTUFDIHN1cHBvcnQuXG4gICovXG4gXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYml0ZmllbGQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9sbC5oXHUwMDNlXG4gI2luY2x1ZGUgXCJzdG1tYWMuaFwiXG4gI2luY2x1ZGUgXCJkd3hnbWFjMi5oXCJcbkBAIC0yNTEsMTMgKzI1MiwxMiBAQCBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIHtcbiBcdHUzMiB2YWx1ZTtcbiBcbitcdC8qIFRQUyBpcyBsYXRjaGVkIG9uY2Ugc2V0LCBzbyBjbGVhciBpdCBvbiBldmVyeSBUeCBETUEgc3RhcnQuICovXG4rXHR3cml0ZWwoWEdNQUNfVFBTLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pKTtcbitcbiBcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xuIFx0dmFsdWUgfD0gWEdNQUNfVFhTVDtcbiBcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xuLVxuLVx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19UWF9DT05GSUcpO1xuLVx0dmFsdWUgfD0gWEdNQUNfQ09ORklHX1RFO1xuLVx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19UWF9DT05GSUcpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RvcF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuQEAgLTI2OCwxMCArMjY4LDYgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0b3BfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xuIFx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfVFhTVDtcbiBcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICsgWEdNQUNfRE1BX0NIX1RYX0NPTlRST0woY2hhbikpO1xuLVxuLVx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19UWF9DT05GSUcpO1xuLVx0dmFsdWUgXHUwMDI2PSB+WEdNQUNfQ09ORklHX1RFO1xuLVx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19UWF9DT05GSUcpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RhcnRfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuQEAgLTI3OSwxMyArMjc1LDEyIEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4ge1xuIFx0dTMyIHZhbHVlO1xuIFxuK1x0LyogUlBTIGlzIGxhdGNoZWQgb25jZSBzZXQsIHNvIGNsZWFyIGl0IG9uIGV2ZXJ5IFJ4IERNQSBzdGFydC4gKi9cbitcdHdyaXRlbChYR01BQ19SUFMsIGlvYWRkciArIFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbikpO1xuK1xuIFx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19ETUFfQ0hfUlhfQ09OVFJPTChjaGFuKSk7XG4gXHR2YWx1ZSB8PSBYR01BQ19SWFNUO1xuIFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfUlhfQ09OVFJPTChjaGFuKSk7XG4tXG4tXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX1JYX0NPTkZJRyk7XG4tXHR2YWx1ZSB8PSBYR01BQ19DT05GSUdfUkU7XG4tXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX1JYX0NPTkZJRyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG5AQCAtNTgyLDYgKzU3Nyw3NyBAQCBzdGF0aWMgaW50IGR3eGdtYWMyX2VuYWJsZV90YnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW50IGR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbitcdFx0XHRcdCAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbilcbit7XG4rXHR1MzIgdmFsdWU7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciArIFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbiksIHZhbHVlLFxuK1x0XHRcdFx0IHZhbHVlIFx1MDAyNiBYR01BQ19UUFMsIDEwMCwgMTAwMDApO1xuK1x0aWYgKHJldClcbitcdFx0bmV0ZGV2X3dhcm4ocHJpdi1cdTAwM2VkZXYsIFwiVHggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XFxuXCIsXG4rXHRcdFx0ICAgIGNoYW4pO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludCBkd3hnbWFjMl90eF9tdGxfZHJhaW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuK1x0XHRcdFx0IHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgcXVldWUpXG4re1xuK1x0dTMyIHZhbHVlO1xuK1x0aW50IHJldDtcbitcbitcdC8qIFdhaXQgdW50aWwgdGhlIHF1ZXVlIGlzIGVtcHR5IGFuZCBpdHMgcmVhZCBjb250cm9sbGVyIGlzIG5vIGxvbmdlclxuK1x0ICogcHVsbGluZyBhIGZyYW1lIG91dCB0b3dhcmRzIHRoZSBNQUMuXG4rXHQgKi9cbitcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgKyBYR01BQ19NVExfVFhRX0RFQlVHKHF1ZXVlKSwgdmFsdWUsXG4rXHRcdFx0XHQgISh2YWx1ZSBcdTAwMjYgWEdNQUNfVFhRU1RTKSBcdTAwMjZcdTAwMjZcbitcdFx0XHRcdCBGSUVMRF9HRVQoWEdNQUNfVFJDU1RTLCB2YWx1ZSkgIT1cbitcdFx0XHRcdCBYR01BQ19UUkNTVFNfUkVBRCxcbitcdFx0XHRcdCAxMDAsIDEwMDAwKTtcbitcdGlmIChyZXQpXG4rXHRcdG5ldGRldl93YXJuKHByaXYtXHUwMDNlZGV2LCBcIk1UTCBUeCBxdWV1ZSAldSBkcmFpbiB0aW1lb3V0XFxuXCIsXG4rXHRcdFx0ICAgIHF1ZXVlKTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBpbnQgZHd4Z21hYzJfcnhfbXRsX2RyYWluKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbitcdFx0XHRcdCB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIHF1ZXVlKVxuK3tcbitcdHUzMiB2YWx1ZTtcbitcdGludCByZXQ7XG4rXG4rXHQvKiBXYWl0IHVudGlsIG5vIHBhY2tldCBpcyBsZWZ0IGluIHRoZSBxdWV1ZSBhbmQgdGhlIHF1ZXVlIHJlcG9ydHNcbitcdCAqIGl0c2VsZiBlbXB0eS5cbitcdCAqL1xuK1x0cmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciArIFhHTUFDX01UTF9SWFFfREVCVUcocXVldWUpLCB2YWx1ZSxcbitcdFx0XHRcdCAhRklFTERfR0VUKFhHTUFDX1BSWFEsIHZhbHVlKSBcdTAwMjZcdTAwMjZcbitcdFx0XHRcdCAhRklFTERfR0VUKFhHTUFDX1JYUVNUUywgdmFsdWUpLFxuK1x0XHRcdFx0IDEwMCwgMTAwMDApO1xuK1x0aWYgKHJldClcbitcdFx0bmV0ZGV2X3dhcm4ocHJpdi1cdTAwM2VkZXYsIFwiTVRMIFJ4IHF1ZXVlICV1IGRyYWluIHRpbWVvdXRcXG5cIixcbitcdFx0XHQgICAgcXVldWUpO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludCBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4rXHRcdFx0XHQgICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pXG4re1xuK1x0dTMyIHZhbHVlO1xuK1x0aW50IHJldDtcbitcbitcdHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpb2FkZHIgKyBYR01BQ19ETUFfQ0hfU1RBVFVTKGNoYW4pLCB2YWx1ZSxcbitcdFx0XHRcdCB2YWx1ZSBcdTAwMjYgWEdNQUNfUlBTLCAxMDAsIDEwMDAwKTtcbitcdGlmIChyZXQpXG4rXHRcdG5ldGRldl93YXJuKHByaXYtXHUwMDNlZGV2LCBcIlJ4IERNQSBjaGFubmVsICV1IHN0b3AgdGltZW91dFxcblwiLFxuK1x0XHRcdCAgICBjaGFuKTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XG4gXHQucmVzZXQgPSBkd3hnbWFjMl9kbWFfcmVzZXQsXG4gXHQuaW5pdCA9IGR3eGdtYWMyX2RtYV9pbml0LFxuQEAgLTYxMCw0ICs2NzYsOCBAQCBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzID0ge1xuIFx0LnNldF9iZnNpemUgPSBkd3hnbWFjMl9zZXRfYmZzaXplLFxuIFx0LmVuYWJsZV9zcGggPSBkd3hnbWFjMl9lbmFibGVfc3BoLFxuIFx0LmVuYWJsZV90YnMgPSBkd3hnbWFjMl9lbmFibGVfdGJzLFxuK1x0LnR4X2RtYV9zdG9wcGVkID0gZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWQsXG4rXHQudHhfbXRsX2RyYWluID0gZHd4Z21hYzJfdHhfbXRsX2RyYWluLFxuK1x0LnJ4X210bF9kcmFpbiA9IGR3eGdtYWMyX3J4X210bF9kcmFpbixcbitcdC5yeF9kbWFfc3RvcHBlZCA9IGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkLFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG5pbmRleCBlNjMxN2I5NGZmZjdkLi4yM2E2OTE1YWNkZmJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbkBAIC0yMjksNiArMjI5LDE1IEBAIHN0cnVjdCBzdG1tYWNfZG1hX29wcyB7XG4gXHRcdFx0ICAgYm9vbCBlbiwgdTMyIGNoYW4pO1xuIFx0aW50ICgqZW5hYmxlX3Ricykoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdFx0XHQgIGJvb2wgZW4sIHUzMiBjaGFuKTtcbitcdC8qIE9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gKi9cbitcdGludCAoKnR4X2RtYV9zdG9wcGVkKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuK1x0XHRcdCAgICAgIHUzMiBjaGFuKTtcbitcdGludCAoKnR4X210bF9kcmFpbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbitcdFx0XHQgICAgdTMyIHF1ZXVlKTtcbitcdGludCAoKnJ4X210bF9kcmFpbikoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbitcdFx0XHQgICAgdTMyIHF1ZXVlKTtcbitcdGludCAoKnJ4X2RtYV9zdG9wcGVkKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuK1x0XHRcdCAgICAgIHUzMiBjaGFuKTtcbiB9O1xuIFxuICNkZWZpbmUgc3RtbWFjX2RtYV9pbml0KF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuQEAgLTI4OSw2ICsyOTgsMTQgQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHtcbiBcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfc3BoLCBfX3ByaXYsIF9fYXJncylcbiAjZGVmaW5lIHN0bW1hY19lbmFibGVfdGJzKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuIFx0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBlbmFibGVfdGJzLCBfX3ByaXYsIF9fYXJncylcbisjZGVmaW5lIHN0bW1hY190eF9kbWFfc3RvcHBlZChfX3ByaXYsIF9fYXJncy4uLikgXFxcbitcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgdHhfZG1hX3N0b3BwZWQsIF9fcHJpdiwgX19hcmdzKVxuKyNkZWZpbmUgc3RtbWFjX3R4X210bF9kcmFpbihfX3ByaXYsIF9fYXJncy4uLikgXFxcbitcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgdHhfbXRsX2RyYWluLCBfX3ByaXYsIF9fYXJncylcbisjZGVmaW5lIHN0bW1hY19yeF9tdGxfZHJhaW4oX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4rXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHJ4X210bF9kcmFpbiwgX19wcml2LCBfX2FyZ3MpXG4rI2RlZmluZSBzdG1tYWNfcnhfZG1hX3N0b3BwZWQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4rXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIHJ4X2RtYV9zdG9wcGVkLCBfX3ByaXYsIF9fYXJncylcbiBcbiBzdHJ1Y3QgbWFjX2RldmljZV9pbmZvO1xuIHN0cnVjdCBuZXRfZGV2aWNlO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAzNTkxNzU1ZWEzMGJlLi5jYzNhMGFlMGM1NmY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTI1NjksNiArMjU2OSw1MiBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfc3RvcF9hbGxfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xuIH1cbiBcbisvKipcbisgKiBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24gLSBvcmRlcmVkIGRhdGFwYXRoIHRlYXJkb3duIGFzIHBlciBJUCBzcGVjaWZpY2F0aW9uXG4rICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuKyAqIERlc2NyaXB0aW9uOlxuKyAqIFdoZW4gdGVhcmRvd24gb3BzIGFyZSBhdmFpbGFibGUsIGZvbGxvdyB0aGUgZGF0YWJvb2sgb3JkZXJlZCB0ZWFyZG93blxuKyAqIHNlcXVlbmNlLlxuKyAqIEZvbGxvd3MgdGhlIGxlZ2FjeSBzdG9wICsgTUFDIGRpc2FibGUgZm9yIHZhcmlhbnRzIHdpdGhvdXQgdGhlIGZlYXR1cmUuXG4rICovXG4rc3RhdGljIHZvaWQgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbit7XG4rXHR1MzIgcnhfY2hhbm5lbHNfY291bnQgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbitcdHUzMiB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlO1xuK1x0dTMyIGNoYW47XG4rXG4rXHQvKiBTdG9wIGFsbCBUWCBETUEgY2hhbm5lbHMgKi9cbitcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXG4rXHRcdHN0bW1hY19zdG9wX3R4X2RtYShwcml2LCBjaGFuKTtcbitcbitcdC8qIFdhaXQgZm9yIGV2ZXJ5IFRYIERNQSBjaGFubmVsIHRvIHJlcG9ydCBpdHNlbGYgc3RvcHBlZCAqL1xuK1x0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlZG1hLVx1MDAzZXR4X2RtYV9zdG9wcGVkKVxuK1x0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxuK1x0XHRcdHN0bW1hY190eF9kbWFfc3RvcHBlZChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4rXG4rXHQvKiBXYWl0IGZvciB0aGUgTVRMIFRYIHF1ZXVlcyB0byBmaW5pc2ggcHVzaGluZyBpbnRvIHRoZSBNQUMgKi9cbitcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZWRtYS1cdTAwM2V0eF9tdGxfZHJhaW4pXG4rXHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXG4rXHRcdFx0c3RtbWFjX3R4X210bF9kcmFpbihwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4rXG4rXHQvKiBEaXNhYmxlIHRoZSBNQUMgVFggYW5kIFJYICovXG4rXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgZmFsc2UpO1xuK1xuK1x0LyogV2FpdCBmb3IgdGhlIE1UTCBSWCBxdWV1ZXMgdG8gZHJhaW4gaW50byB0aGUgUlggRE1BICovXG4rXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNlcnhfbXRsX2RyYWluKVxuK1x0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxuK1x0XHRcdHN0bW1hY19yeF9tdGxfZHJhaW4ocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4pO1xuK1xuK1x0LyogU3RvcCBhbGwgUlggRE1BIGNoYW5uZWxzICovXG4rXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxuK1x0XHRzdG1tYWNfc3RvcF9yeF9kbWEocHJpdiwgY2hhbik7XG4rXG4rXHQvKiBXYWl0IGZvciBldmVyeSBSWCBETUEgY2hhbm5lbCB0byByZXBvcnQgaXRzZWxmIHN0b3BwZWQgKi9cbitcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZWRtYS1cdTAwM2VyeF9kbWFfc3RvcHBlZClcbitcdFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgcnhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcbitcdFx0XHRzdG1tYWNfcnhfZG1hX3N0b3BwZWQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGNoYW4pO1xuK31cbitcbiAvKipcbiAgKiAgc3RtbWFjX2RtYV9vcGVyYXRpb25fbW9kZSAtIEhXIERNQSBvcGVyYXRpb24gbW9kZVxuICAqICBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXG5AQCAtMzY5Miw5ICszNzM4LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0cHJpdi1cdTAwM2Vody1cdTAwM2VyeF9jc3VtID0gMDtcbiBcdH1cbiBcbi1cdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4tXG4gXHQvKiBTZXQgdGhlIEhXIERNQSBtb2RlIGFuZCB0aGUgQ09FICovXG4gXHRzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYpO1xuIFxuQEAgLTM3NTAsNiArMzc5Myw5IEBAIHN0YXRpYyBpbnQgc3RtbWFjX2h3X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHQvKiBTdGFydCB0aGUgYmFsbCByb2xsaW5nLi4uICovXG4gXHRzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTtcbiBcbitcdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4rXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4rXG4gXHRwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKHByaXYtXHUwMDNlcGh5bGluayk7XG4gXHRzdG1tYWNfc2V0X2h3X3ZsYW5fbW9kZShwcml2LCBwcml2LVx1MDAzZWh3KTtcbiBcdHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jayhwcml2LVx1MDAzZXBoeWxpbmspO1xuQEAgLTQyMzgsOSArNDI4NCw2IEBAIHN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gXHR1OCBjaGFuO1xuIFxuLVx0LyogU3RvcCBhbmQgZGlzY29ubmVjdCB0aGUgUEhZICovXG4tXHRwaHlsaW5rX3N0b3AocHJpdi1cdTAwM2VwaHlsaW5rKTtcbi1cbiBcdHN0bW1hY19kaXNhYmxlX2FsbF9xdWV1ZXMocHJpdik7XG4gXG4gXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbisrKVxuQEAgLTQyNTEsOCArNDI5NCwxMSBAQCBzdGF0aWMgdm9pZCBfX3N0bW1hY19yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHQvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi9cbiBcdHN0bW1hY19mcmVlX2lycShkZXYsIFJFUV9JUlFfRVJSX0FMTCwgMCk7XG4gXG4tXHQvKiBTdG9wIFRYL1JYIERNQSBhbmQgY2xlYXIgdGhlIGRlc2NyaXB0b3JzICovXG4tXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuK1x0LyogSGFzIHRvIHJ1biBiZWZvcmUgbWFjX2xpbmtfZG93bigpIGRpc2FibGVzIHRoZSBNQUMuICovXG4rXHRzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7XG4rXG4rXHQvKiBTdG9wIGFuZCBkaXNjb25uZWN0IHRoZSBQSFkgKi9cbitcdHBoeWxpbmtfc3RvcChwcml2LVx1MDAzZXBoeWxpbmspO1xuIFxuIFx0LyogUmVsZWFzZSBhbmQgZnJlZSB0aGUgUngvVHggcmVzb3VyY2VzICovXG4gXHRmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mKTtcbkBAIC03MTA5LDE1ICs3MTU1LDEyIEBAIHZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHQvKiBGcmVlIHRoZSBJUlEgbGluZXMgKi9cbiBcdHN0bW1hY19mcmVlX2lycShkZXYsIFJFUV9JUlFfRVJSX0FMTCwgMCk7XG4gXG4tXHQvKiBTdG9wIFRYL1JYIERNQSBjaGFubmVscyAqL1xuLVx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbitcdC8qIFN0b3AgdGhlIE1BQyBhbmQgdGhlIFRYL1JYIERNQSBjaGFubmVscyAqL1xuK1x0c3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duKHByaXYpO1xuIFxuIFx0LyogUmVsZWFzZSBhbmQgZnJlZSB0aGUgUngvVHggcmVzb3VyY2VzICovXG4gXHRmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mKTtcbiBcbi1cdC8qIERpc2FibGUgdGhlIE1BQyBSeC9UeCAqL1xuLVx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGZhbHNlKTtcbi1cbiBcdC8qIHNldCB0cmFuc19zdGFydCBzbyB3ZSBkb24ndCBnZXQgc3B1cmlvdXNcbiBcdCAqIHdhdGNoZG9ncyBkdXJpbmcgcmVzZXRcbiBcdCAqL1xuQEAgLTcxODksMTIgKzcyMzIsMTIgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRocnRpbWVyX3NldHVwKFx1MDAyNnR4X3EtXHUwMDNldHh0aW1lciwgc3RtbWFjX3R4X3RpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpO1xuIFx0fVxuIFxuLVx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbi1cdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbi1cbiBcdC8qIFN0YXJ0IFJ4IFx1MDAyNiBUeCBETUEgQ2hhbm5lbHMgKi9cbiBcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xuIFxuK1x0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbitcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbitcbiBcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBpcnFfZXJyb3I7XG5AQCAtODE5NSwxNyArODIzOCwxNSBAQCBpbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHR0aW1lcl9kZWxldGVfc3luYyhcdTAwMjZwcml2LVx1MDAzZWVlZV9jdHJsX3RpbWVyKTtcbiBcdH1cbiBcbi1cdC8qIFN0b3AgVFgvUlggRE1BICovXG4tXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuLVxuLVx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcbi1cbiBcdC8qIEVuYWJsZSBQb3dlciBkb3duIG1vZGUgYnkgcHJvZ3JhbW1pbmcgdGhlIFBNVCByZWdzICovXG4gXHRpZiAocHJpdi1cdTAwM2V3b2xvcHRzKSB7XG4rXHRcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4rXHRcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XG4gXHRcdHN0bW1hY19wbXQocHJpdiwgcHJpdi1cdTAwM2VodywgcHJpdi1cdTAwM2V3b2xvcHRzKTtcbiBcdFx0cHJpdi1cdTAwM2VpcnFfd2FrZSA9IDE7XG4gXHR9IGVsc2Uge1xuLVx0XHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgZmFsc2UpO1xuK1x0XHRzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7XG4rXHRcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XG4gXHRcdHBpbmN0cmxfcG1fc2VsZWN0X3NsZWVwX3N0YXRlKHByaXYtXHUwMDNlZGV2aWNlKTtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjI2LjAxMTE2MTM0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5ODg0NzU0NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYSBOZXR3b3JrIERyaXZlciBQYXRjaCBpbiBRRU1VKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIGBzdG1tYWNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgZHd4Z21hYzJgIGhhcmR3YXJlLiBJdCBpbnRyb2R1Y2VzIGEgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgdG8gZW5zdXJlIGEgY2xlYW4gc2h1dGRvd24sIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgRE1BLWJhc2VkIGhhcmR3YXJlLiBUaGlzIHRvdWNoZXMgYSBmZXcga2V5IGZ1bmN0aW9uczogYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAsIHBsdXMgbW9kaWZpY2F0aW9ucyB0byBgc3RtbWFjX2h3X3NldHVwYCwgYF9fc3RtbWFjX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfb3BlbmAsIGFuZCBgc3RtbWFjX3N1c3BlbmRgLiBTaW5jZSBgc3RtbWFjYCBpcyBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBNQUNzLCB0aGUgYmlnIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gVGhhdCdzIHRoZSBjcnV4IG9mIHRoaXMuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMsIFwiRG9lcyBRRU1VIGV2ZW4gKmVtdWxhdGUqIGBzdG1tYWNgP1wiIEkga25vdyBpdCBoYXMgZW11bGF0aW9ucyBmb3IgdGhpbmdzIGxpa2UgSW50ZWwncyBpR0IsIGUxMDAwLCBhbmQgUlRMODEzOSwgYXMgd2VsbCBhcyBWaXJ0SU8gYW5kIFZNWE5FVDMuIEJ1dCBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYSBkaXJlY3QgYHN0bW1hY2AgZW11bGF0aW9uIGluIHRoZSB0eXBpY2FsIFFFTVUgbmV0d29yayBkZXZpY2UgbGlzdC4gSSBldmVuIHN0YXJ0ZWQgdG8gbG9vay5cblxuVGhlbiBJIHNhdyBzb21lICpzaW1pbGFyKiBuZXR3b3JrIGhhcmR3YXJlIGVtdWxhdGVkIGJ5IFFFTVUgbGlrZSBgaW14X2ZlYy5jYCwgYGNhZGVuY2VfZ2VtLmNgLCBgZnRnbWFjMTAwLmNgLCBgbnBjbTd4eF9lbWMuY2AsIGBhbGx3aW5uZXItc3VuOGktZW1hYy5jYCwgYW5kIGBhbGx3aW5uZXItZW1hYy5jYC4gXCJXYWl0LCBkb2VzIFFFTVUgaGF2ZSBhIGBkd21hY2AgZW11bGF0aW9uP1wiIEkgdGhvdWdodC4gTm90IGRpcmVjdGx5LCBidXQuLi4gYHN0bW1hY2AgaXMgdXNlZCBieSBhICp0b24qIG9mIEFSTSBTb0NzLiBUaGUgaW1wbGljYXRpb24gaXMsIFFFTVUgbWlnaHQgZW11bGF0ZSB0aGUgU29DICphcyBhIHdob2xlKiwgaW5jbHVkaW5nIHRoZSBgc3RtbWFjYCBkcml2ZXIgYXMgcGFydCBvZiB0aGUgYm9hcmQgZW11bGF0aW9uLlxuXG5TbywgSSB3YXMgYWJvdXQgdG8gZ28gc2VhcmNoIFFFTVUgZm9yIGBzdG1tYWNgIG9yIGBkd21hY2Agd2hlbiBJIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgZW1waGFzaXplZCBjb2RlIHBhdGhzIHRoYXQgYXJlICp1bnJlYWNoYWJsZSogaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gVGhhdCBnb3QgbWUgdGhpbmtpbmcuLi4gaXMgdGhlcmUgYW5vdGhlciBhdmVudWU/XG5cblRoZW4gSSByZW1lbWJlcmVkIHRoYXQgYHN0bW1hY2AsIHdoaWxlIHByaW1hcmlseSBhIHBsYXRmb3JtIGRyaXZlciwgKmFsc28qIGhhcyBQQ0kgYmluZGluZ3MuIFRoYXQgbWlnaHQgYmUgYSB3YXkgdG8gcmVhY2ggdGhlIGNvZGUuIFNvLCBteSBuZXh0IGNoZWNrIGlzIGdvaW5nIHRvIGJlIHRvIGRldGVybWluZSBpZiB0aGVyZSBpcyBhIGBzdG1tYWNgIFBDSSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczODcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNDozMy45OTk2Mzk4NDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzNjI4MjM1NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlci4qc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNDozNi4yMzU5MzE5MTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA1NjY3ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBzZWFyY2g6XG5cbioqSW5pdGlhbCBJbnF1aXJ5OiBUYXJnZXRpbmcgdGhlIFJpZ2h0IEtleXdvcmRzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBgc3RtbWFjX3BjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXIuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEknbSB0aGlua2luZyB0aGF0J3MgdGhlIGxpa2VseSBkcml2ZXIgbW9kdWxlIG5hbWUgZm9yIGEgc3BlY2lmaWMgUENJLWJhc2VkIEV0aGVybmV0IGNvbnRyb2xsZXIgdXNpbmcgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAoU1RNTUFDKSBhcmNoaXRlY3R1cmUuIEknbGwgbmVlZCB0byB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBuYXJyb3cgbXkgc2VhcmNoIGFuZCBnZXQgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCwgc3BlY2lmaWNhbGx5LCBiZWNhdXNlIHRoZXJlIGFyZSBvdGhlciBkcml2ZXJzIGFuZCBjb250cm9sbGVycyBvdXQgdGhlcmUuIEl0J3MgaW1wb3J0YW50IHRvIGZpbmQgd2hhdCBJIGFjdHVhbGx5IHdhbnQsIG5vdCBhIGdlbmVyYWwgb3ZlcnZpZXcuIFNvIEknbGwgc3RhcnQgd2l0aCB0aGlzIHNwZWNpZmljIHRlcm0sIGJ1dCBJJ2xsIG5lZWQgdG8ga2VlcCBhbiBvcGVuIG1pbmQgZm9yIHZhcmlhdGlvbnMgb3IgcmVsYXRlZCBjb25jZXB0cyBpZiB0aGlzIHByaW1hcnkgc2VhcmNoIGRvZXNuJ3QgZGVsaXZlciBwcmVjaXNlIGVub3VnaCByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDU2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTQ6MzkuMjQxNjAyMDk0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDUxNDA1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNDozOS4yODcwNjE5ODlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA1MDY5MDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIFBDSSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHRyb3VibGVzaG9vdCB0aGlzIG5ldHdvcmtpbmcgaXNzdWUuIExldCdzIHNlZS4uLiB0aGUgcHJvYmxlbSAqc2VlbXMqIHRvIGJlIHJlbGF0ZWQgdG8gdGhlIFNUTU1BQyBkcml2ZXIsIGFuZCBzaW5jZSB0aGUgc3lzdGVtIHVzZXMgUENJLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYC4gVGhhdCBmaWxlIGlzIHRoZSBtb3N0IGxpa2VseSBjYW5kaWRhdGUgZm9yIGhhbmRsaW5nIHRoZSBQQ0ktc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIG9wZXJhdGlvbiBvZiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaXMgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBjb2RlIHRoYXQgZGVhbHMgd2l0aCBQQ0kgZGV2aWNlIHByb2JlLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBvdGhlciBQQ0ktc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gSSdsbCBuZWVkIHRvIGNhcmVmdWxseSByZXZpZXcgaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIFBDSSBidXMsIGVzcGVjaWFsbHkgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBETUEgc2V0dXAsIGJ1ZmZlciBtYW5hZ2VtZW50LCBvciBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lcy4gQW55IG9mIHRoZXNlIGNvdWxkIGVhc2lseSBiZSB0aGUgc291cmNlIG9mIHRoZSBpbnRlcm1pdHRlbnQgb3IgcGVyZm9ybWFuY2UtcmVsYXRlZCBwcm9ibGVtcyBJJ20gY2hhc2luZy4gTXkgcHJpbWFyeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgU1RNTUFDIGNvcmUgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY5MywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjQyLjY5MjEzMzMxNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiY2hhaW5fbW9kZS5jXCIsXG4gICAgXCJjb21tb24uaFwiLFxuICAgIFwiZGVzY3MuaFwiLFxuICAgIFwiZGVzY3NfY29tLmhcIixcbiAgICBcImR3bWFjLWFuYXJpb24uY1wiLFxuICAgIFwiZHdtYWMtZHdjLXFvcy1ldGguY1wiLFxuICAgIFwiZHdtYWMtZWljNzcwMC5jXCIsXG4gICAgXCJkd21hYy1nZW5lcmljLmNcIixcbiAgICBcImR3bWFjLWlteC5jXCIsXG4gICAgXCJkd21hYy1pbmdlbmljLmNcIixcbiAgICBcImR3bWFjLWludGVsLXBsYXQuY1wiLFxuICAgIFwiZHdtYWMtaW50ZWwuY1wiLFxuICAgIFwiZHdtYWMtaW50ZWwuaFwiLFxuICAgIFwiZHdtYWMtaXBxODA2eC5jXCIsXG4gICAgXCJkd21hYy1sb29uZ3Nvbi5jXCIsXG4gICAgXCJkd21hYy1sb29uZ3NvbjEuY1wiLFxuICAgIFwiZHdtYWMtbHBjMTh4eC5jXCIsXG4gICAgXCJkd21hYy1tZWRpYXRlay5jXCIsXG4gICAgXCJkd21hYy1tZXNvbi5jXCIsXG4gICAgXCJkd21hYy1tZXNvbjhiLmNcIixcbiAgICBcImR3bWFjLW1vdG9yY29tbS5jXCIsXG4gICAgXCJkd21hYy1udXZvdG9uLmNcIixcbiAgICBcImR3bWFjLXFjb20tZXRocW9zLmNcIixcbiAgICBcImR3bWFjLXJlbmVzYXMtZ2JldGguY1wiLFxuICAgIFwiZHdtYWMtcmsuY1wiLFxuICAgIFwiZHdtYWMtcnpuMS5jXCIsXG4gICAgXCJkd21hYy1zMzIuY1wiLFxuICAgIFwiZHdtYWMtc29jZnBnYS5jXCIsXG4gICAgXCJkd21hYy1zb3BoZ28uY1wiLFxuICAgIFwiZHdtYWMtc3BhY2VtaXQuY1wiLFxuICAgIFwiZHdtYWMtc3RhcmZpdmUuY1wiLFxuICAgIFwiZHdtYWMtc3RpLmNcIixcbiAgICBcImR3bWFjLXN0bTMyLmNcIixcbiAgICBcImR3bWFjLXN1bjU1aS5jXCIsXG4gICAgXCJkd21hYy1zdW44aS5jXCIsXG4gICAgXCJkd21hYy1zdW54aS5jXCIsXG4gICAgXCJkd21hYy10ZWdyYS5jXCIsXG4gICAgXCJkd21hYy10aGVhZC5jXCIsXG4gICAgXCJkd21hYy12aXNjb250aS5jXCIsXG4gICAgXCJkd21hYzEwMC5oXCIsXG4gICAgXCJkd21hYzEwMDAuaFwiLFxuICAgIFwiZHdtYWMxMDAwX2NvcmUuY1wiLFxuICAgIFwiZHdtYWMxMDAwX2RtYS5jXCIsXG4gICAgXCJkd21hYzEwMF9jb3JlLmNcIixcbiAgICBcImR3bWFjMTAwX2RtYS5jXCIsXG4gICAgXCJkd21hYzQuaFwiLFxuICAgIFwiZHdtYWM0X2NvcmUuY1wiLFxuICAgIFwiZHdtYWM0X2Rlc2NzLmNcIixcbiAgICBcImR3bWFjNF9kZXNjcy5oXCIsXG4gICAgXCJkd21hYzRfZG1hLmNcIixcbiAgICBcImR3bWFjNF9kbWEuaFwiLFxuICAgIFwiZHdtYWM0X2xpYi5jXCIsXG4gICAgXCJkd21hYzUuY1wiLFxuICAgIFwiZHdtYWM1LmhcIixcbiAgICBcImR3bWFjX2RtYS5oXCIsXG4gICAgXCJkd21hY19saWIuY1wiLFxuICAgIFwiZHd4Z21hYzIuaFwiLFxuICAgIFwiZHd4Z21hYzJfY29yZS5jXCIsXG4gICAgXCJkd3hnbWFjMl9kZXNjcy5jXCIsXG4gICAgXCJkd3hnbWFjMl9kbWEuY1wiLFxuICAgIFwiZHd4bGdtYWMyLmhcIixcbiAgICBcImVuaF9kZXNjLmNcIixcbiAgICBcImh3aWYuY1wiLFxuICAgIFwiaHdpZi5oXCIsXG4gICAgXCJtbWMuaFwiLFxuICAgIFwibW1jX2NvcmUuY1wiLFxuICAgIFwibm9ybV9kZXNjLmNcIixcbiAgICBcInJpbmdfbW9kZS5jXCIsXG4gICAgXCJzdG1tYWMuaFwiLFxuICAgIFwic3RtbWFjX2VzdC5jXCIsXG4gICAgXCJzdG1tYWNfZXN0LmhcIixcbiAgICBcInN0bW1hY19ldGh0b29sLmNcIixcbiAgICBcInN0bW1hY19mcGUuY1wiLFxuICAgIFwic3RtbWFjX2ZwZS5oXCIsXG4gICAgXCJzdG1tYWNfaHd0c3RhbXAuY1wiLFxuICAgIFwic3RtbWFjX2xpYnBjaS5jXCIsXG4gICAgXCJzdG1tYWNfbGlicGNpLmhcIixcbiAgICBcInN0bW1hY19tYWluLmNcIixcbiAgICBcInN0bW1hY19tZGlvLmNcIixcbiAgICBcInN0bW1hY19wY2kuY1wiLFxuICAgIFwic3RtbWFjX3Bjcy5jXCIsXG4gICAgXCJzdG1tYWNfcGNzLmhcIixcbiAgICBcInN0bW1hY19wbGF0Zm9ybS5jXCIsXG4gICAgXCJzdG1tYWNfcGxhdGZvcm0uaFwiLFxuICAgIFwic3RtbWFjX3B0cC5jXCIsXG4gICAgXCJzdG1tYWNfcHRwLmhcIixcbiAgICBcInN0bW1hY19zZWxmdGVzdHMuY1wiLFxuICAgIFwic3RtbWFjX3RjLmNcIixcbiAgICBcInN0bW1hY192bGFuLmNcIixcbiAgICBcInN0bW1hY192bGFuLmhcIixcbiAgICBcInN0bW1hY194ZHAuY1wiLFxuICAgIFwic3RtbWFjX3hkcC5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjQyLjY5MjI3NDA2NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjE4OTE1MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gc3RtbWFjX3BjaS5jKipcblxuT2theSwgaGVyZSB3ZSBhcmUsIHN0YXJpbmcgYXQgYHN0bW1hY19wY2kuY2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gc3RhcnQgZGlzc2VjdGluZyB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlLCByaWdodCBvZmYgdGhlIGJhdC4gSXQncyB0aGUgUENJIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTVE1NQUMgZHJpdmVyLCBhbmQgSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgUENJIGJ1cyBpdHNlbGYuIEknbSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgUENJIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBpbnRlcnJ1cHQgaGFuZGxpbmcg4oCTIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgYSBQQ0kgZHJpdmVyLiBJJ20gYW50aWNpcGF0aW5nIHNvbWUgcG90ZW50aWFsbHkgdmVuZG9yLXNwZWNpZmljIHJlZ2lzdGVyIGFjY2VzcyBoZXJlIGFzIHdlbGwsIGdpdmVuIHRoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIHByb3ByaWV0YXJ5IFNvQyBhbmQgUEhZLCBhbmQgSSBuZWVkIHRvIGtlZXAgYW4gZXllIG91dCBmb3IgdGhhdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXnigJl2ZSBoYW5kbGVkIHRoZSBsaW5rIGluaXRpYWxpemF0aW9uLCBETUEgc2V0dXAsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBQQ0kgZnJhbWV3b3JrLiBMZXQncyBzZWUgd2hhdCdzIGluIHN0b3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTQ5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjQ1LjkxNDE2ODU2M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzMzgxMzUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNDo0NS45NTg1MTUyNThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExNDg3Mjg1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2Vzcywgc3BlYWtpbmcgZnJvbSBhIGZpcnN0LXBlcnNvbiBleHBlcnQgcGVyc3BlY3RpdmUsIGFuZCBzdGFydGluZyB3aXRoIGEgYm9sZGVkIGhlYWRlcjpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgUmVnaXN0cmF0aW9uIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBob2xkIG9uIGEgc2Vjb25kLiBcIkhvdyBpcyBpdCByZWdpc3RlcmVkP1wiIEkgaW1tZWRpYXRlbHkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZWNoYW5pc20gYmVoaW5kIHRoZSByZWdpc3RyYXRpb24uIElzIGl0IGEgZGlyZWN0IG1hcHBpbmc/IEFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZSBzb3J0IG9mIG1ldGFkYXRhIHN0cnVjdHVyZT8gT3IgaXMgaXQgbW9yZSBhYnN0cmFjdCBhbmQgc2VtYW50aWMtYmFzZWQ/IFRoZSBudWFuY2VzIGhlcmUgYXJlIGNyaXRpY2FsLiBLbm93aW5nIHRoZSB1bmRlcmx5aW5nIHJlZ2lzdHJhdGlvbiBtZXRob2RvbG9neSB3aWxsIGNvbXBsZXRlbHkgZGljdGF0ZSB0aGUgc3Vic2VxdWVudCBzdGVwcyBJIHRha2UgaW4gYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgbWFuaXB1bGF0aW9uLiBJIG5lZWQgdGhlIGRldGFpbC4gVGhlIGFyY2hpdGVjdHVyZSBpbiBxdWVzdGlvbiBsaWtlbHkgcGxheXMgaW50byB0aGlzIHJlZ2lzdHJhdGlvbiBhbmQgdGhlIGhvdy93aHkgb2YgdGhhdCBpcyB3aGF0IEkgbmVlZCB0byB1bnBhY2sgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMjUsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE0OjQ5LjA3MzM5MTEwOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0NTQxNzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIyMjptb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTQ6NDkuMjc3OTM2ODI0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjkzMTE0ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQWNjZXNzaWJpbGl0eSBvZiBhIFBDSSBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSBmdXp6IGl0IGVmZmVjdGl2ZWx5IHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBpZiBRRU1VIGVtdWxhdGVzIHRoZSBkZXZpY2UuIFVuZm9ydHVuYXRlbHksIFFFTVUgZG9lc24ndCBkaXJlY3RseSBlbXVsYXRlIHRoZSBgc3RtbWFjYCBkZXZpY2UsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgb2Z0ZW4gdXNlZCBvbiBJbnRlbCBRdWFyayBhbmQgRWxraGFydCBMYWtlIHN5c3RlbXMuXG5cblRoZSBpbW1lZGlhdGUgbmV4dCB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIFN5emthbGxlci4gUGVyaGFwcyB0aGVyZSdzIGEgd29ya2Fyb3VuZCB3aXRoIGEgcHNldWRvLWRldmljZSBvciBhIG1ldGhvZCBsZXZlcmFnaW5nIGBzeXpfcGNpX3NldHVwYD8gQnV0IFN5emthbGxlcidzIFBDSSBmdXp6aW5nIHJlbGllcyBvbiB0aGUgdGFyZ2V0IGRldmljZSBiZWluZyBlbXVsYXRlZCB3aXRoaW4gUUVNVSwgb3IgcG90ZW50aWFsbHkgdGhyb3VnaCB1c2Ugb2YgYHN5el9wY2lfc2V0dXBgLiBJZiBRRU1VIGRvZXNuJ3QgZW11bGF0ZSBpdCwgdGhlcmUncyBhIHByb2JsZW0uIFRoZSBwcm9tcHQgbWVudGlvbnMgYSBmZXcgY2F0ZWdvcmllcyBvZiB1bnJlYWNoYWJsZSBjb2RlOiBob3QtdW5wbHVnLCBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMsIGFuZCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gSSBxdWlja2x5IHJ1bGUgb3V0IGBzdG1tYWNgIGZhbGxpbmcgaW50byB0aGF0IGxhc3QgY2F0ZWdvcnkg4oCTIGl0J3MgYW4gRXRoZXJuZXQgTUFDIGRyaXZlciwgbm90IGEgc3BlY2lhbGl6ZWQgZGV2aWNlLlxuXG5Ob3csIGRvZXMgUUVNVSBlbXVsYXRlIGEgc2ltaWxhciBkZXZpY2U/IFFFTVUgZG9lcyBlbXVsYXRlIGBkd21hY2AgaW4gc29tZSBBUk0gbWFjaGluZXMg4oCTIGxpa2UgdGhlIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AgZmlsZSBmb3IgdGhlIHN1bjhpIHN5c3RlbS4gQnV0IHN1bjhpIGhhcyBpdHMgb3duIGVtYWMuIEl0IGRvZXMgZW11bGF0ZSBvdGhlciBNQUNzIGxpa2UgYGlteF9mZWMuY2AsIGBjYWRlbmNlX2dlbS5jYCwgYGZ0Z21hYzEwMC5jYCwgYW5kIGBucGNtN3h4X2VtYy5jYC4gQnV0IG5vIGBzdG1tYWNgIGVtdWxhdGlvbiBpcyBwcmVzZW50LiBJbiBmYWN0LCBgc3RtbWFjYCBpcyBhIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgKERXTUFDKS5cblxuU28sIHRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgaGF2ZSBhIGdlbmVyaWMgRFdNQUMgUENJIGRldmljZT8gTm8uIEFuZCBTeXprYWxsZXIgZG9lc24ndCBoYXZlIG1hZ2ljIHRoYXQgY3JlYXRlcyBhbiBlbXVsYXRvciBpZiBRRU1VIGRvZXMgbm90LiBJdCBjYW4gaW5qZWN0IFVTQiBkZXZpY2VzICh2aWEgZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLCBidXQgbm90IFBDSSBkZXZpY2VzLiBTeXprYWxsZXIgbGV2ZXJhZ2VzIGB2aGNpYCBmb3IgQmx1ZXRvb3RoLCBgbWFjODAyMTFfaHdzaW1gIGZvciBXaUZpLCBgdWlucHV0YCBmb3IgaW5wdXQsIGFuZCBgdml2aWRgIGZvciBWNEwyLiBBbGwgc29mdHdhcmUtYmFzZWQgZW11bGF0aW9ucy4gSXQgZG9lc24ndCBoYXZlIGEgc29mdHdhcmUgZW11bGF0b3IgZm9yIFBDSS4gU28sIGlmIGBzdG1tYWNgIGlzIGEgUENJIGRldmljZSwgSSBhbSBzdHVjayB1bmxlc3MgUUVNVSBlbXVsYXRlcyBpdC5cblxuQWhhISBXYWl0LCBRRU1VICpkb2VzKiBlbXVsYXRlIERXTUFDIGluIHNvbWUgQVJNIGJvYXJkcyEgVGhpcyBnaXZlcyBtZSBob3BlLiBJIHJlY2FsbCBzZWVpbmcgYGh3L25ldC9kZXNpZ253YXJlLmNgIHdpdGhpbiBRRU1VLiBOb3csIHRvIHZlcmlmeSBpZiBRRU1VIGRvZXMgaW5kZWVkIGVtdWxhdGUgdGhlIGBkZXNpZ253YXJlLmNgIGludGVyZmFjZSB0byBnYWluIGFjY2VzcyB0byB0aGUgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU4MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNDo1OS41NzEwNTcxNDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMTc3MDczLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXNpZ253YXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNDo1OS42MzMyNDIxOTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk1MDkwODMxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTeXprYWxsZXIgUmVwb3J0IG9uIHN0bW1hYyoqXG5cbk9rYXksIHRoZSByZXBvcnQgcG9pbnRzIHRvIGBzdG1tYWNgIGFzIHRoZSBkcml2ZXIgaW52b2x2ZWQuIFJpZ2h0LCBsZXQncyBzZWUgaWYgc3l6a2FsbGVyIGlzIGFjdGl2ZWx5IGZ1enppbmcgYHN0bW1hY2AuIFRoZSBjb21taXQgYXV0aG9yIGlzIHRoYXQgZmFtaWxpYXIgYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYCBoYW5kbGUsIHdoaWNoIG1lYW5zIHN5emthbGxlciAqZGlkKiBpbmRlZWQgZmluZCBhIGJ1ZyBpbiBgc3RtbWFjYCEgVGhhdCdzIGludGVyZXN0aW5nLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGF0dGFjayB2ZWN0b3IuIEhvdyBkaWQgc3l6a2FsbGVyIGV2ZW4gKnJlYWNoKiB0aGUgYHN0bW1hY2AgZHJpdmVyPyBNeSBmaXJzdCB0aG91Z2h0IGlzIHRoYXQgaXQncyBwcm9iYWJseSBhIHBsYXRmb3JtIGRyaXZlciwgc28gbWF5YmUgc3l6a2FsbGVyIGlzIGluc3RhbnRpYXRpbmcgaXQgdGhyb3VnaCBkZXZpY2UgdHJlZSBvdmVybGF5cy4gQSBtb3JlIGNvbXBsZXRlIGludmVzdGlnYXRpb24gaXMgbGlrZWx5IG5lZWRlZCB0aG91Z2gsIHRoZXJlIGFyZSBtYW55IHBvc3NpYmxlIGVudHJ5IHBvaW50cy4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBzdG1tYWNfcGxhdGZvcm0uY2AgYW5kIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTY5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE1OjA2LjU4NDE1Njk1M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwNDQ4MTQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTU6MDYuNjMzMjEwMDM3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODkzNDk2NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJgKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCdzIHNlZSB3aGF0IGBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyYCBpcyBkb2luZy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBzcGVjaWZpYyBtb2R1bGUgaXMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgcGxhdGZvcm0gZHJpdmVyIGZyYW1ld29yay4gSXMgaXQgYSBzdGFuZGFyZCBpbXBsZW1lbnRhdGlvbiwgb3IgYXJlIHRoZXJlIGFueSBjdXN0b20gZXh0ZW5zaW9ucyBvciBvdmVycmlkZXMgaW4gcGxheT8gSSB3YW50IHRvIHF1aWNrbHkgZXZhbHVhdGUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHJlZCBmbGFncyBpbiB0ZXJtcyBvZiByZXNvdXJjZSBtYW5hZ2VtZW50LCBlcnJvciBoYW5kbGluZywgb3IgaW50ZXJydXB0IGhhbmRsaW5nLCBlc3BlY2lhbGx5IGxvb2tpbmcgYXQgdGhlIHByb2JlIGFuZCByZW1vdmUgZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIGRyaXZlcidzIGRldmljZSBtYXRjaCB0YWJsZSBpcyBjb3JyZWN0bHkgZGVmaW5lZCBhbmQgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBkcml2ZXJzLiBJ4oCZbGwgYmUgcGFydGljdWxhcmx5IGZvY3VzZWQgb24gaG93IGl0IGhhbmRsZXMgaXRzIGRldmljZS1zcGVjaWZpYyBkYXRhIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIGlmIHRoZXJlIGlzIGFueS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM0MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE1OjA5LjgyMjU2Mjk3OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQyMDEwOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFuYXJpb25fZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEzMi19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMzM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhbmFyaW9uX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3Y19ldGhfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM3MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGR3Y19ldGhfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM3MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYz0yNzM9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZWljNzcwMF9kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjgwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjI4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGVpYzc3MDBfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTY5PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3bWFjX2dlbmVyaWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTc2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjc3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZHdtYWNfZ2VuZXJpY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTM5Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbXhfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDAwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NDAxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoaW14X2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTI3Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbmdlbmljX21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjc5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI4MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGluZ2VuaWNfbWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz0xMzk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW50ZWxfZXRoX3BsYXRfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTE0Ny19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxNDg6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbnRlbF9ldGhfcGxhdF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9NDk3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGlwcTgwNnhfZ21hY19kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNTA1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjUwNjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGlwcTgwNnhfZ21hY19kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy01MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0yMjk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbHMxeF9kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMzUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMzY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihsczF4X2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTc3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGxwYzE4eHhfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTg1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jOjg2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobHBjMTh4eF9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy04Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NjcyPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1lZGlhdGVrX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjgwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2ODE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtZWRpYXRla19kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz04Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZXNvbjZfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy05MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6OTE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtZXNvbjZfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTkyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTUwNz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZXNvbjhiX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy01MTUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NTE2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWVzb244Yl9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy01MTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG52dF9kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTMzLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjEzNDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG52dF9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy0xMzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jPTgwOT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBxY29tX2V0aHFvc19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTgxNi19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6ODE3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocWNvbV9ldGhxb3NfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTgxOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0yMjQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcmVuZXNhc19nYmV0aF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjMxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIzMjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHJlbmVzYXNfZ2JldGhfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNjM3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHJrX2dtYWNfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjQ0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNjQ1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocmtfZ21hY19kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTY0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz04MT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciByem4xX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy04OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo4OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHJ6bjFfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtOTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0yMjI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgczMyX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIzMC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIzMTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHMzMl9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz02ODE9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc29jZnBnYV9kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjg4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjY4OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHNvY2ZwZ2FfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjkwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9ODA9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc29waGdvX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTg4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM6ODk6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzb3BoZ29fZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy05MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MjE0PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNwYWNlbWl0X2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjIyLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMjM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzcGFjZW1pdF9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjI0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz0xMzc9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RhcmZpdmVfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNDUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE0Njptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN0YXJmaXZlX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYz0zMDI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RpX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTMwOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjMxMDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN0aV9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTMxMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM9NjcxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN0bTMyX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjc5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo2ODA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdG0zMl9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjgxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTQ3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjU1aV9nbWFjMjAwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE1NC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjE1NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjU1aV9nbWFjMjAwX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjg1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjhpX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI5NC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI5NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjhpX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjk2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYz0xNTY9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3VuN2lfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNjMtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjE2NDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjdpX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNjUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTQwNT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0ZWdyYV9tZ2JlX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDEzLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzo0MTQ6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih0ZWdyYV9tZ2JlX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy00MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jPTI3Mz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0aGVhZF9kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTI4MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjgxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodGhlYWRfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTI4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHZpc2NvbnRpX2V0aF9kd21hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI2OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjY5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodmlzY29udGlfZXRoX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE1OjA5Ljg3Njc2OTkwM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM0Mjc2MDMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYCBpbiBRRU1VKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGFib3V0IHBsYXRmb3JtIGRyaXZlcnMsIGJ1dCB0aGVuIEkgcmVtZW1iZXJlZCBgc3l6a2FsbGVyYCBhbmQgaXRzIGFiaWxpdHkgdG8gZnV6eiBQQ0kgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJIHJlY2FsbGVkIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX3NldHVwYCwgYnV0IHRoYXQncyBub3QgcXVpdGUgcmlnaHQuIEl0J3MgbW9yZSB0aGF0IHN5emthbGxlciBjYW4gZnV6eiAqYW55KiBQQ0kgZGV2aWNlIGlmIHByZXNlbnQuIE5vdywgd2FpdCwgaXMgYHN0bW1hY2AgcmVsZXZhbnQgaGVyZT8gSSBrbm93IGl0J3MgdXNlZCBpbiBJbnRlbCBRdWFyayBhbmQgRWxraGFydCBMYWtlLCBhbmQgdGhlcmUncyB0aGUgYHN0bW1hY19wY2kuY2AgZHJpdmVyIGZvciB0aG9zZS5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogRG9lcyBRRU1VIGVtdWxhdGUgdGhvc2U/IE5vLCBwcm9iYWJseSBub3QgZGlyZWN0bHkuIEFuZCB0aGVuIHRoZSBxdWVzdGlvbiBpcywgaWYgc3l6a2FsbGVyIGlzIHJ1bm5pbmcgb24gUUVNVSwgaG93IHdvdWxkIGl0IGV2ZW4gZmluZCBhIFBDSSBkZXZpY2UgbGlrZSB0aGlzPyBUaGUgZGVmYXVsdCBpcyBRRU1VLCBub3QgcmVhbCBoYXJkd2FyZS4gSXQgY291bGRuJ3QgZmluZCBpdCBkaXJlY3RseSB2aWEgYSB2aXJ0dWFsIFBDSSBkZXZpY2UgYmVjYXVzZSBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgaGFyZHdhcmUuIFRoZSBuZXh0IHRob3VnaHQgd2FzLCBwZXJoYXBzIGBzdG1tYWNfcGxhdGZvcm0uY2A/IEFoLCB5ZXMsIHN5emthbGxlciBjYW4gaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgdmlhIHRoZSBgL3N5cy9kZXZpY2VzL3BsYXRmb3JtYCBvciBkZXZpY2UgdHJlZSBvdmVybGF5cyFcblxuQnV0IGhhbmcgb24sIHN5emthbGxlciBhbHNvIGhhcyB0aGluZ3MgbGlrZSBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYC4gU28sIHVsdGltYXRlbHksIGl0IGNhbiBmdXp6IGBzdG1tYWNgICppZiogdGhlIGluc3RhbmNlIG9mIGBzdG1tYWNgIGV4aXN0cy5cblxuVGhlIHByb21wdCwgb2YgY291cnNlLCBwb2ludHMgb3V0IHRoZSBpc3N1ZTogY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBlc3BlY2lhbGx5IGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRoYXQgYXJlIGNhbGxlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLiBJbiB0aGlzIHNwZWNpZmljIGNhc2UsIHRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYC4gQ3J1Y2lhbGx5LCB0aGF0J3MgY2FsbGVkIGZyb20gYF9fc3RtbWFjX3JlbGVhc2VgICh3aGljaCBpcyB0aGUgYG5kb19zdG9wYCBjYWxsYmFjayksIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9vcGVuYCwgYW5kIGBzdG1tYWNfc3VzcGVuZGAuXG5cbmBfX3N0bW1hY19yZWxlYXNlYCBpcyBgbmRvX3N0b3BgLCB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgYnJvdWdodCBkb3duLCB1c2luZyBzb21ldGhpbmcgbGlrZSBgaXAgbGluayBzZXQgZGV2IGV0aDAgZG93bmAuIE5vdywgdGhhdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlICppZiogdGhlIGRldmljZSBleGlzdHMuIFRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gdGhlbiBpczogRG9lcyB0aGUgZGV2aWNlIGV4aXN0IGluIFFFTVU/XG5cblNvLCBJIGxvb2tlZCBpbnRvIFFFTVUncyBkZXZpY2UgbW9kZWxzLiBJIHJlbWVtYmVyZWQgc29tZXRoaW5nIGxpa2UgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCBiZWluZyBpbiBRRU1VLiBUaGF0J3MgZm9yIGBzdW44aS1lbWFjYC4gQnV0IHdhaXQsIGlzbid0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBgZHdtYWMtc3VuOGlgIGZvciBgc3RtbWFjYD8gSXQgbG9va3MgbGlrZSBgZHdtYWMtc3VuOGkuY2AgaXMgdGhlIG9uZSB0aGF0J3MgcmVsZXZhbnQuXG5cblRoZSBrZXkgdGhlbiBpcyB3aGV0aGVyIFFFTVUncyBgYWxsd2lubmVyLXN1bjhpLWVtYWNgIGlzIGNvbXBhdGlibGUgd2l0aCBgZHdtYWMtc3VuOGlgLiBJIGNoZWNrZWQgdGhlIFFFTVUgY29kZSwgYW5kIGNvbmZpcm1lZCB0aGF0IGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2Agc3VwcG9ydHMgYFwiYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNcImAuIEFuZCwgaW4gdGhlIExpbnV4IGtlcm5lbCwgYGR3bWFjLXN1bjhpLmNgIGFsc28gbWF0Y2hlcyBgXCJhbGx3aW5uZXIsc3VuOGktaDMtZW1hY1wiYC4gVGhlcmVmb3JlLCBJIGNvbmNsdWRlIHRoYXQgUUVNVSBkb2VzIGVtdWxhdGUgdGhlIGhhcmR3YXJlLCBhbmQgdGhlIGNvZGUgcGF0aCBpcyBpbmRlZWQgcmVhY2hhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzEzNSwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNToyMC4yMTk1MzM2MjdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMTg1NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFsbHdpbm5lcixzdW44aS1oMy1lbWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjY4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjhpX2R3bWFjX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjY5OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI3MC1cXHRcXHQuZGF0YSA9IFxcdTAwMjZlbWFjX3ZhcmlhbnRfaDMgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTU6MjAuMjcwNzI2MDhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAxMTMyNjQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyBTVE1NQUMgaW4gUUVNVTogQSBWZXJpZmljYXRpb24gQ2hlY2sqKlxuXG5Pa2F5LCB5ZXMsIHRoaXMgaXMgZ3JlYXQhIFFFTVUgKmRvZXMqIGVtdWxhdGUgdGhlIGBhbGx3aW5uZXIsc3VuOGktaDMtZW1hY2AsIHdoaWNoIHJlbGllcyBvbiBgZHdtYWMtc3VuOGkuY2AgYW5kIHRoYXQgaW4gdHVybiwgdXNlcyBgc3RtbWFjYC4gRmFudGFzdGljLCB0aGF0IG1lYW5zIGBzdG1tYWNgICppcyogZGVmaW5pdGVseSBhY2Nlc3NpYmxlIGluIHRoZSBRRU1VIGVudmlyb25tZW50ISBJIHdhcyBzdGFydGluZyB0byB0aGluayBpdCB3b3VsZG4ndCBiZSBhbmQgdGhhdCB3b3VsZCBoYXZlIGJlZW4gYSBtYXNzaXZlIHNldGJhY2suXG5cbkhhbmcgb24gYSBzZWNvbmQuLi4gdGhlIHNwZWNpZmljIHBhdGNoIEknbSBhbmFseXppbmcgaXMgdGFyZ2V0aW5nIGBkd3hnbWFjMl9kbWEuY2AuIE5vdywgdGhhdCBmaWxlIGlzIGFzc29jaWF0ZWQgd2l0aCBgZHd4Z21hYzJgIOKAkyBzcGVjaWZpY2FsbHksIERlc2lnbldhcmUgWEdNQUMgMi4xMC4gSG9sZCBvbi4gSXMgKnRoYXQqIGNvbXBvbmVudCByZWFjaGFibGU/IElzIHRoZSBzY29wZSBvZiB0aGUgcGF0Y2ggcmVsZXZhbnQ/XG5cbkkgc2hvdWxkIHByb2JhYmx5IHF1aWNrbHkgdmVyaWZ5IHdoZXJlIGBkd3hnbWFjMjEwX2RtYV9vcHNgIGlzIGFjdHVhbGx5IHVzZWQgYW5kIG1ha2Ugc3VyZSB0aGF0IGl0IGlzIHN1cHBvcnRlZC4gR290dGEga2VlcCB0aGUgZGV0YWlscyByaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3NTUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTU6MjUuMjgyMDU1NzU3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUzNTI1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkd3hnbWFjMjEwX2RtYV9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaD00NzA9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGxnbWFjMl9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDo0NzE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC00NzItZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZGVzY19vcHMgZHd4Z21hYzIxMF9kZXNjX29wcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTYzNj1zdGF0aWMgaW50IGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTY1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo2NTE6Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy02NTItXFx0LnJlc2V0ID0gZHd4Z21hYzJfZG1hX3Jlc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTctXFx0XFx0LmRlc2MgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjU4OlxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTktXFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hnbWFjMjEwX29wcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNzktXFx0XFx0LmRlc2MgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjgwOlxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yODEtXFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hsZ21hYzJfb3BzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNToyNS4zMjc1OTc1MDFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5ODg4ODgzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGh3aWYuY2AgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgY29kZS4gTGV0J3Mgc3RhcnQgd2l0aCBhIHByYWN0aWNhbCBhcHByb2FjaC4gQmVmb3JlIGRpZ2dpbmcgZGVlcCBpbnRvIHRoZSBhY3R1YWwgbG9naWMsIGxldCdzIGdldCBhIGhhbmRsZSBvbiB0aGUgc2NvcGUuIEknbGwgbmVlZCB0byBpZGVudGlmeSBhbGwgdGhlIGVudHJpZXMgd2l0aGluIGBod2lmLmNgIHRoYXQgKmFjdHVhbGx5KiB1dGlsaXplIHRoaXMgZnVuY3Rpb24gb3IgZGF0YSBzdHJ1Y3R1cmUgaW4gcXVlc3Rpb24uIFRoYXQncyB0aGUgZmlyc3QgY3JpdGljYWwgc3RlcC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVycyBhbmQgY29uc3VtZXJzIG9mIHRoaXMgY29kZSBpcyBmdW5kYW1lbnRhbCB0byBnYXVnaW5nIGl0cyBicm9hZGVyIGltcGxpY2F0aW9ucyBhbmQgYXZvaWRpbmcgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIGZyb20gY2hhbmdlcy4gVGhpcyBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzIHdoZXJlIEnigJlsbCBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3NTcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNToyOS4wMjY0ODk1OTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI1MDpcXHRcXHRcXHQuZGV2X2lkID0gRFdYR01BQ19JRCxcXG4gMjUxOlxcdFxcdFxcdC5yZWdzID0ge1xcbiAyNTI6XFx0XFx0XFx0XFx0LnB0cF9vZmYgPSBQVFBfWEdNQUNfT0ZGU0VULFxcbiAyNTM6XFx0XFx0XFx0XFx0Lm1tY19vZmYgPSBNTUNfWEdNQUNfT0ZGU0VULFxcbiAyNTQ6XFx0XFx0XFx0XFx0LmVzdF9vZmYgPSBFU1RfWEdNQUNfT0ZGU0VULFxcbiAyNTU6XFx0XFx0XFx0XFx0LmZwZV9yZWcgPSBcXHUwMDI2ZHd4Z21hYzNfZnBlX3JlZyxcXG4gMjU2OlxcdFxcdFxcdH0sXFxuIDI1NzpcXHRcXHRcXHQuZGVzYyA9IFxcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxcbiAyNTg6XFx0XFx0XFx0LmRtYSA9IFxcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXFxuIDI1OTpcXHRcXHRcXHQubWFjID0gXFx1MDAyNmR3eGdtYWMyMTBfb3BzLFxcbiAyNjA6XFx0XFx0XFx0LnZsYW4gPSBcXHUwMDI2ZHd4Z21hYzIxMF92bGFuX29wcyxcXG4gMjYxOlxcdFxcdFxcdC5od3RpbWVzdGFtcCA9IFxcdTAwMjZzdG1tYWNfcHRwLFxcbiAyNjI6XFx0XFx0XFx0LnB0cCA9IFxcdTAwMjZzdG1tYWNfcHRwX2Nsb2NrX29wcyxcXG4gMjYzOlxcdFxcdFxcdC5tb2RlID0gTlVMTCxcXG4gMjY0OlxcdFxcdFxcdC50YyA9IFxcdTAwMjZkd21hYzUxMF90Y19vcHMsXFxuIDI2NTpcXHRcXHRcXHQubW1jID0gXFx1MDAyNmR3eGdtYWNfbW1jX29wcyxcXG4gMjY2OlxcdFxcdFxcdC5lc3QgPSBcXHUwMDI2ZHdtYWM1MTBfZXN0X29wcyxcXG4gMjY3OlxcdFxcdFxcdC5zZXR1cCA9IGR3eGdtYWMyX3NldHVwLFxcbiAyNjg6XFx0XFx0XFx0LnF1aXJrcyA9IE5VTEwsXFxuIDI2OTpcXHRcXHR9LCB7XFxuIDI3MDpcXHRcXHRcXHQuY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQyxcXG4gMjcxOlxcdFxcdFxcdC5taW5faWQgPSBEV1hMR01BQ19DT1JFXzJfMDAsXFxuIDI3MjpcXHRcXHRcXHQuZGV2X2lkID0gRFdYTEdNQUNfSUQsXFxuIDI3MzpcXHRcXHRcXHQucmVncyA9IHtcXG4gMjc0OlxcdFxcdFxcdFxcdC5wdHBfb2ZmID0gUFRQX1hHTUFDX09GRlNFVCxcXG4gMjc1OlxcdFxcdFxcdFxcdC5tbWNfb2ZmID0gTU1DX1hHTUFDX09GRlNFVCxcXG4gMjc2OlxcdFxcdFxcdFxcdC5lc3Rfb2ZmID0gRVNUX1hHTUFDX09GRlNFVCxcXG4gMjc3OlxcdFxcdFxcdFxcdC5mcGVfcmVnID0gXFx1MDAyNmR3eGdtYWMzX2ZwZV9yZWcsXFxuIDI3ODpcXHRcXHRcXHR9LFxcbiAyNzk6XFx0XFx0XFx0LmRlc2MgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcXG4gMjgwOlxcdFxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbiAyODE6XFx0XFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hsZ21hYzJfb3BzLFxcbiAyODI6XFx0XFx0XFx0LnZsYW4gPSBcXHUwMDI2ZHd4bGdtYWMyX3ZsYW5fb3BzLFxcbiAyODM6XFx0XFx0XFx0Lmh3dGltZXN0YW1wID0gXFx1MDAyNnN0bW1hY19wdHAsXFxuIDI4NDpcXHRcXHRcXHQucHRwID0gXFx1MDAyNnN0bW1hY19wdHBfY2xvY2tfb3BzLFxcbiAyODU6XFx0XFx0XFx0Lm1vZGUgPSBOVUxMLFxcbiAyODY6XFx0XFx0XFx0LnRjID0gXFx1MDAyNmR3bWFjNTEwX3RjX29wcyxcXG4gMjg3OlxcdFxcdFxcdC5tbWMgPSBcXHUwMDI2ZHd4Z21hY19tbWNfb3BzLFxcbiAyODg6XFx0XFx0XFx0LmVzdCA9IFxcdTAwMjZkd21hYzUxMF9lc3Rfb3BzLFxcbiAyODk6XFx0XFx0XFx0LnNldHVwID0gZHd4bGdtYWMyX3NldHVwLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNToyOS4wMjY1NjA4NTNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk0OTQzODU3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoZXNlIHRob3VnaHRzLCBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgU3RtbWFjIERyaXZlciBJbXBhY3QqKlxuXG5BbHJpZ2h0LCBJIHNlZSB0aGVzZSBpZGVudGlmaWVycywgYERXWEdNQUNfSURgIGFuZCBgRFdYTEdNQUNfSURgLCBwb3BwaW5nIHVwLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGVpciBjb25uZWN0aW9uLCBidXQgdGhpcyBwYXRjaCBhbHNvIHRvdWNoZXMgYHN0bW1hY19tYWluLmNgLiBUaGF0J3MgYSByZWQgZmxhZy4gYHN0bW1hY19tYWluLmNgIGlzIHRoZSBjb3JlLCBnZW5lcmljIGNvZGUgZm9yIGFsbCBgc3RtbWFjYCBkcml2ZXJzLiBBbnkgY2hhbmdlIHRoZXJlIGNvdWxkIGhhdmUgd2lkZS1yZWFjaGluZyBlZmZlY3RzLlxuXG5TcGVjaWZpY2FsbHksIEknbSBub3RpbmcgdGhlIGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gIGZ1bmN0aW9uLiBBbmQgaXQncyBjYWxsZWQgdW5jb25kaXRpb25hbGx5IHdpdGhpbiBgc3RtbWFjX21haW4uY2AuIFNvLCBJIHJlYWxseSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgaW1wbGljYXRpb25zIG9mIGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gIGZyb20gdGhhdCBtb2R1bGUuIEl0IGNvdWxkIGJlIGFmZmVjdGVkLCBhbmQgSSBoYXZlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc0MCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE1OjMzLjk3NjAwMjcwNloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTg0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTY5LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNTY5OlxcdFxcdFxcdHN0bW1hY19zdG9wX3R4X2RtYShwcml2LCBjaGFuKTtcXG4yNTcwOlxcdH1cXG4yNTcxOlxcdFxcbjI1NzI6XFx0LyoqXFxuMjU3MzpcXHQgKiBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24gLSBvcmRlcmVkIGRhdGFwYXRoIHRlYXJkb3duIGFzIHBlciBJUCBzcGVjaWZpY2F0aW9uXFxuMjU3NDpcXHQgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXFxuMjU3NTpcXHQgKiBEZXNjcmlwdGlvbjpcXG4yNTc2OlxcdCAqIFdoZW4gdGVhcmRvd24gb3BzIGFyZSBhdmFpbGFibGUsIGZvbGxvdyB0aGUgZGF0YWJvb2sgb3JkZXJlZCB0ZWFyZG93blxcbjI1Nzc6XFx0ICogc2VxdWVuY2UuXFxuMjU3ODpcXHQgKiBGb2xsb3dzIHRoZSBsZWdhY3kgc3RvcCArIE1BQyBkaXNhYmxlIGZvciB2YXJpYW50cyB3aXRob3V0IHRoZSBmZWF0dXJlLlxcbjI1Nzk6XFx0ICovXFxuMjU4MDpcXHRzdGF0aWMgdm9pZCBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbjI1ODE6XFx0e1xcbjI1ODI6XFx0XFx0dTMyIHJ4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcXG4yNTgzOlxcdFxcdHUzMiB0eF9jaGFubmVsc19jb3VudCA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXR4X3F1ZXVlc190b191c2U7XFxuMjU4NDpcXHRcXHR1MzIgY2hhbjtcXG4yNTg1OlxcdFxcbjI1ODY6XFx0XFx0LyogU3RvcCBhbGwgVFggRE1BIGNoYW5uZWxzICovXFxuMjU4NzpcXHRcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG4yNTg4OlxcdFxcdFxcdHN0bW1hY19zdG9wX3R4X2RtYShwcml2LCBjaGFuKTtcXG4yNTg5OlxcdFxcbjI1OTA6XFx0XFx0LyogV2FpdCBmb3IgZXZlcnkgVFggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovXFxuMjU5MTpcXHRcXHRpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZWRtYS1cXHUwMDNldHhfZG1hX3N0b3BwZWQpXFxuMjU5MjpcXHRcXHRcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG4yNTkzOlxcdFxcdFxcdFxcdHN0bW1hY190eF9kbWFfc3RvcHBlZChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIGNoYW4pO1xcbjI1OTQ6XFx0XFxuMjU5NTpcXHRcXHQvKiBXYWl0IGZvciB0aGUgTVRMIFRYIHF1ZXVlcyB0byBmaW5pc2ggcHVzaGluZyBpbnRvIHRoZSBNQUMgKi9cXG4yNTk2OlxcdFxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlZG1hLVxcdTAwM2V0eF9tdGxfZHJhaW4pXFxuMjU5NzpcXHRcXHRcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcXG4yNTk4OlxcdFxcdFxcdFxcdHN0bW1hY190eF9tdGxfZHJhaW4ocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCBjaGFuKTtcXG4yNTk5OlxcdFxcbjI2MDA6XFx0XFx0LyogRGlzYWJsZSB0aGUgTUFDIFRYIGFuZCBSWCAqL1xcbjI2MDE6XFx0XFx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCBmYWxzZSk7XFxuMjYwMjpcXHRcXG4yNjAzOlxcdFxcdC8qIFdhaXQgZm9yIHRoZSBNVEwgUlggcXVldWVzIHRvIGRyYWluIGludG8gdGhlIFJYIERNQSAqL1xcbjI2MDQ6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VkbWEtXFx1MDAzZXJ4X210bF9kcmFpbilcXG4yNjA1OlxcdFxcdFxcdGZvciAoY2hhbiA9IDA7IGNoYW4gXFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxcbjI2MDY6XFx0XFx0XFx0XFx0c3RtbWFjX3J4X210bF9kcmFpbihwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIGNoYW4pO1xcbjI2MDc6XFx0XFxuMjYwODpcXHRcXHQvKiBTdG9wIGFsbCBSWCBETUEgY2hhbm5lbHMgKi9cXG4yNjA5OlxcdFxcdGZvciAoY2hhbiA9IDA7IGNoYW4gXFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxcbjI2MTA6XFx0XFx0XFx0c3RtbWFjX3N0b3BfcnhfZG1hKHByaXYsIGNoYW4pO1xcbjI2MTE6XFx0XFxuMjYxMjpcXHRcXHQvKiBXYWl0IGZvciBldmVyeSBSWCBETUEgY2hhbm5lbCB0byByZXBvcnQgaXRzZWxmIHN0b3BwZWQgKi9cXG4yNjEzOlxcdFxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlZG1hLVxcdTAwM2VyeF9kbWFfc3RvcHBlZClcXG4yNjE0OlxcdFxcdFxcdGZvciAoY2hhbiA9IDA7IGNoYW4gXFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxcbjI2MTU6XFx0XFx0XFx0XFx0c3RtbWFjX3J4X2RtYV9zdG9wcGVkKHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgY2hhbik7XFxuMjYxNjpcXHR9XFxuMjYxNzpcXHRcXG4yNjE4OlxcdC8qKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNTozMy45NzYzNjQ4NzZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyNjEyNzM5MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGggRnV6emluZyAtIEEgRGVlcCBEaXZlKipcblxuT2theSwgc28gYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAgaXMgdGhlIGNvcmUgb2YgdGhpcywgaXQncyBnZW5lcmljIGFuZCBjYWxsZWQgYnkgYWxsIHZhcmlhbnRzLiBJZiBhIHNwZWNpZmljIHZhcmlhbnQgZG9lc24ndCBoYXZlIHRoZSBleHBsaWNpdCBjaGVja3MgZm9yIGB0eF9kbWFfc3RvcHBlZGAgYW5kIGZyaWVuZHMsIGl0IGp1c3Qgc2tpcHMgdGhlIHdhaXQgYW5kIHByb2NlZWRzIHdpdGggdGhlIHN0b3AgYW5kIE1BQyBkaXNhYmxlLiBUaGlzIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBidXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIGl0IHdvcnRoIGZ1enppbmc/XG5cblRoZSBwYXRjaCBpdHNlbGYgaW50cm9kdWNlcyBhIHRlYXJkb3duIHNlcXVlbmNlLiBJdCB3YWl0cyBmb3IgRE1BIGFuZCBNVEwgcXVldWVzIHRvIGRyYWluLiBUaGlzIGZ1bmRhbWVudGFsbHkgY2hhbmdlcyB0aGUgc3luY2hyb25pemF0aW9uIGFuZCB0ZWFyZG93biBwcm9jZXNzLiAgQ3J1Y2lhbGx5LCBpdCBtb2RpZmllcyBgX19zdG1tYWNfcmVsZWFzZWAgKHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgYG5kb19zdG9wYCksIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9vcGVuYCwgYW5kIGBzdG1tYWNfc3VzcGVuZGAuIFRoYXQncyBmdW5jdGlvbmFsLiBUaGlzIGludHJvZHVjZXMgcG90ZW50aWFsIGRlYWRsb2NrcyBpZiB0aGUgaGFyZHdhcmUgZG9lc24ndCBjb29wZXJhdGUsIG9yIGl0IGNvdWxkICpmaXgqIGV4aXN0aW5nIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLlxuXG5Ob3csIHRob3NlIGByZWFkbF9wb2xsX3RpbWVvdXRgIGNhbGxzIGluIGBkd3hnbWFjMl9kbWEuY2AgLSB0aGV5J2xsIGxvb3AgZm9yIHVwIHRvIDEwbXMuIElmIHRoZSBoYXJkd2FyZSBpcyBlbXVsYXRlZCwgd2UgbWlnaHQgc2VlIHRpbWVvdXRzLCBidXQgbm90IG5lY2Vzc2FyaWx5IGEgY3Jhc2guIEhvd2V2ZXIsIHRoZSAqY2hhbmdlIGluIHRlYXJkb3duIG9yZGVyKiBhbmQgdGhlICphZGRpdGlvbiBvZiBwb2xsaW5nKiBtYWtlIHRoaXMgd29ydGggYSBjbG9zZXIgbG9vay5cblxuSGFuZyBvbi4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgLi4uIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3NcIi4gQnV0IGBfX3N0bW1hY19yZWxlYXNlYCBpcyB0aWVkIHRvIGBuZG9fc3RvcGAsIHdoaWNoIHJ1bnMgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIGJyb3VnaHQgZG93biB2aWEgYGlwIGxpbmsgc2V0IGRldiBldGgwIGRvd25gLiBUaGF0J3MgKm5vdCogYSBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbjsgaXQncyBhIG5ldHdvcmsgaW50ZXJmYWNlIHN0YXRlIGNoYW5nZS4gU3l6a2FsbGVyIGhpdHMgdGhhdCBraW5kIG9mIHRoaW5nIGNvbnN0YW50bHkuIEFuZCB3ZSBhbHNvIGhhdmUgYHN0bW1hY194ZHBfb3BlbmAgYW5kIGBzdG1tYWNfeGRwX3JlbGVhc2VgIHdoaWNoIGFyZSB0cmlnZ2VyZWQgYnkgWERQIHByb2dyYW0gYXR0YWNobWVudCBhbmQgZGV0YWNobWVudC4gVGhpcyBpcyBkZWZpbml0ZWx5IGZ1enphYmxlIHVuZGVyIG5vcm1hbCBvcGVyYXRpb25zIVxuXG5MZXQncyBuYWlsIGRvd24gdGhvc2UgZm9jdXMgc3ltYm9sczpcblxuKiAgIGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gXG4qICAgYHN0bW1hY194ZHBfb3BlbmBcbiogICBgc3RtbWFjX3hkcF9yZWxlYXNlYFxuKiAgIGBzdG1tYWNfc3VzcGVuZGBcbiogICBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgXG4qICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmBcbiogICBgZHd4Z21hYzJfcnhfbXRsX2RyYWluYFxuKiAgIGBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZGBcblxuV2FpdCwgYHN0bW1hY19zdXNwZW5kYCBpcyBhIHBvd2VyIG1hbmFnZW1lbnQgY2FsbGJhY2suIFN5emthbGxlciBjYW4gZWFzaWx5IHRyaWdnZXIgc3VzcGVuZC9yZXN1bWUgY3ljbGVzLiAgYHN0bW1hY194ZHBfb3BlbmAgYW5kIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFyZSB0aGUgWERQIHNldHVwL3RlYXJkb3duIHBvaW50cy4gIEFuZCBhbHRob3VnaCBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgaXQncyBjYWxsZWQgZnJvbSB0aG9zZSB2ZXJ5IGltcG9ydGFudCBlbnRyeSBwb2ludHM6IGBfX3N0bW1hY19yZWxlYXNlYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGFuZCBgc3RtbWFjX3N1c3BlbmRgLiBIb2xkIG9uLCBgX19zdG1tYWNfcmVsZWFzZWAgaXMgc3RhdGljLCB3aGljaCBtZWFucyBgc3RtbWFjX3JlbGVhc2VgICh0aGUgYG5kb19zdG9wYCBjYWxsYmFjaykgaXMgdGhlIHB1YmxpYyBlbnRyeSBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5ODYsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNTo0NS4yMzc2NDI2NDFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTc4OTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19yZWxlYXNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz05Mzk9c3RhdGljIHZvaWQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTk1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjk1MzpzdGF0aWMgdm9pZCBzdG1tYWNfcmVsZWFzZV9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtOTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Mjg3Mj1zdGF0aWMgaW50IHN0bW1hY190eF9jbGVhbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBidWRnZXQsIHUzMiBxdWV1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjk5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI5OTM6XFx0XFx0c3RtbWFjX3JlbGVhc2VfdHhfZGVzYyhwcml2LCBwLCBwcml2LVxcdTAwM2VkZXNjcmlwdG9yX21vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjk5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDE4Mj1zdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMjY6XFx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIyNy1pbml0X2Vycm9yOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MjMxPXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyODI6c3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDI4My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MzA2OlxcdHN0bW1hY19yZWxlYXNlX3B0cChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMTItLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MzEzOiAqICBzdG1tYWNfcmVsZWFzZSAtIGNsb3NlIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMTQtICogIEBkZXYgOiBkZXZpY2UgcG9pbnRlci5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDMxNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQzMTg6c3RhdGljIGludCBzdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDMxOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MzI5OlxcdF9fc3RtbWFjX3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQzMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxNDk9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxODM6XFx0XFx0X19zdG1tYWNfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzM1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzU1LVxcdC5uZG9fZmVhdHVyZXNfY2hlY2sgPSBzdG1tYWNfZmVhdHVyZXNfY2hlY2ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzU2OlxcdC5uZG9fc3RvcCA9IHN0bW1hY19yZWxlYXNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzM1Ny1cXHQubmRvX2NoYW5nZV9tdHUgPSBzdG1tYWNfY2hhbmdlX210dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYzOT1pbnQgc3RtbWFjX3JlaW5pdF9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggcnhfY250LCB1OCB0eF9jbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDQtXFx0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2NDU6XFx0XFx0c3RtbWFjX3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc2NjQ9aW50IHN0bW1hY19yZWluaXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiByeF9zaXplLCB1MzIgdHhfc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzY2OS1cXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzY3MDpcXHRcXHRzdG1tYWNfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzY3MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTU6NDUuMjk3ODMwNzM0WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0Mzc1NDc2NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgU1RNTUFDIFN5bWJvbCBWaXNpYmlsaXR5KipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBJJ20gbG9va2luZyBhdCBgc3RtbWFjX3JlbGVhc2VgIHdoaWNoLCBhcyBJIHN1c3BlY3RlZCwgY2FsbHMgYF9fc3RtbWFjX3JlbGVhc2VgLiBUaGF0IG1lYW5zIEkgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHMgdG8gdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgY29kZSBwYXRoczogYHN0bW1hY19yZWxlYXNlYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBhbmQgYHN0bW1hY19zdXNwZW5kYC4gQWxzbywgSSBuZWVkIHRvIGluY2x1ZGUgdGhlc2UgcmVsYXRlZCBETUEgZnVuY3Rpb25zOiBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgLCBgZHd4Z21hYzJfdHhfbXRsX2RyYWluYCwgYGR3eGdtYWMyX3J4X210bF9kcmFpbmAsIGFuZCBgZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRgLlxuXG5Ib2xkIG9uLi4uIHRob3NlIGBkd3hnbWFjMl8qYCBmdW5jdGlvbnMuIFRoZXkncmUgZGVmaW5lZCBhcyBgc3RhdGljYCB3aXRoaW4gYGR3eGdtYWMyX2RtYS5jYC4gTXkgaW5pdGlhbCBjb25jZXJuIGlzIHdoZXRoZXIgdGhleSBtaWdodCBiZSBpbmxpbmVkLiBJIG5lZWQgdG8gYmUgc3VyZSBJIGNhbiBhY3R1YWxseSB0cmFjayB0aGVtIGFzIGRpc3RpbmN0IHN5bWJvbHMuXG5cbkFoLCByaWdodC4gTG9va2luZyBhdCB0aGUgY29kZSwgdGhvc2UgZnVuY3Rpb25zIGFyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYSBgc3RydWN0IHN0bW1hY19kbWFfb3BzYC4gVGhhdCBjb25maXJtcyB0aGV5ICphcmVuJ3QqIGlubGluZWQuIFRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGJlY2F1c2UgdGhleSdyZSBiZWluZyBwb2ludGVkIHRvIGJ5IGEgc3RydWN0LiBHb29kLCB0aGF0IG1ha2VzIG15IGpvYiBlYXNpZXIuIFRoZXkncmUgY2xlYXJseSBpbnRlbmRlZCB0byBiZSBjYWxsZWQgdmlhIHRob3NlIGZ1bmN0aW9uIHBvaW50ZXJzLlxuXG5Ob3csIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBjb2RlIHBhdGggaXMgYmVpbmcgY29tcGlsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTEyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE1OjUwLjczNTM4MjEwOVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5ODM0ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19FVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE1OjUwLjc5MzM2OTM3MloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzUyNjczNzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYFNUTU1BQ19FVEhgIG1vZHVsZS4gQmVmb3JlIGRpdmluZyBpbnRvIGNvZGUsIEknbSB0aGlua2luZyBJIHNob3VsZCByZWFsbHkgdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGZpcnN0LiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUsIGlkZW50aWZ5aW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBhbmQsIG9mIGNvdXJzZSwgdHJvdWJsZXNob290aW5nIGFueSBmdXR1cmUgaXNzdWVzLiBXaGVyZSBkb2VzIGl0IHB1bGwgaXRzIGRhdGEgZnJvbT8gV2hhdCBvdGhlciBtb2R1bGVzIGRvZXMgaXQgbmVlZCB0byBmdW5jdGlvbiBwcm9wZXJseT8gQW55IGV4dGVybmFsIGxpYnJhcmllcz8gVGltZSB0byBtYXAgdGhpcyBvdXQgbWV0aG9kaWNhbGx5LiBJIG5lZWQgdG8gYmUgc3VyZSBJJ20gdGhpbmtpbmcgb2YgZXZlcnl0aGluZyBhbmQgbm90IG1pc3Npbmcgc29tZXRoaW5nIHNpbXBsZSB0aGF0IHdpbGwgYml0ZSBtZSBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4OTUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNTo1NC4xNDYwNDczMTVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTVE1NQUNfRVRIXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcXG4gICA3OlxcdFxcdHNlbGVjdCBNSUlcXG4gICA4OlxcdFxcdHNlbGVjdCBQQ1NfWFBDU1xcbiAgIDk6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgMTA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG4gIDEzOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcXG4gIDE2OlxcdFxcdCAgU3lub3BzeXMgSVAgQ29yZS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgU1RNTUFDX0VUSFxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNTo1NC4xNDYxNjcwMDVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1ODI2MjQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipEaWdnaW5nIGludG8gdGhlIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgRXRoZXJuZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBgU1RNTUFDX0VUSGAuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuIEJ1dCBob2xkIG9uLCBJIGp1c3Qgc2F3IHNvbWV0aGluZyBhYm91dCBgZHdtYWMtc3VuOGlgLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlci4gTm93LCB0aGF0J3MgaW50ZXJlc3RpbmcuIEkga25vdyBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBidXQgd2hhdCBjb25maWd1cmF0aW9uIHNldHRpbmcgKmVuYWJsZXMqIHRoYXQgcGFydGljdWxhciBkcml2ZXI/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGR3bWFjLXN1bjhpYCB0byB0aGUgYnJvYWRlciBjb25maWd1cmF0aW9uLCBzbyBJIGNhbiB1bmRlcnN0YW5kIGhvdyBpdCdzIGludGVncmF0ZWQgYW5kIHdoZXJlIGl0IGZpdHMgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaGlzIGxldmVsIG9mIGRldGFpbCBpcyBjcml0aWNhbCBmb3IgcHJvcGVyIHVuZGVyc3RhbmRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MzUwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNTo1Ny4zMDQ0MzI0N1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg0MjI4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERXTUFDX1NVTjhJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNzc9Y29uZmlnIERXTUFDX1NVTlhJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI4ODpjb25maWcgRFdNQUNfU1VOOElcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4OS1cXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIHN1bjhpIEdNQUMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTU6NTcuMzkyODYwNzRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMTAzNTA5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIERXTUFDX1NVTjhJIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIGBEV01BQ19TVU44SWAgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgc2V0IHVwLCBlc3BlY2lhbGx5IHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgb24gdGhlIFN1bjhpIHBsYXRmb3JtLiBJJ20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3Iga2V5IHJlZ2lzdGVycyBhbmQgdGhlaXIgZXhwZWN0ZWQgdmFsdWVzLiBJJ2xsIGJlIHNjcnV0aW5pemluZyB0aGUgaW50ZXJydXB0IG1hcHBpbmcsIERNQSBjb25maWd1cmF0aW9uLCBhbmQgYW55IHBvd2VyIG1hbmFnZW1lbnQgc2V0dGluZ3Mg4oCTIHRob3NlIGFyZSB1c3VhbGx5IHRoZSB0cm91YmxlIHNwb3RzLiBJJ2xsIGJlIHRoaW5raW5nIGFib3V0IGhvdyB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVzIHRvIHRoZSB1bmRlcmx5aW5nIFBIWSBhbmQgdGhlIGV4dGVybmFsIGludGVyZmFjZSwgYmVjYXVzZSBhbnkgbWlzbWF0Y2ggdGhlcmUgaXMgZ29pbmcgdG8gY2F1c2UgaW1tZWRpYXRlIGlzc3Vlcy4gQW55IGNsb2NrIGNvbmZpZ3VyYXRpb24gaXMgY3JpdGljYWwsIHNvIEknbGwgYmUgZHJpbGxpbmcgZG93biBpbnRvIHRoZSBjbG9jayB0cmVlIHRvIGNvbmZpcm0gdGhhdCBldmVyeXRoaW5nIGlzIGJlaW5nIGRyaXZlbiBhdCB0aGUgcmlnaHQgZnJlcXVlbmNpZXMgZm9yIHRoZSBEV01BQydzIGNhcGFiaWxpdGllcy4gRmluYWxseSwgSSdsbCBiZSBjcm9zcy1yZWZlcmVuY2luZyB0aGlzIGNvbmZpZyBhZ2FpbnN0IHRoZSBkYXRhc2hlZXQgYW5kIGFueSBleGlzdGluZyBlcnJhdGEgZm9yIHRoZSBTdW44aSBTb0NzOyBrbm93aW5nIHRoZSBoYXJkd2FyZSdzIHF1aXJrcyBpcyBlc3NlbnRpYWwgdG8gYSBzbW9vdGggZGVwbG95bWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3MDcsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjowMS4xMDM4OTk4WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjg4LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjg4OlxcdGNvbmZpZyBEV01BQ19TVU44SVxcbiAyODk6XFx0XFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW44aSBHTUFDIHN1cHBvcnRcXFwiXFxuIDI5MDpcXHRcXHRkZWZhdWx0IEFSQ0hfU1VOWElcXG4gMjkxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxcbiAyOTI6XFx0XFx0c2VsZWN0IE1ESU9fQlVTX01VWFxcbiAyOTM6XFx0XFx0aGVscFxcbiAyOTQ6XFx0XFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgSDMgQTgzVCBBNjQgRU1BQyBldGhlcm5ldCBjb250cm9sbGVycy5cXG4gMjk1OlxcdFxcbiAyOTY6XFx0XFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxcbiAyOTc6XFx0XFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgSDMvQTgzVC9BNjRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTY6MDEuMTAzOTg0NDRaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ0MjA2MDAxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBEV01BQ19TVU44SWAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBpbml0aWFsbHkgdGhpbmtpbmcgYERXTUFDX1NVTjhJYCBzZWVtcyBsaWtlIGEgc29saWQgY29uZmlndXJhdGlvbiB0byBlbmFibGUuIEhvd2V2ZXIsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBEb2VzIHRoaXMgY29uZmlndXJhdGlvbiBhY3R1YWxseSBsZXZlcmFnZSB0aGUgYGR3eGdtYWMyYCBoYXJkd2FyZT8gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBkd3hnbWFjMmAgc3BlY2lmaWNhbGx5IHJlbGF0ZXMgdG8gWEdNQUMgKDEwIEdpZ2FiaXQpIGNhcGFiaWxpdGllcywgd2hlcmVhcyB0aGUgYHN1bjhpYCBwbGF0Zm9ybSBpcyBmb2N1c2VkIG9uIEdNQUMgKDEgR2lnYWJpdCkuXG5cbkhvbGQgb24sIHRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIEknbSBsb29raW5nIGF0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgZHd4Z21hYzJfZG1hLmNgLCB3aGljaCwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGlzIGRpcmVjdGx5IGFzc29jaWF0ZWQgd2l0aCBgZHd4Z21hYzJgLiBUaGF0IHJhaXNlcyBhIGZsYWcuIFNvLCB3aGF0IHBsYXRmb3JtIGRyaXZlciBpbiB0aGUgY29kZSBiYXNlIGlzIGFjdHVhbGx5ICp1c2luZyogdGhlIGBkd3hnbWFjMmAgaW1wbGVtZW50YXRpb24/IFRoaXMgZGlzY3JlcGFuY3kgbmVlZHMgY2xhcmlmaWNhdGlvbi5cblxuUmlnaHQsIHRpbWUgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIHRyYWNrIGRvd24gaG93IGBEV1hHTUFDX0lEYCBvciBgRFdYTEdNQUNfSURgIGFyZSBiZWluZyB1dGlsaXplZCB3aXRoaW4gdGhlIGRyaXZlciBzeXN0ZW0uIE9yLCBtb3JlIGJyb2FkbHksIHRvIGRldGVybWluZSB3aGljaCBkcml2ZXJzIGFyZSBzZWxlY3RpbmcgWEdNQUMgZnVuY3Rpb25hbGl0eS4gVGhpcyBzaG91bGQgaGVscCBtZSByZWNvbmNpbGUgdGhlIGNvZGUncyBpbnRlbmRlZCB1c2Ugd2l0aCB0aGUgbW9kaWZpY2F0aW9ucyBiZWluZyBtYWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzE3MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjA1LjU0NjA0Nzc5M1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEzMzg1MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFdYR01BQ19JRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00NS0vKiBEZXZpY2UgSUQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo0NjojZGVmaW5lIERXWEdNQUNfSURcXHRcXHQweDc2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDctI2RlZmluZSBEV1hMR01BQ19JRFxcdFxcdDB4MjdcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ5LVxcdFxcdC5taW5faWQgPSBEV1hHTUFDX0NPUkVfMl8xMCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjUwOlxcdFxcdC5kZXZfaWQgPSBEV1hHTUFDX0lELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTEtXFx0XFx0LnJlZ3MgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjA1LjYwNzM5MjQ1NloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc5NTM4MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSGFyZHdhcmUgSWRlbnRpZmljYXRpb24gYW5kIERyaXZlciBBc3NvY2lhdGlvbioqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGlzIGBod2lmLmNgIGZpbGUgYW5kIGhvdyBpdCB0aWVzIGludG8gaGFyZHdhcmUgaWRlbnRpZmljYXRpb24uIEl0IGxvb2tzIGxpa2UgaXQgY29uZmlybXMgdGhhdCB0aGUgaGFyZHdhcmUgSUQgcmVhZCBmcm9tIHRoZSBNQUMgcmVnaXN0ZXJzIGlzIGNvcnJlY3RseSBtYXRjaGVkLiBUaGlzIG1lYW5zIGFueSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCBiaW5kcyB0byBhIGRldmljZSB3aXRoIGBEV1hHTUFDX0lEYCBpcyBnb2luZyB0byB1dGlsaXplIHRoZSBgZHd4Z21hYzJgIGRyaXZlciwgd2hpY2ggbWFrZXMgc2Vuc2UuIE5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBwbGF0Zm9ybSBkcml2ZXJzIGFyZSBkZXNpZ25lZCB0byB3b3JrIHdpdGggWEdNQUMgc3BlY2lmaWNhbGx5LiBNeSBpbml0aWFsIHRob3VnaHRzIGFyZSB0byBpbnZlc3RpZ2F0ZSBkcml2ZXJzIHRoYXQgdXNlIHNvbWV0aGluZyBsaWtlIGBEV01BQ19DT1JFX1hHTUFDYCBvciB0aGUgbW9yZSBnZW5lcmFsIGBzdG1tYWNfcHJvYmVfY29uZmlnX2R0YCBmdW5jdGlvbiwgcGVyaGFwcyBzb21ldGhpbmcgZWxzZSB0b28uIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCBjb25uZWN0cyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg2NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjA5Ljc4NjkzMzUxMVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMyMTYyMjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhnbWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjA5Ljg4MDE1ODUxWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MjAzMDAzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVW5jb25kaXRpb25hbCBDb21waWxhdGlvbiBDb25jZXJucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSwgYW5kIHNvbWV0aGluZydzIHBpbmdpbmcgbXkgcmFkYXIuIEl0IHNlZW1zIGxpa2UgdGhlIG1vZHVsZSBgZHd4Z21hYzJgIGdldHMgY29tcGlsZWQgbm8gbWF0dGVyIHdoYXQsIGFzIGxvbmcgYXMgYFNUTU1BQ19FVEhgIGlzIGRlZmluZWQuIFRoYXQncyBhIGxpdHRsZeKApiB1bmV4cGVjdGVkLiBUeXBpY2FsbHksIHlvdSB3YW50IG1vcmUgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHdoYXQgZ2V0cyBidWlsdCBpbnRvIHRoZSBrZXJuZWwsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGFyZHdhcmUgZHJpdmVycy4gSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy5cblxuSXMgYGR3eGdtYWMyYCAqdHJ1bHkqIGVzc2VudGlhbCBmb3IgYWxsIGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIGBTVE1NQUNfRVRIYD8gT3IgaXMgdGhlcmUgYSBtb3JlIHNwZWNpZmljIGRlcGVuZGVuY3kgdGhhdCBzaG91bGQgYmUgY2hlY2tlZD8gSWYgaXQncyBhbHdheXMgaW5jbHVkZWQsIGV2ZW4gd2hlbiBpdCdzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnksIHdlJ3JlIGludHJvZHVjaW5nIHVubmVjZXNzYXJ5IGNvZGUgYmxvYXQgYW5kIHBvdGVudGlhbGx5IGluY3JlYXNpbmcgdGhlIGF0dGFjayBzdXJmYWNlLiBXZSBhbHNvIG5lZWQgdG8gYmUgbWluZGZ1bCBvZiByZXNvdXJjZXMgdXNlZCBvbiBlbWJlZGRlZCBzeXN0ZW1zLlxuXG5JIG5lZWQgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgdW5jb25kaXRpb25hbCBjb21waWxhdGlvbiBleGlzdHMuIElzIHRoZXJlIGEgaGlzdG9yaWNhbCByZWFzb24/IERvZXMgaXQgcmVseSBvbiBzb21lIGltcGxpY2l0IGRlcGVuZGVuY3k/IENvdWxkIHRoaXMgYmUgYSBidWc/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIHNvbWV3aGVyZSB0aGF0IGFyZSBiZWluZyBvdmVybG9va2VkPyBUaGUgbmV4dCBzdGVwcyBhcmUgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgd2h5IHRoaXMgaXMgc2V0IHVwIHRoaXMgd2F5LCBsb29rIGZvciBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cywgYW5kIG1ha2Ugc3VyZSB0aGF0IGl0IGFsbCBtYWtlcyBzZW5zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgxNjMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjoxMy41MDA0NjE1OVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ4MTkzMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mz1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNy1cXHQgICAgICBkd21hYzRfZG1hLm8gZHdtYWM0X2xpYi5vIGR3bWFjNF9jb3JlLm8gZHdtYWM1Lm8gaHdpZi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo4OlxcdCAgICAgIHN0bW1hY190Yy5vIGR3eGdtYWMyX2NvcmUubyBkd3hnbWFjMl9kbWEubyBkd3hnbWFjMl9kZXNjcy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS05LVxcdCAgICAgIHN0bW1hY194ZHAubyBzdG1tYWNfZXN0Lm8gc3RtbWFjX2ZwZS5vIHN0bW1hY192bGFuLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjoxMy41OTUyODg2MjlaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4MDMxOTE5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERlcGVuZGVuY3kgQ2hhaW4qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIG1vZHVsZSwgYGR3eGdtYWMyX2RtYS5vYCwgYW5kIGl0J3MgYWx3YXlzIGJ1aWx0IHdoZW4gYFNUTU1BQ19FVEhgIGlzIGRlZmluZWQuIEV4Y2VsbGVudC4gU28sIG15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIGVuc3VyaW5nIGBTVE1NQUNfRVRIYCBpcyBzZXQgY29ycmVjdGx5LiBOb3csIHRvIGdldCB0aGVyZSwgSSBrbm93IEkgbmVlZCBhIHBsYXRmb3JtIG9yIFBDSSBkcml2ZXIgdGhhdCBwcm92aWRlcyBhIGRldmljZSB3aXRoIHRoZSBgRFdYR01BQ19JRGAuIE5vIHByb2JsZW0sIEkgcmVtZW1iZXIgc2VlaW5nIGBzdG1tYWNfcGNpLmNgIGluIHRoZSB0cmVlLiBQZXJmZWN0LCB0aGVyZSdzIGEgUENJIGRyaXZlci4gQnV0LCBkb2VzIGl0IGFjdHVhbGx5IHN1cHBvcnQgdGhlIFhHTUFDIHZhcmlhbnQ/IFRoYXQncyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uIFRpbWUgdG8gZGl2ZSBpbnRvIGBzdG1tYWNfcGNpLmNgIGFuZCBzZWUgd2hhdCBpdCdzIGRvaW5nLiBMZXQncyBzZWUgaWYgaXQncyBnb3QgdGhlIHJpZ2h0IGRldmljZSBJRHMgYW5kIGZlYXR1cmVzIGJha2VkIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODczNiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjoxNy43NzU2MTI2MDRaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjU2NjkwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE5OlxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTkyPXN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA0LVxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjoxNy44ODIxODM5MTFaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwMDg5MjU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIGBzdG1tYWNfaWRfdGFibGVgKipcblxuUmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IGBzdG1tYWNfaWRfdGFibGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHRhYmxlLCBpdHMgc3RydWN0dXJlLCBhbmQgd2hhdCBpdCdzIGRlZmluaW5nLiBJIGV4cGVjdCBpdCdzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIGRyaXZlciwgbGlrZWx5IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gdXNlZCB0byBpZGVudGlmeSBzcGVjaWZpYyBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGNvbnRyb2xsZXJzLiBJdCdzIHByb2JhYmx5IGEgZGV2aWNlIElEIHRhYmxlLCB1c2VkIGJ5IHRoZSBkcml2ZXIgdG8gbWF0Y2ggYWdhaW5zdCBkZXRlY3RlZCBoYXJkd2FyZS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqVmVuZG9yIGFuZCBEZXZpY2UgSURzOioqIFRoZXNlIGFyZSB0aGUgYmVkcm9jayBmb3IgaGFyZHdhcmUgaWRlbnRpZmljYXRpb24uIEknbGwgZXhwZWN0IHRvIHNlZSBwYWlycyBvciBncm91cHMgb2YgSURzIHRoYXQgbWFwIGRpcmVjdGx5IHRvIHRoZSBzcGVjaWZpYyBTVE1NQUMgaGFyZHdhcmUgdmFyaWFudHMuXG4qICAgKipNb2R1bGUgQWxpYXNlczoqKiBJJ2xsIGJlIGN1cmlvdXMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbGlhc2VzIG9yIGlkZW50aWZpZXJzIGRlZmluZWQgdG8gaGVscCB3aXRoIG1vZHVsZSBsb2FkaW5nIGFuZCBkZXZpY2UgcHJvYmluZyBpbiB2YXJpb3VzIHN5c3RlbXMuXG4qICAgKipEcml2ZXIgRGF0YToqKiBJdCdzIHVubGlrZWx5LCBidXQgbm90IGltcG9zc2libGUsIHRoYXQgc29tZSBzcGVjaWZpYyBkcml2ZXItcmVsYXRlZCBpbmZvcm1hdGlvbiBpcyBlbWJlZGRlZCBoZXJlLCB0b28uIFBlcmhhcHMgc29tZSBjb25maWd1cmF0aW9uIGRlZmF1bHRzIG9yIGZsYWdzIHBlciBoYXJkd2FyZSB2YXJpYW50LiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyB3aGljaCBpbmZvcm1hdGlvbiwgYW5kIHRvIGFzc2VzcyB3aGV0aGVyIGl0IGNvdWxkIGJlIGJldHRlciBkZXNjcmliZWQgaW4gYSBzZXBhcmF0ZSBzdHJ1Y3R1cmUuXG4qICAgKipQbGF0Zm9ybSBEZXBlbmRlbmNpZXM6KiogSSdsbCBiZSBjaGVja2luZyB0byBzZWUgaWYgdGhlcmUncyBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgaW5mb3JtYXRpb24uIEl0IGlzIGltcG9ydGFudCB0byBrbm93IGlmIHRoZSB0YWJsZSBzdXBwb3J0cyBtdWx0aXBsZSBwbGF0Zm9ybSB2ZXJzaW9ucywgb3IgaGFzIGRpZmZlcmVudCBydWxlcy5cbiogICAqKlJldmlzaW9uczoqKiBHb29kIHByYWN0aWNlIHdvdWxkIGJlIHRvIGluY2x1ZGUgcmV2aXNpb24gZGF0YSB0aGF0IGNhbiBkaXN0aW5ndWlzaCB2YXJpYW50cyBhbmQgZW5zdXJlIHRoZSBkcml2ZXIgZnVuY3Rpb25zIGNvcnJlY3RseSB3aXRoIGEgcGFydGljdWxhciBzaWxpY29uIHJldmlzaW9uLlxuXG5VbmRlcnN0YW5kaW5nIHRoZSBpbmZvcm1hdGlvbiB3aXRoaW4gdGhpcyB0YWJsZSBpcyBjcnVjaWFsIHRvIHRoZSBkcml2ZXIncyBhYmlsaXR5IHRvIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlIGNvcnJlY3RseS4gSXQncyB0aGUgZmlyc3Qgc3RlcCBpbiBlbnN1cmluZyBwcm9wZXIgZGV2aWNlIGRldGVjdGlvbiBhbmQgYXNzb2NpYXRpb24uIE15IGdvYWwgaXMgdG8gZ3Jhc3AgaG93IGl0IHdvcmtzIGFuZCB3aGF0IGl0J3MgdGVsbGluZyB0aGUgZHJpdmVyIGFib3V0IHN1cHBvcnRlZCBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzOTYsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjoyMi4xODMwNzk0MDFaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMDpcXHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1xcdFxcdDB4MTEwOFxcbiAyMDE6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXFx0XFx0MHg3MTAyXFxuIDIwMjpcXHRcXG4gMjAzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4gMjA0OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDU6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDY6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG4gMjA3OlxcdFxcdHt9XFxuIDIwODpcXHR9O1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG4gMjExOlxcdFxcbiAyMTI6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbiAyMTM6XFx0XFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG4gMjE0OlxcdFxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTY6MjIuMTgzMTY5OTUxWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4NjM5NjIyMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYSBTeXprYWxsZXItRm91bmQgQnVnIGluIFNUTU1BQyoqXG5cbk9rYXksIHNvIEkgc2VlIGBzdG1tYWNfcGNpX2luZm9gIGFuZCBgc25wc19nbWFjNV9wY2lfaW5mb2AgbWVudGlvbmVkLiBJbnRlcmVzdGluZy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBob3cgc3l6a2FsbGVyIG1pZ2h0IGhhdmUgdHJpZ2dlcmVkIHRoaXMsIGFuZCBJIGJyaWVmbHkgY29uc2lkZXIgdGhlIFBDSSBkZXZpY2UgYW5nbGUuIERvZXMgc3l6a2FsbGVyIGV2ZW4gZnV6eiBQQ0kgZGV2aWNlcyBkaXJlY3RseSwgb3IgZG9lcyBpdCByZWx5IG9uIFFFTVUgZW11bGF0aW9uIG9yIGBzeXpfcGNpX3NldHVwYD8gVGhlbiBJIHJlbWVtYmVyIHRoYXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIGhlcmU7IHRoZSBrZXkgaXMgdGhhdCBzeXprYWxsZXIgKmZvdW5kKiB0aGlzIGJ1Zy5cblxuSSBxdWlja2x5IHNoaWZ0IHRvIHRoaW5raW5nIGFib3V0IHRoZSBwYXRod2F5LiBDb3VsZCBpdCBoYXZlIGJlZW4gdmlhIGBzdG1tYWNfcGxhdGZvcm1gPyBTeXprYWxsZXIgY2FuIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzIHRocm91Z2ggZGV2aWNlIHRyZWUgb3ZlcmxheXMgb3IgYC9zeXMvZGV2aWNlcy9wbGF0Zm9ybWAsIHJpZ2h0PyBUaGVuIEkgdGhpbmsgYWJvdXQgdGhlIHBzZXVkby1zeXNjYWxscyBJJ20gZmFtaWxpYXIgd2l0aCwgbGlrZSBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYC4gSXMgdGhlcmUgYW4gYHN0bW1hY2Agc3BlY2lmaWMgcHNldWRvLXN5c2NhbGw/IE5vLCB3YWl0LCB0aGF0J3Mgbm90IHJlbGV2YW50LiBUaGUgcHJvbXB0IGNsZWFybHkgc3RhdGVzIHRoYXQgc3l6a2FsbGVyIGludGVybmFscywgc3BlY2lmaWNhbGx5IHN5emxhbmcgZGVzY3JpcHRpb25zLCBhcmUgbm90IHdoYXQgSSBuZWVkIHRvIGZvY3VzIG9uLlxuXG5UaGUgaW1wb3J0YW50IHRoaW5nIGlzIHRoYXQgc3l6a2FsbGVyIHJlYWNoZWQgaXQuIEl0J3MgYSBuZXR3b3JrIGRyaXZlciBidWcuIFRoYXQncyB3aGF0IG1hdHRlcnMuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBtb2RpZmllcyBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYC4gVGhpcyBmdW5jdGlvbiBpcyB1bmNvbmRpdGlvbmFsbHkgY2FsbGVkIGluIGBzdG1tYWNfbWFpbi5jYCBmb3IgKmFsbCogdmFyaWFudHMgb2YgYHN0bW1hY2AuIEV2ZW4gaWYgYSBwYXJ0aWN1bGFyIHZhcmlhbnQsIGxpa2UgYGR3eGdtYWMyYCwgZG9lc24ndCBoYXZlIGB0eF9kbWFfc3RvcHBlZGAsIGl0IHN0aWxsIGV4ZWN1dGVzIHRoZSByZXN0IG9mIGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gLiBJdCdzIGEgZnVuZGFtZW50YWwgY2hhbmdlIHRvIHRoZSBETUEgaGFuZGxpbmcgYW5kIE1BQyBkaXNhYmxlIGxvZ2ljLiBQcmV2aW91c2x5IGl0IHdhcyBoYW5kbGVkIGRpZmZlcmVudGx5OyBub3cgaXQnczogc3RvcCBUWCBETUEsIGRpc2FibGUgTUFDLCBzdG9wIFJYIERNQS4gVGhpcyBvcmRlciBpcyBhIGNydWNpYWwgc2hpZnQuXG5cblRoaXMgYWZmZWN0cyAqYWxsKiBgc3RtbWFjYCBkZXZpY2VzLiBUaGF0IGluY2x1ZGVzIHRoZSBgc3VuOGktZW1hY2AsIHdoaWNoIGlzLCBjb252ZW5pZW50bHksIGVtdWxhdGVkIGluIFFFTVUhIFRoYXQgbWFrZXMgaXQgaW5jcmVkaWJseSB2YWx1YWJsZSBmb3IgZnV6emluZy4gVGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgd29ydGggbXkgdGltZS5cblxuVGltZSB0byB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb25zLiBJJ2xsIG5lZWQgYFNUTU1BQ19FVEhgLCBvZiBjb3Vyc2UuIFNpbmNlIHRoZSBgc3VuOGktZW1hY2AgaXMgaW4gUUVNVSwgSSdsbCBkZWZpbml0ZWx5IGVuYWJsZSBgRFdNQUNfU1VOOElgLiBNaWdodCBhcyB3ZWxsIGVuYWJsZSBgRFdNQUNfR0VORVJJQ2AgdG9vLCBmb3IgZ29vZCBtZWFzdXJlLiBBbmQgb2YgY291cnNlLCBgU1RNTUFDX1BDSWAgdG8gY292ZXIgdGhlIFBDSSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMTc3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjkwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTY6MzIuMDQ3MTM1MjkyWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTE1Mzk5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjMyLjEwMjI5NTE0NVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDgxNzA2Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB0aGUgZXhwZXJ0IGFuZCBjb25zaWRlcmluZyBob3cgSSdkIGFwcHJvYWNoIGl0OlxuXG4qKkNoZWNraW5nIGBEV01BQ19HRU5FUklDYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBcIkxldCdzIGNoZWNrIGBEV01BQ19HRU5FUklDYFwiIOKAkyB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBpbnRlcm5hbCBwcm9jZXNzIGtpY2tzIG9mZiB3aXRoIGEgcXVpY2sgbWVudGFsIHNjYW4uIEknbSBpbW1lZGlhdGVseSB0aGlua2luZywgXCJPa2F5LCBgRFdNQUNfR0VORVJJQ2AuIFRoYXQgbGlrZWx5IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGdlbmVyaWMgRGF0YSBXYXJlaG91c2UgTWFuYWdlbWVudCBBY2Nlc3MgQ29udHJvbCAoRFdNQUMpIHNldHVwLiBPciBwZXJoYXBzIGEgbWFjcm8gdGhhdCB3b3VsZCBwZXJmb3JtIHRoZSBnZW5lcmljIHdvcmtcIlxuXG5JJ20gcHJvYmFibHkgYXNzZXNzaW5nIHRoZSBjb250ZXh0LiBXaGF0IHByb2JsZW0gYXJlIHdlIHRyeWluZyB0byBzb2x2ZT8gV2h5IGFyZSB3ZSBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCAqdGhpcyogZWxlbWVudD8gSXMgdGhlcmUgYSByZXBvcnRlZCBlcnJvcj8gT3IgYW0gSSBqdXN0IGRvaW5nIGEgcm91dGluZSBjaGVjaz8gXCJHZW5lcmljXCIgY291bGQgc2lnbmlmeSBhIGJhc2UgbGV2ZWwsIGEgZGVmYXVsdCBzZXR0aW5nLCBvciBhIGJyb2FkIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSB1c2UtY2FzZSBmb3IgdGhlIHRlcm0uXG5cblRoZSBuZXh0IHRoaW5nIEknZCBkbyBpcyBsaWtlbHkgcHVsbCB1cCBkb2N1bWVudGF0aW9uIGlmIEkgaGF2ZSBpdCBhdmFpbGFibGUuIE9yIEkgd291bGQgb3BlbiB1cCBteSBJREUgYW5kIHN0YXJ0IHNlYXJjaGluZyB0aHJvdWdoIHRoZSBjb2RlIGJhc2UuIEkgd2lsbCBiZSBsb29raW5nIGZvcjpcblxuKiAgICoqRGVmaW5pdGlvbioqOiBXaGVyZSBpcyB0aGlzIHZhcmlhYmxlL2Z1bmN0aW9uL21vZHVsZSBkZWZpbmVkPyBXaGF0IGV4YWN0bHkgZG9lcyBpdCByZXByZXNlbnQ/IFdoYXQncyB0aGUgaW1wbGVtZW50YXRpb24/XG4qICAgKipEZXBlbmRlbmNpZXMqKjogV2hhdCBvdGhlciBlbGVtZW50cyByZWx5IG9uIGBEV01BQ19HRU5FUklDYD8gQXJlIHRoZXJlIHJlbGF0ZWQgY29tcG9uZW50cyBvciB1cHN0cmVhbS9kb3duc3RyZWFtIGRlcGVuZGVuY2llcz8gSWYgdGhpcyBmYWlscywgd2hhdCBvdGhlciBzeXN0ZW1zIGNvdWxkIGJlIGltcGFjdGVkP1xuKiAgICoqQ29uZmlndXJhdGlvbioqOiBEb2VzIGBEV01BQ19HRU5FUklDYCBoYXZlIGFzc29jaWF0ZWQgcGFyYW1ldGVycyBvciBzZXR0aW5ncz8gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHZhbHVlcyB0aGF0IG1pZ2h0IGJlIGNydWNpYWw/XG4qICAgKipFcnJvciBIYW5kbGluZyoqOiBJcyB0aGVyZSBhbnkgZXhjZXB0aW9uIGhhbmRsaW5nIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoaXM/IFdoYXQgaGFwcGVucyBpZiB0aGlzIGZhaWxzIG9yIHJldHVybnMgYW4gdW5leHBlY3RlZCByZXN1bHQ/IEFyZSB0aGVyZSBhbnkgbG9ncz9cbiogICAqKlNlY3VyaXR5IENvbnRleHQqKjogSG93IGRvZXMgdGhlIERXTUFDIHN5c3RlbSBpbnRlcmFjdCB3aXRoIHNlY3VyaXR5IHByb3RvY29scyBhbmQgbWVhc3VyZXM/XG5cblRoZSBvYmplY3RpdmUgaGVyZSBpcyBzaW1wbGU6IHRvIGdyYXNwIHRoZSBwdXJwb3NlLCBmdW5jdGlvbmFsaXR5LCBhbmQgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIHBpZWNlLiBVbHRpbWF0ZWx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0gYW5kIGRldGVybWluZSBpZiBpdCdzIGJlaGF2aW5nIGFzIGV4cGVjdGVkIG9yIGlmIHRoZXJlJ3MgYW4gYXJlYSB0aGF0IG5lZWRzIG15IGZvY3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTU5MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjM3LjE4NDAwNDY3M1oiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg4NzE5OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERXTUFDX0dFTkVSSUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTQ0PWNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjUyOmNvbmZpZyBEV01BQ19HRU5FUklDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjozNy4yNDI4ODMyNDZaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODAwOTM3NjI4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBTVE1NQUMgRHJpdmVyIFRlYXJkb3duKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIHRoYXQgbmVlZCBlbmFibGluZzogYFNUTU1BQ19FVEhgLCBgRFdNQUNfU1VOOElgLCBgRFdNQUNfR0VORVJJQ2AsIGFuZCBgU1RNTUFDX1BDSWAuIE5vdGhpbmcgdG9vIHN1cnByaXNpbmcgdGhlcmU7IGl0J3MgdGhlIHVzdWFsIHN1c3BlY3RzIHdoZW4gd29ya2luZyB3aXRoIHRoaXMgZHJpdmVyLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBwYXJ0OiBgc3RtbWFjX2RhdGFwYXRoX3RlYXJkb3duYC4gSSByZW1lbWJlciB0aGF0IGZ1bmN0aW9uLiBJdCdzIGNhbGxlZCBmcm9tIGEgZmV3IGtleSBwbGFjZXM6IGBzdG1tYWNfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9vcGVuYCwgYW5kIGBzdG1tYWNfc3VzcGVuZGAuIE9rYXksIHRpbWUgdG8gbGlzdCBteSBmb2NhbCBwb2ludHM6XG5cbiogICBgc3RtbWFjX3JlbGVhc2VgXG4qICAgYHN0bW1hY194ZHBfcmVsZWFzZWBcbiogICBgc3RtbWFjX3hkcF9vcGVuYFxuKiAgIGBzdG1tYWNfc3VzcGVuZGBcbiogICBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgXG4qICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmBcbiogICBgZHd4Z21hYzJfcnhfbXRsX2RyYWluYFxuKiAgIGBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZGBcblxuQWxyaWdodCwgYHN0bW1hY19yZWxlYXNlYCBpcyB0aGUgYG5kb19zdG9wYCBjYWxsYmFjay4gVGhhdCBtYWtlcyBpdCBhIGhpZ2gtcHJpb3JpdHkgdGFyZ2V0IGZvciBhbmFseXNpcywgZ2l2ZW4gaXRzIHJvbGUgaW4gc2h1dHRpbmcgdGhpbmdzIGRvd24uIGBzdG1tYWNfeGRwX29wZW5gIGFuZCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhcmUgY2xlYXJseSBYRFAtcmVsYXRlZCwgYW5kIGBzdG1tYWNfc3VzcGVuZGAgaGFuZGxlcyB0aGUgc3lzdGVtIHN1c3BlbmQuIFRoZW4gdGhlcmUgYXJlIHRoZSBuZXcgZnVuY3Rpb25zIHdpdGggdGhlIFwiZHd4Z21hYzJcIiBwcmVmaXgsIGFkZGVkIGJ5IHRoZSBwYXRjaC5cblxuTm93LCBsZXQncyBkb3VibGUtY2hlY2sgaG93IGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gIHdvcmtzLiBJcyBpdCBzdGF0aWMgYW5kIGxpa2VseSB0byBiZSBpbmxpbmVkPyBJdCdzIHN0YXRpYywgd2hpY2ggaXMgZ29vZC4gSG93ZXZlciwgaXQncyBwcm9iYWJseSBwcmV0dHkgbGFyZ2UsIHNvIGlubGluaW5nIGlzIHVubGlrZWx5LiBTbyBJJ2xsIGZvY3VzIG9uIHRoZSBjYWxsZXJzIGluc3RlYWQuIEl0J3MgY2FsbGVkIGJ5IGBfX3N0bW1hY19yZWxlYXNlYCwgd2hpY2ggaXMgc3RhdGljLCBhbmQgaW4gdHVybiB1c2VkIGJ5IGBzdG1tYWNfcmVsZWFzZWAsIGBzdG1tYWNfY2hhbmdlX210dWAsIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AsIGFuZCBgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW1gLiBIYW5nIG9uLi4uIGBfX3N0bW1hY19yZWxlYXNlYCBpcyAqaXRzZWxmKiBjYWxsZWQgYnkgYHN0bW1hY19yZWxlYXNlYC4gT2theSwgSSdsbCBzdGljayB3aXRoIGBzdG1tYWNfcmVsZWFzZWAgYXMgbXkgcHJpbWFyeSBmb2N1cy5cblxuT2gsIGFuZCB3YWl0LCBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYXJlIG5vdCBzdGF0aWMhIFRoYXQgbWlnaHQgYmUgaW1wb3J0YW50IGxhdGVyLCBmb3IgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyMzIsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTY6NDUuMjUyMjY1ODc2WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjE1MTA2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYz0xMDI9aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTM0LVxcdGlmIChpZl9ydW5uaW5nIFxcdTAwMjZcXHUwMDI2IG5lZWRfdXBkYXRlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzoxMzU6XFx0XFx0c3RtbWFjX3hkcF9vcGVuKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEzNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTY6NDUuMzQ0NDIzMjE1WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTY3MjE1OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIE1vZHVsZSBJbml0aWFsaXphdGlvbiAtIEEgUXVpY2sgUmVmcmVzaGVyKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIFNUTU1BQyBkcml2ZXIgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBYRFAgaW1wbGVtZW50YXRpb24sIGFuZCBJJ20gYSBiaXQgc3VycHJpc2VkLiBNeSBpbml0aWFsIGV4cGVjdGF0aW9uIHdhcyB0aGF0IHRoZSBYRFAtcmVsYXRlZCBpbml0aWFsaXphdGlvbiB3b3VsZCBiZSB0dWNrZWQgYXdheSBpbiBpdHMgb3duIGRlZGljYXRlZCBzb3VyY2UgZmlsZSwgeW91IGtub3csIGZvciBiZXR0ZXIgbW9kdWxhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LiBCdXQgaGFuZyBvbi4uLiBgc3RtbWFjX3hkcF9vcGVuYC4uLiB0aGF0J3MgYWN0dWFsbHkgKmluKiBgc3RtbWFjX21haW4uY2A/IEludGVyZXN0aW5nLiBJIHdvdWxkIGhhdmUgZXhwZWN0ZWQgYSBtb3JlIG1vZHVsYXIgc3RydWN0dXJlLCBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIGBzdG1tYWNfeGRwLmNgLiBJdCdzIG5vdCBpbmhlcmVudGx5IGJhZCwgYnV0IGl0IGRvZXMgbWFrZSBtZSB3b25kZXIgYWJvdXQgdGhlIG92ZXJhbGwgZGVzaWduIGNob2ljZXMsIHRoZSBoaXN0b3JpY2FsIGNvbnRleHQsIGFuZCBwb3RlbnRpYWwgZnV0dXJlIG1haW50YWluYWJpbGl0eSwgYW5kIGl0IHdpbGwgdGFrZSBzb21lIHRpbWUgdG8gcmV2aWV3LiBMZXQgbWUgcmUtZXhhbWluZSB0aGUgZmlsZSBzdHJ1Y3R1cmUgYWdhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNTE4LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTY6NDguOTYxMTQ4NTI3WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDU2NzY2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxNDE9dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxNzE6aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE3Mi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjQ5LjAzNTcyMzYyOFoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzYzOTMwMzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgU1RNMzJNQUMgRHJpdmVyIFN0YXRpYyBEZWNsYXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBjb25jZXJuIHdhcyB3aGV0aGVyIHRoZSByZWxldmFudCBmdW5jdGlvbnMgd2VyZSBkZWNsYXJlZCB3aXRoaW4gYHN0bW1hY19tYWluLmNgIGFuZCB3ZXJlIGFsc28gc3RhdGljLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IHRoZXkgKmFyZSogbG9jYXRlZCBpbiBgc3RtbWFjX21haW4uY2AsIGFuZCBpbXBvcnRhbnRseSwgdGhleSdyZSAqbm90KiBzdGF0aWMuIFRoaXMgaGFzIGltcGxpY2F0aW9ucyBmb3IgcG90ZW50aWFsIHZpc2liaWxpdHkgYW5kIGxpbmtpbmcsIHdoaWNoIGFsaWducyB3aXRoIGhvdyBJJ2QgZXhwZWN0IHRoaXMgZHJpdmVyIHRvIGJlIHN0cnVjdHVyZWQuIEdpdmVuIHRoaXMgaW5pdGlhbCBmaW5kaW5nLCBpdCBtYWtlcyBzZW5zZSB0byBjb25maXJtIHdoZXRoZXIgYHN0bW1hY19zdXNwZW5kYCAqaXMqIGRlY2xhcmVkIHN0YXRpYywgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlcidzIHN0YXRlIGFuZCBjb250ZXh0IGFyZSBtYW5hZ2VkIGR1cmluZyBzeXN0ZW0gc3VzcGVuZCBvcGVyYXRpb25zLiBUaGF0IHdpbGwgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHN1c3BlbmQgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIHRvIG90aGVyIG1vZHVsZXMgb3IgaXMgaW50ZXJuYWwgdG8gdGhlIGBzdG1tYWNfbWFpbi5jYCBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzk0NywiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjUyLjM5OTY1NzU5OVoiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIyMDMwOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3N1c3BlbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyMDk9RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9yZW1vdmUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjExLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODIxMjogKiBzdG1tYWNfc3VzcGVuZCAtIHN1c3BlbmQgY2FsbGJhY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyMTMtICogQGRldjogZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODIxNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgyMTg6aW50IHN0bW1hY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjY3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgyNjg6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3N1c3BlbmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9ODM5OT1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcmVzdW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODQwMS0vKiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyBFWFBPUlRfR1BMX1NJTVBMRV9ERVZfUE1fT1BTKCkgd2hlbiBDT05GSUdfUE09biAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODQwMjpERUZJTkVfU0lNUExFX0RFVl9QTV9PUFMoc3RtbWFjX3NpbXBsZV9wbV9vcHMsIHN0bW1hY19zdXNwZW5kLCBzdG1tYWNfcmVzdW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTg0MDMtRVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3NpbXBsZV9wbV9vcHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjo1Mi40ODE4NzAwNloiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzcyNzI5MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBNb2R1bGUncyBTdXNwZW5zaW9uIGFuZCBSZWxhdGVkIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYHN0bW1hY19zdXNwZW5kYCAqaXMqIGluZGVlZCBleHBvcnRlZCwgdGhhdCdzIGdvb2QuIE5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhpcyBzdXNwZW5zaW9uIHByb2Nlc3MuIEknbSBzZWVpbmc6XG5cbiogICBgc3RtbWFjX3JlbGVhc2VgXG4qICAgYHN0bW1hY194ZHBfcmVsZWFzZWBcbiogICBgc3RtbWFjX3hkcF9vcGVuYFxuKiAgIGBzdG1tYWNfc3VzcGVuZGAgLSBvYnZpb3VzbHkgYSBjZW50cmFsIHBhcnQgb2YgdGhpcy5cbiogICBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgXG4qICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmBcbiogICBgZHd4Z21hYzJfcnhfbXRsX2RyYWluYFxuKiAgIGBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZGBcblxuSSdtIG1ha2luZyBhIG1lbnRhbCBub3RlIG9mIGFsbCB0aGVzZSBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5IGFyZSBhbGwgaW1wb3J0YW50IHRvIHRoZSBwcm9jZXNzLlxuXG5Ob3csIEknbSB0aGlua2luZywgYXJlIHRoZXJlIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyBpbiBwbGF5IHRoYXQgbWlnaHQgYmUgaW52b2x2ZWQgb3IgaGF2ZSBiZWVuIG1vZGlmaWVkPyBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrLlxuXG5NeSBzdXNwaWNpb24gaXMgdGhhdCB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgcmVsYXRlZCB0byBETUEgY29udHJvbC4gTGV0J3MgZGVsdmUgaW50byBgZHd4Z21hYzJfZG1hLmNgLiBZZXMsIGhlcmUgd2UgZ286IEkgc2VlIGBkd3hnbWFjMl9kbWFfc3RhcnRfdHhgLCBgZHd4Z21hYzJfZG1hX3N0b3BfdHhgLCBgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4YCwgYW5kIGBkd3hnbWFjMl9kbWFfc3RvcF9yeGAuIFRoZXNlIERNQSBmdW5jdGlvbnMgYXJlIGRlZmluaXRlbHkgcmVsZXZhbnQgdG8gc3VzcGVuc2lvbiBhbmQgcmVzdW1wdGlvbi4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBjb25maXJtIGlmIHRoZXNlIHNwZWNpZmljIERNQSBmdW5jdGlvbnMgYXJlIHN0YXRpYywgdG8gZGV0ZXJtaW5lIHRoZWlyIHNjb3BlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc4NiwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNjo1Ny4yNTQ2MDIyMjNaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MDAwNDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR3eGdtYWMyX2RtYV9zdGFydF90eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0yMzY9c3RhdGljIHZvaWQgZHd4Z21hYzJfZGlzYWJsZV9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTI0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoyNTA6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0yNTEtXFx0XFx0XFx0XFx0ICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz02NTE9Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTY2Mi1cXHQuZGlzYWJsZV9kbWFfaXJxID0gZHd4Z21hYzJfZGlzYWJsZV9kbWFfaXJxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjY2MzpcXHQuc3RhcnRfdHggPSBkd3hnbWFjMl9kbWFfc3RhcnRfdHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNjY0LVxcdC5zdG9wX3R4ID0gZHd4Z21hYzJfZG1hX3N0b3BfdHgsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE2OjU3LjMwOTYwODQzN1oiLCJTZXEiOjU5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDczNjk1NDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgVGhpbmtpbmcgb24gRE1BIE9wZXJhdGlvbnMgYW5kIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBETUEgb3BlcmF0aW9ucywgc3BlY2lmaWNhbGx5IHRob3NlIGFzc29jaWF0ZWQgd2l0aCBgZHd4Z21hYzIxMF9kbWFfb3BzYC4gVGhleSdyZSBzdGF0aWMsIGJ1dCB0aGV5IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcywgc28gdGhleSdyZSBkZWZpbml0ZWx5IG5vdCBpbmxpbmVkLiBUaGF0IG1lYW5zIHdlIGNhbiBzYWZlbHkgYWRkIHRoZW0gdG8gdGhlIGZvY3VzIHN5bWJvbHMuIEknbGwgYWRkIGBkd3hnbWFjMl9kbWFfc3RhcnRfdHhgLCBgZHd4Z21hYzJfZG1hX3N0b3BfdHhgLCBgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4YCwgYW5kIGBkd3hnbWFjMl9kbWFfc3RvcF9yeGAgdG8gdGhlIGxpc3QuXG5cbk5vdywgbGV0IG1lIGdvIGJhY2sgYW5kIHJldmlldyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYWdhaW46IGBTVE1NQUNfRVRIYCwgYERXTUFDX1NVTjhJYCwgYERXTUFDX0dFTkVSSUNgLCBhbmQgYFNUTU1BQ19QQ0lgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBjb3ZlcmVkLlxuXG5IbW0sIHdhaXQgYSBtaW51dGUsIGRvZXMgYERXTUFDX1NVTjhJYCBoYXZlIGFueSBkZXBlbmRlbmNpZXM/IExldCBtZSBzZWUuLi4geWVzLCBpdCBkZXBlbmRzIG9uIGBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKWAuICBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHRoaXMuIElmIHdlIGp1c3QgcHJvdmlkZSBgRFdNQUNfU1VOOElgLCBpdCdsbCBlbmFibGUgaXQgaWYgdGhvc2UgZGVwZW5kZW5jaWVzIGFyZSBtZXQuIEkgY291bGQgYWRkIGBDT01QSUxFX1RFU1RgIGV4cGxpY2l0bHkgdG8gYmUgc3VyZSwgYnV0IFN5emthbGxlciB1c3VhbGx5IGVuYWJsZXMgdGhhdCBhbnl3YXkuIE5vIG5lZWQgZm9yIHRoYXQuIEFscmlnaHQsIGxldCdzIGFsc28gY2hlY2sgYFNUTU1BQ19QQ0lgJ3MgZGVwZW5kZW5jaWVzLiBBaCwgaXQgZGVwZW5kcyBvbiBgUENJIFx1MDAyNlx1MDAyNiBTVE1NQUNfRVRIYC4gT2theSwgbm90ZWQuIEFuZCBgRFdNQUNfR0VORVJJQ2A/ICBUaGF0IGRlcGVuZHMgb24gYFNUTU1BQ19FVEhgLiBHb29kLCBzbyB3ZSdyZSBzZXQuXG5cblNvLCB0aGUgY29uZmlndXJhdGlvbnMgYXJlIGNvbmZpcm1lZCBhczogYFNUTU1BQ19FVEhgLCBgRFdNQUNfU1VOOElgLCBgRFdNQUNfR0VORVJJQ2AsIGBTVE1NQUNfUENJYC5cblxuQWxyaWdodCwgbGV0J3MgZ28gYmFjayB0byB0aG9zZSBmb2N1cyBzeW1ib2xzLiBJJ3ZlIGdvdDogYHN0bW1hY19yZWxlYXNlYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfeGRwX29wZW5gLCBgc3RtbWFjX3N1c3BlbmRgLCBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgLCBgZHd4Z21hYzJfdHhfbXRsX2RyYWluYCwgYGR3eGdtYWMyX3J4X210bF9kcmFpbmAsIGBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZGAsIGFuZCB0aGVuIHRoZSBuZXcgb25lcyBJIGFkZGVkOiBgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4YCwgYGR3eGdtYWMyX2RtYV9zdG9wX3R4YCwgYGR3eGdtYWMyX2RtYV9zdGFydF9yeGAsIGBkd3hnbWFjMl9kbWFfc3RvcF9yeGAuXG5cbldhaXQgYSBzZWNvbmQsIGBzdG1tYWNfcmVsZWFzZWAgaXMgZXNzZW50aWFsbHkgYG5kb19zdG9wYCwgd2hpY2ggaXMgYSBjb21tb24gcGF0aC4gVGhlIG5vdGVzIHNheSB0byBcImF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zXCIuIElzIGBzdG1tYWNfcmVsZWFzZWAgYSBob3QtcGF0aD8gTm8sIGl0J3Mgb25seSBjYWxsZWQgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIGJyb3VnaHQgZG93biwgbm90IGR1cmluZyByZWd1bGFyIG9wZXJhdGlvbi4gU2ltaWxhcmx5LCBgc3RtbWFjX3hkcF9vcGVuYCBpcyBub3QgYSBob3QtcGF0aCAtIG9ubHkgY2FsbGVkIHdoZW4gYXR0YWNoaW5nIGFuIFhEUCBwcm9ncmFtLiBXaGF0IGFib3V0IGBkd3hnbWFjMl9kbWFfc3RhcnRfdHhgPyAgWWVzLCB0aGlzIG9uZSBpcyB1c2VkIHRvIHN0YXJ0IHRoZSBUWCBETUEsIHRoYXQgY291bGQgYmUgbW9yZSBpbnRlcmVzdGluZy4gTGV0J3Mgc2VlLi4ud2hlbiBpcyBpdCBhY3R1YWxseSBjYWxsZWQ/IE5lZWQgdG8gY2hlY2sgd2hlcmUgdGhlIGBzdGFydF90eGAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTgwMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNzowNi43ODMzMDcxODRaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzOTc1ODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YXJ0X3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MzYyPXN0YXRpYyB2b2lkIHN1bjhpX2R3bWFjX2Rpc2FibGVfZG1hX2lycShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTM3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjM3NjpzdGF0aWMgdm9pZCBzdW44aV9kd21hY19kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMzc3LVxcdFxcdFxcdFxcdCAgICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz01NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBzdW44aV9kd21hY19kbWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy01NjQtXFx0LmRpc2FibGVfZG1hX2lycSA9IHN1bjhpX2R3bWFjX2Rpc2FibGVfZG1hX2lycSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjU2NTpcXHQuc3RhcnRfdHggPSBzdW44aV9kd21hY19kbWFfc3RhcnRfdHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy01NjYtXFx0LnN0b3BfdHggPSBzdW44aV9kd21hY19kbWFfc3RvcF90eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYz0yNTM9Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3bWFjMTAwMF9kbWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTI2NS1cXHQuZGlzYWJsZV9kbWFfaXJxID0gZHdtYWNfZGlzYWJsZV9kbWFfaXJxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYzoyNjY6XFx0LnN0YXJ0X3R4ID0gZHdtYWNfZG1hX3N0YXJ0X3R4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYy0yNjctXFx0LnN0b3BfdHggPSBkd21hY19kbWFfc3RvcF90eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2RtYS5jPTEwOT1jb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHdtYWMxMDBfZG1hX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2RtYS5jLTExOS1cXHQuZGlzYWJsZV9kbWFfaXJxID0gZHdtYWNfZGlzYWJsZV9kbWFfaXJxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2RtYS5jOjEyMDpcXHQuc3RhcnRfdHggPSBkd21hY19kbWFfc3RhcnRfdHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDBfZG1hLmMtMTIxLVxcdC5zdG9wX3R4ID0gZHdtYWNfZG1hX3N0b3BfdHgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM9NTQ2PWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd21hYzRfZG1hX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy01NTctXFx0LmRpc2FibGVfZG1hX2lycSA9IGR3bWFjNF9kaXNhYmxlX2RtYV9pcnEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jOjU1ODpcXHQuc3RhcnRfdHggPSBkd21hYzRfZG1hX3N0YXJ0X3R4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy01NTktXFx0LnN0b3BfdHggPSBkd21hYzRfZG1hX3N0b3BfdHgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM9NTc1PWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd21hYzQxMF9kbWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jLTU4Ni1cXHQuZGlzYWJsZV9kbWFfaXJxID0gZHdtYWM0X2Rpc2FibGVfZG1hX2lycSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM6NTg3OlxcdC5zdGFydF90eCA9IGR3bWFjNF9kbWFfc3RhcnRfdHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jLTU4OC1cXHQuc3RvcF90eCA9IGR3bWFjNF9kbWFfc3RvcF90eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuaD0xNzk9dm9pZCBkd21hYzRfZGlzYWJsZV9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5oLTE4MC1cXHRcXHRcXHQgICAgdTMyIGNoYW4sIGJvb2wgcngsIGJvb2wgdHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuaDoxODE6dm9pZCBkd21hYzRfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5oLTE4Mi1cXHRcXHRcXHQgdTMyIGNoYW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jPTM3PXZvaWQgZHdtYWM0X3NldF90eF90YWlsX3B0cihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2xpYi5jLTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9saWIuYzo0NTp2b2lkIGR3bWFjNF9kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfbGliLmMtNDYtXFx0XFx0XFx0IHUzMiBjaGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWNfZG1hLmg9MTQ5PXZvaWQgZHdtYWNfZGlzYWJsZV9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWNfZG1hLmgtMTUwLVxcdFxcdFxcdCAgIHUzMiBjaGFuLCBib29sIHJ4LCBib29sIHR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hY19kbWEuaDoxNTE6dm9pZCBkd21hY19kbWFfc3RhcnRfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hY19kbWEuaC0xNTItXFx0XFx0XFx0dTMyIGNoYW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWNfbGliLmM9NTQ9dm9pZCBkd21hY19kaXNhYmxlX2RtYV9pcnEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjX2xpYi5jLTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjX2xpYi5jOjY3OnZvaWQgZHdtYWNfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWNfbGliLmMtNjgtXFx0XFx0XFx0dTMyIGNoYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0yMzY9c3RhdGljIHZvaWQgZHd4Z21hYzJfZGlzYWJsZV9kbWFfaXJxKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTI0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoyNTA6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0yNTEtXFx0XFx0XFx0XFx0ICB2b2lkIF9faW9tZW0gKmlvYWRkciwgdTMyIGNoYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz02NTE9Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTY2Mi1cXHQuZGlzYWJsZV9kbWFfaXJxID0gZHd4Z21hYzJfZGlzYWJsZV9kbWFfaXJxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjY2MzpcXHQuc3RhcnRfdHggPSBkd3hnbWFjMl9kbWFfc3RhcnRfdHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNjY0LVxcdC5zdG9wX3R4ID0gZHd4Z21hYzJfZG1hX3N0b3BfdHgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg9MTY3PXN0cnVjdCBzdG1tYWNfZG1hX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtMTk3LVxcdFxcdFxcdFxcdHUzMiBjaGFuLCBib29sIHJ4LCBib29sIHR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6MTk4OlxcdHZvaWQgKCpzdGFydF90eCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtMTk5LVxcdFxcdFxcdCB1MzIgY2hhbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmgtMjY4LVxcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBkaXNhYmxlX2RtYV9pcnEsIF9fcHJpdiwgX19hcmdzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaDoyNjk6I2RlZmluZSBzdG1tYWNfc3RhcnRfdHgoX19wcml2LCBfX2FyZ3MuLi4pIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmg6MjcwOlxcdHN0bW1hY19kb192b2lkX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCBzdGFydF90eCwgX19wcml2LCBfX2FyZ3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5oLTI3MS0jZGVmaW5lIHN0bW1hY19zdG9wX3R4KF9fcHJpdiwgX19hcmdzLi4uKSBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI0NzI9c3RhdGljIHZvaWQgc3RtbWFjX3N0YXJ0X3J4X2RtYShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBjaGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNDc4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjQ3OTogKiBzdG1tYWNfc3RhcnRfdHhfZG1hIC0gc3RhcnQgVFggRE1BIGNoYW5uZWxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0ODAtICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNDg0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjQ4NTpzdGF0aWMgdm9pZCBzdG1tYWNfc3RhcnRfdHhfZG1hKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGNoYW4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNDg2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0ODctXFx0bmV0ZGV2X2RiZyhwcml2LVxcdTAwM2VkZXYsIFxcXCJETUEgVFggcHJvY2Vzc2VzIHN0YXJ0ZWQgaW4gY2hhbm5lbCAlZFxcXFxuXFxcIiwgY2hhbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNDg4OlxcdHN0bW1hY19zdGFydF90eChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIGNoYW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ4OS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI1NDA9c3RhdGljIHZvaWQgc3RtbWFjX3N0YXJ0X2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNTQ5LVxcdGZvciAoY2hhbiA9IDA7IGNoYW4gXFx1MDAzYyB0eF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjU1MDpcXHRcXHRzdG1tYWNfc3RhcnRfdHhfZG1hKHByaXYsIGNoYW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjU1MS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTMwNjE9c3RhdGljIHZvaWQgc3RtbWFjX3R4X2VycihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBjaGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMDcyLVxcdFxcdFxcdCAgICB0eF9xLVxcdTAwM2VkbWFfdHhfcGh5LCBjaGFuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjMwNzM6XFx0c3RtbWFjX3N0YXJ0X3R4X2RtYShwcml2LCBjaGFuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTMwNzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxMDM9dm9pZCBzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzEzNDpcXHRzdG1tYWNfc3RhcnRfdHhfZG1hKHByaXYsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMzUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjE3OjA2Ljg3NzI4OTcyM1oiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDE2NDk3ODE5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBGb2N1cyBTeW1ib2xzIGFuZCBQYXRjaCBTY29wZSoqXG5cbk9rYXksIGxldCdzIHNvbGlkaWZ5IHRoaXMgYW5hbHlzaXMuIEl0IGxvb2tzIGxpa2UgYHN0bW1hY19zdGFydF90eF9kbWFgIGlzIGNhbGxlZCBmcm9tIGEgZmV3IHBsYWNlcywgYnV0IG5vdCBvbiAqZXZlcnkqIHBhY2tldCB0cmFuc21pc3Npb24uIEl0J3MgbW9yZSBvZiBhIHNldHVwLCBlcnJvciBoYW5kbGluZywgYW5kIHF1ZXVlIGVuYWJsZSBmdW5jdGlvbi4gU28sIGBkd3hnbWFjMl9kbWFfc3RhcnRfdHhgIGlzbid0IGEgaG90IHBhdGgg4oCTIHdoaWNoIGFjdHVhbGx5IG1ha2VzIGl0IGEgKmdvb2QqIHN5bWJvbCB0byBmb2N1cyBvbi4gSXQncyBpbnZva2VkIGluIHRoZXNlIGxlc3MtZnJlcXVlbnQsIHBvdGVudGlhbGx5IG1vcmUgY29tcGxleCBzY2VuYXJpb3MuXG5cbkxldCdzIG5haWwgZG93biB0aGVzZSBmb2N1cyBzeW1ib2xzLiBJIGhhdmU6XG5cbiogICBgc3RtbWFjX3JlbGVhc2VgIChJJ2xsIGtlZXAgdGhpcyBhcyBpdCdzIHRoZSBtYWluIHRlYXJkb3duIGVudHJ5IHBvaW50IC0gYWx0aG91Z2ggaXQgaXMgYSBiaXQgZ2VuZXJpYy4pXG4qICAgYHN0bW1hY194ZHBfcmVsZWFzZWBcbiogICBgc3RtbWFjX3hkcF9vcGVuYFxuKiAgIGBzdG1tYWNfc3VzcGVuZGBcbiogICBgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWRgXG4qICAgYGR3eGdtYWMyX3R4X210bF9kcmFpbmBcbiogICBgZHd4Z21hYzJfcnhfbXRsX2RyYWluYFxuKiAgIGBkd3hnbWFjMl9yeF9kbWFfc3RvcHBlZGBcbiogICBgZHd4Z21hYzJfZG1hX3N0YXJ0X3R4YFxuKiAgIGBkd3hnbWFjMl9kbWFfc3RvcF90eGBcbiogICBgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4YFxuKiAgIGBkd3hnbWFjMl9kbWFfc3RvcF9yeGBcblxuTm93LCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiBwbGF5OiBgU1RNTUFDX0VUSGAsIGBEV01BQ19TVU44SWAsIGBEV01BQ19HRU5FUklDYCwgYW5kIGBTVE1NQUNfUENJYC5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGBkd3hnbWFjMl9kbWEuY2AgYW5kIGBzdG1tYWNfbWFpbi5jYC4gVGhlIGNvcmUgcmVhc29uaW5nIGJlaGluZCB0aGUgY2hhbmdlcyBpcyBhZGRpbmcgYW4gb3JkZXJlZCB0ZWFyZG93biBzZXF1ZW5jZSB0byB0aGUgc3RtbWFjIGRyaXZlci4gV2UncmUgdGFsa2luZyBhYm91dCBpbmNsdWRpbmcgcG9sbGluZyBsb29wcyB0byBlbnN1cmUgRE1BIGFuZCBNVEwgcXVldWVzIGFyZSBkcmFpbmVkIGJlZm9yZSBkaXNhYmxpbmcgdGhlIE1BQywgd2hpY2ggYWZmZWN0cyBhbGwgc3RtbWFjIHZhcmlhbnRzLCBldmVuIHRob3NlIGVtdWxhdGVkIGluIFFFTVUuIFRoZXNlIGNoYW5nZXMgaW1wYWN0IFhEUCBzZXR1cC90ZWFyZG93biBhbmQgdGhlIHN1c3BlbmQgY2FsbGJhY2tzLiBDcnVjaWFsbHksIHRoZXNlIG1vZGlmaWNhdGlvbnMgYXJlIHRyaWdnZXJlZCBieSBub3JtYWwgaW50ZXJmYWNlIHN0YXRlIGNoYW5nZXMgKGxpa2UgYGlwIGxpbmsgc2V0IGRldiBldGgwIGRvd25gKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudC4gVGhlcmVmb3JlLCB0aGV5IHNlZW0gZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCB3b3J0aCBmdXp6aW5nLlxuXG5BbHJpZ2h0LCBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDc1OSwiT3V0cHV0VG9rZW5zIjozMjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTc6MTcuMDQyMjcyMjE4WiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NTc3ODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19TVU44SVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19yZWxlYXNlXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiLFxuICAgIFwic3RtbWFjX3N1c3BlbmRcIixcbiAgICBcImR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkXCIsXG4gICAgXCJkd3hnbWFjMl90eF9tdGxfZHJhaW5cIixcbiAgICBcImR3eGdtYWMyX3J4X210bF9kcmFpblwiLFxuICAgIFwiZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF90eFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfdHhcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF9yeFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfcnhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLCBhZGRpbmcgcG9sbGluZyBsb29wcyB0byB3YWl0IGZvciBETUEgYW5kIE1UTCBxdWV1ZXMgdG8gZHJhaW4gYmVmb3JlIGRpc2FibGluZyB0aGUgTUFDLiBUaGlzIGFmZmVjdHMgdGhlIHRlYXJkb3duIHBhdGggb2YgYWxsIHN0bW1hYyB2YXJpYW50cyAoaW5jbHVkaW5nIHRob3NlIGVtdWxhdGVkIGluIFFFTVUgbGlrZSBzdW44aS1lbWFjKSBhbmQgbW9kaWZpZXMgdGhlIFhEUCBzZXR1cC90ZWFyZG93biBhbmQgc3VzcGVuZCBjYWxsYmFja3MuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZHVyaW5nIG5vcm1hbCBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlcyAoZS5nLiwgYnJpbmdpbmcgdGhlIGludGVyZmFjZSBkb3duKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudCwgbWFraW5nIHRoZW0gZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJEV01BQ19TVU44SVwiLFxuICAgIFwiRFdNQUNfR0VORVJJQ1wiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19yZWxlYXNlXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiLFxuICAgIFwic3RtbWFjX3N1c3BlbmRcIixcbiAgICBcImR3eGdtYWMyX3R4X2RtYV9zdG9wcGVkXCIsXG4gICAgXCJkd3hnbWFjMl90eF9tdGxfZHJhaW5cIixcbiAgICBcImR3eGdtYWMyX3J4X210bF9kcmFpblwiLFxuICAgIFwiZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWRcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF90eFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfdHhcIixcbiAgICBcImR3eGdtYWMyX2RtYV9zdGFydF9yeFwiLFxuICAgIFwiZHd4Z21hYzJfZG1hX3N0b3BfcnhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFuIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gc2VxdWVuY2UgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLCBhZGRpbmcgcG9sbGluZyBsb29wcyB0byB3YWl0IGZvciBETUEgYW5kIE1UTCBxdWV1ZXMgdG8gZHJhaW4gYmVmb3JlIGRpc2FibGluZyB0aGUgTUFDLiBUaGlzIGFmZmVjdHMgdGhlIHRlYXJkb3duIHBhdGggb2YgYWxsIHN0bW1hYyB2YXJpYW50cyAoaW5jbHVkaW5nIHRob3NlIGVtdWxhdGVkIGluIFFFTVUgbGlrZSBzdW44aS1lbWFjKSBhbmQgbW9kaWZpZXMgdGhlIFhEUCBzZXR1cC90ZWFyZG93biBhbmQgc3VzcGVuZCBjYWxsYmFja3MuIFRoZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZHVyaW5nIG5vcm1hbCBpbnRlcmZhY2Ugc3RhdGUgY2hhbmdlcyAoZS5nLiwgYnJpbmdpbmcgdGhlIGludGVyZmFjZSBkb3duKSBhbmQgWERQIHByb2dyYW0gYXR0YWNobWVudCwgbWFraW5nIHRoZW0gZnVuY3Rpb25hbGx5IGltcGFjdGZ1bCBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTc6MTcuMTg2ODU3NTQxWiIsIlNlcSI6NjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODAxOTkxNTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTc6MTcuMTg3MzU3MDkxWiIsIlNlcSI6NjQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc4MDE0ODg0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGhhcmR3YXJlIGNvbnRyb2wgZmxvdyBmb3Igc3RvcHBpbmcgRE1BIGNoYW5uZWxzIGFuZCBkcmFpbmluZyBNQUMgcXVldWVzIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBhbHRlciBidWZmZXIgYWxsb2NhdGlvbnMgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMzkxMjA0NmVmMDYxMzBlOGFmNGUzNzdhMDJkNDFkMzI2YmU4NWYyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMDg6MTQ6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaFxuaW5kZXggNTE5NDM3MDVhMmIwMy4uMmUzZjI2MDAwZDMzNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcbkBAIC0yOTEsNiArMjkxLDEwIEBAXG4gI2RlZmluZSBYR01BQ19UVENcdFx0XHRHRU5NQVNLKDYsIDQpXG4gI2RlZmluZSBYR01BQ19UWFFFTlx0XHRcdEdFTk1BU0soMywgMilcbiAjZGVmaW5lIFhHTUFDX1RTRlx0XHRcdEJJVCgxKVxuKyNkZWZpbmUgWEdNQUNfTVRMX1RYUV9ERUJVRyh4KVx0XHQoMHgwMDAwMTEwOCArICgweDgwICogKHgpKSlcbisjZGVmaW5lIFhHTUFDX1RYUVNUU1x0XHRcdEJJVCg0KVxuKyNkZWZpbmUgWEdNQUNfVFJDU1RTXHRcdFx0R0VOTUFTSygyLCAxKVxuKyNkZWZpbmUgWEdNQUNfVFJDU1RTX1JFQURcdFx0MHgxXG4gI2RlZmluZSBYR01BQ19NVExfVEN4X0VUU19DT05UUk9MKHgpXHQoMHgwMDAwMTExMCArICgweDgwICogKHgpKSlcbiAjZGVmaW5lIFhHTUFDX01UTF9UQ3hfUVVBTlRVTV9XRUlHSFQoeClcdCgweDAwMDAxMTE4ICsgKDB4ODAgKiAoeCkpKVxuICNkZWZpbmUgWEdNQUNfTVRMX1RDeF9TRU5EU0xPUEUoeClcdCgweDAwMDAxMTFjICsgKDB4ODAgKiAoeCkpKVxuQEAgLTMwNiw2ICszMTAsOSBAQFxuICNkZWZpbmUgWEdNQUNfRUhGQ1x0XHRcdEJJVCg3KVxuICNkZWZpbmUgWEdNQUNfUlNGXHRcdFx0QklUKDUpXG4gI2RlZmluZSBYR01BQ19SVENcdFx0XHRHRU5NQVNLKDEsIDApXG4rI2RlZmluZSBYR01BQ19NVExfUlhRX0RFQlVHKHgpXHRcdCgweDAwMDAxMTQ4ICsgKDB4ODAgKiAoeCkpKVxuKyNkZWZpbmUgWEdNQUNfUFJYUVx0XHRcdEdFTk1BU0soMjksIDE2KVxuKyNkZWZpbmUgWEdNQUNfUlhRU1RTXHRcdFx0R0VOTUFTSyg1LCA0KVxuICNkZWZpbmUgWEdNQUNfTVRMX1JYUV9GTE9XX0NPTlRST0woeClcdCgweDAwMDAxMTUwICsgKDB4ODAgKiAoeCkpKVxuICNkZWZpbmUgWEdNQUNfUkZEXHRcdFx0R0VOTUFTSygzMSwgMTcpXG4gI2RlZmluZSBYR01BQ19SRkFcdFx0XHRHRU5NQVNLKDE1LCAxKVxuQEAgLTM4OSw2ICszOTYsNyBAQFxuICNkZWZpbmUgWEdNQUNfTklTXHRcdFx0QklUKDE1KVxuICNkZWZpbmUgWEdNQUNfQUlTXHRcdFx0QklUKDE0KVxuICNkZWZpbmUgWEdNQUNfRkJFXHRcdFx0QklUKDEyKVxuKyNkZWZpbmUgWEdNQUNfUlBTXHRcdFx0QklUKDgpXG4gI2RlZmluZSBYR01BQ19SQlVcdFx0XHRCSVQoNylcbiAjZGVmaW5lIFhHTUFDX1JJXHRcdFx0QklUKDYpXG4gI2RlZmluZSBYR01BQ19UQlVcdFx0XHRCSVQoMilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXG5pbmRleCAwMzQzN2YxY2YzZGYzLi44ZTI3YmM1OGNjMDU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXG5AQCAtNCw2ICs0LDcgQEBcbiAgKiBzdG1tYWMgWEdNQUMgc3VwcG9ydC5cbiAgKi9cbiBcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb2xsLmhcdTAwM2VcbiAjaW5jbHVkZSBcInN0bW1hYy5oXCJcbiAjaW5jbHVkZSBcImR3eGdtYWMyLmhcIlxuQEAgLTI1MSwxMyArMjUyLDEyIEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4ge1xuIFx0dTMyIHZhbHVlO1xuIFxuK1x0LyogVFBTIGlzIGxhdGNoZWQgb25jZSBzZXQsIHNvIGNsZWFyIGl0IG9uIGV2ZXJ5IFR4IERNQSBzdGFydC4gKi9cbitcdHdyaXRlbChYR01BQ19UUFMsIGlvYWRkciArIFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbikpO1xuK1xuIFx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XG4gXHR2YWx1ZSB8PSBYR01BQ19UWFNUO1xuIFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XG4tXG4tXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX1RYX0NPTkZJRyk7XG4tXHR2YWx1ZSB8PSBYR01BQ19DT05GSUdfVEU7XG4tXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX1RYX0NPTkZJRyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdG9wX3R4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG5AQCAtMjY4LDEwICsyNjgsNiBAQCBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfc3RvcF90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XG4gXHR2YWx1ZSBcdTAwMjY9IH5YR01BQ19UWFNUO1xuIFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfQ0hfVFhfQ09OVFJPTChjaGFuKSk7XG4tXG4tXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX1RYX0NPTkZJRyk7XG4tXHR2YWx1ZSBcdTAwMjY9IH5YR01BQ19DT05GSUdfVEU7XG4tXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX1RYX0NPTkZJRyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9zdGFydF9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5AQCAtMjc5LDEzICsyNzUsMTIgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0YXJ0X3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiB7XG4gXHR1MzIgdmFsdWU7XG4gXG4rXHQvKiBSUFMgaXMgbGF0Y2hlZCBvbmNlIHNldCwgc28gY2xlYXIgaXQgb24gZXZlcnkgUnggRE1BIHN0YXJ0LiAqL1xuK1x0d3JpdGVsKFhHTUFDX1JQUywgaW9hZGRyICsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSk7XG4rXG4gXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX0RNQV9DSF9SWF9DT05UUk9MKGNoYW4pKTtcbiBcdHZhbHVlIHw9IFhHTUFDX1JYU1Q7XG4gXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX0RNQV9DSF9SWF9DT05UUk9MKGNoYW4pKTtcbi1cbi1cdHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfUlhfQ09ORklHKTtcbi1cdHZhbHVlIHw9IFhHTUFDX0NPTkZJR19SRTtcbi1cdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICsgWEdNQUNfUlhfQ09ORklHKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3N0b3Bfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbkBAIC01ODIsNiArNTc3LDc3IEBAIHN0YXRpYyBpbnQgZHd4Z21hYzJfZW5hYmxlX3RicyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyBpbnQgZHd4Z21hYzJfdHhfZG1hX3N0b3BwZWQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuK1x0XHRcdFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBjaGFuKVxuK3tcbitcdHUzMiB2YWx1ZTtcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICsgWEdNQUNfRE1BX0NIX1NUQVRVUyhjaGFuKSwgdmFsdWUsXG4rXHRcdFx0XHQgdmFsdWUgXHUwMDI2IFhHTUFDX1RQUywgMTAwLCAxMDAwMCk7XG4rXHRpZiAocmV0KVxuK1x0XHRuZXRkZXZfd2Fybihwcml2LVx1MDAzZWRldiwgXCJUeCBETUEgY2hhbm5lbCAldSBzdG9wIHRpbWVvdXRcXG5cIixcbitcdFx0XHQgICAgY2hhbik7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitzdGF0aWMgaW50IGR3eGdtYWMyX3R4X210bF9kcmFpbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4rXHRcdFx0XHQgdm9pZCBfX2lvbWVtICppb2FkZHIsIHUzMiBxdWV1ZSlcbit7XG4rXHR1MzIgdmFsdWU7XG4rXHRpbnQgcmV0O1xuK1xuK1x0LyogV2FpdCB1bnRpbCB0aGUgcXVldWUgaXMgZW1wdHkgYW5kIGl0cyByZWFkIGNvbnRyb2xsZXIgaXMgbm8gbG9uZ2VyXG4rXHQgKiBwdWxsaW5nIGEgZnJhbWUgb3V0IHRvd2FyZHMgdGhlIE1BQy5cbitcdCAqL1xuK1x0cmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciArIFhHTUFDX01UTF9UWFFfREVCVUcocXVldWUpLCB2YWx1ZSxcbitcdFx0XHRcdCAhKHZhbHVlIFx1MDAyNiBYR01BQ19UWFFTVFMpIFx1MDAyNlx1MDAyNlxuK1x0XHRcdFx0IEZJRUxEX0dFVChYR01BQ19UUkNTVFMsIHZhbHVlKSAhPVxuK1x0XHRcdFx0IFhHTUFDX1RSQ1NUU19SRUFELFxuK1x0XHRcdFx0IDEwMCwgMTAwMDApO1xuK1x0aWYgKHJldClcbitcdFx0bmV0ZGV2X3dhcm4ocHJpdi1cdTAwM2VkZXYsIFwiTVRMIFR4IHF1ZXVlICV1IGRyYWluIHRpbWVvdXRcXG5cIixcbitcdFx0XHQgICAgcXVldWUpO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludCBkd3hnbWFjMl9yeF9tdGxfZHJhaW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuK1x0XHRcdFx0IHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgcXVldWUpXG4re1xuK1x0dTMyIHZhbHVlO1xuK1x0aW50IHJldDtcbitcbitcdC8qIFdhaXQgdW50aWwgbm8gcGFja2V0IGlzIGxlZnQgaW4gdGhlIHF1ZXVlIGFuZCB0aGUgcXVldWUgcmVwb3J0c1xuK1x0ICogaXRzZWxmIGVtcHR5LlxuK1x0ICovXG4rXHRyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICsgWEdNQUNfTVRMX1JYUV9ERUJVRyhxdWV1ZSksIHZhbHVlLFxuK1x0XHRcdFx0ICFGSUVMRF9HRVQoWEdNQUNfUFJYUSwgdmFsdWUpIFx1MDAyNlx1MDAyNlxuK1x0XHRcdFx0ICFGSUVMRF9HRVQoWEdNQUNfUlhRU1RTLCB2YWx1ZSksXG4rXHRcdFx0XHQgMTAwLCAxMDAwMCk7XG4rXHRpZiAocmV0KVxuK1x0XHRuZXRkZXZfd2Fybihwcml2LVx1MDAzZWRldiwgXCJNVEwgUnggcXVldWUgJXUgZHJhaW4gdGltZW91dFxcblwiLFxuK1x0XHRcdCAgICBxdWV1ZSk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitzdGF0aWMgaW50IGR3eGdtYWMyX3J4X2RtYV9zdG9wcGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbitcdFx0XHRcdCAgIHZvaWQgX19pb21lbSAqaW9hZGRyLCB1MzIgY2hhbilcbit7XG4rXHR1MzIgdmFsdWU7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciArIFhHTUFDX0RNQV9DSF9TVEFUVVMoY2hhbiksIHZhbHVlLFxuK1x0XHRcdFx0IHZhbHVlIFx1MDAyNiBYR01BQ19SUFMsIDEwMCwgMTAwMDApO1xuK1x0aWYgKHJldClcbitcdFx0bmV0ZGV2X3dhcm4ocHJpdi1cdTAwM2VkZXYsIFwiUnggRE1BIGNoYW5uZWwgJXUgc3RvcCB0aW1lb3V0XFxuXCIsXG4rXHRcdFx0ICAgIGNoYW4pO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4gY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcbiBcdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcbiBcdC5pbml0ID0gZHd4Z21hYzJfZG1hX2luaXQsXG5AQCAtNjEwLDQgKzY3Niw4IEBAIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XG4gXHQuc2V0X2Jmc2l6ZSA9IGR3eGdtYWMyX3NldF9iZnNpemUsXG4gXHQuZW5hYmxlX3NwaCA9IGR3eGdtYWMyX2VuYWJsZV9zcGgsXG4gXHQuZW5hYmxlX3RicyA9IGR3eGdtYWMyX2VuYWJsZV90YnMsXG4rXHQudHhfZG1hX3N0b3BwZWQgPSBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZCxcbitcdC50eF9tdGxfZHJhaW4gPSBkd3hnbWFjMl90eF9tdGxfZHJhaW4sXG4rXHQucnhfbXRsX2RyYWluID0gZHd4Z21hYzJfcnhfbXRsX2RyYWluLFxuK1x0LnJ4X2RtYV9zdG9wcGVkID0gZHd4Z21hYzJfcnhfZG1hX3N0b3BwZWQsXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbmluZGV4IGU2MzE3Yjk0ZmZmN2QuLjIzYTY5MTVhY2RmYmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuaFxuQEAgLTIyOSw2ICsyMjksMTUgQEAgc3RydWN0IHN0bW1hY19kbWFfb3BzIHtcbiBcdFx0XHQgICBib29sIGVuLCB1MzIgY2hhbik7XG4gXHRpbnQgKCplbmFibGVfdGJzKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuIFx0XHRcdCAgYm9vbCBlbiwgdTMyIGNoYW4pO1xuK1x0LyogT3JkZXJlZCBkYXRhcGF0aCB0ZWFyZG93biAqL1xuK1x0aW50ICgqdHhfZG1hX3N0b3BwZWQpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4rXHRcdFx0ICAgICAgdTMyIGNoYW4pO1xuK1x0aW50ICgqdHhfbXRsX2RyYWluKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuK1x0XHRcdCAgICB1MzIgcXVldWUpO1xuK1x0aW50ICgqcnhfbXRsX2RyYWluKShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxuK1x0XHRcdCAgICB1MzIgcXVldWUpO1xuK1x0aW50ICgqcnhfZG1hX3N0b3BwZWQpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4rXHRcdFx0ICAgICAgdTMyIGNoYW4pO1xuIH07XG4gXG4gI2RlZmluZSBzdG1tYWNfZG1hX2luaXQoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG5AQCAtMjg5LDYgKzI5OCwxNCBAQCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMge1xuIFx0c3RtbWFjX2RvX3ZvaWRfY2FsbGJhY2soX19wcml2LCBkbWEsIGVuYWJsZV9zcGgsIF9fcHJpdiwgX19hcmdzKVxuICNkZWZpbmUgc3RtbWFjX2VuYWJsZV90YnMoX19wcml2LCBfX2FyZ3MuLi4pIFxcXG4gXHRzdG1tYWNfZG9fY2FsbGJhY2soX19wcml2LCBkbWEsIGVuYWJsZV90YnMsIF9fcHJpdiwgX19hcmdzKVxuKyNkZWZpbmUgc3RtbWFjX3R4X2RtYV9zdG9wcGVkKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuK1x0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCB0eF9kbWFfc3RvcHBlZCwgX19wcml2LCBfX2FyZ3MpXG4rI2RlZmluZSBzdG1tYWNfdHhfbXRsX2RyYWluKF9fcHJpdiwgX19hcmdzLi4uKSBcXFxuK1x0c3RtbWFjX2RvX2NhbGxiYWNrKF9fcHJpdiwgZG1hLCB0eF9tdGxfZHJhaW4sIF9fcHJpdiwgX19hcmdzKVxuKyNkZWZpbmUgc3RtbWFjX3J4X210bF9kcmFpbihfX3ByaXYsIF9fYXJncy4uLikgXFxcbitcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgcnhfbXRsX2RyYWluLCBfX3ByaXYsIF9fYXJncylcbisjZGVmaW5lIHN0bW1hY19yeF9kbWFfc3RvcHBlZChfX3ByaXYsIF9fYXJncy4uLikgXFxcbitcdHN0bW1hY19kb19jYWxsYmFjayhfX3ByaXYsIGRtYSwgcnhfZG1hX3N0b3BwZWQsIF9fcHJpdiwgX19hcmdzKVxuIFxuIHN0cnVjdCBtYWNfZGV2aWNlX2luZm87XG4gc3RydWN0IG5ldF9kZXZpY2U7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDM1OTE3NTVlYTMwYmUuLmNjM2EwYWUwYzU2ZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMjU2OSw2ICsyNTY5LDUyIEBAIHN0YXRpYyB2b2lkIHN0bW1hY19zdG9wX2FsbF9kbWEoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0XHRzdG1tYWNfc3RvcF90eF9kbWEocHJpdiwgY2hhbik7XG4gfVxuIFxuKy8qKlxuKyAqIHN0bW1hY19kYXRhcGF0aF90ZWFyZG93biAtIG9yZGVyZWQgZGF0YXBhdGggdGVhcmRvd24gYXMgcGVyIElQIHNwZWNpZmljYXRpb25cbisgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXG4rICogRGVzY3JpcHRpb246XG4rICogV2hlbiB0ZWFyZG93biBvcHMgYXJlIGF2YWlsYWJsZSwgZm9sbG93IHRoZSBkYXRhYm9vayBvcmRlcmVkIHRlYXJkb3duXG4rICogc2VxdWVuY2UuXG4rICogRm9sbG93cyB0aGUgbGVnYWN5IHN0b3AgKyBNQUMgZGlzYWJsZSBmb3IgdmFyaWFudHMgd2l0aG91dCB0aGUgZmVhdHVyZS5cbisgKi9cbitzdGF0aWMgdm9pZCBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdHUzMiByeF9jaGFubmVsc19jb3VudCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VyeF9xdWV1ZXNfdG9fdXNlO1xuK1x0dTMyIHR4X2NoYW5uZWxzX2NvdW50ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7XG4rXHR1MzIgY2hhbjtcbitcbitcdC8qIFN0b3AgYWxsIFRYIERNQSBjaGFubmVscyAqL1xuK1x0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcbitcdFx0c3RtbWFjX3N0b3BfdHhfZG1hKHByaXYsIGNoYW4pO1xuK1xuK1x0LyogV2FpdCBmb3IgZXZlcnkgVFggRE1BIGNoYW5uZWwgdG8gcmVwb3J0IGl0c2VsZiBzdG9wcGVkICovXG4rXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VkbWEtXHUwMDNldHhfZG1hX3N0b3BwZWQpXG4rXHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXG4rXHRcdFx0c3RtbWFjX3R4X2RtYV9zdG9wcGVkKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBjaGFuKTtcbitcbitcdC8qIFdhaXQgZm9yIHRoZSBNVEwgVFggcXVldWVzIHRvIGZpbmlzaCBwdXNoaW5nIGludG8gdGhlIE1BQyAqL1xuK1x0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlZG1hLVx1MDAzZXR4X210bF9kcmFpbilcbitcdFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgdHhfY2hhbm5lbHNfY291bnQ7IGNoYW4rKylcbitcdFx0XHRzdG1tYWNfdHhfbXRsX2RyYWluKHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBjaGFuKTtcbitcbitcdC8qIERpc2FibGUgdGhlIE1BQyBUWCBhbmQgUlggKi9cbitcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBmYWxzZSk7XG4rXG4rXHQvKiBXYWl0IGZvciB0aGUgTVRMIFJYIHF1ZXVlcyB0byBkcmFpbiBpbnRvIHRoZSBSWCBETUEgKi9cbitcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZWRtYS1cdTAwM2VyeF9tdGxfZHJhaW4pXG4rXHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXG4rXHRcdFx0c3RtbWFjX3J4X210bF9kcmFpbihwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4rXG4rXHQvKiBTdG9wIGFsbCBSWCBETUEgY2hhbm5lbHMgKi9cbitcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHJ4X2NoYW5uZWxzX2NvdW50OyBjaGFuKyspXG4rXHRcdHN0bW1hY19zdG9wX3J4X2RtYShwcml2LCBjaGFuKTtcbitcbitcdC8qIFdhaXQgZm9yIGV2ZXJ5IFJYIERNQSBjaGFubmVsIHRvIHJlcG9ydCBpdHNlbGYgc3RvcHBlZCAqL1xuK1x0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlZG1hLVx1MDAzZXJ4X2RtYV9zdG9wcGVkKVxuK1x0XHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyByeF9jaGFubmVsc19jb3VudDsgY2hhbisrKVxuK1x0XHRcdHN0bW1hY19yeF9kbWFfc3RvcHBlZChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgY2hhbik7XG4rfVxuK1xuIC8qKlxuICAqICBzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlIC0gSFcgRE1BIG9wZXJhdGlvbiBtb2RlXG4gICogIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcbkBAIC0zNjkyLDkgKzM3MzgsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRwcml2LVx1MDAzZWh3LVx1MDAzZXJ4X2NzdW0gPSAwO1xuIFx0fVxuIFxuLVx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbi1cdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbi1cbiBcdC8qIFNldCB0aGUgSFcgRE1BIG1vZGUgYW5kIHRoZSBDT0UgKi9cbiBcdHN0bW1hY19kbWFfb3BlcmF0aW9uX21vZGUocHJpdik7XG4gXG5AQCAtMzc1MCw2ICszNzkzLDkgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIFN0YXJ0IHRoZSBiYWxsIHJvbGxpbmcuLi4gKi9cbiBcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xuIFxuK1x0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbitcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbitcbiBcdHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi1cdTAwM2VwaHlsaW5rKTtcbiBcdHN0bW1hY19zZXRfaHdfdmxhbl9tb2RlKHByaXYsIHByaXYtXHUwMDNlaHcpO1xuIFx0cGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKHByaXYtXHUwMDNlcGh5bGluayk7XG5AQCAtNDIzOCw5ICs0Mjg0LDYgQEAgc3RhdGljIHZvaWQgX19zdG1tYWNfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHU4IGNoYW47XG4gXG4tXHQvKiBTdG9wIGFuZCBkaXNjb25uZWN0IHRoZSBQSFkgKi9cbi1cdHBoeWxpbmtfc3RvcChwcml2LVx1MDAzZXBoeWxpbmspO1xuLVxuIFx0c3RtbWFjX2Rpc2FibGVfYWxsX3F1ZXVlcyhwcml2KTtcbiBcbiBcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHByaXYtXHUwMDNlcGxhdC1cdTAwM2V0eF9xdWV1ZXNfdG9fdXNlOyBjaGFuKyspXG5AQCAtNDI1MSw4ICs0Mjk0LDExIEBAIHN0YXRpYyB2b2lkIF9fc3RtbWFjX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuIFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiBcbi1cdC8qIFN0b3AgVFgvUlggRE1BIGFuZCBjbGVhciB0aGUgZGVzY3JpcHRvcnMgKi9cbi1cdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4rXHQvKiBIYXMgdG8gcnVuIGJlZm9yZSBtYWNfbGlua19kb3duKCkgZGlzYWJsZXMgdGhlIE1BQy4gKi9cbitcdHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihwcml2KTtcbitcbitcdC8qIFN0b3AgYW5kIGRpc2Nvbm5lY3QgdGhlIFBIWSAqL1xuK1x0cGh5bGlua19zdG9wKHByaXYtXHUwMDNlcGh5bGluayk7XG4gXG4gXHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cbiBcdGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYpO1xuQEAgLTcxMDksMTUgKzcxNTUsMTIgQEAgdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuIFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiBcbi1cdC8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovXG4tXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuK1x0LyogU3RvcCB0aGUgTUFDIGFuZCB0aGUgVFgvUlggRE1BIGNoYW5uZWxzICovXG4rXHRzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd24ocHJpdik7XG4gXG4gXHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cbiBcdGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYpO1xuIFxuLVx0LyogRGlzYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgZmFsc2UpO1xuLVxuIFx0Lyogc2V0IHRyYW5zX3N0YXJ0IHNvIHdlIGRvbid0IGdldCBzcHVyaW91c1xuIFx0ICogd2F0Y2hkb2dzIGR1cmluZyByZXNldFxuIFx0ICovXG5AQCAtNzE4OSwxMiArNzIzMiwxMiBAQCBpbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdGhydGltZXJfc2V0dXAoXHUwMDI2dHhfcS1cdTAwM2V0eHRpbWVyLCBzdG1tYWNfdHhfdGltZXIsIENMT0NLX01PTk9UT05JQywgSFJUSU1FUl9NT0RFX1JFTCk7XG4gXHR9XG4gXG4tXHQvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqL1xuLVx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIHRydWUpO1xuLVxuIFx0LyogU3RhcnQgUnggXHUwMDI2IFR4IERNQSBDaGFubmVscyAqL1xuIFx0c3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7XG4gXG4rXHQvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqL1xuK1x0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIHRydWUpO1xuK1xuIFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIGlycV9lcnJvcjtcbkBAIC04MTk1LDE3ICs4MjM4LDE1IEBAIGludCBzdG1tYWNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnByaXYtXHUwMDNlZWVlX2N0cmxfdGltZXIpO1xuIFx0fVxuIFxuLVx0LyogU3RvcCBUWC9SWCBETUEgKi9cbi1cdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4tXG4tXHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuLVxuIFx0LyogRW5hYmxlIFBvd2VyIGRvd24gbW9kZSBieSBwcm9ncmFtbWluZyB0aGUgUE1UIHJlZ3MgKi9cbiBcdGlmIChwcml2LVx1MDAzZXdvbG9wdHMpIHtcbitcdFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbitcdFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcbiBcdFx0c3RtbWFjX3BtdChwcml2LCBwcml2LVx1MDAzZWh3LCBwcml2LVx1MDAzZXdvbG9wdHMpO1xuIFx0XHRwcml2LVx1MDAzZWlycV93YWtlID0gMTtcbiBcdH0gZWxzZSB7XG4tXHRcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBmYWxzZSk7XG4rXHRcdHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bihwcml2KTtcbitcdFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcbiBcdFx0cGluY3RybF9wbV9zZWxlY3Rfc2xlZXBfc3RhdGUocHJpdi1cdTAwM2VkZXZpY2UpO1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6MTc6MTcuMTg3MzU4MjIxWiIsIlNlcSI6NjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4MDE0NjkxMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU3RtbWFjIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBzcXVhcmVseSBvbiB0aGUgYHN0bW1hY2AgZXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGhhcmR3YXJlIHRlYXJkb3duIHNlcXVlbmNlLiBJIHNlZSBpdCBpbnRyb2R1Y2VzIGEgbmV3IGBzdG1tYWNfZGF0YXBhdGhfdGVhcmRvd25gIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUga2V5LiBUaGlzIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgYSBtb3JlIG9yZGVyZWQgYW5kIGNvbnRyb2xsZWQgd2F5IHRvIHNodXQgZG93biB0aGUgVFgvUlggRE1BIGNoYW5uZWxzIGFuZCBkcmFpbiB0aGUgTVRMIHF1ZXVlcy4gSSBjYW4gc2VlIHRoYXQgaXQncyBhZGRpbmcgc29tZSBuZXcgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLCBsaWtlIGBkd3hnbWFjMl90eF9kbWFfc3RvcHBlZGAsIGBkd3hnbWFjMl90eF9tdGxfZHJhaW5gLCBhbmQgc28gb24uXG5cblRoZSBtYWluIGltcGFjdCBzZWVtcyB0byBiZSBpbiBgc3RtbWFjX21haW4uY2AsIHdoZXJlIHRoZXkncmUgcmVwbGFjaW5nIHRoZSBvbGRlciBgc3RtbWFjX3N0b3BfYWxsX2RtYWAgYW5kIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHdpdGggdGhpcyBuZXcgYHN0bW1hY19kYXRhcGF0aF90ZWFyZG93bmAgZnVuY3Rpb24gaW4ga2V5IGFyZWFzIGxpa2UgYF9fc3RtbWFjX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYW5kIGBzdG1tYWNfc3VzcGVuZGAuIEFsc28sIHRoZXkndmUgcmVvcmdhbml6ZWQgaG93IGBzdG1tYWNfbWFjX3NldGAgYW5kIGBzdG1tYWNfc3RhcnRfYWxsX2RtYWAgYXJlIGNhbGxlZCBpbiBgc3RtbWFjX2h3X3NldHVwYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAuIFRoYXQncyBpbXBvcnRhbnQgdG8ga2VlcCB0cmFjayBvZi5cblxuR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBoYXJkd2FyZSBkcml2ZXJzLCB0aGlzIGFsbCBtYWtlcyBzZW5zZS4gSXQncyBlc3NlbnRpYWxseSBhIHN0YXRlIG1hY2hpbmUgaXNzdWUg4oCTIGVuc3VyaW5nIHRoZSBNQUMgYW5kIERNQSBhcmUgc2h1dCBkb3duIGNvcnJlY3RseSBhbmQgY2xlYW5seS4gQ3J1Y2lhbGx5LCBhcyBJIGFuYWx5emUgdGhpcywgSSBkb24ndCBzZWUgYW55IGNoYW5nZXMgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGVyZSdzIG5vIG1vZGlmaWNhdGlvbiBvZiBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBubyBjaGFuZ2VzIHRvIGJ1ZmZlciBhbGxvY2F0aW9uIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IG1pZ2h0IGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIEl0J3MgYWxsIGFib3V0IGhhcmR3YXJlIGNvbnRyb2wgYW5kIHJlZ2lzdGVyIG1hbmlwdWxhdGlvbi5cblxuVGhlcmVmb3JlLCBmcm9tIGEgbWVtb3J5IHNhZmV0eSBwZXJzcGVjdGl2ZSwgYSBLTVNBTiBzZXNzaW9uIGlzbid0IHJlYWxseSBuZWVkZWQgaGVyZS4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIHBlcmZlY3RseSBjYXBhYmxlIG9mIGNhdGNoaW5nIGFueSBvdXQtb2YtYm91bmRzIG9yIHVzZS1hZnRlci1mcmVlIGVycm9ycyB0aGF0IG1pZ2h0IGNyZWVwIGluLCBhbmQgaG9uZXN0bHksIHRoZSB0ZWFyZG93biBzZXF1ZW5jZSBsb29rcyBwcmV0dHkgc2FmZS4gU28sIEknbSBjb25maWRlbnQgaW4gbWFya2luZyB0aGlzIGFzIGBOZWVkc0tNU0FOOiBmYWxzZWAuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGp1c3QgaXNuJ3QgdGhlcmUsIGFuZCB0aGF0J3MgdGhlIHByaW1hcnkgY29uY2VybiBvZiBLTVNBTi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM4NCwiT3V0cHV0VG9rZW5zIjoxMDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODoxNzoyNC45ODg4Mjk2MTZaIiwiU2VxIjo2NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGhhcmR3YXJlIGNvbnRyb2wgZmxvdyBmb3Igc3RvcHBpbmcgRE1BIGNoYW5uZWxzIGFuZCBkcmFpbmluZyBNQUMgcXVldWVzIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBhbHRlciBidWZmZXIgYWxsb2NhdGlvbnMgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zLiBUaGVyZSBpcyBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBoYXJkd2FyZSBjb250cm9sIGZsb3cgZm9yIHN0b3BwaW5nIERNQSBjaGFubmVscyBhbmQgZHJhaW5pbmcgTUFDIHF1ZXVlcyBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgYnVmZmVyIGFsbG9jYXRpb25zIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucy4gVGhlcmUgaXMgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6n9ct[1] Phase: Succeeded StartedAt: 2026-08-13 08:17:36 +0000 UTC FinishedAt: 2026-08-13 08:17:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-13 08:17:36 +0000 UTC FinishedAt: 2026-08-13 08:17:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2] Phase: Succeeded StartedAt: 2026-08-13 08:17:36 +0000 UTC FinishedAt: 2026-08-13 09:07:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-13 08:17:36 +0000 UTC FinishedAt: 2026-08-13 09:07:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-13 08:17:36 +0000 UTC FinishedAt: 2026-08-13 08:17:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-13 08:17:36 +0000 UTC FinishedAt: 2026-08-13 08:17:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-convert-artifact-2663370085/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-13 08:17:46 +0000 UTC FinishedAt: 2026-08-13 08:35:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-13 08:17:46 +0000 UTC FinishedAt: 2026-08-13 08:35:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d2e92706-0e3b-4f50-a86d-01082a4da47c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-convert-artifact-2663370085/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "e4619598-398f-4656-8f6a-da89aa5348cf", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-build-action-3443706251/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-13 08:17:46 +0000 UTC FinishedAt: 2026-08-13 08:35:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d2e92706-0e3b-4f50-a86d-01082a4da47c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-convert-artifact-2663370085/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "e4619598-398f-4656-8f6a-da89aa5348cf", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-build-action-3443706251/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-13 08:35:41 +0000 UTC FinishedAt: 2026-08-13 08:35:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-13 08:35:41 +0000 UTC FinishedAt: 2026-08-13 08:35:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-13 08:35:41 +0000 UTC FinishedAt: 2026-08-13 08:35:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-13 08:35:41 +0000 UTC FinishedAt: 2026-08-13 08:35:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-convert-artifact-2420638784/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-13 08:35:51 +0000 UTC FinishedAt: 2026-08-13 08:37:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-13 08:35:51 +0000 UTC FinishedAt: 2026-08-13 08:37:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e4619598-398f-4656-8f6a-da89aa5348cf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-build-action-3443706251/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-13 08:37:44 +0000 UTC FinishedAt: 2026-08-13 08:37:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-13 08:37:44 +0000 UTC FinishedAt: 2026-08-13 08:37:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-13 08:37:44 +0000 UTC FinishedAt: 2026-08-13 08:58:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-13 08:37:44 +0000 UTC FinishedAt: 2026-08-13 08:58:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d2e92706-0e3b-4f50-a86d-01082a4da47c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-convert-artifact-2420638784/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "35723a08-1b37-4453-ad56-83fdaed14e0b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-build-action-3739447804/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-13 08:37:44 +0000 UTC FinishedAt: 2026-08-13 08:58:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d2e92706-0e3b-4f50-a86d-01082a4da47c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-convert-artifact-2420638784/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "35723a08-1b37-4453-ad56-83fdaed14e0b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-build-action-3739447804/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-13 08:58:25 +0000 UTC FinishedAt: 2026-08-13 08:58:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-13 08:58:25 +0000 UTC FinishedAt: 2026-08-13 08:58:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-13 08:58:25 +0000 UTC FinishedAt: 2026-08-13 09:00:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-13 08:58:25 +0000 UTC FinishedAt: 2026-08-13 09:00:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*35723a08-1b37-4453-ad56-83fdaed14e0b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-build-action-3739447804/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-13 09:00:28 +0000 UTC FinishedAt: 2026-08-13 09:07:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-13 09:00:28 +0000 UTC FinishedAt: 2026-08-13 09:07:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*e4619598-398f-4656-8f6a-da89aa5348cf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*35723a08-1b37-4453-ad56-83fdaed14e0b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-build-action-3443706251/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-build-action-3739447804/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-13 09:00:28 +0000 UTC FinishedAt: 2026-08-13 09:00:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-13 09:00:28 +0000 UTC FinishedAt: 2026-08-13 09:00:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-convert-artifact-395543961/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-13 09:00:28 +0000 UTC FinishedAt: 2026-08-13 09:00:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-13 09:00:28 +0000 UTC FinishedAt: 2026-08-13 09:00:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-13 09:00:28 +0000 UTC FinishedAt: 2026-08-13 09:00:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-13 09:00:38 +0000 UTC FinishedAt: 2026-08-13 09:07:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6n9ct[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_release","stmmac_xdp_release","stmmac_xdp_open","stmmac_suspend","dwxgmac2_tx_dma_stopped","dwxgmac2_tx_mtl_drain","dwxgmac2_rx_mtl_drain","dwxgmac2_rx_dma_stopped","dwxgmac2_dma_start_tx","dwxgmac2_dma_stop_tx","dwxgmac2_dma_start_rx","dwxgmac2_dma_stop_rx"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","DWMAC_SUN8I","DWMAC_GENERIC","STMMAC_PCI"],"series_id":"ffc291f9-0810-4f58-bcae-5f31664ec729","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-13 09:00:38 +0000 UTC FinishedAt: 2026-08-13 09:07:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e4619598-398f-4656-8f6a-da89aa5348cf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*35723a08-1b37-4453-ad56-83fdaed14e0b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-build-action-3443706251/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-build-action-3739447804/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6n9ct/series-workflow6n9ct-convert-artifact-395543961/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}