Name: series-workflow7zqh5 Phase: Succeeded StartedAt: 2026-08-21 13:29:21 +0000 UTC FinishedAt: 2026-08-21 14:17:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[0] Phase: Succeeded StartedAt: 2026-08-21 13:29:21 +0000 UTC FinishedAt: 2026-08-21 13:33:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[0].run-triage Phase: Succeeded StartedAt: 2026-08-21 13:29:22 +0000 UTC FinishedAt: 2026-08-21 13:33:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "USB", "MT76x0U", "MT76x2U", "MT7663U", "MT7921U", "MT7925U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "USB", "MT76x0U", "MT76x2U", "MT7663U", "MT7921U", "MT7925U" ], "series_id": "c574b062-3831-4598-b232-fb765c2b339d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt76_tx_status_skb_add", "mt76x02u_tx_prepare_skb", "mt7663_usb_sdio_tx_prepare_skb", "mt7921_usb_sdio_tx_prepare_skb", "mt7925_usb_sdio_tx_prepare_skb" ], "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+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtNVDc2eDBVJiMzNDssCiAgICAmIzM0O01UNzZ4MlUmIzM0OywKICAgICYjMzQ7TVQ3NjYzVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X3R4X3N0YXR1c19za2JfYWRkJiMzNDssCiAgICAmIzM0O210NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gaW4gYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgIGJ5IG1vdmluZyB0aGUgdmFsaWRhdGlvbiBvZiBgd2NpZGAgaW5zaWRlIHRoZSBgc3RhdHVzX2xvY2tgIHNwaW5sb2NrIGFuZCBlbnN1cmluZyBpdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBwb2ludGVyLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MgYnVncyBjYXVzZWQgYnkgY29uY3VycmVudCBtb2RpZmljYXRpb25zIHRvIHRoZSBgZGV2LVx1MDAzZXdjaWRgIGFycmF5LiBTdWNoIGNvbmN1cnJlbmN5IGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIHBhZGRpbmcgc2VudCB0byB1c2VyIHNwYWNlLCB3aGljaCBhcmUgdGhlIHNwZWNpZmljIHRhcmdldHMgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBpbiB0aGUgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXIgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gYnkgbW92aW5nIHRoZSBgcmN1X2FjY2Vzc19wb2ludGVyYCBjaGVjayBpbnNpZGUgdGhlIGBzdGF0dXNfbG9ja2Agc3BpbmxvY2suIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aHJvdWdoIHRoZSBVU0IgdmFyaWFudHMgb2YgdGhlIG10NzYgZHJpdmVyIChlLmcuLCBtdDc2eDB1LCBtdDc2NjN1LCBtdDc5MjF1LCBtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24gKGR1bW15X2hjZCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzNTBiYWY4NzM4N2IyNzhhNTQ4MTk3YTgxNWU2MGNhMjE2MDFhNzhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTM6MzE6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG5pbmRleCAzNzA3ZWUxOWU0YWU3Li4wZjc0ZDgwOGQzMjg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbkBAIC0xMjksNyAmIzQzOzEyOSw3IEBAIG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4gXG4gXHRtZW1zZXQoY2IsIDAsIHNpemVvZigqY2IpKTtcbiBcbi1cdGlmICghd2NpZCB8fCAhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2V3Y2lkW3djaWQtXHUwMDNlaWR4XSkpXG4mIzQzO1x0aWYgKCF3Y2lkKVxuIFx0XHRyZXR1cm4gTVRfUEFDS0VUX0lEX05PX0FDSztcbiBcbiBcdGlmIChpbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX05PX0FDSylcbkBAIC0xNDcsNiAmIzQzOzE0NywxMSBAQCBtdDc2X3R4X3N0YXR1c19za2JfYWRkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRldi1cdTAwM2VzdGF0dXNfbG9jayk7XG4gXG4mIzQzO1x0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXHUwMDNld2NpZFt3Y2lkLVx1MDAzZWlkeF0pICE9IHdjaWQpIHtcbiYjNDM7XHRcdHBpZCA9IE1UX1BBQ0tFVF9JRF9OT19BQ0s7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cGlkID0gaWRyX2FsbG9jKFx1MDAyNndjaWQtXHUwMDNlcGt0aWQsIHNrYiwgTVRfUEFDS0VUX0lEX0ZJUlNULFxuIFx0XHRcdE1UX1BBQ0tFVF9JRF9NQVNLLCBHRlBfQVRPTUlDKTtcbiBcdGlmIChwaWQgXHUwMDNjIDApIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc2NjNVJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZfdHhfc3RhdHVzX3NrYl9hZGQmIzM0OywKICAgICYjMzQ7bXQ3NngwMnVfdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgIGluIHRoZSBNZWRpYVRlayBtdDc2IHdpcmVsZXNzIGRyaXZlciB0byBmaXggYSByYWNlIGNvbmRpdGlvbiBieSBtb3ZpbmcgdGhlIGByY3VfYWNjZXNzX3BvaW50ZXJgIGNoZWNrIGluc2lkZSB0aGUgYHN0YXR1c19sb2NrYCBzcGlubG9jay4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggdGhlIFVTQiB2YXJpYW50cyBvZiB0aGUgbXQ3NiBkcml2ZXIgKGUuZy4sIG10NzZ4MHUsIG10NzY2M3UsIG10NzkyMXUsIG10NzkyNXUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZHVtbXlfaGNkKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM1MGJhZjg3Mzg3YjI3OGE1NDgxOTdhODE1ZTYwY2EyMTYwMWE3OGIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAyMSAxMzozMTowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYwppbmRleCAzNzA3ZWUxOWU0YWU3Li4wZjc0ZDgwOGQzMjg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jCkBAIC0xMjksNyAmIzQzOzEyOSw3IEBAIG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsCiAKIAltZW1zZXQoY2IsIDAsIHNpemVvZigqY2IpKTsKIAotCWlmICghd2NpZCB8fCAhcmN1X2FjY2Vzc19wb2ludGVyKGRldi0mZ3Q7d2NpZFt3Y2lkLSZndDtpZHhdKSkKJiM0MzsJaWYgKCF3Y2lkKQogCQlyZXR1cm4gTVRfUEFDS0VUX0lEX05PX0FDSzsKIAogCWlmIChpbmZvLSZndDtmbGFncyAmYW1wOyBJRUVFODAyMTFfVFhfQ1RMX05PX0FDSykKQEAgLTE0Nyw2ICYjNDM7MTQ3LDExIEBAIG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsCiAKIAlzcGluX2xvY2tfYmgoJmFtcDtkZXYtJmd0O3N0YXR1c19sb2NrKTsKIAomIzQzOwlpZiAocmN1X2FjY2Vzc19wb2ludGVyKGRldi0mZ3Q7d2NpZFt3Y2lkLSZndDtpZHhdKSAhPSB3Y2lkKSB7CiYjNDM7CQlwaWQgPSBNVF9QQUNLRVRfSURfTk9fQUNLOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKIAlwaWQgPSBpZHJfYWxsb2MoJmFtcDt3Y2lkLSZndDtwa3RpZCwgc2tiLCBNVF9QQUNLRVRfSURfRklSU1QsCiAJCQlNVF9QQUNLRVRfSURfTUFTSywgR0ZQX0FUT01JQyk7CiAJaWYgKHBpZCAmbHQ7IDApIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZWRpYXRlayBNVDc2IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jYC4gSXQmIzM5O3MgdHdlYWtpbmcgdGhlIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhhdCB0aGV5JiMzOTt2ZSBzaW1wbGlmaWVkIGEgY2hlY2sgcmVsYXRlZCB0byB0aGUgYHdjaWRgICh3aXJlbGVzcyBjbGllbnQgSUQpLiBUaGV5IHJlbW92ZWQgb25lIGNoZWNrIHRoYXQgd2FzIGRlZW1lZCByZWR1bmRhbnQgYW5kIGFkZGVkIGFub3RoZXIgY2hlY2sgKmFmdGVyKiBhIHNwaW5sb2NrLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nOyBpdCBzdWdnZXN0cyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBkYXRhIGNvcnJ1cHRpb24gaXNzdWUgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIGFkZHJlc3MuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyBhYm91dCB0ZXN0YWJpbGl0eSwgb2YgY291cnNlLiBDYW4gSSBldmVuICpyZWFjaCogdGhpcyBgbXQ3NmAgZHJpdmVyIGluIG15IHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJdCYjMzk7cyBhIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciwgYW5kIG15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZXNlIGFyZSB0eXBpY2FsbHkgaGFyZHdhcmUtZGVwZW5kZW50LCBtZWFuaW5nIFBDSWUsIFVTQiwgb3IgU0RJTyBiYXNlZC4gSSBpbW1lZGlhdGVseSB0aGluaywgJiMzNDtEb2VzIFFFTVUgZXZlbiAqZW11bGF0ZSogTWVkaWF0ZWsgd2lyZWxlc3MgaGFyZHdhcmU/JiMzNDsgTm8sIGl0IGRvZXNuJiMzOTt0LiBBbmQgbm8sIGl0IGNhbiYjMzk7dCBiZSByZWFjaGVkIHZpYSBgbWFjODAyMTFfaHdzaW1gIGVpdGhlciwgYXMgdGhhdCYjMzk7cyBhIGRpZmZlcmVudCBkcml2ZXIgYWx0b2dldGhlci4KCkJ1dCB0aGVuIEkgcmVtZW1iZXIuIFdhaXQgYSBtaW51dGUhICptdDc2KiBkb2VzIGhhdmUgVVNCIGRyaXZlcnMsIGxpa2UgYG10NzZ4MDItdXNiYCwgYG10NzZ4MnVgLCBhbmQgYG10NzYwMXVgLiBBaGEhIFVTQiBvcGVucyB1cCBhIHdob2xlIG5ldyBhdHRhY2sgc3VyZmFjZSBmb3IgZnV6emluZyEgU3l6a2FsbGVyIGlzIGNhcGFibGUgb2YgZnV6emluZyBVU0IgZHJpdmVycyB3aXRoIGBkdW1teV9oY2RgIG9yIGB2aGNpLWhjZGAuIFRpbWUgdG8gY2hlY2sgd2hldGhlciB0aGUgdGFyZ2V0ZWQgY29kZSBoYXMgVVNCIHN1cHBvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE2MjMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfTVQ3Nl9DT1JFKSAmIzQzOz0gbXQ3Ni5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzZfVVNCKSAmIzQzOz0gbXQ3Ni11c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00LW9iai0kKENPTkZJR19NVDc2X1NESU8pICYjNDM7PSBtdDc2LXNkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT01PW9iai0kKENPTkZJR19NVDc2eDAyX0xJQikgJiM0Mzs9IG10NzZ4MDItbGliLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTVQ3NngwMl9VU0IpICYjNDM7PSBtdDc2eDAyLXVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTctb2JqLSQoQ09ORklHX01UNzZfQ09OTkFDX0xJQikgJiM0Mzs9IG10NzYtY29ubmFjLWxpYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX01UNzkyeF9MSUIpICYjNDM7PSBtdDc5MngtbGliLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTVQ3OTJ4X1VTQikgJiM0Mzs9IG10NzkyeC11c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS0xMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTIxPW10NzYtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjIzOm10NzYtdXNiLXkgOj0gdXNiLm8gdXNiX3RyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMjQtbXQ3Ni1zZGlvLXkgOj0gc2Rpby5vIHNkaW9fdHhyeC5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0yNj1DRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZToyNzpDRkxBR1NfdXNiX3RyYWNlLm8gOj0gLUkkKHNyYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMjgtQ0ZMQUdTX210NzZ4MDJfdHJhY2UubyA6PSAtSSQoc3JjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9MzE9bXQ3NngwMi1saWIteSA6PSBtdDc2eDAyX3V0aWwubyBtdDc2eDAyX21hYy5vIG10NzZ4MDJfbWN1Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTozNjptdDc2eDAyLXVzYi15IDo9IG10NzZ4MDJfdXNiX21jdS5vIG10NzZ4MDJfdXNiX2NvcmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS0zNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTQyPW10NzkyeC1saWItJChDT05GSUdfQUNQSSkgJiM0Mzs9IG10NzkyeF9hY3BpX3Nhci5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQzOm10NzkyeC11c2IteSA6PSBtdDc5MnhfdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtNDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM9NzQ9c3RhdGljIGludCBtdDc2X3J4X3F1ZXVlc19yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy04Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jOjgzOlx0XHRxdWV1ZWQgPSBtdDc2X2lzX3VzYihkZXYpID8gcS1cdTAwM2VuZGVzYyAtIHEtXHUwMDNlcXVldWVkIDogcS1cdTAwM2VxdWV1ZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy04NC1cdFx0c2VxX3ByaW50ZihzLCBcJiMzNDsgJTlkIHwgJTlkIHwgJTlkIHwgJTlkIHxcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvbGVkcy5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNDojaW5jbHVkZSBcdTAwM2NsaW51eC91c2IuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTUtI2luY2x1ZGUgXHUwMDNjbGludXgvYXZlcmFnZS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9OTU9c3RydWN0IG10NzZfYnVzX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTEwOiNkZWZpbmUgbXQ3Nl9pc191c2IoZGV2KSAoKGRldiktXHUwMDNlYnVzLVx1MDAzZXR5cGUgPT0gTVQ3Nl9CVVNfVVNCKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTExLSNkZWZpbmUgbXQ3Nl9pc19tbWlvKGRldikgKChkZXYpLVx1MDAzZWJ1cy1cdTAwM2V0eXBlID09IE1UNzZfQlVTX01NSU8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9NjUwPXN0cnVjdCBtdDc2X21jdSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNjYzLSNkZWZpbmUgTUNVX1JFU1BfVVJCX1NJWkVcdDEwMjRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY2NDpzdHJ1Y3QgbXQ3Nl91c2Ige1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NjY1Olx0c3RydWN0IG11dGV4IHVzYl9jdHJsX210eDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTY2Ni1cdHU4ICpkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTkyND1zdHJ1Y3QgbXQ3Nl9kZXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEwNDEtXHRcdHN0cnVjdCBtdDc2X21taW8gbW1pbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEwNDI6XHRcdHN0cnVjdCBtdDc2X3VzYiB1c2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMDQzLVx0XHRzdHJ1Y3QgbXQ3Nl9zZGlvIHNkaW87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTgzND12b2lkIG10NzZfb2ZmY2hhbm5lbF9ub3RpZnkoc3RydWN0IG10NzZfcGh5ICpwaHksIGJvb2wgb2ZmY2hhbm5lbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTgzNjovKiB1c2IgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4Mzctc3RhdGljIGlubGluZSBib29sIG10NzZ1X3VyYl9lcnJvcihzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTg0Nj1tdDc2dV9idWxrX21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdm9pZCAqZGF0YSwgaW50IGxlbiwgaW50ICphY3R1YWxfbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4NDgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTg0OTpcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1aW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODUwOlx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVpbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4NTE6XHRzdHJ1Y3QgbXQ3Nl91c2IgKnVzYiA9IFx1MDAyNmRldi1cdTAwM2V1c2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODUyLVx0dW5zaWduZWQgaW50IHBpcGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg1NC1cdGlmIChhY3R1YWxfbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTg1NTpcdFx0cGlwZSA9IHVzYl9yY3ZidWxrcGlwZSh1ZGV2LCB1c2ItXHUwMDNlaW5fZXBbZXBdKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4NTYtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODU3Olx0XHRwaXBlID0gdXNiX3NuZGJ1bGtwaXBlKHVkZXYsIHVzYi1cdTAwM2VvdXRfZXBbZXBdKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4NTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODU5Olx0cmV0dXJuIHVzYl9idWxrX21zZyh1ZGV2LCBwaXBlLCBkYXRhLCBsZW4sIGFjdHVhbF9sZW4sIHRpbWVvdXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg2MC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTg3Nj12b2lkIF9fX210NzZ1X3dyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1OCByZXEsIHU4IHJlcV90eXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg3Ny1cdFx0IHUzMiBhZGRyLCB1MzIgdmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4Nzg6aW50IF9fbXQ3NnVfaW5pdChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODc5LVx0XHQgc3RydWN0IG10NzZfYnVzX29wcyAqb3BzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4ODA6aW50IG10NzZ1X2luaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4ODEtaW50IG10NzZ1X2FsbG9jX21jdV9xdWV1ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU9ND1vYmotJChDT05GSUdfTVQ3NjE1RSkgJiM0Mzs9IG10NzYxNWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfTVQ3NjYzX1VTQl9TRElPX0NPTU1PTikgJiM0Mzs9IG10NzY2My11c2Itc2Rpby1jb21tb24ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGUtNi1vYmotJChDT05GSUdfTVQ3NjYzVSkgJiM0Mzs9IG10NzY2M3Uub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlPTE2PW10NzYxNWUtJChDT05GSUdfTVQ3NjIyX1dNQUMpICYjNDM7PSBzb2Mub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGUtMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZToxODptdDc2NjMtdXNiLXNkaW8tY29tbW9uLXkgOj0gdXNiX3NkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6MTk6bXQ3NjYzdS15IDo9IHVzYi5vIHVzYl9tY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGUtMjAtbXQ3NjYzcy15IDo9IHNkaW8ubyBzZGlvX21jdS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTk2PW10NzYxNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEwNTpcdGlmICghbXQ3NjE1X2Zpcm13YXJlX29mZmxvYWQoZGV2KSB8fCBtdDc2X2lzX3VzYihcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTA2LVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9MzU1PWV4dGVybiBjb25zdCB1MzIgbXQ3NjYzZV9yZWdfbWFwW19fTVRfQkFTRV9NQVhdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6MzU2OmV4dGVybiBjb25zdCB1MzIgbXQ3NjYzX3VzYl9zZGlvX3JlZ19tYXBbX19NVF9CQVNFX01BWF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC0zNTctZXh0ZXJuIHN0cnVjdCBwY2lfZHJpdmVyIG10NzYxNV9wY2lfZHJpdmVyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTU0MD12b2lkIG10NzYyMl90cmlnZ2VyX2hpZl9pbnQoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgYm9vbCBlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDI6LyogdXNiICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDM6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTQ0LVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTQ2LVx0XHRcdFx0ICAgc3RydWN0IG10NzZfdHhfaW5mbyAqdHhfaW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDc6Ym9vbCBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjU0ODp2b2lkIG10NzY2M191c2Jfc2Rpb190eF9jb21wbGV0ZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTQ5LVx0XHRcdFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NTA6aW50IG10NzY2M191c2Jfc2Rpb19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NTEtaW50IG10NzY2M3VfbWN1X2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jPTc2PXN0YXRpYyBpbnQgbXQ3NjYzc19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy04MS1cdFx0LmRydl9mbGFncyA9IE1UX0RSVl9SWF9ETUFfSERSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjgyOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6ODM6XHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjg0Olx0XHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtODUtXHRcdC5yeF9za2IgPSBtdDc2MTVfcXVldWVfcnhfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy0xMTgtXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1jdV93b3JrLCBtdDc2NjNzX2luaXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6MTE5Olx0ZGV2LVx1MDAzZXJlZ19tYXAgPSBtdDc2NjNfdXNiX3NkaW9fcmVnX21hcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy0xMjAtXHRkZXYtXHUwMDNlb3BzID0gb3BzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy0xNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6MTU5Olx0cmV0ID0gbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTE2MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTAtI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExOiNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzYi5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdDc2MTVfZGV2aWNlX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xOS1cdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwZThkLCAweDc2NjMsIDB4ZmYsIDB4ZmYsIDB4ZmYpIH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MjQ9c3RhdGljIHUzMiBtdDc2NjN1X3JyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjI4Olx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yOS1cdHJldCA9IF9fX210NzZ1X3JyKGRldiwgTVRfVkVORF9SRUFEX0VYVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTMwLVx0XHRcdCAgVVNCX0RJUl9JTiB8IFVTQl9UWVBFX1ZFTkRPUiwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzozMTpcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0zMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0zNj1zdGF0aWMgdm9pZCBtdDc2NjN1X3dyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkciwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTM3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjM4Olx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0zOS1cdF9fX210NzZ1X3dyKGRldiwgTVRfVkVORF9XUklURV9FWFQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy00MC1cdFx0ICAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfVkVORE9SLCBhZGRyLCB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6NDE6XHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNDItfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTQ0PXN0YXRpYyB1MzIgbXQ3NjYzdV9ybXcoc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTQ2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjQ3Olx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy00OC1cdHZhbCB8PSBfX19tdDc2dV9ycihkZXYsIE1UX1ZFTkRfUkVBRF9FWFQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNTEtXHRcdCAgICBVU0JfRElSX09VVCB8IFVTQl9UWVBFX1ZFTkRPUiwgYWRkciwgdmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjUyOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2V1c2IudXNiX2N0cmxfbXR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTU3PXN0YXRpYyB2b2lkIG10NzY2M3VfY29weShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIG9mZnNldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy01OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzo2MDpcdHN0cnVjdCBtdDc2X3VzYiAqdXNiID0gXHUwMDI2ZGV2LVx1MDAzZXVzYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTYxLVx0aW50IHJldCwgaSA9IDAsIGJhdGNoX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjY2Olx0bXV0ZXhfbG9jayhcdTAwMjZ1c2ItXHUwMDNldXNiX2N0cmxfbXR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTY3LVx0d2hpbGUgKGkgXHUwMDNjIGxlbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Njg6XHRcdGJhdGNoX2xlbiA9IG1pbl90KGludCwgdXNiLVx1MDAzZWRhdGFfbGVuLCBsZW4gLSBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjY5Olx0XHRtZW1jcHkodXNiLVx1MDAzZWRhdGEsIHZhbCAmIzQzOyBpLCBiYXRjaF9sZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNzAtXHRcdHJldCA9IF9fbXQ3NnVfdmVuZG9yX3JlcXVlc3QoZGV2LCBNVF9WRU5EX1dSSVRFX0VYVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy03Mi1cdFx0XHRcdFx0ICAgICAob2Zmc2V0ICYjNDM7IGkpIFx1MDAzZVx1MDAzZSAxNiwgb2Zmc2V0ICYjNDM7IGksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzo3MzpcdFx0XHRcdFx0ICAgICB1c2ItXHUwMDNlZGF0YSwgYmF0Y2hfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTc0LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTc4LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Nzk6XHRtdXRleF91bmxvY2soXHUwMDI2dXNiLVx1MDAzZXVzYl9jdHJsX210eCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy04MC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MTAxPXN0YXRpYyB2b2lkIG10NzY2M3VfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMTI6c3RhdGljIGludCBtdDc2NjN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExMzpcdFx0XHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTE0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTctXHRcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUiB8IE1UX0RSVl9IV19NR01UX1RYUSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExODpcdFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTE5Olx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjEyMDpcdFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTIxLVx0XHQucnhfc2tiID0gbXQ3NjE1X3F1ZXVlX3J4X3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMzUtXHR9O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTM2Olx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTEzNy1cdHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTQyOlx0b3BzID0gZGV2bV9rbWVtZHVwKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgXHUwMDI2bXQ3NjE1X29wcywgc2l6ZW9mKG10NzYxNV9vcHMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTQzLVx0XHRcdCAgIEdGUF9LRVJORUwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE0OTpcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIHNpemVvZigqZGV2KSwgb3BzLCBcdTAwMjZkcnZfb3BzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE1MC1cdGlmICghbWRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNTMtXHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzYxNV9kZXYsIG10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTU0Olx0dXNiX3Jlc2V0X2RldmljZSh1ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE1NjpcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNTgtXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1jdV93b3JrLCBtdDc2NjN1X2luaXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxNTk6XHRkZXYtXHUwMDNlcmVnX21hcCA9IG10NzY2M191c2Jfc2Rpb19yZWdfbWFwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTYwLVx0ZGV2LVx1MDAzZW9wcyA9IG9wcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE2MTpcdHJldCA9IF9fbXQ3NnVfaW5pdChtZGV2LCB1c2JfaW50ZiwgXHUwMDI2YnVzX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNjItXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE4NjpcdHJldCA9IG10NzY2M191c2Jfc2Rpb19yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTkzLVx0bXQ3NnVfcXVldWVzX2RlaW5pdChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxOTQ6XHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE5NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyMDE6c3RhdGljIHZvaWQgbXQ3NjYzdV9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTIwMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyMDM6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YSh1c2JfaW50Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MjExOlx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgTlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjE2LSNpZmRlZiBDT05GSUdfUE1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIxNzpzdGF0aWMgaW50IG10NzY2M3Vfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjE4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIxOTpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjIwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTIzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIzNjpzdGF0aWMgaW50IG10NzY2M3VfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjM3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIzODpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjM5LVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyNTk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzYxNV9kZXZpY2VfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjYwLU1PRFVMRV9GSVJNV0FSRShNVDc2NjNfT0ZGTE9BRF9GSVJNV0FSRV9OOSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MjYzPU1PRFVMRV9GSVJNV0FSRShNVDc2NjNfUk9NX1BBVENIKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjI2NTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NjYzdV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNjYtXHQubmFtZVx0XHQ9IEtCVUlMRF9NT0ROQU1FLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3Ny19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Mjc4Om1vZHVsZV91c2JfZHJpdmVyKG10NzY2M3VfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTktI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTA6I2luY2x1ZGUgXHUwMDNjbGludXgvdXNiLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTc6Y29uc3QgdTMyIG10NzY2M191c2Jfc2Rpb19yZWdfbWFwW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE4LVx0W01UX1RPUF9DRkdfQkFTRV1cdD0gMHg4MDAyMDAwMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTQwLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjQxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb19yZWdfbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jPTQzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjQ0Om10NzY2M191c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTQ1LVx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjU2OnN0YXRpYyBpbnQgbXQ3NjYzX3VzYl9zZGlvX3NldF9yYXRlcyhzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy01Ny1cdFx0XHRcdCAgICAgc3RydWN0IG10NzYxNV93dGJsX3JhdGVfZGVzYyAqd3JkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxMzE6c3RhdGljIHZvaWQgbXQ3NjYzX3VzYl9zZGlvX3JhdGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTEzMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNDgtXHRcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE0OTpcdFx0bXQ3NjYzX3VzYl9zZGlvX3NldF9yYXRlcyhkZXYsIHdyZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE1MC1cdFx0bXQ3NjE1X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTU2OmJvb2wgbXQ3NjYzX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTU3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE2NS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE2NjpFWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE2ODp2b2lkIG10NzY2M191c2Jfc2Rpb190eF9jb21wbGV0ZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNjktXHRcdFx0XHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxNzM6XHRpZiAobXQ3Nl9pc191c2IobWRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE3NC1cdFx0aGVhZHJvb20gJiM0Mzs9IE1UX1VTQl9IRFJfU0laRTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE3OC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE3OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxODE6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xODItXHRcdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIwNy1cdHBrdGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChcdTAwMjZkZXYtXHUwMDNlbXQ3Niwgd2NpZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MjA4Olx0bXQ3NjYzX3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MjA5Olx0aWYgKG10NzZfaXNfdXNiKG1kZXYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIxMC1cdFx0dTMyIGxlbiA9IHNrYi1cdTAwM2VsZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMjQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMjU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0yMjc9c3RhdGljIGludCBtdDc2NjN1X2RtYV9zY2hlZF9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjI3OTpzdGF0aWMgaW50IG10NzY2M191c2Jfc2Rpb19pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTI4MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjI4NzpcdGlmIChtdDc2X2lzX3VzYihcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMjg4LVx0XHRyZXQgPSBtdDc2NjN1X2RtYV9zY2hlZF9pbml0KGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjMwNzppbnQgbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozMTI6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXJhdGVfd29yaywgbXQ3NjYzX3VzYl9zZGlvX3JhdGVfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTMxMy1cdElOSVRfTElTVF9IRUFEKFx1MDAyNmRldi1cdTAwM2V3cmRfaGVhZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjMxNjpcdGVyciA9IG10NzY2M191c2Jfc2Rpb19pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTMxNy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMjAtXHRody1cdTAwM2VleHRyYV90eF9oZWFkcm9vbSAmIzQzOz0gTVRfVVNCX1RYRF9TSVpFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozMjE6XHRpZiAobXQ3Nl9pc191c2IoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTMyMi1cdFx0aHctXHUwMDNlZXh0cmFfdHhfaGVhZHJvb20gJiM0Mzs9IE1UX1VTQl9IRFJfU0laRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzIzLVx0XHQvKiBjaGVjayBodyBzZyBzdXBwb3J0IGluIG9yZGVyIHRvIGVuYWJsZSBBTVNEVSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozMjQ6XHRcdGlmIChkZXYtXHUwMDNlbXQ3Ni51c2Iuc2dfZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTMyNS1cdFx0XHRody1cdTAwM2VtYXhfdHhfZnJhZ21lbnRzID0gTVRfSFdfVFhQX01BWF9CVUZfTlVNO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozMzU6XHRpZiAoIWRldi1cdTAwM2VtdDc2LnVzYi5zZ19lbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMzYtXHRcdHN0cnVjdCBpZWVlODAyMTFfc3RhX3ZodF9jYXAgKnZodF9jYXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zNDgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozNDk6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTM1MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jPTM2PWludCBtdDc2X2Nvbm5hY19wbV93YWtlKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjQwOlx0aWYgKG10NzZfaXNfdXNiKGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTQxLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jPTYyPXZvaWQgbXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYzo2NzpcdGlmIChtdDc2X2lzX3VzYihkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy02OC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9MjYyNT1tdDc2X2Nvbm5hY19tY3Vfc2V0X3dvd19jdHJsKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjY2Ny1cdFx0cmVxLndvd19jdHJsX3Rsdi53YWtldXBfaGlmID0gV09XX1BDSUU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjI2Njg6XHRlbHNlIGlmIChtdDc2X2lzX3VzYihkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy0yNjY5LVx0XHRyZXEud293X2N0cmxfdGx2Lndha2V1cF9oaWYgPSBXT1dfVVNCO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9MjY3OD1pbnQgbXQ3Nl9jb25uYWNfbWN1X3NldF9oaWZfc3VzcGVuZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgYm9vbCBzdXNwZW5kLCBib29sIHdhaXRfcmVzcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTI3MDMtXHRcdHJlcS5oZHIuaGlmX3R5cGUgPSAyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzoyNzA0Olx0ZWxzZSBpZiAobXQ3Nl9pc191c2IoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjcwNS1cdFx0cmVxLmhkci5oaWZfdHlwZSA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGU9Nj1tdDc2eDAtY29tbW9uLXkgOj0gaW5pdC5vIG1haW4ubyBlZXByb20ubyBwaHkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL01ha2VmaWxlOjg6bXQ3NngwdS15IDo9IHVzYi5vIHVzYl9tY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtOS1tdDc2eDBlLXkgOj0gcGNpLm8gcGNpX21jdS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmg6MTU6I2luY2x1ZGUgXHUwMDNjbGludXgvdXNiLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oLTE2LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBsZXRpb24uaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jPTEwMz1tdDc2eDBfcmZfd3Ioc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTEwNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYzoxMDU6XHRpZiAobXQ3Nl9pc191c2IoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xMDYtXHRcdHN0cnVjdCBtdDc2X3JlZ19wYWlyIHBhaXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmM9MTE5PXN0YXRpYyBpbnQgbXQ3NngwX3JmX3JyKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCB1MzIgb2Zmc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jOjEyNDpcdGlmIChtdDc2X2lzX3VzYihcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTEyNS1cdFx0c3RydWN0IG10NzZfcmVnX3BhaXIgcGFpciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYz05MTM9dm9pZCBtdDc2eDBfcGh5X3NldF9jaGFubmVsKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTk3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jOjk3MTpcdGlmIChtdDc2X2lzX3VzYihcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTk3Mi1cdFx0bXQ3NngwX3BoeV9iYnBfc2V0X2J3KGRldiwgY2hhbmRlZi1cdTAwM2V3aWR0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtNy0jaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6ODojaW5jbHVkZSBcdTAwM2NsaW51eC91c2IuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMS0jaW5jbHVkZSBcJiMzNDttY3UuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTI6I2luY2x1ZGUgXCYjMzQ7Li4vbXQ3NngwMl91c2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxNDpzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgbXQ3NngwX2RldmljZV90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTUtXHR7IFVTQl9ERVZJQ0UoMHgxNDhGLCAweDc2MTApIH0sXHQvKiBNVDc2MTBVICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzo0NjpzdGF0aWMgdm9pZCBtdDc2eDBfaW5pdF91c2JfZG1hKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtNDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTE1MT1zdGF0aWMgaW50IG10NzZ4MHVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxNjQ6XHRtdDc2eDBfaW5pdF91c2JfZG1hKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNjUtXHRlcnIgPSBtdDc2eDBfaW5pdF9oYXJkd2FyZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTE3OT1zdGF0aWMgaW50IG10NzZ4MHVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE4MS1cdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gZGV2LVx1MDAzZW10NzYuaHc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxODI6XHRzdHJ1Y3QgbXQ3Nl91c2IgKnVzYiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2LnVzYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE4My1cdGludCBlcnI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxODU6XHR1c2ItXHUwMDNlbWN1LmRhdGEgPSBkZXZtX2ttYWxsb2MoZGV2LVx1MDAzZW10NzYuZGV2LCBNQ1VfUkVTUF9VUkJfU0laRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE4Ni1cdFx0XHRcdCAgICAgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxODc6XHRpZiAoIXVzYi1cdTAwM2VtY3UuZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE4OC1cdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTk4LVx0LyogY2hlY2sgaHcgc2cgc3VwcG9ydCBpbiBvcmRlciB0byBlbmFibGUgQU1TRFUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE5OTpcdGh3LVx1MDAzZW1heF90eF9mcmFnbWVudHMgPSBkZXYtXHUwMDNlbXQ3Ni51c2Iuc2dfZW4gPyBNVF9UWF9TR19NQVhfU0laRSA6IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMDAtXHRlcnIgPSBtdDc2eDBfcmVnaXN0ZXJfZGV2aWNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjEzOnN0YXRpYyBpbnQgbXQ3NngwdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMTQ6XHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIxNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjI5LVx0fTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIzMDpcdHN0cnVjdCB1c2JfZGV2aWNlICp1c2JfZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldih1c2JfaW50Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMzEtXHRzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMzY6XHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBzaXplb2YoKmRldiksIFx1MDAyNm10NzZ4MHVfb3BzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjM3LVx0XHRcdFx0IFx1MDAyNmRydl9vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjI0ODpcdHVzYl9yZXNldF9kZXZpY2UodXNiX2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyNTA6XHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjUyLVx0bXQ3NngwMnVfaW5pdF9tY3UobWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyNTM6XHRyZXQgPSBtdDc2dV9pbml0KG1kZXYsIHVzYl9pbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI1NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjg0LWVycjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjI4NTpcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjg2LVx0bXQ3NnVfcXVldWVzX2RlaW5pdChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjkyOnN0YXRpYyB2b2lkIG10NzZ4MF9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI5My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyOTQ6XHRzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEodXNiX2ludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjk1LVx0Ym9vbCBpbml0aWFsaXplZCA9IHRlc3RfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMDM6XHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMDg6c3RhdGljIGludCBfX21heWJlX3VudXNlZCBtdDc2eDBfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMDktXHRcdFx0XHRcdCBwbV9tZXNzYWdlX3Qgc3RhdGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzExOlx0c3RydWN0IG10NzZ4MDJfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKHVzYl9pbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMjA6c3RhdGljIGludCBfX21heWJlX3VudXNlZCBtdDc2eDBfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMyMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMjI6XHRzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEodXNiX2ludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzIzLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMzk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzZ4MF9kZXZpY2VfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzQwLU1PRFVMRV9GSVJNV0FSRShNVDc2MTBFX0ZJUk1XQVJFKTtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTE1MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgQ29kZSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIGBtdDc2YCBkZWZpbml0ZWx5IGhhcyBVU0IgZHJpdmVycyDigJMgSSBrbm93IHRoYXQsIGBtdDc2eDB1YCwgYG10NzYxNXVgLCBhbGwgdGhvc2UuIEFuZCB0aGF0JiMzOTtzIGdyZWF0IG5ld3MgYmVjYXVzZSBzeXprYWxsZXIsIHdoaWNoIEkmIzM5O20gdmVyeSBmYW1pbGlhciB3aXRoLCBoYXMgYSBVU0IgZnV6emVyIGJ1aWx0IHJpZ2h0IGluLCBsZXZlcmFnaW5nIHRoYXQgYGR1bW15X2hjZGAgc2V0dXAuIFRoaXMgbWVhbnMgSSBjYW4gYWxtb3N0IGNlcnRhaW5seSB0cmlnZ2VyIHRoaXMgY29kZSwgZXZlbiB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhhdCYjMzk7cyBhIGh1Z2Ugd2luIGZvciB0ZXN0aW5nLiBOb3csIGxldCYjMzk7cyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMgZnVuY3Rpb24uIEkgd2FudCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfdHhfc3RhdHVzX3NrYl9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNTY2PXZvaWQgbXQ3Nl90eF9zdGF0dXNfdW5sb2NrKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE1NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNTY5OmludCBtdDc2X3R4X3N0YXR1c19za2JfYWRkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTU3MC1cdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWMuYz0xMDcxPWludCBtdDc2MDNfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWMuYy0xMDk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFjLmM6MTA5NjpcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cdTAwM2Vza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFjLmMtMTA5Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfbWFjLmM9NjA9aW50IG10NzYxNV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYy05OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYzo5OTpcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cdTAwM2Vza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX21hYy5jLTEwMC1cdG10NzYxNV9tYWNfd3JpdGVfdHh3aShkZXYsIHR4d2lfcHRyLCB0eF9pbmZvLVx1MDAzZXNrYiwgd2NpZCwgc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM9MTgxPWludCBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MjA3Olx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFx1MDAyNmRldi1cdTAwM2VtdDc2LCB3Y2lkLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMDgtXHRtdDc2NjNfdXNiX3NkaW9fd3JpdGVfdHh3aShkZXYsIHdjaWQsIHFpZCwgc3RhLCBrZXksIHBrdGlkLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM9MTM3PWludCBtdDc2eDAyX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jOjE1NTpcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cdTAwM2Vza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xNTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM9NjQ9aW50IG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy04Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jOjgzOlx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVx1MDAzZXNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy04NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz03Mjg9aW50IG10NzkxNV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTc2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjc2ODpcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cdTAwM2Vza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtNzY5LVx0bXQ3OTE1X21hY193cml0ZV90eHdpKG1kZXYsIHR4d2lfcHRyLCB0eF9pbmZvLVx1MDAzZXNrYiwgd2NpZCwgcGlkLCBrZXksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9Nzc2PWludCBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MDY6XHRwa3RpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHdjaWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MDctXHRtdDc5MjFfdXNiX3NkaW9fd3JpdGVfdHh3aShkZXYsIHdjaWQsIHFpZCwgc3RhLCBrZXksIHBrdGlkLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYz04PWludCBtdDc5MjFlX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jOjQzOlx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVx1MDAzZXNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtNDQtXHRtdDc2X2Nvbm5hYzJfbWFjX3dyaXRlX3R4d2kobWRldiwgdHh3aV9wdHIsIHR4X2luZm8tXHUwMDNlc2tiLCB3Y2lkLCBrZXksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTYzMz1pbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2NjM6XHRwa3RpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHdjaWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjY0LVx0bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmM9OT1pbnQgbXQ3OTI1ZV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYzo0NDpcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cdTAwM2Vza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jLTQ1LVx0bXQ3OTI1X21hY193cml0ZV90eHdpKG1kZXYsIHR4d2lfcHRyLCB0eF9pbmZvLVx1MDAzZXNrYiwgd2NpZCwga2V5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTEwMzQ9aW50IG10Nzk5Nl90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTExMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoxMTMzOlx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVx1MDAzZXNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xMTM0LVx0bWVtc2V0KHR4d2lfcHRyLCAwLCBNVF9UWERfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTEyMT1pbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzoxMjI6bXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy0xMjMtXHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy0xNzItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjE3MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3R4X3N0YXR1c19za2JfYWRkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy0xNzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxMjIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBmdW5jdGlvbi4gVGhlIGNvZGUgc2F5cyBpdCYjMzk7cyBjYWxsZWQgYnkgYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCwgYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBhbmQgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgdGhpcyBpc24mIzM5O3Qgc29tZSBkZWFkIGNvZGUuIFRoZXNlIGFyZSBhbGwgVVNCIGRyaXZlcnMsIHdoaWNoIGlzIGltcG9ydGFudCB0byByZW1lbWJlci4gU28sIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aG9zZSBVU0IgZGV2aWNlIGludGVyYWN0aW9ucy4KCk5vdywgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBNeSBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSBnb2luZyB0byBiZSB0cmFja2luZyBkb3duIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhvc2Ugd2lsbCB0ZWxsIG1lIHdoZW4gdGhlc2UgVVNCIGRyaXZlcnMsIGFuZCB0aGVyZWZvcmUgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgLCBhcmUgYWN0dWFsbHkgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjpjb25maWcgTVQ3Nl9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Njpjb25maWcgTVQ3Nl9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNy1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTI6Y29uZmlnIE1UNzZfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxNjpjb25maWcgTVQ3Nl9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyMDpjb25maWcgTVQ3NngwMl9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI0OmNvbmZpZyBNVDc2eDAyX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI1LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjg6Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzY9Y29uZmlnIE1UNzkyeF9VU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNDEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWc6Mjpjb25maWcgTVQ3NjAzRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjAzRSAoUENJZSkgYW5kIE1UNzZ4OCBXTEFOIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjM6Y29uZmlnIE1UNzYxNV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo4OmNvbmZpZyBNVDc2MTVFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2MTVFIGFuZCBNVDc2NjNFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MjE6Y29uZmlnIE1UNzYyMl9XTUFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtNVDc2MjIgKFNvQykgV01BQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MzI6Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjM2OmNvbmZpZyBNVDc2NjNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTM3LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjYzVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6NDc6Y29uZmlnIE1UNzY2M1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDgtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2NjNTIChTRElPKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDBfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Njpjb25maWcgTVQ3NngwVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6MTk6Y29uZmlnIE1UNzZ4MEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDBFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDJfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Njpjb25maWcgTVQ3NngyRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngyRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE4OmNvbmZpZyBNVDc2eDJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngyVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1MTIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIE1UNzYgRHJpdmVyIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBNVDc2IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyDigJMgYE1UNzZfQ09SRWAsIGBNVDc2X1VTQmAsIGBNVDc2eDAyX1VTQmAsIGEgd2hvbGUgc2xldyBvZiB0aGVtOiBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzY2M1VgLCBgTVQ3OTJ4X1VTQmAsIGBNVDc5MjFVYCwgYE1UNzkyNVVgLCBhbmQgc28gb24uIEl0JiMzOTtzIGEgZmFpcmx5IGV4dGVuc2l2ZSBmYW1pbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSByZWxhdGUsIGhvdyB0aGV5JiMzOTtyZSBpbnRlcmNvbm5lY3RlZC4gSSB0aGluayBhIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgd291bGQgYmUgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgTVQ3NngwVWAuIFNlZSB3aGF0IG90aGVyIGNvbXBvbmVudHMgdGhhdCBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gZGVwZW5kcyBvbiwgd2hhdCBvdGhlciBwYXJ0cyBvZiB0aGUgZWNvc3lzdGVtIGl0IHB1bGxzIGluLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlIGFuZCBob3cgaXQgZml0cyB3aXRoaW4gdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3NngwVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc9Mj1jb25maWcgTVQ3NngwX0NPTU1PTlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Njpjb25maWcgTVQ3NngwVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTk1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBLY29uZmlnIGZpbGUgZm9yIHRoZSBNZWRpYXRlayBNVDc2IHNlcmllcyB3aXJlbGVzcyBkcml2ZXJzLgoKKipEZWVwIERpdmUgaW50byB0aGUgTVQ3NngwIEtjb25maWcqKgoKQWxyaWdodCwgSSYjMzk7bSBwdWxsaW5nIHVwIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgTVQ3NngwIHNlcmllcyBhcmUgZGVmaW5lZCwgYW5kIEkmIzM5O20gZWFnZXIgdG8gc2VlIGhvdyB0aGUgTWVkaWF0ZWsgZm9sa3Mgc3RydWN0dXJlIHRoZWlyIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBrZXJuZWwgY29uZmlndXJhdGlvbiBlbGVtZW50czogYGNvbmZpZ2AgYmxvY2tzLCBgdHJpc3RhdGVgIGFuZCBgYm9vbGAgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBoZWxwIHRleHQuLi4gdGhlIHdob2xlIHNoZWJhbmcuIEtub3dpbmcgdGhlIGFyY2hpdGVjdHVyZSwgSSBhbnRpY2lwYXRlIHRoZXkmIzM5O2xsIGhhdmUgb3B0aW9ucyBmb3IgZmVhdHVyZXMgbGlrZSBkaWZmZXJlbnQgTVQ3NiBjaGlwc2V0IHZhcmlhbnRzLCBwb3dlci1zYXZpbmcgZmVhdHVyZXMsIGRlYnVnZ2luZyBhaWRzLCBhbmQgbWF5YmUgZXZlbiBhIGZldyBwbGF0Zm9ybS1zcGVjaWZpYyBzZXR0aW5ncy4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbnkgY2xldmVyIHVzZXMgb2YgZGVwZW5kZW5jaWVzIG9yIGNob2ljZSBibG9ja3MgdG8gZW5zdXJlIHRoYXQgb25seSByZWxldmFudCBvcHRpb25zIGFyZSBwcmVzZW50ZWQgYmFzZWQgb24gdGhlIHNlbGVjdGVkIGhhcmR3YXJlLiBJJiMzOTtsbCBhbHNvIGJlIHNjYW5uaW5nIGZvciBhbnkgcG90ZW50aWFsIGdvdGNoYXMgb3IgY29uZmlndXJhdGlvbiBsYW5kbWluZXMgdGhhdCBtaWdodCBjYXVzZSBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLiBGaW5hbGx5LCBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSB2ZXJzaW9uaW5nIGFuZCBjb21wYXRpYmlsaXR5IGNoZWNrcy4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSBhIGNydWNpYWwgcGllY2UgaW4gdW5kZXJzdGFuZGluZyBob3cgSSBjYW4gYmVzdCBjb25maWd1cmUgdGhpcyBkcml2ZXIgYW5kIGludGVncmF0ZSBpdCBpbnRvIG15IG93biBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNVDc2eDBfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzZ4MDJfTElCXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE1UNzZ4MFVcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MFUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAgODpcdFx0c2VsZWN0IE1UNzZ4MF9DT01NT05cbiAgIDk6XHRcdHNlbGVjdCBNVDc2eDAyX1VTQlxuICAxMDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMTpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMFUtYmFzZWQgVVNCIDIuMCB3aXJlbGVzcyBkb25nbGVzLFxuICAxNDpcdFx0ICB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydCAxeDFcbiAgMTU6XHRcdCAgNDMzTWJwcyBQSFkgcmF0ZS5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVQ3NngwRVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTY0MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZXZpZXdpbmcgdGhhdCBLY29uZmlnIGZpbGU6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc2MTUgS2NvbmZpZyoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBpbW1lZGlhdGVseSBleHBlY3RpbmcgdG8gc2VlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE1UNzYxNSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCBhbGwgdGhlIHR1bmFibGUgcGFyYW1ldGVycyDigJMgdGhlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgaG93IHRoaXMgZHJpdmVyIGlzIGNvbXBpbGVkIGFuZCBpbnRlZ3JhdGVkIGludG8gdGhlIGJyb2FkZXIga2VybmVsLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgdGhlIG1haW4gZmVhdHVyZSBmbGFncywgdGhpbmdzIGxpa2Ugc3VwcG9ydCBmb3Igc3BlY2lmaWMgODAyLjExIHN0YW5kYXJkcywgYW55IGhhcmR3YXJlLXNwZWNpZmljIHR3ZWFrcywgYW5kIG1heWJlIG9wdGlvbnMgZm9yIGRlYnVnZ2luZyBvciBsb2dnaW5nLiBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGRlZmF1bHQgdmFsdWVzIHNldCBmb3IgZWFjaCBvcHRpb24uIFRob3NlIGRlcGVuZGVuY2llcyBhcmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3Mgc3RhY2sgYW5kIHRoZSB1bmRlcmx5aW5nIGtlcm5lbCBuZXR3b3JraW5nIGZyYW1ld29yay4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZXkmIzM5O3ZlIHN0cnVjdHVyZWQgaXQ7IGFyZSB0aGV5IHVzaW5nIHRoZSB0eXBpY2FsIGBib29sYCwgYHRyaXN0YXRlYCwgYGludGAsIGV0Yy4gb3B0aW9ucz8gV2hhdCBhYm91dCBhbnkgc3BlY2lmaWMgaGVscCB0ZXh0PyBBcmUgdGhleSBmb2xsb3dpbmcgdGhlIHN0YW5kYXJkIGtlcm5lbCBjb2Rpbmcgc3R5bGU/IEkmIzM5O2xsIGFsc28gYmUgb24gdGhlIGxvb2tvdXQgZm9yIGFueXRoaW5nIHRoYXQgbWlnaHQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIHBvd2VyIGNvbnN1bXB0aW9uLiBUaGlzIHdpbGwgYWxsIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBkcml2ZXImIzM5O3MgY2FwYWJpbGl0aWVzIGFuZCBob3cgaXQmIzM5O3MgaW50ZW5kZWQgdG8gYmUgdXNlZC4gVGltZSB0byBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyNTpcdFx0c2VsZWN0IFJFR01BUFxuICAyNjpcdFx0ZGVmYXVsdCB5XG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gV01BQyBvbiBNVDc2MjIgU29DIGRldmljZXNcbiAgMjk6XHRcdCAgd2hpY2ggaGFzIHRoZSBzYW1lIGZlYXR1cmUgc2V0IGFzIGEgTVQ3NjE1LCBidXQgbGltaXRlZCB0b1xuICAzMDpcdFx0ICAyLjQgR0h6IG9ubHkuXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XHRzZWxlY3QgTVQ3NjE1X0NPTU1PTlxuICAzNTpcdFxuICAzNjpcdGNvbmZpZyBNVDc2NjNVXG4gIDM3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2NjNVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMzg6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAzOTpcdFx0c2VsZWN0IE1UNzY2M19VU0JfU0RJT19DT01NT05cbiAgNDA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgNDE6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDQyOlx0XHRoZWxwXG4gIDQzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2NjNVIDgwMi4xMWFjIDJ4MjoyIHdpcmVsZXNzIGRldmljZXMuXG4gIDQ0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MzA3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQ29uc2lkZXJpbmcgV2lyZWxlc3MgQ2hpcHNldHMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHdpcmVsZXNzIGNoaXBzZXRzLCBhbmQgdGhlIGluaXRpYWwgY2FuZGlkYXRlcyBhcmUgYE1UNzZ4MFVgIGFuZCBgTVQ3NjYzVWAuIFRob3NlIGFyZSBnb29kIHN0YXJ0aW5nIHBvaW50cywgZXN0YWJsaXNoZWQgcGVyZm9ybWVycy4gQnV0LCBsZXQmIzM5O3Mgbm90IGp1bXAgdGhlIGd1bi4gV2UgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIG9wdGlvbnMsIGVzcGVjaWFsbHkgd2hlbiB3ZSBhcmUgdGFsa2luZyBhYm91dCB3aXJlbGVzcy4gSXMgYE1UNzkyMVVgIGEgdmlhYmxlIGFsdGVybmF0aXZlIG9yIGFuIG9wdGlvbiB0byBpbmNvcnBvcmF0ZT8gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHdlaWdoIGFsbCBwb3NzaWJpbGl0aWVzIHRvIG1ha2UgYW4gaW5mb3JtZWQgZGVjaXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5MjFVJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZz0xNz1jb25maWcgTVQ3OTIxU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NjU0CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdgIGZpbGU6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc5MjEgS2NvbmZpZyoqCgpPa2F5LCB0aW1lIHRvIGRpc3NlY3QgdGhlIEtjb25maWcgZm9yIHRoZSBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBJIGFscmVhZHkga25vdyB0aGlzIGNoaXA7IGl0JiMzOTtzIE1lZGlhVGVrJiMzOTtzIGxhdGVzdCwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBiZWluZyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gVGhlIEtjb25maWcgZmlsZSBpcyB0aGUga2V5LiBGaXJzdCwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIGBjb25maWdgIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dC4gVGhpcyBpcyB3aGVyZSB0aGUgZGVjaXNpb25zIGFyZSBtYWRlOiB3aWxsIHRoZSBkcml2ZXIgYmUgYnVpbHQtaW4sIG1vZHVsYXJpemVkLCBvciBjb21wbGV0ZWx5IGV4Y2x1ZGVkPyBXaGF0JiMzOTtzIGdvaW5nIHRvIGRldGVybWluZSB0aGlzPyBJJiMzOTtsbCBwcm9iYWJseSBzZWUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHJlc3RyaWN0aW9ucywgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsbHksIHZhcmlvdXMgZmVhdHVyZSBmbGFncyBmb3IgdGhpbmdzIGxpa2UgcG93ZXIgbWFuYWdlbWVudCwgcmVndWxhdG9yeSBkb21haW4gY29uZmlndXJhdGlvbiwgYW5kIG9mZmxvYWQgY2FwYWJpbGl0aWVzLgoKSSBleHBlY3QgdG8gc2VlIGEgY2xlYXIgaGllcmFyY2h5OyBwZXJoYXBzIHNlY3Rpb25zIGRlZmluaW5nIHRoZSBjb3JlIGRyaXZlciBhbmQgdGhlbiBuZXN0ZWQgb3B0aW9ucyBmb3Igc3BlY2lmaWMgZmVhdHVyZXMuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGNydWNpYWw7IEnigJlsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBkcml2ZXIgcmVsaWVzIG9uIGFueSBvdGhlciBtb2R1bGVzIG9yIHByZS1yZXF1aXNpdGVzLiBBcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIE1lZGlhVGVrIGRyaXZlcnMgb3IgY29yZSB3aXJlbGVzcyBpbmZyYXN0cnVjdHVyZSByZXF1aXJlbWVudHM/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhvc2UgZGVwZW5kZW5jaWVzIG9uIHRoZSBvdmVyYWxsIHN5c3RlbSBjb25maWd1cmF0aW9uPyBBcmUgdGhlcmUgYW55IG1vZHVsZSBkZXBlbmRlbmNpZXMsIGFuZCBpZiBzbywgd2hhdCBhcmUgdGhleT8KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgKGUuZy4sIGBpZmAsIGBzZWxlY3RgLCBgZGVwZW5kcyBvbmApLiBUaGVzZSB3aWxsIHNob3cgbWUgaG93IHRoZSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgaW50ZXJhY3QuIEnigJlsbCBiZSB3YXRjaGluZyBmb3IgYW55IGBkZWZhdWx0YCB2YWx1ZXMg4oCTIHRoZXkgcmV2ZWFsIHRoZSBrZXJuZWwgZGV2ZWxvcGVycyYjMzk7IGludGVuZGVkIGNvbmZpZ3VyYXRpb25zLCBzbyBJJiMzOTtsbCBiZSBwYXlpbmcgY2FyZWZ1bCBhdHRlbnRpb24gdG8gdGhlc2UuIEnigJlsbCBhbHNvIGJlIHNlYXJjaGluZyBmb3IgYW55IGBib29sYCwgYHRyaXN0YXRlYCwgb3IgYGludGAgdmFyaWFibGVzLiBUaGVzZSBhcmUgdGhlIG1haW4gc2V0dGluZ3MsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZWFjaCBvbmUgYWZmZWN0cyB0aGUgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcgcHJvY2VzcywgYXMgd2VsbCBhcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZmluYWwgZHJpdmVyLiBGaW5hbGx5LCBJ4oCZbGwgYmUgY2hlY2tpbmcgb3V0IHRoZSAmIzM5O2hlbHAmIzM5OyB0ZXh0LiBJdCYjMzk7cyB0aGUgbW9zdCB2YWx1YWJsZSB0aGluZywgdG8gZXhwbGFpbiB0aGUgc2V0dGluZ3MgaW4gY29udGV4dCBhbmQgZ3VpZGUgdXNlcnMgaW4gdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyNTpcdFxuICAyNjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBNVDc5MjFVXG4gIDI5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMzA6XHRcdHNlbGVjdCBNVDc5MnhfVVNCXG4gIDMxOlx0XHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxuICAzMjpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAzMzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxuICAzNjpcdFxuICAzNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzM3MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIHRoZSBXTEFOIERyaXZlciBMYW5kc2NhcGUqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBnZXQgdGhpcyB3aXJlbGVzcyBpbnRlcmZhY2Ugd29ya2luZy4gVGhlIGNvcmUgY29tcG9uZW50cywgYXMgdXN1YWwsIGFyZSB0aGUgYE1BQzgwMjExYCBmcmFtZXdvcmsgYW5kIHRoZSBgVVNCYCBzdWJzeXN0ZW0sIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBVU0IgZG9uZ2xlLiBCYXNlZCBvbiB0aGUgZG9jdW1lbnRhdGlvbiwgSSYjMzk7bSBwcmV0dHkgc3VyZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBkcml2ZXJzIGZvciBNZWRpYVRlayBjaGlwc2V0cy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGBNVDc2eDBVYCwgYE1UNzY2M1VgLCBhbmQgYE1UNzkyMVVgLiBJdCYjMzk7cyBhIGJpdCBvZiBhIHN0YW5kYXJkIHNldC4KCkhhbmcgb24gYSBtaW51dGUuLi4gSSBuZWVkIHRvIGJlIGNhcmVmdWwuIFRoZSBkZXBlbmRlbmN5IHRyZWUgaXMgaW1wb3J0YW50LiBMb29raW5nIGNsb3NlciwgaXQgYXBwZWFycyB0aGF0IGBNVDc2X0NPUkVgIGlzIGFjdHVhbGx5IGEgZnVuZGFtZW50YWwgY29tcG9uZW50IHNlbGVjdGVkIGJ5IHRoZXNlIHNwZWNpZmljIE1lZGlhVGVrIGRyaXZlcnMuIEkga25ldyBJIGhhZCB0byBjaGVjayBiYWNrIG9uIHRoYXQuIEl0IHdpbGwgYmUgdGhlIGJhc2UgZm9yIGFsbCBvZiB0aGVtLiBHb29kIGNhdGNoLiBBbmQgaXQgYWxzbyBtZWFucyB0aGF0IHRoZSByaWdodCB0aGluZyB3aWxsIGRlcGVuZCBvbiB0aGUgY29ycmVjdCBzZWxlY3Rpb24uCgpOb3csIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSByZWxldmFudCBvcHRpb25zLCBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGBNVDc2eDJVYCBkcml2ZXIsIGp1c3QgaW4gY2FzZSB0aGVyZSYjMzk7cyBzb21ldGhpbmcgcmVsZXZhbnQgdGhlcmUgSSYjMzk7bSBvdmVybG9va2luZywgb3Igc29tZXRoaW5nIEkgY2FuIGxldmVyYWdlIGR1cmluZyB0aGUgY29uZmlndXJhdGlvbi4gWW91IGFsd2F5cyBuZWVkIHRvIGRvdWJsZS1jaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzZ4MlUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnPTY9Y29uZmlnIE1UNzZ4MkVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoxODpjb25maWcgTVQ3NngyVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MlUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzkyMQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgTVQ3OTI1VWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIFRoZSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYE1UNzkyNVVgLiBUaGlzIGxpa2VseSByZWZlcnMgdG8gYSBzcGVjaWZpYyBjb21wb25lbnQgb3Igc3lzdGVtLCBhbmQgbXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gZXN0YWJsaXNoIGNvbnRleHQuIElzIHRoaXMgYSBjaGlwLCBhIGRyaXZlciwgYSBmaXJtd2FyZSB2ZXJzaW9uLCBhIHNwZWNpZmljIG1vZHVsZSB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIHNwZWNpZmljaXR5IG9mIHRoZSBpZGVudGlmaWVyIHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHJlbGF0aXZlbHkgd2VsbC1kZWZpbmVkLCBub3QgYSBnZW5lcmFsIGNvbmNlcHQuIFRoZSAmIzM0O01UJiMzNDsgcHJlZml4IHVzdWFsbHkgcG9pbnRzIHRvIGEgTWVkaWFUZWsgcGFydCwgd2hpY2ggaGVscHMgbmFycm93IGRvd24gdGhlIHBvc3NpYmlsaXRpZXMuIFRoZSAmIzM0Ozc5MjVVJiMzNDsgdGhlbiByZXByZXNlbnRzIHNvbWUgdW5pcXVlIG1vZGVsIG9yIHJldmlzaW9uIHdpdGhpbiB0aGUgTWVkaWFUZWsgZWNvc3lzdGVtLiBNeSBuZXh0IHN0ZXBzIHdvdWxkIGJlIHRvIHN0YXJ0IGdhdGhlcmluZyBpbmZvcm1hdGlvbjogY3Jvc3MtcmVmZXJlbmNlIGl0IHdpdGgga25vd24gZGF0YWJhc2VzIG9mIE1lZGlhdGVrIGNvbXBvbmVudHMsIHNlYXJjaCBpbnRlcm5hbCBkb2N1bWVudGF0aW9uLCBsb29rIGZvciBtZW50aW9ucyBpbiBoYXJkd2FyZSByZXZpZXdzIG9yIGRhdGFzaGVldHMsIGNoZWNrIHJlbGV2YW50IGJ1ZyByZXBvcnRzIG9yIGVycmF0YSBzaGVldHMgaWYgYXZhaWxhYmxlLCBvciBldmVuIGNoZWNrIG15IG5vdGVzIGFuZCBrbm93bGVkZ2UgYmFzZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBUaGUgZ29hbCBpcyB0byByYXBpZGx5IGRldGVybWluZSB0aGUgZnVuY3Rpb24gYW5kIHNpZ25pZmljYW5jZSBvZiB0aGlzIGl0ZW0gaW4gdGhlIGxhcmdlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1VSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc9Nz1jb25maWcgTVQ3OTI1RVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MzY5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzY2M1VgLCBgTVQ3OTIxVWAsIGFuZCBgTVQ3OTI1VWAuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzdXBwb3J0ZWQgaGFyZHdhcmUuIEkgYWxzbyBzZWUgYE1BQzgwMjExYCBhbmQgYFVTQmAsIHNvIGl0JiMzOTtzIGEgd2lyZWxlc3MgZHJpdmVyIHdpdGggYSBVU0IgaW50ZXJmYWNlLCBvcGVyYXRpbmcgd2l0aGluIHRoZSBNQUM4MDIxMSBmcmFtZXdvcmssIHdoaWNoIGlzIHdoYXQgSSB3b3VsZCBleHBlY3QuIE5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGUgaXNzdWUgYnkgYW5hbHl6aW5nIHN5bWJvbHMgdG8gZGV0ZXJtaW5lIHRoZSBjb2RlIHBhdGggb2YgaW50ZXJlc3QuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoaXMgbW9kaWZpZWQgZnVuY3Rpb24sIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYC4gRmlyc3QsIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgZnVuY3Rpb24gaXMgc3RhdGljIG9yIGV4cG9ydGVkLiBBaCwgaXQmIzM5O3MgZXhwb3J0ZWQsIHNvIGl0JiMzOTtzIGFjY2Vzc2libGUgZnJvbSBvdXRzaWRlIGl0cyBkZWZpbmluZyBjb21waWxhdGlvbiB1bml0LiBUaGF04oCZcyBnb29kIHRvIGtub3cuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgLiBJIGtub3cgaXQgd2lsbCBiZSBsb2NhdGVkIHdpdGhpbiB0aGUgTWVkaWF0ZWsgZHJpdmVyIGNvZGUuIFRoZSBwYXRoIGlzOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jYC4gTGV0JiMzOTtzIHRha2UgYSBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTIwOlx0XG4gMTIxOlx0aW50XG4gMTIyOlx0bXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbiAxMjM6XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4gMTI0Olx0e1xuIDEyNTpcdFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKXNrYi1cdTAwM2VkYXRhO1xuIDEyNjpcdFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpO1xuIDEyNzpcdFx0c3RydWN0IG10NzZfdHhfY2IgKmNiID0gbXQ3Nl90eF9za2JfY2Ioc2tiKTtcbiAxMjg6XHRcdGludCBwaWQ7XG4gMTI5Olx0XG4gMTMwOlx0XHRtZW1zZXQoY2IsIDAsIHNpemVvZigqY2IpKTtcbiAxMzE6XHRcbiAxMzI6XHRcdGlmICghd2NpZClcbiAxMzM6XHRcdFx0cmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7XG4gMTM0Olx0XG4gMTM1Olx0XHRpZiAoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9OT19BQ0spXG4gMTM2Olx0XHRcdHJldHVybiBNVF9QQUNLRVRfSURfTk9fQUNLO1xuIDEzNzpcdFxuIDEzODpcdFx0aWYgKCEoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgKElFRUU4MDIxMV9UWF9DVExfUkVRX1RYX1NUQVRVUyB8XG4gMTM5Olx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RMX1JBVEVfQ1RSTF9QUk9CRSkpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjE1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGFja2V0IFRyYW5zbWlzc2lvbiBTdGF0dXMgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7dmUgcGlucG9pbnRlZCBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgYXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUuIEl0JiMzOTtzIHRoZSBvbmUgSSBuZWVkIHRvIGV4YW1pbmUuIFRoZSBiZWF1dHkgb2YgdGhpcyBpcyB0aGF0IGl0JiMzOTtzIGNhbGxlZCBieSBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYC4gVGhpcyBpcyBwZXJmZWN0IOKAkyB0aGVzZSBhY3QgbGlrZSBmb2N1cyBzeW1ib2xzLCB3aGljaCBtZWFucyBteSBpbnZlc3RpZ2F0aW9uIHdpbGwgYmUgbXVjaCBtb3JlIHRhcmdldGVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVzZSBjYWxsIHNpdGVzIGFyZSBzdGF0aWMgb3IgZXhwb3J0ZWQuIFRoYXQgd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IHRoZWlyIHBvdGVudGlhbCBzY29wZSBhbmQgdmlzaWJpbGl0eSB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2eDAydV90eF9wcmVwYXJlX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTIxMz1zdGF0aWMgaW50IG10NzZ4MHVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyMS1cdFx0LnNldF9jaGFubmVsID0gbXQ3NngwX3NldF9jaGFubmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjIyOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2eDAydV90eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyMy1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZ4MDJ1X3R4X2NvbXBsZXRlX3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmg9MTc9aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaDoxODppbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYi5oLTE5LVx0XHRcdCAgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYz00Nj1pbnQgbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGludCBwb3J0LCB1MzIgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzo2NDppbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjUtXHRcdFx0ICAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTExNi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzoxMTc6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMnVfdHhfcHJlcGFyZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtMTE4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jPTMyPXN0YXRpYyBpbnQgbXQ3NngydV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy00MC1cdFx0LnNldF9jaGFubmVsID0gbXQ3NngydV9zZXRfY2hhbm5lbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jOjQxOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2eDAydV90eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQyLVx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3NngwMnVfdHhfY29tcGxldGVfc2tiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQ4MAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBUWCBTS0IgUHJlcGFyYXRpb24gTGFuZHNjYXBlKioKClJpZ2h0LCBzbyBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgIGlzIGV4cG9zZWQsIHRoYXQmIzM5O3MgZ29vZC4gSXQgY29uZmlybXMgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIG9mIHRoYXQgcGFydGljdWxhciBwcmVwYXJhdGlvbiBmdW5jdGlvbi4gQnV0LCBub3cgdGhhdCBJIGhhdmUgdGhpcyBpbiBtaW5kLCBhbmQgdGhhdCBJIGFtIHRoaW5raW5nIGFib3V0IHRoaXMgZmFtaWx5IG9mIGRyaXZlcnMsIHdoYXQgYWJvdXQgdGhlIFNESU8gdmVyc2lvbiBvZiB0aGF0PyBMZXQgbWUgdGhpbmvigKYgdGhlIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIGZ1bmN0aW9uIGlzIHdoYXQgSSBuZWVkIHRvIGxvb2sgYXQgbmV4dC4gV2hhdCBhcmUgdGhlIGRpZmZlcmVuY2VzIHRoZXJlPyBEb2VzIGl0IGRpZmZlciBiYXNlZCBvbiB0aGUgaW50ZXJmYWNlLCBvciBpcyB0aGVyZSBzb21lIG1vcmUgZ2VuZXJhbCBmdW5jdGlvbj8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgZHJpdmVyIGFyY2hpdGVjdHVyZSwgYW5kIHBvc3NpYmxlIGNvbW1vbiBjb2RlIGJldHdlZW4gdGhlc2UsIHBhcnRpY3VsYXJseSBpbiBsaWdodCBvZiBzb21lIG9mIHRoZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2Ugb3IgaGFyZHdhcmUgZGlmZmVyZW5jZXMgaW5oZXJlbnQgYmV0d2VlbiBVU0IgYW5kIFNESU8gaW1wbGVtZW50YXRpb25zPyBJIG5lZWQgdG8gZ28gZGVlcGVyIG5vdyB0aGF0IHRoaXMgaGFzIGVtZXJnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTU0MD12b2lkIG10NzYyMl90cmlnZ2VyX2hpZl9pbnQoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgYm9vbCBlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTQyLS8qIHVzYiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6NTQzOmludCBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0NC1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYz03Nj1zdGF0aWMgaW50IG10NzY2M3NfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtODEtXHRcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzo4MjpcdFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTgzLVx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0xMTI9c3RhdGljIGludCBtdDc2NjN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTctXHRcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUiB8IE1UX0RSVl9IV19NR01UX1RYUSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExODpcdFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTE5LVx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jPTE3OT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxODE6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xODItXHRcdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIyNC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjIyNTpFWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNzY5CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBVU0IvU0RJTyBUWCBQcmVwYXJhdGlvbiBpbiBNZWRpYXRlayBXaUZpIERyaXZlcnMqKgoKSG1tLCBzbyBgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBpcyBhbiBleHBvcnRlZCBmdW5jdGlvbiwgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIGNsZWFybHkgYSBrZXkgcGFydCBvZiB0aGUgdHJhbnNtaXQgcGF0aCwgaGFuZGxpbmcgdGhlIFNlcnZpY2UgUmVxdWVzdCBCbG9jayAoU0tCKSBwcmVwYXJhdGlvbiwgd2hpY2ggaXMgZnVuZGFtZW50YWwgZm9yIG1vdmluZyBkYXRhIHBhY2tldHMgb3ZlciBVU0Igb3IgU0RJTyBpbiB0aGF0IHBhcnRpY3VsYXIgTWVkaWF0ZWsgY2hpcHNldC4gQnV0LCBpdCBnb3QgbWUgd29uZGVyaW5nLCBpcyB0aGVyZSBhbHNvIGBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGZvciB0aGUgbmV3ZXIgYG10NzkyMWAgY2hpcHNldD8gR2l2ZW4gTWVkaWF0ZWsmIzM5O3MgdHlwaWNhbCBkcml2ZXIgc3RydWN0dXJlLCBhbmQgdGhlIGV2b2x1dGlvbiBvZiB0aGVpciBoYXJkd2FyZSwgSSYjMzk7ZCBleHBlY3QgdGhlcmUgdG8gYmUgYSBkZWRpY2F0ZWQgZnVuY3Rpb24sIGxpa2VseSBzaGFyaW5nIHNpbWlsYXIgY29uY2VwdHMsIGJ1dCBvcHRpbWl6ZWQgZm9yIHRoZSBuZXcgaGFyZHdhcmUgZ2VuZXJhdGlvbi4gSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlYmFzZSB0byBzZWUgaG93IHRoZXkmIzM5O3ZlIGhhbmRsZWQgdGhhdCwgYmVjYXVzZSBpZiBpdCBkb2VzbiYjMzk7dCBleGlzdCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIHNoYXJpbmcgdGhlIHNhbWUgY29kZS4gSXQgd291bGQgYmUgZ29vZCB0byB1bmRlcnN0YW5kIGlmIGl04oCZcyBhIGRpcmVjdCBwb3J0IHdpdGggbWlub3IgdHdlYWtzLCBhIGNvbXBsZXRlbHkgcmVkZXNpZ25lZCBmdW5jdGlvbiwgb3Igc29tZXRoaW5nIGluLWJldHdlZW4uIFRoZSBzcGVjaWZpY3Mgd2lsbCBoYXZlIGltcGxpY2F0aW9ucyBvbiBwZXJmb3JtYW5jZSwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIGFueSBwb3RlbnRpYWwgYnVnIGZpeGVzLiBUaGlzIGlzIGEgY3JpdGljYWwgYXJlYSBmb3IgZWZmaWNpZW50IGFuZCByb2J1c3Qgd2lyZWxlc3MgZGF0YSB0cmFuc2ZlciwgYW5kIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyBNZWRpYXRlayBpcyBtYW5hZ2luZyB0aGUgcGFja2V0IGhhbmRsaW5nIG9uIHRoZSBuZXdlciBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NzY0PW10NzkyMV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6Nzc2OmludCBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3Ny1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MjI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaD0zMjY9aW50IG10NzkyMV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg6MzI4OmludCBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oLTMyOS1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz05MD1zdGF0aWMgaW50IG10NzkyMXNfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtOTgtXHRcdFx0XHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYzo5OTpcdFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTEwMC1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTU5LVx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNjA6XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE2MS1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMTI3CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBPdmVyc2lnaHQgaW4gVVNCL1NESU8gRHJpdmVyIEhhbmRsaW5nKioKCkFscmlnaHQsIHNvIEkgc2VlIHRoYXQgYG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAgaXMgZXhwb3NlZCBhcyBhbiBleHBvcnRlZCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBnb29kLCB0aGF0IHN1Z2dlc3RzIHNvbWUgZGVncmVlIG9mLCBwcm9iYWJseSwgYnJvYWRlciBzdXBwb3J0IG9yIHV0aWxpemF0aW9uIGJleW9uZCB0aGUgaW1tZWRpYXRlIGNvbnRleHQgb2YgdGhlIG10NzkyMS4gTm93LCBhIHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkLCB0aG91Z2gsIGFuZCBpdCYjMzk7cyBhIGNyaXRpY2FsIG9uZSBpZiB3ZSBhcmUgY29uc2lkZXJpbmcgdGhlIGRlc2lnbiBwcmluY2lwbGVzLiBXaGF0IGFib3V0IGl0cyBwcmVkZWNlc3Nvciwgb3IgYSByZWxhdGVkIGZ1bmN0aW9uLCBpbiB0aGUgYG10NzkyNWAgY29kZWJhc2U/IFdhcyB0aGVyZSBhIHNpbWlsYXIgZnVuY3Rpb24sIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgPyBJZiBzbywgaXMgaXQgaGFuZGxlZCBjb3JyZWN0bHksIGFuZCBpcyB0aGUgaW1wbGVtZW50YXRpb24gYW5kIGludGVyZmFjZSBjb3JyZWN0PyBJcyB0aGUgbG9naWMgY29uc2lzdGVudCBhY3Jvc3MgdGhlIHJlbGV2YW50IHZlcnNpb25zIG9mIHRoZSBjb2RlPyBUaGlzIG1lcml0cyBkZWVwZXIgaW52ZXN0aWdhdGlvbiBiZWNhdXNlIGEgcG90ZW50aWFsIGxhY2sgb2Ygc3ltbWV0cnkgaGVyZSBjb3VsZCBpbmRpY2F0ZSBhIGJ1ZywgYW4gb3ZlcnNpZ2h0LCBvciBhbiBpbmNvbXBsZXRlIHBvcnQuIEluIGFueSBjYXNlLCBpdCBzdWdnZXN0cyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBtdDc5MjVgIGNvZGUgYW5kIGNoZWNrIHRoZSBzdGF0ZSBvZiB0aGluZ3MgdGhlcmUuIENvbnNpc3RlbmN5IGlzIGtleSB3aGVuIGRlYWxpbmcgd2l0aCB0aGVzZSBzb3J0cyBvZiBsb3ctbGV2ZWwgZHJpdmVyIGNvbXBvbmVudHMuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGEgY29tbW9uLCBvciBhdCBsZWFzdCBoaWdobHkgcmVsYXRlZCwgZnVuY3Rpb24gc2hvdWxkIGFsc28gaGF2ZSBiZWVuIGltcGxlbWVudGVkIG9uIGEgc2ltaWxhciBiYXNpcywgZXZlbiBpZiBqdXN0IGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjE9bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMzppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjM0LVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY3Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjc4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM2OT1pbnQgbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNzE6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzcyLVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU5LVx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjA6XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2MS1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0Mjc5CgkJCQkJCQlvdXRwdXQ6IDI5OAoJCQkJCQkJdGhvdWdodHM6IDk2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgUHJvcG9zZWQgUGF0Y2ggYW5kIEl0cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCYjMzk7cyBhY2Nlc3NpYmxlLiBUaGF0IGltbWVkaWF0ZWx5IG5hcnJvd3MgdGhlIGZvY3VzIHRvIHRoZSBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgZnVuY3Rpb24sIGFuZCBpdHMgcmVsYXRlZCBgKnR4X3ByZXBhcmVfc2tiYCBmdW5jdGlvbnMgZm9yIHRoZSBVU0IvU0RJTyBkcml2ZXJzOiBgbXQ3NngwMnVgLCBgbXQ3NjYzX3VzYl9zZGlvYCwgYG10NzkyMV91c2Jfc2Rpb2AsIGFuZCBgbXQ3OTI1X3VzYl9zZGlvYC4gVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHdhdGNoLgoKVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHNlZW0gdG8gYmU6IGBNQUM4MDIxMWAsIGBVU0JgLCBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzY2M1VgLCBgTVQ3OTIxVWAsIGFuZCBgTVQ3OTI1VWAuIEEgYml0IG9mIGhvdXNla2VlcGluZyBoZXJlIGVuc3VyZXMgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuCgpOb3csIGEgY3J1Y2lhbCBwb2ludDogSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBjYWxsIHNpdGVzIGZvciBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAsIG5vdCBqdXN0IHRoZSBVU0IvU0RJTyBvbmVzLiBJIHNlZSB0aGF0IGl0IGlzIGFsc28gY2FsbGVkIGJ5IFBDSWUgZHJpdmVyczogYG10NzYwM190eF9wcmVwYXJlX3NrYmAsIGBtdDc2MTVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTE1X3R4X3ByZXBhcmVfc2tiYCwgYG10NzkyMWVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTI1ZV90eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTk2X3R4X3ByZXBhcmVfc2tiYC4gQnV0LCBzaW5jZSBTeXprYWxsZXIgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgTWVkaWFUZWsgUENJZSBkZXZpY2VzLCB0aG9zZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuIEhvd2V2ZXIsIHRoZSBVU0IgcGF0aHMgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIHRocm91Z2ggYGR1bW15X2hjZGAuCgpTbywgdGhlIGZ1enppbmcgaXMgZGVmaW5pdGVseSB2aWFibGUgYW5kIHdpbGwgYmUgd29ydGh3aGlsZS4KCkkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIGBNVDc2X0NPUkVgIGlzIGEgbXVzdCwgd2hpY2ggaXMgYSBnaXZlbi4gYE1UNzZfVVNCYCBpcyBzZWxlY3RlZCBieSBgTVQ3NjYzVWAuIGBNVDc2eDAyX1VTQmAgaXMgc2VsZWN0ZWQgYnkgYE1UNzZ4MFVgIGFuZCBgTVQ3NngyVWAsIGFuZCBgTVQ3OTJ4X1VTQmAgaXMgc2VsZWN0ZWQgYnkgYE1UNzkyMVVgIGFuZCBgTVQ3OTI1VWAuIFRoYXQgc2hvdWxkIGNvdmVyIGl0LiBMaXN0aW5nIHRoZSBsZWFmIGNvbmZpZ3MgaXMgc3VmZmljaWVudC4KCk5vdywgbGV0JiMzOTtzIGV4YW1pbmUgdGhlIHBhdGNoIGl0c2VsZi4KCmBgYGMKLQlpZiAoIXdjaWQgfHwgIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtJmd0O3djaWRbd2NpZC0mZ3Q7aWR4XSkpCiYjNDM7CWlmICghd2NpZCkKIAkJcmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7CiBgYGAKCmFuZAoKYGBgYwogCXNwaW5fbG9ja19iaCgmYW1wO2Rldi0mZ3Q7c3RhdHVzX2xvY2spOwogCiYjNDM7CWlmIChyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LSZndDt3Y2lkW3djaWQtJmd0O2lkeF0pICE9IHdjaWQpIHsKJiM0MzsJCXBpZCA9IE1UX1BBQ0tFVF9JRF9OT19BQ0s7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwogCXBpZCA9IGlkcl9hbGxvYygmYW1wO3djaWQtJmd0O3BrdGlkLCBza2IsIE1UX1BBQ0tFVF9JRF9GSVJTVCwKIGBgYAoKQWgsIGl0JiMzOTtzIGEgY3JpdGljYWwgZml4LiBJdCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgd2NpZGAgKHdpcmVsZXNzIGNvbnRleHQgSUQpIGNvdWxkIGJlIGZyZWVkIG9yIHJlcGxhY2VkIGJldHdlZW4gdGhlIGluaXRpYWwgY2hlY2sgYW5kIGl0cyB1c2UgaW4gYGlkcl9hbGxvY2AuICBUaGUgb3JpZ2luYWwgY2hlY2sgd2FzIHZ1bG5lcmFibGUgYmVjYXVzZSBgcmN1X2FjY2Vzc19wb2ludGVyYCBpcyBub3Qgc2FmZSB0byB1c2Ugb3V0c2lkZSB0aGUgcmN1IHJlYWQgbG9jay4gVGhlIGZpeCBtb3ZlcyB0aGUgY2hlY2sgaW5zaWRlIHRoZSBzcGlubG9jayB0byBlbnN1cmUgYXRvbWljaXR5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbXQ3NiBkcml2ZXIuIEJlY2F1c2UgaXQgaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIFVTQiBkcml2ZXIsIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSBjYW4gZnV6ei4KCioqU3VtbWFyeToqKiBUaGlzIHBhdGNoLCB3aGljaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBtdDc2IGRyaXZlciByZWxhdGVkIHRvIHdpcmVsZXNzIGNvbnRleHQgSURzICh3Y2lkKSwgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSBVU0IgZHJpdmVyIHZhcmlhbnRzIG9mIHRoZSBtdDc2IGRyaXZlci4gVGhlIGltcG9ydGFudCBmb2N1cyBzeW1ib2xzIGFyZSB0aGUgZnVuY3Rpb25zIEkgbGlzdGVkIGJlZm9yZS4gVGhlIGNvbmZpZ3VyYXRpb25zIG5lZWRlZCBhcmUgdGhlIG9uZXMgSSBtZW50aW9uZWQuIEkgd2lsbCBmdXp6IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzY2M1UmIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjVVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3Nl90eF9zdGF0dXNfc2tiX2FkZCYjMzQ7LAogICAgJiMzNDttdDc2eDAydV90eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgaW4gdGhlIE1lZGlhVGVrIG10NzYgd2lyZWxlc3MgZHJpdmVyIHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uIGJ5IG1vdmluZyB0aGUgYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgaW5zaWRlIHRoZSBgc3RhdHVzX2xvY2tgIHNwaW5sb2NrLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhyb3VnaCB0aGUgVVNCIHZhcmlhbnRzIG9mIHRoZSBtdDc2IGRyaXZlciAoZS5nLiwgbXQ3NngwdSwgbXQ3NjYzdSwgbXQ3OTIxdSwgbXQ3OTI1dSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzY2M1UmIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjVVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3Nl90eF9zdGF0dXNfc2tiX2FkZCYjMzQ7LAogICAgJiMzNDttdDc2eDAydV90eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgaW4gdGhlIE1lZGlhVGVrIG10NzYgd2lyZWxlc3MgZHJpdmVyIHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uIGJ5IG1vdmluZyB0aGUgYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgaW5zaWRlIHRoZSBgc3RhdHVzX2xvY2tgIHNwaW5sb2NrLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhyb3VnaCB0aGUgVVNCIHZhcmlhbnRzIG9mIHRoZSBtdDc2IGRyaXZlciAoZS5nLiwgbXQ3NngwdSwgbXQ3NjYzdSwgbXQ3OTIxdSwgbXQ3OTI1dSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGluIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBieSBtb3ZpbmcgdGhlIHZhbGlkYXRpb24gb2YgYHdjaWRgIGluc2lkZSB0aGUgYHN0YXR1c19sb2NrYCBzcGlubG9jayBhbmQgZW5zdXJpbmcgaXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgcG9pbnRlci4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGJ1Z3MgY2F1c2VkIGJ5IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyB0byB0aGUgYGRldi1cdTAwM2V3Y2lkYCBhcnJheS4gU3VjaCBjb25jdXJyZW5jeSBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBwYWRkaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgd2hpY2ggYXJlIHRoZSBzcGVjaWZpYyB0YXJnZXRzIG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzNTBiYWY4NzM4N2IyNzhhNTQ4MTk3YTgxNWU2MGNhMjE2MDFhNzhiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTM6MzE6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMKaW5kZXggMzcwN2VlMTllNGFlNy4uMGY3NGQ4MDhkMzI4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYwpAQCAtMTI5LDcgJiM0MzsxMjksNyBAQCBtdDc2X3R4X3N0YXR1c19za2JfYWRkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLAogCiAJbWVtc2V0KGNiLCAwLCBzaXplb2YoKmNiKSk7CiAKLQlpZiAoIXdjaWQgfHwgIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtJmd0O3djaWRbd2NpZC0mZ3Q7aWR4XSkpCiYjNDM7CWlmICghd2NpZCkKIAkJcmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7CiAKIAlpZiAoaW5mby0mZ3Q7ZmxhZ3MgJmFtcDsgSUVFRTgwMjExX1RYX0NUTF9OT19BQ0spCkBAIC0xNDcsNiAmIzQzOzE0NywxMSBAQCBtdDc2X3R4X3N0YXR1c19za2JfYWRkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLAogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7ZGV2LSZndDtzdGF0dXNfbG9jayk7CiAKJiM0MzsJaWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtJmd0O3djaWRbd2NpZC0mZ3Q7aWR4XSkgIT0gd2NpZCkgewomIzQzOwkJcGlkID0gTVRfUEFDS0VUX0lEX05PX0FDSzsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiYjNDM7CiAJcGlkID0gaWRyX2FsbG9jKCZhbXA7d2NpZC0mZ3Q7cGt0aWQsIHNrYiwgTVRfUEFDS0VUX0lEX0ZJUlNULAogCQkJTVRfUEFDS0VUX0lEX01BU0ssIEdGUF9BVE9NSUMpOwogCWlmIChwaWQgJmx0OyAwKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjE0CgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDU2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDb25jdXJyZW5jeSBGaXggaW4gbXQ3NiBEcml2ZXIqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSB3aXRoaW4gdGhlIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBmdW5jdGlvbiBpbiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGEgY3JpdGljYWwgbG9ja2luZyBmaXggcmVsYXRlZCB0byBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFdpLUZpIENvbm5lY3Rpb24gSURzLCBvciBgd2NpZGBzLgoKVGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgY2hlY2ssIGAhcmN1X2FjY2Vzc19wb2ludGVyKGRldi0mZ3Q7d2NpZFt3Y2lkLSZndDtpZHhdKWAsIGVhcmx5IGluIHRoZSBmdW5jdGlvbi4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgY2hlY2sgd2FzIG1lYW50IHRvIHByZXZlbnQgdXNpbmcgYSBgd2NpZGAgdGhhdCBoYWQgYWxyZWFkeSBiZWVuIGZyZWVkIG9yIHdhcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyByZXBsYWNlZC4gSG93ZXZlciwgdGhlIHBhdGNoIGhhcyBpZGVudGlmaWVkIGEgcmFjZSBjb25kaXRpb24uIEl0JiMzOTtzIG5vdyBjaGVja2luZyBpZiB0aGUgYHdjaWRgIGlzIHN0aWxsIHZhbGlkICp1bmRlciogdGhlIGBzdGF0dXNfbG9ja2AuICBUaGUga2V5IGNoYW5nZSBtb3ZlcyB0aGUgY2hlY2sgYHJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtJmd0O3djaWRbd2NpZC0mZ3Q7aWR4XSkgIT0gd2NpZGAgaW5zaWRlIGEgYHNwaW5fbG9ja19iaGAgY3JpdGljYWwgc2VjdGlvbi4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGB3Y2lkYCBpc24mIzM5O3QgZnJlZWQgb3IgY2hhbmdlZCBiZXR3ZWVuIHRoZSB2YWxpZGl0eSBjaGVjayBhbmQgdGhlIGBpZHJfYWxsb2NgIGNhbGwsIHdoaWNoIGlzIHdoZXJlIHRoZSBwb3RlbnRpYWwgZm9yIGEgdXNlLWFmdGVyLWZyZWUgb3IgYSByZWxhdGVkIHJhY2UgY29uZGl0aW9uIGV4aXN0ZWQuCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhIHRleHRib29rIGV4YW1wbGUgb2YgYSBsb2NraW5nIGJ1ZyBmaXguIFRoZSBvcmlnaW5hbCBjaGVjayB3YXNuJiMzOTt0IHN1ZmZpY2llbnRseSBzeW5jaHJvbml6ZWQgd2l0aCBwb3RlbnRpYWwgY2hhbmdlcyB0byB0aGUgYHdjaWRgIGRhdGEgc3RydWN0dXJlLiBNb3ZpbmcgdGhlIGNoZWNrIHVuZGVyIHRoZSBgc3RhdHVzX2xvY2tgIGNvcnJlY3RseSBzZXJpYWxpemVzIGFjY2VzcywgcHJvdGVjdGluZyBhZ2FpbnN0IHRoZSByYWNlLiBUaGlzIHNvcnQgb2YgYnVnIHdvdWxkIGxpa2VseSBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igb3RoZXIgbWVtb3J5IHNhZmV0eSB0b29scy4gSXQgZG9lcyBub3QgYXBwZWFyIHRvIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgYW55IGtpbmQgb2YgaW5mb3JtYXRpb24gbGVhay4KCkkmIzM5O20gY29uZmlkZW50IGluIGNhbGxpbmcgdGhpcyBhIHN0cmFpZ2h0IHJhY2UgY29uZGl0aW9uIGZpeCwgc3RyaWN0bHkgcmVsYXRlZCB0byBjb25jdXJyZW50IGFjY2Vzcy4gTm8gbmVlZCB0byBmbGFnIGl0IGFzIEtNU0FOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgYnkgbW92aW5nIHRoZSB2YWxpZGF0aW9uIG9mIGB3Y2lkYCBpbnNpZGUgdGhlIGBzdGF0dXNfbG9ja2Agc3BpbmxvY2sgYW5kIGVuc3VyaW5nIGl0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHBvaW50ZXIuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBidWdzIGNhdXNlZCBieSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGBkZXYtXHUwMDNld2NpZGAgYXJyYXkuIFN1Y2ggY29uY3VycmVuY3kgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgcGFkZGluZyBzZW50IHRvIHVzZXIgc3BhY2UsIHdoaWNoIGFyZSB0aGUgc3BlY2lmaWMgdGFyZ2V0cyBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGluIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBieSBtb3ZpbmcgdGhlIHZhbGlkYXRpb24gb2YgYHdjaWRgIGluc2lkZSB0aGUgYHN0YXR1c19sb2NrYCBzcGlubG9jayBhbmQgZW5zdXJpbmcgaXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgcG9pbnRlci4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGJ1Z3MgY2F1c2VkIGJ5IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyB0byB0aGUgYGRldi1cdTAwM2V3Y2lkYCBhcnJheS4gU3VjaCBjb25jdXJyZW5jeSBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBwYWRkaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgd2hpY2ggYXJlIHRoZSBzcGVjaWZpYyB0YXJnZXRzIG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTowOS4yNDA2NTMzMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDk5NTgxMDAxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc2NjNVXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl90eF9zdGF0dXNfc2tiX2FkZFwiLFxuICAgIFwibXQ3NngwMnVfdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGluIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBieSBtb3ZpbmcgdGhlIHZhbGlkYXRpb24gb2YgYHdjaWRgIGluc2lkZSB0aGUgYHN0YXR1c19sb2NrYCBzcGlubG9jayBhbmQgZW5zdXJpbmcgaXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgcG9pbnRlci4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGJ1Z3MgY2F1c2VkIGJ5IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyB0byB0aGUgYGRldi1cXHUwMDNld2NpZGAgYXJyYXkuIFN1Y2ggY29uY3VycmVuY3kgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgcGFkZGluZyBzZW50IHRvIHVzZXIgc3BhY2UsIHdoaWNoIGFyZSB0aGUgc3BlY2lmaWMgdGFyZ2V0cyBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgaW4gdGhlIE1lZGlhVGVrIG10NzYgd2lyZWxlc3MgZHJpdmVyIHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uIGJ5IG1vdmluZyB0aGUgYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgaW5zaWRlIHRoZSBgc3RhdHVzX2xvY2tgIHNwaW5sb2NrLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhyb3VnaCB0aGUgVVNCIHZhcmlhbnRzIG9mIHRoZSBtdDc2IGRyaXZlciAoZS5nLiwgbXQ3NngwdSwgbXQ3NjYzdSwgbXQ3OTIxdSwgbXQ3OTI1dSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTowOS4yNDA2NTk3MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3NzQwNzc3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM1MGJhZjg3Mzg3YjI3OGE1NDgxOTdhODE1ZTYwY2EyMTYwMWE3OGJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTM6MzE6MDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXFxuaW5kZXggMzcwN2VlMTllNGFlNy4uMGY3NGQ4MDhkMzI4NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcXG5AQCAtMTI5LDcgKzEyOSw3IEBAIG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuIFxcbiBcXHRtZW1zZXQoY2IsIDAsIHNpemVvZigqY2IpKTtcXG4gXFxuLVxcdGlmICghd2NpZCB8fCAhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cXHUwMDNld2NpZFt3Y2lkLVxcdTAwM2VpZHhdKSlcXG4rXFx0aWYgKCF3Y2lkKVxcbiBcXHRcXHRyZXR1cm4gTVRfUEFDS0VUX0lEX05PX0FDSztcXG4gXFxuIFxcdGlmIChpbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfTk9fQUNLKVxcbkBAIC0xNDcsNiArMTQ3LDExIEBAIG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuIFxcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmRldi1cXHUwMDNlc3RhdHVzX2xvY2spO1xcbiBcXG4rXFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXFx1MDAzZXdjaWRbd2NpZC1cXHUwMDNlaWR4XSkgIT0gd2NpZCkge1xcbitcXHRcXHRwaWQgPSBNVF9QQUNLRVRfSURfTk9fQUNLO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4gXFx0cGlkID0gaWRyX2FsbG9jKFxcdTAwMjZ3Y2lkLVxcdTAwM2Vwa3RpZCwgc2tiLCBNVF9QQUNLRVRfSURfRklSU1QsXFxuIFxcdFxcdFxcdE1UX1BBQ0tFVF9JRF9NQVNLLCBHRlBfQVRPTUlDKTtcXG4gXFx0aWYgKHBpZCBcXHUwMDNjIDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MTAuOTE5MTcyMTU5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODk4ODU2OTE4NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTVQ3NngwVVwiLFxuICAgIFwiTVQ3NngyVVwiLFxuICAgIFwiTVQ3NjYzVVwiLFxuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTVQ3OTI1VVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzZfdHhfc3RhdHVzX3NrYl9hZGRcIixcbiAgICBcIm10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgIGluIHRoZSBNZWRpYVRlayBtdDc2IHdpcmVsZXNzIGRyaXZlciB0byBmaXggYSByYWNlIGNvbmRpdGlvbiBieSBtb3ZpbmcgdGhlIGByY3VfYWNjZXNzX3BvaW50ZXJgIGNoZWNrIGluc2lkZSB0aGUgYHN0YXR1c19sb2NrYCBzcGlubG9jay4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggdGhlIFVTQiB2YXJpYW50cyBvZiB0aGUgbXQ3NiBkcml2ZXIgKGUuZy4sIG10NzZ4MHUsIG10NzY2M3UsIG10NzkyMXUsIG10NzkyNXUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZHVtbXlfaGNkKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzUwYmFmODczODdiMjc4YTU0ODE5N2E4MTVlNjBjYTIxNjAxYTc4YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDEzOjMxOjA3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG5pbmRleCAzNzA3ZWUxOWU0YWU3Li4wZjc0ZDgwOGQzMjg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbkBAIC0xMjksNyArMTI5LDcgQEAgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbiBcbiBcdG1lbXNldChjYiwgMCwgc2l6ZW9mKCpjYikpO1xuIFxuLVx0aWYgKCF3Y2lkIHx8ICFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZXdjaWRbd2NpZC1cdTAwM2VpZHhdKSlcbitcdGlmICghd2NpZClcbiBcdFx0cmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7XG4gXG4gXHRpZiAoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9OT19BQ0spXG5AQCAtMTQ3LDYgKzE0NywxMSBAQCBtdDc2X3R4X3N0YXR1c19za2JfYWRkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRldi1cdTAwM2VzdGF0dXNfbG9jayk7XG4gXG4rXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2V3Y2lkW3djaWQtXHUwMDNlaWR4XSkgIT0gd2NpZCkge1xuK1x0XHRwaWQgPSBNVF9QQUNLRVRfSURfTk9fQUNLO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbiBcdHBpZCA9IGlkcl9hbGxvYyhcdTAwMjZ3Y2lkLVx1MDAzZXBrdGlkLCBza2IsIE1UX1BBQ0tFVF9JRF9GSVJTVCxcbiBcdFx0XHRNVF9QQUNLRVRfSURfTUFTSywgR0ZQX0FUT01JQyk7XG4gXHRpZiAocGlkIFx1MDAzYyAwKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMToxMC45MTkxNzQ3NDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzUwNTg4MzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lZGlhdGVrIE1UNzYgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jYC4gSXQncyB0d2Vha2luZyB0aGUgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGF0IHRoZXkndmUgc2ltcGxpZmllZCBhIGNoZWNrIHJlbGF0ZWQgdG8gdGhlIGB3Y2lkYCAod2lyZWxlc3MgY2xpZW50IElEKS4gVGhleSByZW1vdmVkIG9uZSBjaGVjayB0aGF0IHdhcyBkZWVtZWQgcmVkdW5kYW50IGFuZCBhZGRlZCBhbm90aGVyIGNoZWNrICphZnRlciogYSBzcGlubG9jay4gVGhhdCdzIGludGVyZXN0aW5nOyBpdCBzdWdnZXN0cyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBkYXRhIGNvcnJ1cHRpb24gaXNzdWUgdGhleSdyZSB0cnlpbmcgdG8gYWRkcmVzcy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgYWJvdXQgdGVzdGFiaWxpdHksIG9mIGNvdXJzZS4gQ2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgYG10NzZgIGRyaXZlciBpbiBteSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXQncyBhIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciwgYW5kIG15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZXNlIGFyZSB0eXBpY2FsbHkgaGFyZHdhcmUtZGVwZW5kZW50LCBtZWFuaW5nIFBDSWUsIFVTQiwgb3IgU0RJTyBiYXNlZC4gSSBpbW1lZGlhdGVseSB0aGluaywgXCJEb2VzIFFFTVUgZXZlbiAqZW11bGF0ZSogTWVkaWF0ZWsgd2lyZWxlc3MgaGFyZHdhcmU/XCIgTm8sIGl0IGRvZXNuJ3QuIEFuZCBubywgaXQgY2FuJ3QgYmUgcmVhY2hlZCB2aWEgYG1hYzgwMjExX2h3c2ltYCBlaXRoZXIsIGFzIHRoYXQncyBhIGRpZmZlcmVudCBkcml2ZXIgYWx0b2dldGhlci5cblxuQnV0IHRoZW4gSSByZW1lbWJlci4gV2FpdCBhIG1pbnV0ZSEgKm10NzYqIGRvZXMgaGF2ZSBVU0IgZHJpdmVycywgbGlrZSBgbXQ3NngwMi11c2JgLCBgbXQ3NngydWAsIGFuZCBgbXQ3NjAxdWAuIEFoYSEgVVNCIG9wZW5zIHVwIGEgd2hvbGUgbmV3IGF0dGFjayBzdXJmYWNlIGZvciBmdXp6aW5nISBTeXprYWxsZXIgaXMgY2FwYWJsZSBvZiBmdXp6aW5nIFVTQiBkcml2ZXJzIHdpdGggYGR1bW15X2hjZGAgb3IgYHZoY2ktaGNkYC4gVGltZSB0byBjaGVjayB3aGV0aGVyIHRoZSB0YXJnZXRlZCBjb2RlIGhhcyBVU0Igc3VwcG9ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMxOjE3LjY2OTc2NjcyMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODMxNjExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjIzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX01UNzZfQ09SRSkgKz0gbXQ3Ni5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc2X1VTQikgKz0gbXQ3Ni11c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtNC1vYmotJChDT05GSUdfTVQ3Nl9TRElPKSArPSBtdDc2LXNkaW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTVQ3NngwMl9MSUIpICs9IG10NzZ4MDItbGliLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01UNzZ4MDJfVVNCKSArPSBtdDc2eDAyLXVzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS03LW9iai0kKENPTkZJR19NVDc2X0NPTk5BQ19MSUIpICs9IG10NzYtY29ubmFjLWxpYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT04PW9iai0kKENPTkZJR19NVDc5MnhfTElCKSArPSBtdDc5MngtbGliLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX01UNzkyeF9VU0IpICs9IG10NzkyeC11c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTIxPW10NzYtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZToyMzptdDc2LXVzYi15IDo9IHVzYi5vIHVzYl90cmFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS0yNC1tdDc2LXNkaW8teSA6PSBzZGlvLm8gc2Rpb190eHJ4Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9MjY9Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjI3OkNGTEFHU191c2JfdHJhY2UubyA6PSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMjgtQ0ZMQUdTX210NzZ4MDJfdHJhY2UubyA6PSAtSSQoc3JjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0zMT1tdDc2eDAyLWxpYi15IDo9IG10NzZ4MDJfdXRpbC5vIG10NzZ4MDJfbWFjLm8gbXQ3NngwMl9tY3UubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6MzY6bXQ3NngwMi11c2IteSA6PSBtdDc2eDAyX3VzYl9tY3UubyBtdDc2eDAyX3VzYl9jb3JlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT00Mj1tdDc5MngtbGliLSQoQ09ORklHX0FDUEkpICs9IG10NzkyeF9hY3BpX3Nhci5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0MzptdDc5MngtdXNiLXkgOj0gbXQ3OTJ4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jPTc0PXN0YXRpYyBpbnQgbXQ3Nl9yeF9xdWV1ZXNfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy04Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYzo4MzpcXHRcXHRxdWV1ZWQgPSBtdDc2X2lzX3VzYihkZXYpID8gcS1cXHUwMDNlbmRlc2MgLSBxLVxcdTAwM2VxdWV1ZWQgOiBxLVxcdTAwM2VxdWV1ZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMtODQtXFx0XFx0c2VxX3ByaW50ZihzLCBcXFwiICU5ZCB8ICU5ZCB8ICU5ZCB8ICU5ZCB8XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xlZHMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNDojaW5jbHVkZSBcXHUwMDNjbGludXgvdXNiLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTUtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F2ZXJhZ2UuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTk1PXN0cnVjdCBtdDc2X2J1c19vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjExMDojZGVmaW5lIG10NzZfaXNfdXNiKGRldikgKChkZXYpLVxcdTAwM2VidXMtXFx1MDAzZXR5cGUgPT0gTVQ3Nl9CVVNfVVNCKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTExMS0jZGVmaW5lIG10NzZfaXNfbW1pbyhkZXYpICgoZGV2KS1cXHUwMDNlYnVzLVxcdTAwM2V0eXBlID09IE1UNzZfQlVTX01NSU8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD02NTA9c3RydWN0IG10NzZfbWN1IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTY2My0jZGVmaW5lIE1DVV9SRVNQX1VSQl9TSVpFXFx0MTAyNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY2NDpzdHJ1Y3QgbXQ3Nl91c2Ige1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY2NTpcXHRzdHJ1Y3QgbXV0ZXggdXNiX2N0cmxfbXR4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTY2Ni1cXHR1OCAqZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTkyND1zdHJ1Y3QgbXQ3Nl9kZXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTA0MS1cXHRcXHRzdHJ1Y3QgbXQ3Nl9tbWlvIG1taW87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTA0MjpcXHRcXHRzdHJ1Y3QgbXQ3Nl91c2IgdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEwNDMtXFx0XFx0c3RydWN0IG10NzZfc2RpbyBzZGlvO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTgzND12b2lkIG10NzZfb2ZmY2hhbm5lbF9ub3RpZnkoc3RydWN0IG10NzZfcGh5ICpwaHksIGJvb2wgb2ZmY2hhbm5lbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTgzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODM2Oi8qIHVzYiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4Mzctc3RhdGljIGlubGluZSBib29sIG10NzZ1X3VyYl9lcnJvcihzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xODQ2PW10NzZ1X2J1bGtfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuLCBpbnQgKmFjdHVhbF9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODQ4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODQ5OlxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1aW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4NTA6XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVpbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODUxOlxcdHN0cnVjdCBtdDc2X3VzYiAqdXNiID0gXFx1MDAyNmRldi1cXHUwMDNldXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4NTItXFx0dW5zaWduZWQgaW50IHBpcGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODU0LVxcdGlmIChhY3R1YWxfbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4NTU6XFx0XFx0cGlwZSA9IHVzYl9yY3ZidWxrcGlwZSh1ZGV2LCB1c2ItXFx1MDAzZWluX2VwW2VwXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg1Ni1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTg1NzpcXHRcXHRwaXBlID0gdXNiX3NuZGJ1bGtwaXBlKHVkZXYsIHVzYi1cXHUwMDNlb3V0X2VwW2VwXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODU5OlxcdHJldHVybiB1c2JfYnVsa19tc2codWRldiwgcGlwZSwgZGF0YSwgbGVuLCBhY3R1YWxfbGVuLCB0aW1lb3V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODYwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE4NzY9dm9pZCBfX19tdDc2dV93cihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTggcmVxLCB1OCByZXFfdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODc3LVxcdFxcdCB1MzIgYWRkciwgdTMyIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTg3ODppbnQgX19tdDc2dV9pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODc5LVxcdFxcdCBzdHJ1Y3QgbXQ3Nl9idXNfb3BzICpvcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4ODA6aW50IG10NzZ1X2luaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODgxLWludCBtdDc2dV9hbGxvY19tY3VfcXVldWUoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU9ND1vYmotJChDT05GSUdfTVQ3NjE1RSkgKz0gbXQ3NjE1ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfTVQ3NjYzX1VTQl9TRElPX0NPTU1PTikgKz0gbXQ3NjYzLXVzYi1zZGlvLWNvbW1vbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGUtNi1vYmotJChDT05GSUdfTVQ3NjYzVSkgKz0gbXQ3NjYzdS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZT0xNj1tdDc2MTVlLSQoQ09ORklHX01UNzYyMl9XTUFDKSArPSBzb2Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlOjE4Om10NzY2My11c2Itc2Rpby1jb21tb24teSA6PSB1c2Jfc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6MTk6bXQ3NjYzdS15IDo9IHVzYi5vIHVzYl9tY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTIwLW10NzY2M3MteSA6PSBzZGlvLm8gc2Rpb19tY3Uub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTk2PW10NzYxNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEwNTpcXHRpZiAoIW10NzYxNV9maXJtd2FyZV9vZmZsb2FkKGRldikgfHwgbXQ3Nl9pc191c2IoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTEwNi1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaD0zNTU9ZXh0ZXJuIGNvbnN0IHUzMiBtdDc2NjNlX3JlZ19tYXBbX19NVF9CQVNFX01BWF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6MzU2OmV4dGVybiBjb25zdCB1MzIgbXQ3NjYzX3VzYl9zZGlvX3JlZ19tYXBbX19NVF9CQVNFX01BWF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtMzU3LWV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBtdDc2MTVfcGNpX2RyaXZlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTU0MD12b2lkIG10NzYyMl90cmlnZ2VyX2hpZl9pbnQoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgYm9vbCBlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjU0MjovKiB1c2IgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDM6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0NC1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0Ni1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbXQ3Nl90eF9pbmZvICp0eF9pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDc6Ym9vbCBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDg6dm9pZCBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDktXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6NTUwOmludCBtdDc2NjNfdXNiX3NkaW9fcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU1MS1pbnQgbXQ3NjYzdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYz03Nj1zdGF0aWMgaW50IG10NzY2M3NfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy04MS1cXHRcXHQuZHJ2X2ZsYWdzID0gTVRfRFJWX1JYX0RNQV9IRFIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjgyOlxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6ODM6XFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzY2M191c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjg0OlxcdFxcdC50eF9zdGF0dXNfZGF0YSA9IG10NzY2M191c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtODUtXFx0XFx0LnJ4X3NrYiA9IG10NzYxNV9xdWV1ZV9yeF9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtMTE4LVxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VtY3Vfd29yaywgbXQ3NjYzc19pbml0X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzoxMTk6XFx0ZGV2LVxcdTAwM2VyZWdfbWFwID0gbXQ3NjYzX3VzYl9zZGlvX3JlZ19tYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTEyMC1cXHRkZXYtXFx1MDAzZW9wcyA9IG9wcztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy0xNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjE1OTpcXHRyZXQgPSBtdDc2NjNfdXNiX3NkaW9fcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTE2MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExOiNpbmNsdWRlIFxcdTAwM2NsaW51eC91c2IuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdDc2MTVfZGV2aWNlX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTktXFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDBlOGQsIDB4NzY2MywgMHhmZiwgMHhmZiwgMHhmZikgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTI0PXN0YXRpYyB1MzIgbXQ3NjYzdV9ycihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyODpcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI5LVxcdHJldCA9IF9fX210NzZ1X3JyKGRldiwgTVRfVkVORF9SRUFEX0VYVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0zMC1cXHRcXHRcXHQgIFVTQl9ESVJfSU4gfCBVU0JfVFlQRV9WRU5ET1IsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjMxOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2V1c2IudXNiX2N0cmxfbXR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0zMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTM2PXN0YXRpYyB2b2lkIG10NzY2M3Vfd3Ioc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBhZGRyLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTM3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzozODpcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTM5LVxcdF9fX210NzZ1X3dyKGRldiwgTVRfVkVORF9XUklURV9FWFQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNDAtXFx0XFx0ICAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfVkVORE9SLCBhZGRyLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjQxOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2V1c2IudXNiX2N0cmxfbXR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy00Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz00ND1zdGF0aWMgdTMyIG10NzY2M3Vfcm13KHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTQ2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzo0NzpcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTQ4LVxcdHZhbCB8PSBfX19tdDc2dV9ycihkZXYsIE1UX1ZFTkRfUkVBRF9FWFQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy01MS1cXHRcXHQgICAgVVNCX0RJUl9PVVQgfCBVU0JfVFlQRV9WRU5ET1IsIGFkZHIsIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6NTI6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9NTc9c3RhdGljIHZvaWQgbXQ3NjYzdV9jb3B5KHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgb2Zmc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjYwOlxcdHN0cnVjdCBtdDc2X3VzYiAqdXNiID0gXFx1MDAyNmRldi1cXHUwMDNldXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTYxLVxcdGludCByZXQsIGkgPSAwLCBiYXRjaF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy02NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzo2NjpcXHRtdXRleF9sb2NrKFxcdTAwMjZ1c2ItXFx1MDAzZXVzYl9jdHJsX210eCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNjctXFx0d2hpbGUgKGkgXFx1MDAzYyBsZW4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzo2ODpcXHRcXHRiYXRjaF9sZW4gPSBtaW5fdChpbnQsIHVzYi1cXHUwMDNlZGF0YV9sZW4sIGxlbiAtIGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjY5OlxcdFxcdG1lbWNweSh1c2ItXFx1MDAzZWRhdGEsIHZhbCArIGksIGJhdGNoX2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNzAtXFx0XFx0cmV0ID0gX19tdDc2dV92ZW5kb3JfcmVxdWVzdChkZXYsIE1UX1ZFTkRfV1JJVEVfRVhULFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNzItXFx0XFx0XFx0XFx0XFx0ICAgICAob2Zmc2V0ICsgaSkgXFx1MDAzZVxcdTAwM2UgMTYsIG9mZnNldCArIGksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6NzM6XFx0XFx0XFx0XFx0XFx0ICAgICB1c2ItXFx1MDAzZWRhdGEsIGJhdGNoX2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNzQtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy03OC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Nzk6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ1c2ItXFx1MDAzZXVzYl9jdHJsX210eCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtODAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MTAxPXN0YXRpYyB2b2lkIG10NzY2M3VfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMTI6c3RhdGljIGludCBtdDc2NjN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMTM6XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTE3LVxcdFxcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUiB8IE1UX0RSVl9IV19NR01UX1RYUSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMTg6XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExOTpcXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMjA6XFx0XFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTEyMS1cXHRcXHQucnhfc2tiID0gbXQ3NjE1X3F1ZXVlX3J4X3NrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTEzNS1cXHR9O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjEzNjpcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTEzNy1cXHRzdHJ1Y3QgaWVlZTgwMjExX29wcyAqb3BzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE0MjpcXHRvcHMgPSBkZXZtX2ttZW1kdXAoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc2MTVfb3BzLCBzaXplb2YobXQ3NjE1X29wcyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTQzLVxcdFxcdFxcdCAgIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE0OTpcXHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIHNpemVvZigqZGV2KSwgb3BzLCBcXHUwMDI2ZHJ2X29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTUwLVxcdGlmICghbWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE1My1cXHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzYxNV9kZXYsIG10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE1NDpcXHR1c2JfcmVzZXRfZGV2aWNlKHVkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxNTY6XFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTU4LVxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VtY3Vfd29yaywgbXQ3NjYzdV9pbml0X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE1OTpcXHRkZXYtXFx1MDAzZXJlZ19tYXAgPSBtdDc2NjNfdXNiX3NkaW9fcmVnX21hcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNjAtXFx0ZGV2LVxcdTAwM2VvcHMgPSBvcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTYxOlxcdHJldCA9IF9fbXQ3NnVfaW5pdChtZGV2LCB1c2JfaW50ZiwgXFx1MDAyNmJ1c19vcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE2Mi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxODY6XFx0cmV0ID0gbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTkzLVxcdG10NzZ1X3F1ZXVlc19kZWluaXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTk0OlxcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTIwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyMDE6c3RhdGljIHZvaWQgbXQ3NjYzdV9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMDIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIwMzpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YSh1c2JfaW50Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjA0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIxMTpcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMTYtI2lmZGVmIENPTkZJR19QTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIxNzpzdGF0aWMgaW50IG10NzY2M3Vfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTIxOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MjE5OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTIyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyMzY6c3RhdGljIGludCBtdDc2NjN1X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIzODpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMzktXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyNTk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzYxNV9kZXZpY2VfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI2MC1NT0RVTEVfRklSTVdBUkUoTVQ3NjYzX09GRkxPQURfRklSTVdBUkVfTjkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MjYzPU1PRFVMRV9GSVJNV0FSRShNVDc2NjNfUk9NX1BBVENIKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MjY1OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2NjN1X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNjYtXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjc3LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Mjc4Om1vZHVsZV91c2JfZHJpdmVyKG10NzY2M3VfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTktI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTA6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTc6Y29uc3QgdTMyIG10NzY2M191c2Jfc2Rpb19yZWdfbWFwW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xOC1cXHRbTVRfVE9QX0NGR19CQVNFXVxcdD0gMHg4MDAyMDAwMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtNDAtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjQxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb19yZWdfbWFwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM9NDM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjQ0Om10NzY2M191c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy00NS1cXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzo1NjpzdGF0aWMgaW50IG10NzY2M191c2Jfc2Rpb19zZXRfcmF0ZXMoc3RydWN0IG10NzYxNV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTU3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG10NzYxNV93dGJsX3JhdGVfZGVzYyAqd3JkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxMzE6c3RhdGljIHZvaWQgbXQ3NjYzX3VzYl9zZGlvX3JhdGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNDgtXFx0XFx0bXQ3NjE1X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE0OTpcXHRcXHRtdDc2NjNfdXNiX3NkaW9fc2V0X3JhdGVzKGRldiwgd3JkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE1MC1cXHRcXHRtdDc2MTVfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxNTY6Ym9vbCBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTY1LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE2NjpFWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTY4OnZvaWQgbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNjktXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTczOlxcdGlmIChtdDc2X2lzX3VzYihtZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE3NC1cXHRcXHRoZWFkcm9vbSArPSBNVF9VU0JfSERSX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE3OC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxNzk6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxODE6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTgyLVxcdFxcdFxcdFxcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMDctXFx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHdjaWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMDg6XFx0bXQ3NjYzX3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjIwOTpcXHRpZiAobXQ3Nl9pc191c2IobWRldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIxMC1cXHRcXHR1MzIgbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIyNC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMjU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jPTIyNz1zdGF0aWMgaW50IG10NzY2M3VfZG1hX3NjaGVkX2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMjc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6Mjc5OnN0YXRpYyBpbnQgbXQ3NjYzX3VzYl9zZGlvX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTI4MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjI4NzpcXHRpZiAobXQ3Nl9pc191c2IoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTI4OC1cXHRcXHRyZXQgPSBtdDc2NjN1X2RtYV9zY2hlZF9pbml0KGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTMwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjMwNzppbnQgbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MzEyOlxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VyYXRlX3dvcmssIG10NzY2M191c2Jfc2Rpb19yYXRlX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzEzLVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZkZXYtXFx1MDAzZXdyZF9oZWFkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MzE2OlxcdGVyciA9IG10NzY2M191c2Jfc2Rpb19pbml0X2hhcmR3YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMTctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzIwLVxcdGh3LVxcdTAwM2VleHRyYV90eF9oZWFkcm9vbSArPSBNVF9VU0JfVFhEX1NJWkU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozMjE6XFx0aWYgKG10NzZfaXNfdXNiKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMjItXFx0XFx0aHctXFx1MDAzZWV4dHJhX3R4X2hlYWRyb29tICs9IE1UX1VTQl9IRFJfU0laRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTMyMy1cXHRcXHQvKiBjaGVjayBodyBzZyBzdXBwb3J0IGluIG9yZGVyIHRvIGVuYWJsZSBBTVNEVSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MzI0OlxcdFxcdGlmIChkZXYtXFx1MDAzZW10NzYudXNiLnNnX2VuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzI1LVxcdFxcdFxcdGh3LVxcdTAwM2VtYXhfdHhfZnJhZ21lbnRzID0gTVRfSFdfVFhQX01BWF9CVUZfTlVNO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozMzU6XFx0aWYgKCFkZXYtXFx1MDAzZW10NzYudXNiLnNnX2VuKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMzYtXFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzQ4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjM0OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fcmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTM1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9MzY9aW50IG10NzZfY29ubmFjX3BtX3dha2Uoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBtdDc2X2Nvbm5hY19wbSAqcG0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NDA6XFx0aWYgKG10NzZfaXNfdXNiKGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy00MS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9NjI9dm9pZCBtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKHN0cnVjdCBtdDc2X3BoeSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjY3OlxcdGlmIChtdDc2X2lzX3VzYihkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNjgtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYz0yNjI1PW10NzZfY29ubmFjX21jdV9zZXRfd293X2N0cmwoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTI2NjctXFx0XFx0cmVxLndvd19jdHJsX3Rsdi53YWtldXBfaGlmID0gV09XX1BDSUU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzoyNjY4OlxcdGVsc2UgaWYgKG10NzZfaXNfdXNiKGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy0yNjY5LVxcdFxcdHJlcS53b3dfY3RybF90bHYud2FrZXVwX2hpZiA9IFdPV19VU0I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jPTI2Nzg9aW50IG10NzZfY29ubmFjX21jdV9zZXRfaGlmX3N1c3BlbmQoc3RydWN0IG10NzZfZGV2ICpkZXYsIGJvb2wgc3VzcGVuZCwgYm9vbCB3YWl0X3Jlc3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTI3MDMtXFx0XFx0cmVxLmhkci5oaWZfdHlwZSA9IDI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzoyNzA0OlxcdGVsc2UgaWYgKG10NzZfaXNfdXNiKGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy0yNzA1LVxcdFxcdHJlcS5oZHIuaGlmX3R5cGUgPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGU9Nj1tdDc2eDAtY29tbW9uLXkgOj0gaW5pdC5vIG1haW4ubyBlZXByb20ubyBwaHkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL01ha2VmaWxlLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGU6ODptdDc2eDB1LXkgOj0gdXNiLm8gdXNiX21jdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtOS1tdDc2eDBlLXkgOj0gcGNpLm8gcGNpX21jdS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC0xNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvbXV0ZXguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaDoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvdXNiLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtMTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBsZXRpb24uaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jPTEwMz1tdDc2eDBfcmZfd3Ioc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xMDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jOjEwNTpcXHRpZiAobXQ3Nl9pc191c2IoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xMDYtXFx0XFx0c3RydWN0IG10NzZfcmVnX3BhaXIgcGFpciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jPTExOT1zdGF0aWMgaW50IG10NzZ4MF9yZl9ycihzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgdTMyIG9mZnNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYzoxMjQ6XFx0aWYgKG10NzZfaXNfdXNiKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmMtMTI1LVxcdFxcdHN0cnVjdCBtdDc2X3JlZ19wYWlyIHBhaXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYz05MTM9dm9pZCBtdDc2eDBfcGh5X3NldF9jaGFubmVsKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmMtOTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jOjk3MTpcXHRpZiAobXQ3Nl9pc191c2IoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy05NzItXFx0XFx0bXQ3NngwX3BoeV9iYnBfc2V0X2J3KGRldiwgY2hhbmRlZi1cXHUwMDNld2lkdGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtNy0jaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6ODojaW5jbHVkZSBcXHUwMDNjbGludXgvdXNiLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTExLSNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxMjojaW5jbHVkZSBcXFwiLi4vbXQ3NngwMl91c2IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxNDpzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgbXQ3NngwX2RldmljZV90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE1LVxcdHsgVVNCX0RFVklDRSgweDE0OEYsIDB4NzYxMCkgfSxcXHQvKiBNVDc2MTBVICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy00NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzo0NjpzdGF0aWMgdm9pZCBtdDc2eDBfaW5pdF91c2JfZG1hKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTE1MT1zdGF0aWMgaW50IG10NzZ4MHVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxNjQ6XFx0bXQ3NngwX2luaXRfdXNiX2RtYShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE2NS1cXHRlcnIgPSBtdDc2eDBfaW5pdF9oYXJkd2FyZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MTc5PXN0YXRpYyBpbnQgbXQ3NngwdV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xODEtXFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBkZXYtXFx1MDAzZW10NzYuaHc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTgyOlxcdHN0cnVjdCBtdDc2X3VzYiAqdXNiID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni51c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTgzLVxcdGludCBlcnI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE4NTpcXHR1c2ItXFx1MDAzZW1jdS5kYXRhID0gZGV2bV9rbWFsbG9jKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIE1DVV9SRVNQX1VSQl9TSVpFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE4Ni1cXHRcXHRcXHRcXHQgICAgIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE4NzpcXHRpZiAoIXVzYi1cXHUwMDNlbWN1LmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTg4LVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTk4LVxcdC8qIGNoZWNrIGh3IHNnIHN1cHBvcnQgaW4gb3JkZXIgdG8gZW5hYmxlIEFNU0RVICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTk5OlxcdGh3LVxcdTAwM2VtYXhfdHhfZnJhZ21lbnRzID0gZGV2LVxcdTAwM2VtdDc2LnVzYi5zZ19lbiA/IE1UX1RYX1NHX01BWF9TSVpFIDogMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMDAtXFx0ZXJyID0gbXQ3NngwX3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIxMzpzdGF0aWMgaW50IG10NzZ4MHVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIxNDpcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIxNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjktXFx0fTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMzA6XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMzEtXFx0c3RydWN0IG10NzZ4MDJfZGV2ICpkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjM2OlxcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcXHUwMDI2dXNiX2ludGYtXFx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBcXHUwMDI2bXQ3NngwdV9vcHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjM3LVxcdFxcdFxcdFxcdCBcXHUwMDI2ZHJ2X29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjQ4OlxcdHVzYl9yZXNldF9kZXZpY2UodXNiX2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjI1MDpcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yNTItXFx0bXQ3NngwMnVfaW5pdF9tY3UobWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjUzOlxcdHJldCA9IG10NzZ1X2luaXQobWRldiwgdXNiX2ludGYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI1NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjg0LWVycjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyODU6XFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjg2LVxcdG10NzZ1X3F1ZXVlc19kZWluaXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjkyOnN0YXRpYyB2b2lkIG10NzZ4MF9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yOTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjI5NDpcXHRzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEodXNiX2ludGYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI5NS1cXHRib29sIGluaXRpYWxpemVkID0gdGVzdF9iaXQoTVQ3Nl9TVEFURV9JTklUSUFMSVpFRCwgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzAzOlxcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMDg6c3RhdGljIGludCBfX21heWJlX3VudXNlZCBtdDc2eDBfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzA5LVxcdFxcdFxcdFxcdFxcdCBwbV9tZXNzYWdlX3Qgc3RhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzEwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMTE6XFx0c3RydWN0IG10NzZ4MDJfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKHVzYl9pbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzIwOnN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbXQ3NngwX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzIxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMjI6XFx0c3RydWN0IG10NzZ4MDJfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKHVzYl9pbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMjMtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMzk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzZ4MF9kZXZpY2VfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTM0MC1NT0RVTEVfRklSTVdBUkUoTVQ3NjEwRV9GSVJNV0FSRSk7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MTcuNzU4MDg3MzlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzE5MzM3ODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBgbXQ3NmAgZGVmaW5pdGVseSBoYXMgVVNCIGRyaXZlcnMg4oCTIEkga25vdyB0aGF0LCBgbXQ3NngwdWAsIGBtdDc2MTV1YCwgYWxsIHRob3NlLiBBbmQgdGhhdCdzIGdyZWF0IG5ld3MgYmVjYXVzZSBzeXprYWxsZXIsIHdoaWNoIEknbSB2ZXJ5IGZhbWlsaWFyIHdpdGgsIGhhcyBhIFVTQiBmdXp6ZXIgYnVpbHQgcmlnaHQgaW4sIGxldmVyYWdpbmcgdGhhdCBgZHVtbXlfaGNkYCBzZXR1cC4gVGhpcyBtZWFucyBJIGNhbiBhbG1vc3QgY2VydGFpbmx5IHRyaWdnZXIgdGhpcyBjb2RlLCBldmVuIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0J3MgYSBodWdlIHdpbiBmb3IgdGVzdGluZy4gTm93LCBsZXQncyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMgZnVuY3Rpb24uIEkgd2FudCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgLiBMZXQncyBzZWUgd2hhdCdzIGhhcHBlbmluZyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxNTMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MjIuMDc3NDI4MjE1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjM0MzE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3R4X3N0YXR1c19za2JfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE1NjY9dm9pZCBtdDc2X3R4X3N0YXR1c191bmxvY2soc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE1Njk6aW50IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTU3MC1cXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21hYy5jPTEwNzE9aW50IG10NzYwM190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFjLmMtMTA5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWMuYzoxMDk2OlxcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cXHUwMDNlc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWMuYy0xMDk3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX21hYy5jPTYwPWludCBtdDc2MTVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYy05OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfbWFjLmM6OTk6XFx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVxcdTAwM2Vza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYy0xMDAtXFx0bXQ3NjE1X21hY193cml0ZV90eHdpKGRldiwgdHh3aV9wdHIsIHR4X2luZm8tXFx1MDAzZXNrYiwgd2NpZCwgc3RhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0xODE9aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMDc6XFx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHdjaWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMDgtXFx0bXQ3NjYzX3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM9MTM3PWludCBtdDc2eDAyX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTE1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jOjE1NTpcXHRwaWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKG1kZXYsIHdjaWQsIHR4X2luZm8tXFx1MDAzZXNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xNTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYz02ND1pbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6ODM6XFx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVxcdTAwM2Vza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTg0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9NzI4PWludCBtdDc5MTVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTc2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzo3Njg6XFx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVxcdTAwM2Vza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTc2OS1cXHRtdDc5MTVfbWFjX3dyaXRlX3R4d2kobWRldiwgdHh3aV9wdHIsIHR4X2luZm8tXFx1MDAzZXNrYiwgd2NpZCwgcGlkLCBrZXksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz03NzY9aW50IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjgwNjpcXHRwa3RpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Niwgd2NpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MDctXFx0bXQ3OTIxX3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYz04PWludCBtdDc5MjFlX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jOjQzOlxcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cXHUwMDNlc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtNDQtXFx0bXQ3Nl9jb25uYWMyX21hY193cml0ZV90eHdpKG1kZXYsIHR4d2lfcHRyLCB0eF9pbmZvLVxcdTAwM2Vza2IsIHdjaWQsIGtleSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MzM9aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjYzOlxcdHBrdGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCB3Y2lkLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NjQtXFx0bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz05PWludCBtdDc5MjVlX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jOjQ0OlxcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cXHUwMDNlc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtNDUtXFx0bXQ3OTI1X21hY193cml0ZV90eHdpKG1kZXYsIHR4d2lfcHRyLCB0eF9pbmZvLVxcdTAwM2Vza2IsIHdjaWQsIGtleSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTEwMzQ9aW50IG10Nzk5Nl90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMTEzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoxMTMzOlxcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cXHUwMDNlc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xMTM0LVxcdG1lbXNldCh0eHdpX3B0ciwgMCwgTVRfVFhEX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTEyMT1pbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6MTIyOm10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTEyMy1cXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy0xNzItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzoxNzM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl90eF9zdGF0dXNfc2tiX2FkZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTE3NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MjIuMTkzNzc3MzU1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ2ODMxMTY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBmdW5jdGlvbi4gVGhlIGNvZGUgc2F5cyBpdCdzIGNhbGxlZCBieSBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSB0aGlzIGlzbid0IHNvbWUgZGVhZCBjb2RlLiBUaGVzZSBhcmUgYWxsIFVTQiBkcml2ZXJzLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIuIFNvLCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aG9zZSBVU0IgZGV2aWNlIGludGVyYWN0aW9ucy5cblxuTm93LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIE15IG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIHRyYWNraW5nIGRvd24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVW5kZXJzdGFuZGluZyB0aG9zZSB3aWxsIHRlbGwgbWUgd2hlbiB0aGVzZSBVU0IgZHJpdmVycywgYW5kIHRoZXJlZm9yZSBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAsIGFyZSBhY3R1YWxseSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTIyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMxOjI3LjY2MjA5MTQxM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjg4ODkxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3NlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjpjb25maWcgTVQ3Nl9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo2OmNvbmZpZyBNVDc2X0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNy1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjEyOmNvbmZpZyBNVDc2X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxNjpjb25maWcgTVQ3Nl9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTE3LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjIwOmNvbmZpZyBNVDc2eDAyX0xJQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyNDpjb25maWcgTVQ3NngwMl9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjUtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjg6Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTM2PWNvbmZpZyBNVDc5MnhfVVNCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQwOmNvbmZpZyBNVDc2X05QVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy00MS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWc6Mjpjb25maWcgTVQ3NjAzRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjAzRSAoUENJZSkgYW5kIE1UNzZ4OCBXTEFOIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozOmNvbmZpZyBNVDc2MTVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo4OmNvbmZpZyBNVDc2MTVFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2MTVFIGFuZCBNVDc2NjNFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjIxOmNvbmZpZyBNVDc2MjJfV01BQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMjItXFx0Ym9vbCBcXFwiTVQ3NjIyIChTb0MpIFdNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozMjpjb25maWcgTVQ3NjYzX1VTQl9TRElPX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozNjpjb25maWcgTVQ3NjYzVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzctXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzY2M1UgKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo0Nzpjb25maWcgTVQ3NjYzU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzY2M1MgKFNESU8pIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDBfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6MTk6Y29uZmlnIE1UNzZ4MEVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDBFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Mjpjb25maWcgTVQ3NngyX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Njpjb25maWcgTVQ3NngyRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngyRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoxODpjb25maWcgTVQ3NngyVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MlUgKFVTQikgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MjcuNzI0OTg1MzY5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4MzU2MjEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIE1UNzYgRHJpdmVyIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgTVQ3NiBjb25maWd1cmF0aW9uIG9wdGlvbnMg4oCTIGBNVDc2X0NPUkVgLCBgTVQ3Nl9VU0JgLCBgTVQ3NngwMl9VU0JgLCBhIHdob2xlIHNsZXcgb2YgdGhlbTogYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc2NjNVYCwgYE1UNzkyeF9VU0JgLCBgTVQ3OTIxVWAsIGBNVDc5MjVVYCwgYW5kIHNvIG9uLiBJdCdzIGEgZmFpcmx5IGV4dGVuc2l2ZSBmYW1pbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSByZWxhdGUsIGhvdyB0aGV5J3JlIGludGVyY29ubmVjdGVkLiBJIHRoaW5rIGEgbG9naWNhbCBzdGFydGluZyBwb2ludCB3b3VsZCBiZSB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNVDc2eDBVYC4gU2VlIHdoYXQgb3RoZXIgY29tcG9uZW50cyB0aGF0IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBkZXBlbmRzIG9uLCB3aGF0IG90aGVyIHBhcnRzIG9mIHRoZSBlY29zeXN0ZW0gaXQgcHVsbHMgaW4uIFRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgYW5kIGhvdyBpdCBmaXRzIHdpdGhpbiB0aGUgYnJvYWRlciBwaWN0dXJlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ1MTIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTozMS45MDg1NTA0MzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTY3Nzg3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3NngwVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnPTI9Y29uZmlnIE1UNzZ4MF9DT01NT05cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjY6Y29uZmlnIE1UNzZ4MFVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MFUgKFVTQikgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MzIuMDU0MjQzMzY1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzc3MTYxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIEtjb25maWcgZmlsZSBmb3IgdGhlIE1lZGlhdGVrIE1UNzYgc2VyaWVzIHdpcmVsZXNzIGRyaXZlcnMuXG5cbioqRGVlcCBEaXZlIGludG8gdGhlIE1UNzZ4MCBLY29uZmlnKipcblxuQWxyaWdodCwgSSdtIHB1bGxpbmcgdXAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBNVDc2eDAgc2VyaWVzIGFyZSBkZWZpbmVkLCBhbmQgSSdtIGVhZ2VyIHRvIHNlZSBob3cgdGhlIE1lZGlhdGVrIGZvbGtzIHN0cnVjdHVyZSB0aGVpciBkcml2ZXIgY29uZmlndXJhdGlvbi4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBrZXJuZWwgY29uZmlndXJhdGlvbiBlbGVtZW50czogYGNvbmZpZ2AgYmxvY2tzLCBgdHJpc3RhdGVgIGFuZCBgYm9vbGAgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBoZWxwIHRleHQuLi4gdGhlIHdob2xlIHNoZWJhbmcuIEtub3dpbmcgdGhlIGFyY2hpdGVjdHVyZSwgSSBhbnRpY2lwYXRlIHRoZXknbGwgaGF2ZSBvcHRpb25zIGZvciBmZWF0dXJlcyBsaWtlIGRpZmZlcmVudCBNVDc2IGNoaXBzZXQgdmFyaWFudHMsIHBvd2VyLXNhdmluZyBmZWF0dXJlcywgZGVidWdnaW5nIGFpZHMsIGFuZCBtYXliZSBldmVuIGEgZmV3IHBsYXRmb3JtLXNwZWNpZmljIHNldHRpbmdzLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYW55IGNsZXZlciB1c2VzIG9mIGRlcGVuZGVuY2llcyBvciBjaG9pY2UgYmxvY2tzIHRvIGVuc3VyZSB0aGF0IG9ubHkgcmVsZXZhbnQgb3B0aW9ucyBhcmUgcHJlc2VudGVkIGJhc2VkIG9uIHRoZSBzZWxlY3RlZCBoYXJkd2FyZS4gSSdsbCBhbHNvIGJlIHNjYW5uaW5nIGZvciBhbnkgcG90ZW50aWFsIGdvdGNoYXMgb3IgY29uZmlndXJhdGlvbiBsYW5kbWluZXMgdGhhdCBtaWdodCBjYXVzZSBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLiBGaW5hbGx5LCBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHZlcnNpb25pbmcgYW5kIGNvbXBhdGliaWxpdHkgY2hlY2tzLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIGEgY3J1Y2lhbCBwaWVjZSBpbiB1bmRlcnN0YW5kaW5nIGhvdyBJIGNhbiBiZXN0IGNvbmZpZ3VyZSB0aGlzIGRyaXZlciBhbmQgaW50ZWdyYXRlIGl0IGludG8gbXkgb3duIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5OTUsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTozNi4wOTE5NjE4NzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1UNzZ4MF9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3NngwMl9MSUJcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE1UNzZ4MFVcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAgODpcXHRcXHRzZWxlY3QgTVQ3NngwX0NPTU1PTlxcbiAgIDk6XFx0XFx0c2VsZWN0IE1UNzZ4MDJfVVNCXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjEwVS1iYXNlZCBVU0IgMi4wIHdpcmVsZXNzIGRvbmdsZXMsXFxuICAxNDpcXHRcXHQgIHdoaWNoIGNvbXBseSB3aXRoIElFRUUgODAyLjExYWMgc3RhbmRhcmRzIGFuZCBzdXBwb3J0IDF4MVxcbiAgMTU6XFx0XFx0ICA0MzNNYnBzIFBIWSByYXRlLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBNVDc2eDBFXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwRSAoUENJZSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MzYuMDkyMDE4Nzc1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDAwOTQ1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgcmV2aWV3aW5nIHRoYXQgS2NvbmZpZyBmaWxlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc2MTUgS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnYCBmaWxlLiBJJ20gaW1tZWRpYXRlbHkgZXhwZWN0aW5nIHRvIHNlZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBNVDc2MTUgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGlzIHdoZXJlIEknbGwgZmluZCBhbGwgdGhlIHR1bmFibGUgcGFyYW1ldGVycyDigJMgdGhlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgaG93IHRoaXMgZHJpdmVyIGlzIGNvbXBpbGVkIGFuZCBpbnRlZ3JhdGVkIGludG8gdGhlIGJyb2FkZXIga2VybmVsLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGZvciB0aGUgbWFpbiBmZWF0dXJlIGZsYWdzLCB0aGluZ3MgbGlrZSBzdXBwb3J0IGZvciBzcGVjaWZpYyA4MDIuMTEgc3RhbmRhcmRzLCBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgdHdlYWtzLCBhbmQgbWF5YmUgb3B0aW9ucyBmb3IgZGVidWdnaW5nIG9yIGxvZ2dpbmcuIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0IHZhbHVlcyBzZXQgZm9yIGVhY2ggb3B0aW9uLiBUaG9zZSBkZXBlbmRlbmNpZXMgYXJlIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIE1lZGlhdGVrIHdpcmVsZXNzIHN0YWNrIGFuZCB0aGUgdW5kZXJseWluZyBrZXJuZWwgbmV0d29ya2luZyBmcmFtZXdvcmsuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZXkndmUgc3RydWN0dXJlZCBpdDsgYXJlIHRoZXkgdXNpbmcgdGhlIHR5cGljYWwgYGJvb2xgLCBgdHJpc3RhdGVgLCBgaW50YCwgZXRjLiBvcHRpb25zPyBXaGF0IGFib3V0IGFueSBzcGVjaWZpYyBoZWxwIHRleHQ/IEFyZSB0aGV5IGZvbGxvd2luZyB0aGUgc3RhbmRhcmQga2VybmVsIGNvZGluZyBzdHlsZT8gSSdsbCBhbHNvIGJlIG9uIHRoZSBsb29rb3V0IGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCBwZXJmb3JtYW5jZSBvciBwb3dlciBjb25zdW1wdGlvbi4gVGhpcyB3aWxsIGFsbCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgZHJpdmVyJ3MgY2FwYWJpbGl0aWVzIGFuZCBob3cgaXQncyBpbnRlbmRlZCB0byBiZSB1c2VkLiBUaW1lIHRvIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTY0MywiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6NDAuMTkyMTE1MzgxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjU6XFx0XFx0c2VsZWN0IFJFR01BUFxcbiAgMjY6XFx0XFx0ZGVmYXVsdCB5XFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gV01BQyBvbiBNVDc2MjIgU29DIGRldmljZXNcXG4gIDI5OlxcdFxcdCAgd2hpY2ggaGFzIHRoZSBzYW1lIGZlYXR1cmUgc2V0IGFzIGEgTVQ3NjE1LCBidXQgbGltaXRlZCB0b1xcbiAgMzA6XFx0XFx0ICAyLjQgR0h6IG9ubHkuXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBNVDc2NjNfVVNCX1NESU9fQ09NTU9OXFxuICAzMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMzQ6XFx0XFx0c2VsZWN0IE1UNzYxNV9DT01NT05cXG4gIDM1OlxcdFxcbiAgMzY6XFx0Y29uZmlnIE1UNzY2M1VcXG4gIDM3OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2NjNVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAzODpcXHRcXHRzZWxlY3QgTVQ3Nl9VU0JcXG4gIDM5OlxcdFxcdHNlbGVjdCBNVDc2NjNfVVNCX1NESU9fQ09NTU9OXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICA0MTpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgNDI6XFx0XFx0aGVscFxcbiAgNDM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjYzVSA4MDIuMTFhYyAyeDI6MiB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgNDQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMxOjQwLjE5MjE4MDc3MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODA2OTQ1ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipDb25zaWRlcmluZyBXaXJlbGVzcyBDaGlwc2V0cyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IHdpcmVsZXNzIGNoaXBzZXRzLCBhbmQgdGhlIGluaXRpYWwgY2FuZGlkYXRlcyBhcmUgYE1UNzZ4MFVgIGFuZCBgTVQ3NjYzVWAuIFRob3NlIGFyZSBnb29kIHN0YXJ0aW5nIHBvaW50cywgZXN0YWJsaXNoZWQgcGVyZm9ybWVycy4gQnV0LCBsZXQncyBub3QganVtcCB0aGUgZ3VuLiBXZSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgb3B0aW9ucywgZXNwZWNpYWxseSB3aGVuIHdlIGFyZSB0YWxraW5nIGFib3V0IHdpcmVsZXNzLiBJcyBgTVQ3OTIxVWAgYSB2aWFibGUgYWx0ZXJuYXRpdmUgb3IgYW4gb3B0aW9uIHRvIGluY29ycG9yYXRlPyBJdCdzIGltcG9ydGFudCB0byB3ZWlnaCBhbGwgcG9zc2liaWxpdGllcyB0byBtYWtlIGFuIGluZm9ybWVkIGRlY2lzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjMwNywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6NDMuOTk5MTI4NDIxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzA2NTMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTIxVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnPTE3PWNvbmZpZyBNVDc5MjFTXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjg6Y29uZmlnIE1UNzkyMVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMxOjQ0LjA5NjE5OTY5OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTc3MzgyNjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ2AgZmlsZTpcblxuKipEaXZpbmcgaW50byB0aGUgTVQ3OTIxIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpc3NlY3QgdGhlIEtjb25maWcgZm9yIHRoZSBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBJIGFscmVhZHkga25vdyB0aGlzIGNoaXA7IGl0J3MgTWVkaWFUZWsncyBsYXRlc3QsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBiZWluZyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gVGhlIEtjb25maWcgZmlsZSBpcyB0aGUga2V5LiBGaXJzdCwgSSdsbCBiZSBsb29raW5nIGZvciB0aGUgYGNvbmZpZ2Agb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgaGVscCB0ZXh0LiBUaGlzIGlzIHdoZXJlIHRoZSBkZWNpc2lvbnMgYXJlIG1hZGU6IHdpbGwgdGhlIGRyaXZlciBiZSBidWlsdC1pbiwgbW9kdWxhcml6ZWQsIG9yIGNvbXBsZXRlbHkgZXhjbHVkZWQ/IFdoYXQncyBnb2luZyB0byBkZXRlcm1pbmUgdGhpcz8gSSdsbCBwcm9iYWJseSBzZWUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHJlc3RyaWN0aW9ucywgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsbHksIHZhcmlvdXMgZmVhdHVyZSBmbGFncyBmb3IgdGhpbmdzIGxpa2UgcG93ZXIgbWFuYWdlbWVudCwgcmVndWxhdG9yeSBkb21haW4gY29uZmlndXJhdGlvbiwgYW5kIG9mZmxvYWQgY2FwYWJpbGl0aWVzLlxuXG5JIGV4cGVjdCB0byBzZWUgYSBjbGVhciBoaWVyYXJjaHk7IHBlcmhhcHMgc2VjdGlvbnMgZGVmaW5pbmcgdGhlIGNvcmUgZHJpdmVyIGFuZCB0aGVuIG5lc3RlZCBvcHRpb25zIGZvciBzcGVjaWZpYyBmZWF0dXJlcy4gVGhlIGRlcGVuZGVuY2llcyBhcmUgY3J1Y2lhbDsgSeKAmWxsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGRyaXZlciByZWxpZXMgb24gYW55IG90aGVyIG1vZHVsZXMgb3IgcHJlLXJlcXVpc2l0ZXMuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVxdWlyZWQgTWVkaWFUZWsgZHJpdmVycyBvciBjb3JlIHdpcmVsZXNzIGluZnJhc3RydWN0dXJlIHJlcXVpcmVtZW50cz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgb24gdGhlIG92ZXJhbGwgc3lzdGVtIGNvbmZpZ3VyYXRpb24/IEFyZSB0aGVyZSBhbnkgbW9kdWxlIGRlcGVuZGVuY2llcywgYW5kIGlmIHNvLCB3aGF0IGFyZSB0aGV5P1xuXG5JJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgKGUuZy4sIGBpZmAsIGBzZWxlY3RgLCBgZGVwZW5kcyBvbmApLiBUaGVzZSB3aWxsIHNob3cgbWUgaG93IHRoZSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgaW50ZXJhY3QuIEnigJlsbCBiZSB3YXRjaGluZyBmb3IgYW55IGBkZWZhdWx0YCB2YWx1ZXMg4oCTIHRoZXkgcmV2ZWFsIHRoZSBrZXJuZWwgZGV2ZWxvcGVycycgaW50ZW5kZWQgY29uZmlndXJhdGlvbnMsIHNvIEknbGwgYmUgcGF5aW5nIGNhcmVmdWwgYXR0ZW50aW9uIHRvIHRoZXNlLiBJ4oCZbGwgYWxzbyBiZSBzZWFyY2hpbmcgZm9yIGFueSBgYm9vbGAsIGB0cmlzdGF0ZWAsIG9yIGBpbnRgIHZhcmlhYmxlcy4gVGhlc2UgYXJlIHRoZSBtYWluIHNldHRpbmdzLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGVhY2ggb25lIGFmZmVjdHMgdGhlIGNvbXBpbGF0aW9uIGFuZCBsaW5raW5nIHByb2Nlc3MsIGFzIHdlbGwgYXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGZpbmFsIGRyaXZlci4gRmluYWxseSwgSeKAmWxsIGJlIGNoZWNraW5nIG91dCB0aGUgJ2hlbHAnIHRleHQuIEl0J3MgdGhlIG1vc3QgdmFsdWFibGUgdGhpbmcsIHRvIGV4cGxhaW4gdGhlIHNldHRpbmdzIGluIGNvbnRleHQgYW5kIGd1aWRlIHVzZXJzIGluIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NjU0LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6NDkuMDczNTg0NzYzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAyNzpcXHRcXG4gIDI4OlxcdGNvbmZpZyBNVDc5MjFVXFxuICAyOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMzA6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDMxOlxcdFxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMzQ6XFx0XFx0aGVscFxcbiAgMzU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6NDkuMDczNjY5NDAzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDk4MzcwNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqRXhhbWluaW5nIHRoZSBXTEFOIERyaXZlciBMYW5kc2NhcGUqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGdldCB0aGlzIHdpcmVsZXNzIGludGVyZmFjZSB3b3JraW5nLiBUaGUgY29yZSBjb21wb25lbnRzLCBhcyB1c3VhbCwgYXJlIHRoZSBgTUFDODAyMTFgIGZyYW1ld29yayBhbmQgdGhlIGBVU0JgIHN1YnN5c3RlbSwgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgVVNCIGRvbmdsZS4gQmFzZWQgb24gdGhlIGRvY3VtZW50YXRpb24sIEknbSBwcmV0dHkgc3VyZSB3ZSdyZSBsb29raW5nIGF0IGRyaXZlcnMgZm9yIE1lZGlhVGVrIGNoaXBzZXRzLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBgTVQ3NngwVWAsIGBNVDc2NjNVYCwgYW5kIGBNVDc5MjFVYC4gSXQncyBhIGJpdCBvZiBhIHN0YW5kYXJkIHNldC5cblxuSGFuZyBvbiBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bC4gVGhlIGRlcGVuZGVuY3kgdHJlZSBpcyBpbXBvcnRhbnQuIExvb2tpbmcgY2xvc2VyLCBpdCBhcHBlYXJzIHRoYXQgYE1UNzZfQ09SRWAgaXMgYWN0dWFsbHkgYSBmdW5kYW1lbnRhbCBjb21wb25lbnQgc2VsZWN0ZWQgYnkgdGhlc2Ugc3BlY2lmaWMgTWVkaWFUZWsgZHJpdmVycy4gSSBrbmV3IEkgaGFkIHRvIGNoZWNrIGJhY2sgb24gdGhhdC4gSXQgd2lsbCBiZSB0aGUgYmFzZSBmb3IgYWxsIG9mIHRoZW0uIEdvb2QgY2F0Y2guIEFuZCBpdCBhbHNvIG1lYW5zIHRoYXQgdGhlIHJpZ2h0IHRoaW5nIHdpbGwgZGVwZW5kIG9uIHRoZSBjb3JyZWN0IHNlbGVjdGlvbi5cblxuTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSByZWxldmFudCBvcHRpb25zLCBsZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgYE1UNzZ4MlVgIGRyaXZlciwganVzdCBpbiBjYXNlIHRoZXJlJ3Mgc29tZXRoaW5nIHJlbGV2YW50IHRoZXJlIEknbSBvdmVybG9va2luZywgb3Igc29tZXRoaW5nIEkgY2FuIGxldmVyYWdlIGR1cmluZyB0aGUgY29uZmlndXJhdGlvbi4gWW91IGFsd2F5cyBuZWVkIHRvIGRvdWJsZS1jaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjczNzMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMxOjUzLjY4MzUwOTQ0NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0Njk5MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc2eDJVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc9Nj1jb25maWcgTVQ3NngyRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE4OmNvbmZpZyBNVDc2eDJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngyVSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTo1My43OTgyMTM4NTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1ODE2OTgzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBNVDc5MjVVYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIFRoZSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYE1UNzkyNVVgLiBUaGlzIGxpa2VseSByZWZlcnMgdG8gYSBzcGVjaWZpYyBjb21wb25lbnQgb3Igc3lzdGVtLCBhbmQgbXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gZXN0YWJsaXNoIGNvbnRleHQuIElzIHRoaXMgYSBjaGlwLCBhIGRyaXZlciwgYSBmaXJtd2FyZSB2ZXJzaW9uLCBhIHNwZWNpZmljIG1vZHVsZSB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIHNwZWNpZmljaXR5IG9mIHRoZSBpZGVudGlmaWVyIHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRpdmVseSB3ZWxsLWRlZmluZWQsIG5vdCBhIGdlbmVyYWwgY29uY2VwdC4gVGhlIFwiTVRcIiBwcmVmaXggdXN1YWxseSBwb2ludHMgdG8gYSBNZWRpYVRlayBwYXJ0LCB3aGljaCBoZWxwcyBuYXJyb3cgZG93biB0aGUgcG9zc2liaWxpdGllcy4gVGhlIFwiNzkyNVVcIiB0aGVuIHJlcHJlc2VudHMgc29tZSB1bmlxdWUgbW9kZWwgb3IgcmV2aXNpb24gd2l0aGluIHRoZSBNZWRpYVRlayBlY29zeXN0ZW0uIE15IG5leHQgc3RlcHMgd291bGQgYmUgdG8gc3RhcnQgZ2F0aGVyaW5nIGluZm9ybWF0aW9uOiBjcm9zcy1yZWZlcmVuY2UgaXQgd2l0aCBrbm93biBkYXRhYmFzZXMgb2YgTWVkaWF0ZWsgY29tcG9uZW50cywgc2VhcmNoIGludGVybmFsIGRvY3VtZW50YXRpb24sIGxvb2sgZm9yIG1lbnRpb25zIGluIGhhcmR3YXJlIHJldmlld3Mgb3IgZGF0YXNoZWV0cywgY2hlY2sgcmVsZXZhbnQgYnVnIHJlcG9ydHMgb3IgZXJyYXRhIHNoZWV0cyBpZiBhdmFpbGFibGUsIG9yIGV2ZW4gY2hlY2sgbXkgbm90ZXMgYW5kIGtub3dsZWRnZSBiYXNlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gVGhlIGdvYWwgaXMgdG8gcmFwaWRseSBkZXRlcm1pbmUgdGhlIGZ1bmN0aW9uIGFuZCBzaWduaWZpY2FuY2Ugb2YgdGhpcyBpdGVtIGluIHRoZSBsYXJnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5MjEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTo1OS4wNTYzODY2NDRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MjEyNzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5MjVVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc9Nz1jb25maWcgTVQ3OTI1RVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTo1OS4xMTQ2MDMwNzlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI5MjE5NzI2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gVGhhdCBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHN1cHBvcnRlZCBoYXJkd2FyZS4gSSBhbHNvIHNlZSBgTUFDODAyMTFgIGFuZCBgVVNCYCwgc28gaXQncyBhIHdpcmVsZXNzIGRyaXZlciB3aXRoIGEgVVNCIGludGVyZmFjZSwgb3BlcmF0aW5nIHdpdGhpbiB0aGUgTUFDODAyMTEgZnJhbWV3b3JrLCB3aGljaCBpcyB3aGF0IEkgd291bGQgZXhwZWN0LiBOb3csIGxldCdzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGUgaXNzdWUgYnkgYW5hbHl6aW5nIHN5bWJvbHMgdG8gZGV0ZXJtaW5lIHRoZSBjb2RlIHBhdGggb2YgaW50ZXJlc3QuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoaXMgbW9kaWZpZWQgZnVuY3Rpb24sIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYC4gRmlyc3QsIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgZnVuY3Rpb24gaXMgc3RhdGljIG9yIGV4cG9ydGVkLiBBaCwgaXQncyBleHBvcnRlZCwgc28gaXQncyBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSBpdHMgZGVmaW5pbmcgY29tcGlsYXRpb24gdW5pdC4gVGhhdOKAmXMgZ29vZCB0byBrbm93LiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYC4gSSBrbm93IGl0IHdpbGwgYmUgbG9jYXRlZCB3aXRoaW4gdGhlIE1lZGlhdGVrIGRyaXZlciBjb2RlLiBUaGUgcGF0aCBpczogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguY2AuIExldCdzIHRha2UgYSBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM2OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMjowNC40MDY4MDIxMTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyMDpcXHRcXG4gMTIxOlxcdGludFxcbiAxMjI6XFx0bXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4gMTIzOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAxMjQ6XFx0e1xcbiAxMjU6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKXNrYi1cXHUwMDNlZGF0YTtcXG4gMTI2OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTtcXG4gMTI3OlxcdFxcdHN0cnVjdCBtdDc2X3R4X2NiICpjYiA9IG10NzZfdHhfc2tiX2NiKHNrYik7XFxuIDEyODpcXHRcXHRpbnQgcGlkO1xcbiAxMjk6XFx0XFxuIDEzMDpcXHRcXHRtZW1zZXQoY2IsIDAsIHNpemVvZigqY2IpKTtcXG4gMTMxOlxcdFxcbiAxMzI6XFx0XFx0aWYgKCF3Y2lkKVxcbiAxMzM6XFx0XFx0XFx0cmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7XFxuIDEzNDpcXHRcXG4gMTM1OlxcdFxcdGlmIChpbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfTk9fQUNLKVxcbiAxMzY6XFx0XFx0XFx0cmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7XFxuIDEzNzpcXHRcXG4gMTM4OlxcdFxcdGlmICghKGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgKElFRUU4MDIxMV9UWF9DVExfUkVRX1RYX1NUQVRVUyB8XFxuIDEzOTpcXHRcXHRcXHRcXHQgICAgIElFRUU4MDIxMV9UWF9DVExfUkFURV9DVFJMX1BST0JFKSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzI6MDQuNDA2ODk3NzAxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MzM2MjM0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYWNrZXQgVHJhbnNtaXNzaW9uIFN0YXR1cyBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkndmUgcGlucG9pbnRlZCBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgYXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUuIEl0J3MgdGhlIG9uZSBJIG5lZWQgdG8gZXhhbWluZS4gVGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgaXQncyBjYWxsZWQgYnkgYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCwgYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBhbmQgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAuIFRoaXMgaXMgcGVyZmVjdCDigJMgdGhlc2UgYWN0IGxpa2UgZm9jdXMgc3ltYm9scywgd2hpY2ggbWVhbnMgbXkgaW52ZXN0aWdhdGlvbiB3aWxsIGJlIG11Y2ggbW9yZSB0YXJnZXRlZC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlc2UgY2FsbCBzaXRlcyBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBUaGF0IHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGVpciBwb3RlbnRpYWwgc2NvcGUgYW5kIHZpc2liaWxpdHkgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyMTUsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMjowOS4wNDA1MjQ5MDVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMjE5NzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTIxMz1zdGF0aWMgaW50IG10NzZ4MHVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjIxLVxcdFxcdC5zZXRfY2hhbm5lbCA9IG10NzZ4MF9zZXRfY2hhbm5lbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMjI6XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3NngwMnVfdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjIzLVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2eDAydV90eF9jb21wbGV0ZV9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmg9MTc9aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmg6MTg6aW50IG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmgtMTktXFx0XFx0XFx0ICAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM9NDY9aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6NjQ6aW50IG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy02NS1cXHRcXHRcXHQgICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy0xMTYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jOjExNzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2eDAydV90eF9wcmVwYXJlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtMTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MzI9c3RhdGljIGludCBtdDc2eDJ1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtNDAtXFx0XFx0LnNldF9jaGFubmVsID0gbXQ3NngydV9zZXRfY2hhbm5lbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzo0MTpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc2eDAydV90eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy00Mi1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3NngwMnVfdHhfY29tcGxldGVfc2tiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMjowOS4xMTM3NTEwMzFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyMTgzNjExNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgVFggU0tCIFByZXBhcmF0aW9uIExhbmRzY2FwZSoqXG5cblJpZ2h0LCBzbyBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgIGlzIGV4cG9zZWQsIHRoYXQncyBnb29kLiBJdCBjb25maXJtcyBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgb2YgdGhhdCBwYXJ0aWN1bGFyIHByZXBhcmF0aW9uIGZ1bmN0aW9uLiBCdXQsIG5vdyB0aGF0IEkgaGF2ZSB0aGlzIGluIG1pbmQsIGFuZCB0aGF0IEkgYW0gdGhpbmtpbmcgYWJvdXQgdGhpcyBmYW1pbHkgb2YgZHJpdmVycywgd2hhdCBhYm91dCB0aGUgU0RJTyB2ZXJzaW9uIG9mIHRoYXQ/IExldCBtZSB0aGlua+KApiB0aGUgYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAgZnVuY3Rpb24gaXMgd2hhdCBJIG5lZWQgdG8gbG9vayBhdCBuZXh0LiBXaGF0IGFyZSB0aGUgZGlmZmVyZW5jZXMgdGhlcmU/IERvZXMgaXQgZGlmZmVyIGJhc2VkIG9uIHRoZSBpbnRlcmZhY2UsIG9yIGlzIHRoZXJlIHNvbWUgbW9yZSBnZW5lcmFsIGZ1bmN0aW9uPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlLCBhbmQgcG9zc2libGUgY29tbW9uIGNvZGUgYmV0d2VlbiB0aGVzZSwgcGFydGljdWxhcmx5IGluIGxpZ2h0IG9mIHNvbWUgb2YgdGhlIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBvciBoYXJkd2FyZSBkaWZmZXJlbmNlcyBpbmhlcmVudCBiZXR3ZWVuIFVTQiBhbmQgU0RJTyBpbXBsZW1lbnRhdGlvbnM/IEkgbmVlZCB0byBnbyBkZWVwZXIgbm93IHRoYXQgdGhpcyBoYXMgZW1lcmdlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0ODAsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMjoxMy41MzU1OTE5MTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MzIzMjczNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9NTQwPXZvaWQgbXQ3NjIyX3RyaWdnZXJfaGlmX2ludChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCBib29sIGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0Mi0vKiB1c2IgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDM6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0NC1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYz03Nj1zdGF0aWMgaW50IG10NzY2M3NfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy04MS1cXHRcXHQuZHJ2X2ZsYWdzID0gTVRfRFJWX1JYX0RNQV9IRFIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjgyOlxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtODMtXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzY2M191c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0xMTI9c3RhdGljIGludCBtdDc2NjN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTExNy1cXHRcXHQuZHJ2X2ZsYWdzID0gTVRfRFJWX1JYX0RNQV9IRFIgfCBNVF9EUlZfSFdfTUdNVF9UWFEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTE4OlxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTktXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzY2M191c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jPTE3OT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE4MTppbnQgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xODItXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIyNC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMjU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIyNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzI6MTMuODA4ODU4MDRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA4NjgzMDE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBVU0IvU0RJTyBUWCBQcmVwYXJhdGlvbiBpbiBNZWRpYXRlayBXaUZpIERyaXZlcnMqKlxuXG5IbW0sIHNvIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIGlzIGFuIGV4cG9ydGVkIGZ1bmN0aW9uLCBpbnRlcmVzdGluZy4gSXQncyBjbGVhcmx5IGEga2V5IHBhcnQgb2YgdGhlIHRyYW5zbWl0IHBhdGgsIGhhbmRsaW5nIHRoZSBTZXJ2aWNlIFJlcXVlc3QgQmxvY2sgKFNLQikgcHJlcGFyYXRpb24sIHdoaWNoIGlzIGZ1bmRhbWVudGFsIGZvciBtb3ZpbmcgZGF0YSBwYWNrZXRzIG92ZXIgVVNCIG9yIFNESU8gaW4gdGhhdCBwYXJ0aWN1bGFyIE1lZGlhdGVrIGNoaXBzZXQuIEJ1dCwgaXQgZ290IG1lIHdvbmRlcmluZywgaXMgdGhlcmUgYWxzbyBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBvciBzb21ldGhpbmcgc2ltaWxhciBmb3IgdGhlIG5ld2VyIGBtdDc5MjFgIGNoaXBzZXQ/IEdpdmVuIE1lZGlhdGVrJ3MgdHlwaWNhbCBkcml2ZXIgc3RydWN0dXJlLCBhbmQgdGhlIGV2b2x1dGlvbiBvZiB0aGVpciBoYXJkd2FyZSwgSSdkIGV4cGVjdCB0aGVyZSB0byBiZSBhIGRlZGljYXRlZCBmdW5jdGlvbiwgbGlrZWx5IHNoYXJpbmcgc2ltaWxhciBjb25jZXB0cywgYnV0IG9wdGltaXplZCBmb3IgdGhlIG5ldyBoYXJkd2FyZSBnZW5lcmF0aW9uLiBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGViYXNlIHRvIHNlZSBob3cgdGhleSd2ZSBoYW5kbGVkIHRoYXQsIGJlY2F1c2UgaWYgaXQgZG9lc24ndCBleGlzdCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIHNoYXJpbmcgdGhlIHNhbWUgY29kZS4gSXQgd291bGQgYmUgZ29vZCB0byB1bmRlcnN0YW5kIGlmIGl04oCZcyBhIGRpcmVjdCBwb3J0IHdpdGggbWlub3IgdHdlYWtzLCBhIGNvbXBsZXRlbHkgcmVkZXNpZ25lZCBmdW5jdGlvbiwgb3Igc29tZXRoaW5nIGluLWJldHdlZW4uIFRoZSBzcGVjaWZpY3Mgd2lsbCBoYXZlIGltcGxpY2F0aW9ucyBvbiBwZXJmb3JtYW5jZSwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIGFueSBwb3RlbnRpYWwgYnVnIGZpeGVzLiBUaGlzIGlzIGEgY3JpdGljYWwgYXJlYSBmb3IgZWZmaWNpZW50IGFuZCByb2J1c3Qgd2lyZWxlc3MgZGF0YSB0cmFuc2ZlciwgYW5kIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyBNZWRpYXRlayBpcyBtYW5hZ2luZyB0aGUgcGFja2V0IGhhbmRsaW5nIG9uIHRoZSBuZXdlciBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3NjksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMjoyMC44OTU2OTA4MzJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5Mzc0NzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz03NjQ9bXQ3OTIxX3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3NzY6aW50IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3Ny1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODIyOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODIzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MzI2PWludCBtdDc5MjFfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg6MzI4OmludCBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMjktXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM9OTA9c3RhdGljIGludCBtdDc5MjFzX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtOTgtXFx0XFx0XFx0XFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jOjk5OlxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMTAwLVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNTktXFx0XFx0XFx0XFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTYwOlxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNjEtXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMyOjIwLjk5NTA2OTg0MVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQxMDcwMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIE92ZXJzaWdodCBpbiBVU0IvU0RJTyBEcml2ZXIgSGFuZGxpbmcqKlxuXG5BbHJpZ2h0LCBzbyBJIHNlZSB0aGF0IGBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIGlzIGV4cG9zZWQgYXMgYW4gZXhwb3J0ZWQgZnVuY3Rpb24uIFRoYXQncyBnb29kLCB0aGF0IHN1Z2dlc3RzIHNvbWUgZGVncmVlIG9mLCBwcm9iYWJseSwgYnJvYWRlciBzdXBwb3J0IG9yIHV0aWxpemF0aW9uIGJleW9uZCB0aGUgaW1tZWRpYXRlIGNvbnRleHQgb2YgdGhlIG10NzkyMS4gTm93LCBhIHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkLCB0aG91Z2gsIGFuZCBpdCdzIGEgY3JpdGljYWwgb25lIGlmIHdlIGFyZSBjb25zaWRlcmluZyB0aGUgZGVzaWduIHByaW5jaXBsZXMuIFdoYXQgYWJvdXQgaXRzIHByZWRlY2Vzc29yLCBvciBhIHJlbGF0ZWQgZnVuY3Rpb24sIGluIHRoZSBgbXQ3OTI1YCBjb2RlYmFzZT8gV2FzIHRoZXJlIGEgc2ltaWxhciBmdW5jdGlvbiwgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmA/IElmIHNvLCBpcyBpdCBoYW5kbGVkIGNvcnJlY3RseSwgYW5kIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgaW50ZXJmYWNlIGNvcnJlY3Q/IElzIHRoZSBsb2dpYyBjb25zaXN0ZW50IGFjcm9zcyB0aGUgcmVsZXZhbnQgdmVyc2lvbnMgb2YgdGhlIGNvZGU/IFRoaXMgbWVyaXRzIGRlZXBlciBpbnZlc3RpZ2F0aW9uIGJlY2F1c2UgYSBwb3RlbnRpYWwgbGFjayBvZiBzeW1tZXRyeSBoZXJlIGNvdWxkIGluZGljYXRlIGEgYnVnLCBhbiBvdmVyc2lnaHQsIG9yIGFuIGluY29tcGxldGUgcG9ydC4gSW4gYW55IGNhc2UsIGl0IHN1Z2dlc3RzIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYG10NzkyNWAgY29kZSBhbmQgY2hlY2sgdGhlIHN0YXRlIG9mIHRoaW5ncyB0aGVyZS4gQ29uc2lzdGVuY3kgaXMga2V5IHdoZW4gZGVhbGluZyB3aXRoIHRoZXNlIHNvcnRzIG9mIGxvdy1sZXZlbCBkcml2ZXIgY29tcG9uZW50cy4gSXQncyBsaWtlbHkgdGhhdCBhIGNvbW1vbiwgb3IgYXQgbGVhc3QgaGlnaGx5IHJlbGF0ZWQsIGZ1bmN0aW9uIHNob3VsZCBhbHNvIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCBvbiBhIHNpbWlsYXIgYmFzaXMsIGV2ZW4gaWYganVzdCBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzEyNywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMyOjI1LjMzNjE0MzM3OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU0NTc3OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjE9bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMzppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzNC1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2Nzg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzY5PWludCBtdDc5MjVfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzcxOmludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzItXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1OS1cXHRcXHRcXHRcXHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjA6XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2MS1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzI6MjUuNDAxNjA1ODM0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MjkyMDMzOTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQcm9wb3NlZCBQYXRjaCBhbmQgSXRzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCdzIGFjY2Vzc2libGUuIFRoYXQgaW1tZWRpYXRlbHkgbmFycm93cyB0aGUgZm9jdXMgdG8gdGhlIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBmdW5jdGlvbiwgYW5kIGl0cyByZWxhdGVkIGAqdHhfcHJlcGFyZV9za2JgIGZ1bmN0aW9ucyBmb3IgdGhlIFVTQi9TRElPIGRyaXZlcnM6IGBtdDc2eDAydWAsIGBtdDc2NjNfdXNiX3NkaW9gLCBgbXQ3OTIxX3VzYl9zZGlvYCwgYW5kIGBtdDc5MjVfdXNiX3NkaW9gLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gd2F0Y2guXG5cblRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBzZWVtIHRvIGJlOiBgTUFDODAyMTFgLCBgVVNCYCwgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc2NjNVYCwgYE1UNzkyMVVgLCBhbmQgYE1UNzkyNVVgLiBBIGJpdCBvZiBob3VzZWtlZXBpbmcgaGVyZSBlbnN1cmVzIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLlxuXG5Ob3csIGEgY3J1Y2lhbCBwb2ludDogSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBjYWxsIHNpdGVzIGZvciBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAsIG5vdCBqdXN0IHRoZSBVU0IvU0RJTyBvbmVzLiBJIHNlZSB0aGF0IGl0IGlzIGFsc28gY2FsbGVkIGJ5IFBDSWUgZHJpdmVyczogYG10NzYwM190eF9wcmVwYXJlX3NrYmAsIGBtdDc2MTVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTE1X3R4X3ByZXBhcmVfc2tiYCwgYG10NzkyMWVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTI1ZV90eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTk2X3R4X3ByZXBhcmVfc2tiYC4gQnV0LCBzaW5jZSBTeXprYWxsZXIgZG9lc24ndCBlbXVsYXRlIHRoZSBNZWRpYVRlayBQQ0llIGRldmljZXMsIHRob3NlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS4gSG93ZXZlciwgdGhlIFVTQiBwYXRocyBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUgdGhyb3VnaCBgZHVtbXlfaGNkYC5cblxuU28sIHRoZSBmdXp6aW5nIGlzIGRlZmluaXRlbHkgdmlhYmxlIGFuZCB3aWxsIGJlIHdvcnRod2hpbGUuXG5cbkkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIGBNVDc2X0NPUkVgIGlzIGEgbXVzdCwgd2hpY2ggaXMgYSBnaXZlbi4gYE1UNzZfVVNCYCBpcyBzZWxlY3RlZCBieSBgTVQ3NjYzVWAuIGBNVDc2eDAyX1VTQmAgaXMgc2VsZWN0ZWQgYnkgYE1UNzZ4MFVgIGFuZCBgTVQ3NngyVWAsIGFuZCBgTVQ3OTJ4X1VTQmAgaXMgc2VsZWN0ZWQgYnkgYE1UNzkyMVVgIGFuZCBgTVQ3OTI1VWAuIFRoYXQgc2hvdWxkIGNvdmVyIGl0LiBMaXN0aW5nIHRoZSBsZWFmIGNvbmZpZ3MgaXMgc3VmZmljaWVudC5cblxuTm93LCBsZXQncyBleGFtaW5lIHRoZSBwYXRjaCBpdHNlbGYuXG5cbmBgYGNcbi1cdGlmICghd2NpZCB8fCAhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2V3Y2lkW3djaWQtXHUwMDNlaWR4XSkpXG4rXHRpZiAoIXdjaWQpXG4gXHRcdHJldHVybiBNVF9QQUNLRVRfSURfTk9fQUNLO1xuIGBgYFxuXG5hbmRcblxuYGBgY1xuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRldi1cdTAwM2VzdGF0dXNfbG9jayk7XG4gXG4rXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2V3Y2lkW3djaWQtXHUwMDNlaWR4XSkgIT0gd2NpZCkge1xuK1x0XHRwaWQgPSBNVF9QQUNLRVRfSURfTk9fQUNLO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbiBcdHBpZCA9IGlkcl9hbGxvYyhcdTAwMjZ3Y2lkLVx1MDAzZXBrdGlkLCBza2IsIE1UX1BBQ0tFVF9JRF9GSVJTVCxcbiBgYGBcblxuQWgsIGl0J3MgYSBjcml0aWNhbCBmaXguIEl0IGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGB3Y2lkYCAod2lyZWxlc3MgY29udGV4dCBJRCkgY291bGQgYmUgZnJlZWQgb3IgcmVwbGFjZWQgYmV0d2VlbiB0aGUgaW5pdGlhbCBjaGVjayBhbmQgaXRzIHVzZSBpbiBgaWRyX2FsbG9jYC4gIFRoZSBvcmlnaW5hbCBjaGVjayB3YXMgdnVsbmVyYWJsZSBiZWNhdXNlIGByY3VfYWNjZXNzX3BvaW50ZXJgIGlzIG5vdCBzYWZlIHRvIHVzZSBvdXRzaWRlIHRoZSByY3UgcmVhZCBsb2NrLiBUaGUgZml4IG1vdmVzIHRoZSBjaGVjayBpbnNpZGUgdGhlIHNwaW5sb2NrIHRvIGVuc3VyZSBhdG9taWNpdHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtdDc2IGRyaXZlci4gQmVjYXVzZSBpdCBpcyByZWFjaGFibGUgdGhyb3VnaCB0aGUgVVNCIGRyaXZlciwgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIGNhbiBmdXp6LlxuXG4qKlN1bW1hcnk6KiogVGhpcyBwYXRjaCwgd2hpY2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbXQ3NiBkcml2ZXIgcmVsYXRlZCB0byB3aXJlbGVzcyBjb250ZXh0IElEcyAod2NpZCksIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGRyaXZlciB2YXJpYW50cyBvZiB0aGUgbXQ3NiBkcml2ZXIuIFRoZSBpbXBvcnRhbnQgZm9jdXMgc3ltYm9scyBhcmUgdGhlIGZ1bmN0aW9ucyBJIGxpc3RlZCBiZWZvcmUuIFRoZSBjb25maWd1cmF0aW9ucyBuZWVkZWQgYXJlIHRoZSBvbmVzIEkgbWVudGlvbmVkLiBJIHdpbGwgZnV6eiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDI3OSwiT3V0cHV0VG9rZW5zIjoyOTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzI6NDAuNjkzNjQyNDY5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMjE4MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc2NjNVXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl90eF9zdGF0dXNfc2tiX2FkZFwiLFxuICAgIFwibXQ3NngwMnVfdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgaW4gdGhlIE1lZGlhVGVrIG10NzYgd2lyZWxlc3MgZHJpdmVyIHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uIGJ5IG1vdmluZyB0aGUgYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgaW5zaWRlIHRoZSBgc3RhdHVzX2xvY2tgIHNwaW5sb2NrLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhyb3VnaCB0aGUgVVNCIHZhcmlhbnRzIG9mIHRoZSBtdDc2IGRyaXZlciAoZS5nLiwgbXQ3NngwdSwgbXQ3NjYzdSwgbXQ3OTIxdSwgbXQ3OTI1dSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIixcbiAgICBcIk1UNzY2M1VcIixcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2X3R4X3N0YXR1c19za2JfYWRkXCIsXG4gICAgXCJtdDc2eDAydV90eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBpbiB0aGUgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXIgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gYnkgbW92aW5nIHRoZSBgcmN1X2FjY2Vzc19wb2ludGVyYCBjaGVjayBpbnNpZGUgdGhlIGBzdGF0dXNfbG9ja2Agc3BpbmxvY2suIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aHJvdWdoIHRoZSBVU0IgdmFyaWFudHMgb2YgdGhlIG10NzYgZHJpdmVyIChlLmcuLCBtdDc2eDB1LCBtdDc2NjN1LCBtdDc5MjF1LCBtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24gKGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMyOjQwLjgwNDg2ODA0OVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQzMTU4MzI2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMyOjQwLjgwNTMxMDUwOVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5NDMxMTM1MjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgYnkgbW92aW5nIHRoZSB2YWxpZGF0aW9uIG9mIGB3Y2lkYCBpbnNpZGUgdGhlIGBzdGF0dXNfbG9ja2Agc3BpbmxvY2sgYW5kIGVuc3VyaW5nIGl0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHBvaW50ZXIuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBidWdzIGNhdXNlZCBieSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGBkZXYtXFx1MDAzZXdjaWRgIGFycmF5LiBTdWNoIGNvbmN1cnJlbmN5IGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIHBhZGRpbmcgc2VudCB0byB1c2VyIHNwYWNlLCB3aGljaCBhcmUgdGhlIHNwZWNpZmljIHRhcmdldHMgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzUwYmFmODczODdiMjc4YTU0ODE5N2E4MTVlNjBjYTIxNjAxYTc4YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDEzOjMxOjA3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG5pbmRleCAzNzA3ZWUxOWU0YWU3Li4wZjc0ZDgwOGQzMjg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbkBAIC0xMjksNyArMTI5LDcgQEAgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbiBcbiBcdG1lbXNldChjYiwgMCwgc2l6ZW9mKCpjYikpO1xuIFxuLVx0aWYgKCF3Y2lkIHx8ICFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZXdjaWRbd2NpZC1cdTAwM2VpZHhdKSlcbitcdGlmICghd2NpZClcbiBcdFx0cmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7XG4gXG4gXHRpZiAoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9OT19BQ0spXG5AQCAtMTQ3LDYgKzE0NywxMSBAQCBtdDc2X3R4X3N0YXR1c19za2JfYWRkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRldi1cdTAwM2VzdGF0dXNfbG9jayk7XG4gXG4rXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2V3Y2lkW3djaWQtXHUwMDNlaWR4XSkgIT0gd2NpZCkge1xuK1x0XHRwaWQgPSBNVF9QQUNLRVRfSURfTk9fQUNLO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbiBcdHBpZCA9IGlkcl9hbGxvYyhcdTAwMjZ3Y2lkLVx1MDAzZXBrdGlkLCBza2IsIE1UX1BBQ0tFVF9JRF9GSVJTVCxcbiBcdFx0XHRNVF9QQUNLRVRfSURfTUFTSywgR0ZQX0FUT01JQyk7XG4gXHRpZiAocGlkIFx1MDAzYyAwKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMjo0MC44MDUzMTEyMzlaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQzMTEwNzYwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb25jdXJyZW5jeSBGaXggaW4gbXQ3NiBEcml2ZXIqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdC4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSB3aXRoaW4gdGhlIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBmdW5jdGlvbiBpbiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgYSBjcml0aWNhbCBsb2NraW5nIGZpeCByZWxhdGVkIHRvIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgV2ktRmkgQ29ubmVjdGlvbiBJRHMsIG9yIGB3Y2lkYHMuXG5cblRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIGNoZWNrLCBgIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXHUwMDNld2NpZFt3Y2lkLVx1MDAzZWlkeF0pYCwgZWFybHkgaW4gdGhlIGZ1bmN0aW9uLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBjaGVjayB3YXMgbWVhbnQgdG8gcHJldmVudCB1c2luZyBhIGB3Y2lkYCB0aGF0IGhhZCBhbHJlYWR5IGJlZW4gZnJlZWQgb3Igd2FzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIHJlcGxhY2VkLiBIb3dldmVyLCB0aGUgcGF0Y2ggaGFzIGlkZW50aWZpZWQgYSByYWNlIGNvbmRpdGlvbi4gSXQncyBub3cgY2hlY2tpbmcgaWYgdGhlIGB3Y2lkYCBpcyBzdGlsbCB2YWxpZCAqdW5kZXIqIHRoZSBgc3RhdHVzX2xvY2tgLiAgVGhlIGtleSBjaGFuZ2UgbW92ZXMgdGhlIGNoZWNrIGByY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZXdjaWRbd2NpZC1cdTAwM2VpZHhdKSAhPSB3Y2lkYCBpbnNpZGUgYSBgc3Bpbl9sb2NrX2JoYCBjcml0aWNhbCBzZWN0aW9uLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYHdjaWRgIGlzbid0IGZyZWVkIG9yIGNoYW5nZWQgYmV0d2VlbiB0aGUgdmFsaWRpdHkgY2hlY2sgYW5kIHRoZSBgaWRyX2FsbG9jYCBjYWxsLCB3aGljaCBpcyB3aGVyZSB0aGUgcG90ZW50aWFsIGZvciBhIHVzZS1hZnRlci1mcmVlIG9yIGEgcmVsYXRlZCByYWNlIGNvbmRpdGlvbiBleGlzdGVkLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBpcyBhIHRleHRib29rIGV4YW1wbGUgb2YgYSBsb2NraW5nIGJ1ZyBmaXguIFRoZSBvcmlnaW5hbCBjaGVjayB3YXNuJ3Qgc3VmZmljaWVudGx5IHN5bmNocm9uaXplZCB3aXRoIHBvdGVudGlhbCBjaGFuZ2VzIHRvIHRoZSBgd2NpZGAgZGF0YSBzdHJ1Y3R1cmUuIE1vdmluZyB0aGUgY2hlY2sgdW5kZXIgdGhlIGBzdGF0dXNfbG9ja2AgY29ycmVjdGx5IHNlcmlhbGl6ZXMgYWNjZXNzLCBwcm90ZWN0aW5nIGFnYWluc3QgdGhlIHJhY2UuIFRoaXMgc29ydCBvZiBidWcgd291bGQgbGlrZWx5IGJlIGNhdWdodCBieSBLQVNBTiBvciBvdGhlciBtZW1vcnkgc2FmZXR5IHRvb2xzLiBJdCBkb2VzIG5vdCBhcHBlYXIgdG8gaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBhbnkga2luZCBvZiBpbmZvcm1hdGlvbiBsZWFrLlxuXG5JJ20gY29uZmlkZW50IGluIGNhbGxpbmcgdGhpcyBhIHN0cmFpZ2h0IHJhY2UgY29uZGl0aW9uIGZpeCwgc3RyaWN0bHkgcmVsYXRlZCB0byBjb25jdXJyZW50IGFjY2Vzcy4gTm8gbmVlZCB0byBmbGFnIGl0IGFzIEtNU0FOLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjE0LCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMyOjUwLjIzNjQyMjY1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgYnkgbW92aW5nIHRoZSB2YWxpZGF0aW9uIG9mIGB3Y2lkYCBpbnNpZGUgdGhlIGBzdGF0dXNfbG9ja2Agc3BpbmxvY2sgYW5kIGVuc3VyaW5nIGl0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHBvaW50ZXIuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBidWdzIGNhdXNlZCBieSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGBkZXYtXFx1MDAzZXdjaWRgIGFycmF5LiBTdWNoIGNvbmN1cnJlbmN5IGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIHBhZGRpbmcgc2VudCB0byB1c2VyIHNwYWNlLCB3aGljaCBhcmUgdGhlIHNwZWNpZmljIHRhcmdldHMgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gaW4gYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgIGJ5IG1vdmluZyB0aGUgdmFsaWRhdGlvbiBvZiBgd2NpZGAgaW5zaWRlIHRoZSBgc3RhdHVzX2xvY2tgIHNwaW5sb2NrIGFuZCBlbnN1cmluZyBpdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBwb2ludGVyLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MgYnVncyBjYXVzZWQgYnkgY29uY3VycmVudCBtb2RpZmljYXRpb25zIHRvIHRoZSBgZGV2LVxcdTAwM2V3Y2lkYCBhcnJheS4gU3VjaCBjb25jdXJyZW5jeSBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBwYWRkaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgd2hpY2ggYXJlIHRoZSBzcGVjaWZpYyB0YXJnZXRzIG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow7zqh5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-21 13:29:22 +0000 UTC FinishedAt: 2026-08-21 13:32:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "USB", "MT76x0U", "MT76x2U", "MT7663U", "MT7921U", "MT7925U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "USB", "MT76x0U", "MT76x2U", "MT7663U", "MT7921U", "MT7925U" ], "series_id": "c574b062-3831-4598-b232-fb765c2b339d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt76_tx_status_skb_add", "mt76x02u_tx_prepare_skb", "mt7663_usb_sdio_tx_prepare_skb", "mt7921_usb_sdio_tx_prepare_skb", "mt7925_usb_sdio_tx_prepare_skb" ], "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+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtNVDc2eDBVJiMzNDssCiAgICAmIzM0O01UNzZ4MlUmIzM0OywKICAgICYjMzQ7TVQ3NjYzVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X3R4X3N0YXR1c19za2JfYWRkJiMzNDssCiAgICAmIzM0O210NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gaW4gYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgIGJ5IG1vdmluZyB0aGUgdmFsaWRhdGlvbiBvZiBgd2NpZGAgaW5zaWRlIHRoZSBgc3RhdHVzX2xvY2tgIHNwaW5sb2NrIGFuZCBlbnN1cmluZyBpdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBwb2ludGVyLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MgYnVncyBjYXVzZWQgYnkgY29uY3VycmVudCBtb2RpZmljYXRpb25zIHRvIHRoZSBgZGV2LVx1MDAzZXdjaWRgIGFycmF5LiBTdWNoIGNvbmN1cnJlbmN5IGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIHBhZGRpbmcgc2VudCB0byB1c2VyIHNwYWNlLCB3aGljaCBhcmUgdGhlIHNwZWNpZmljIHRhcmdldHMgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBpbiB0aGUgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXIgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gYnkgbW92aW5nIHRoZSBgcmN1X2FjY2Vzc19wb2ludGVyYCBjaGVjayBpbnNpZGUgdGhlIGBzdGF0dXNfbG9ja2Agc3BpbmxvY2suIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aHJvdWdoIHRoZSBVU0IgdmFyaWFudHMgb2YgdGhlIG10NzYgZHJpdmVyIChlLmcuLCBtdDc2eDB1LCBtdDc2NjN1LCBtdDc5MjF1LCBtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24gKGR1bW15X2hjZCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzNTBiYWY4NzM4N2IyNzhhNTQ4MTk3YTgxNWU2MGNhMjE2MDFhNzhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTM6MzE6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG5pbmRleCAzNzA3ZWUxOWU0YWU3Li4wZjc0ZDgwOGQzMjg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbkBAIC0xMjksNyAmIzQzOzEyOSw3IEBAIG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4gXG4gXHRtZW1zZXQoY2IsIDAsIHNpemVvZigqY2IpKTtcbiBcbi1cdGlmICghd2NpZCB8fCAhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2V3Y2lkW3djaWQtXHUwMDNlaWR4XSkpXG4mIzQzO1x0aWYgKCF3Y2lkKVxuIFx0XHRyZXR1cm4gTVRfUEFDS0VUX0lEX05PX0FDSztcbiBcbiBcdGlmIChpbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX05PX0FDSylcbkBAIC0xNDcsNiAmIzQzOzE0NywxMSBAQCBtdDc2X3R4X3N0YXR1c19za2JfYWRkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRldi1cdTAwM2VzdGF0dXNfbG9jayk7XG4gXG4mIzQzO1x0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXHUwMDNld2NpZFt3Y2lkLVx1MDAzZWlkeF0pICE9IHdjaWQpIHtcbiYjNDM7XHRcdHBpZCA9IE1UX1BBQ0tFVF9JRF9OT19BQ0s7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cGlkID0gaWRyX2FsbG9jKFx1MDAyNndjaWQtXHUwMDNlcGt0aWQsIHNrYiwgTVRfUEFDS0VUX0lEX0ZJUlNULFxuIFx0XHRcdE1UX1BBQ0tFVF9JRF9NQVNLLCBHRlBfQVRPTUlDKTtcbiBcdGlmIChwaWQgXHUwMDNjIDApIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc2NjNVJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZfdHhfc3RhdHVzX3NrYl9hZGQmIzM0OywKICAgICYjMzQ7bXQ3NngwMnVfdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgIGluIHRoZSBNZWRpYVRlayBtdDc2IHdpcmVsZXNzIGRyaXZlciB0byBmaXggYSByYWNlIGNvbmRpdGlvbiBieSBtb3ZpbmcgdGhlIGByY3VfYWNjZXNzX3BvaW50ZXJgIGNoZWNrIGluc2lkZSB0aGUgYHN0YXR1c19sb2NrYCBzcGlubG9jay4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggdGhlIFVTQiB2YXJpYW50cyBvZiB0aGUgbXQ3NiBkcml2ZXIgKGUuZy4sIG10NzZ4MHUsIG10NzY2M3UsIG10NzkyMXUsIG10NzkyNXUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZHVtbXlfaGNkKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM1MGJhZjg3Mzg3YjI3OGE1NDgxOTdhODE1ZTYwY2EyMTYwMWE3OGIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAyMSAxMzozMTowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYwppbmRleCAzNzA3ZWUxOWU0YWU3Li4wZjc0ZDgwOGQzMjg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jCkBAIC0xMjksNyAmIzQzOzEyOSw3IEBAIG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsCiAKIAltZW1zZXQoY2IsIDAsIHNpemVvZigqY2IpKTsKIAotCWlmICghd2NpZCB8fCAhcmN1X2FjY2Vzc19wb2ludGVyKGRldi0mZ3Q7d2NpZFt3Y2lkLSZndDtpZHhdKSkKJiM0MzsJaWYgKCF3Y2lkKQogCQlyZXR1cm4gTVRfUEFDS0VUX0lEX05PX0FDSzsKIAogCWlmIChpbmZvLSZndDtmbGFncyAmYW1wOyBJRUVFODAyMTFfVFhfQ1RMX05PX0FDSykKQEAgLTE0Nyw2ICYjNDM7MTQ3LDExIEBAIG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsCiAKIAlzcGluX2xvY2tfYmgoJmFtcDtkZXYtJmd0O3N0YXR1c19sb2NrKTsKIAomIzQzOwlpZiAocmN1X2FjY2Vzc19wb2ludGVyKGRldi0mZ3Q7d2NpZFt3Y2lkLSZndDtpZHhdKSAhPSB3Y2lkKSB7CiYjNDM7CQlwaWQgPSBNVF9QQUNLRVRfSURfTk9fQUNLOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKIAlwaWQgPSBpZHJfYWxsb2MoJmFtcDt3Y2lkLSZndDtwa3RpZCwgc2tiLCBNVF9QQUNLRVRfSURfRklSU1QsCiAJCQlNVF9QQUNLRVRfSURfTUFTSywgR0ZQX0FUT01JQyk7CiAJaWYgKHBpZCAmbHQ7IDApIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZWRpYXRlayBNVDc2IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jYC4gSXQmIzM5O3MgdHdlYWtpbmcgdGhlIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhhdCB0aGV5JiMzOTt2ZSBzaW1wbGlmaWVkIGEgY2hlY2sgcmVsYXRlZCB0byB0aGUgYHdjaWRgICh3aXJlbGVzcyBjbGllbnQgSUQpLiBUaGV5IHJlbW92ZWQgb25lIGNoZWNrIHRoYXQgd2FzIGRlZW1lZCByZWR1bmRhbnQgYW5kIGFkZGVkIGFub3RoZXIgY2hlY2sgKmFmdGVyKiBhIHNwaW5sb2NrLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nOyBpdCBzdWdnZXN0cyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBkYXRhIGNvcnJ1cHRpb24gaXNzdWUgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIGFkZHJlc3MuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyBhYm91dCB0ZXN0YWJpbGl0eSwgb2YgY291cnNlLiBDYW4gSSBldmVuICpyZWFjaCogdGhpcyBgbXQ3NmAgZHJpdmVyIGluIG15IHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJdCYjMzk7cyBhIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciwgYW5kIG15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZXNlIGFyZSB0eXBpY2FsbHkgaGFyZHdhcmUtZGVwZW5kZW50LCBtZWFuaW5nIFBDSWUsIFVTQiwgb3IgU0RJTyBiYXNlZC4gSSBpbW1lZGlhdGVseSB0aGluaywgJiMzNDtEb2VzIFFFTVUgZXZlbiAqZW11bGF0ZSogTWVkaWF0ZWsgd2lyZWxlc3MgaGFyZHdhcmU/JiMzNDsgTm8sIGl0IGRvZXNuJiMzOTt0LiBBbmQgbm8sIGl0IGNhbiYjMzk7dCBiZSByZWFjaGVkIHZpYSBgbWFjODAyMTFfaHdzaW1gIGVpdGhlciwgYXMgdGhhdCYjMzk7cyBhIGRpZmZlcmVudCBkcml2ZXIgYWx0b2dldGhlci4KCkJ1dCB0aGVuIEkgcmVtZW1iZXIuIFdhaXQgYSBtaW51dGUhICptdDc2KiBkb2VzIGhhdmUgVVNCIGRyaXZlcnMsIGxpa2UgYG10NzZ4MDItdXNiYCwgYG10NzZ4MnVgLCBhbmQgYG10NzYwMXVgLiBBaGEhIFVTQiBvcGVucyB1cCBhIHdob2xlIG5ldyBhdHRhY2sgc3VyZmFjZSBmb3IgZnV6emluZyEgU3l6a2FsbGVyIGlzIGNhcGFibGUgb2YgZnV6emluZyBVU0IgZHJpdmVycyB3aXRoIGBkdW1teV9oY2RgIG9yIGB2aGNpLWhjZGAuIFRpbWUgdG8gY2hlY2sgd2hldGhlciB0aGUgdGFyZ2V0ZWQgY29kZSBoYXMgVVNCIHN1cHBvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE2MjMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfTVQ3Nl9DT1JFKSAmIzQzOz0gbXQ3Ni5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzZfVVNCKSAmIzQzOz0gbXQ3Ni11c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00LW9iai0kKENPTkZJR19NVDc2X1NESU8pICYjNDM7PSBtdDc2LXNkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT01PW9iai0kKENPTkZJR19NVDc2eDAyX0xJQikgJiM0Mzs9IG10NzZ4MDItbGliLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTVQ3NngwMl9VU0IpICYjNDM7PSBtdDc2eDAyLXVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTctb2JqLSQoQ09ORklHX01UNzZfQ09OTkFDX0xJQikgJiM0Mzs9IG10NzYtY29ubmFjLWxpYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX01UNzkyeF9MSUIpICYjNDM7PSBtdDc5MngtbGliLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTVQ3OTJ4X1VTQikgJiM0Mzs9IG10NzkyeC11c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS0xMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTIxPW10NzYtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjIzOm10NzYtdXNiLXkgOj0gdXNiLm8gdXNiX3RyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMjQtbXQ3Ni1zZGlvLXkgOj0gc2Rpby5vIHNkaW9fdHhyeC5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0yNj1DRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZToyNzpDRkxBR1NfdXNiX3RyYWNlLm8gOj0gLUkkKHNyYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMjgtQ0ZMQUdTX210NzZ4MDJfdHJhY2UubyA6PSAtSSQoc3JjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9MzE9bXQ3NngwMi1saWIteSA6PSBtdDc2eDAyX3V0aWwubyBtdDc2eDAyX21hYy5vIG10NzZ4MDJfbWN1Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTozNjptdDc2eDAyLXVzYi15IDo9IG10NzZ4MDJfdXNiX21jdS5vIG10NzZ4MDJfdXNiX2NvcmUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS0zNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTQyPW10NzkyeC1saWItJChDT05GSUdfQUNQSSkgJiM0Mzs9IG10NzkyeF9hY3BpX3Nhci5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQzOm10NzkyeC11c2IteSA6PSBtdDc5MnhfdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtNDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM9NzQ9c3RhdGljIGludCBtdDc2X3J4X3F1ZXVlc19yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy04Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jOjgzOlx0XHRxdWV1ZWQgPSBtdDc2X2lzX3VzYihkZXYpID8gcS1cdTAwM2VuZGVzYyAtIHEtXHUwMDNlcXVldWVkIDogcS1cdTAwM2VxdWV1ZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy04NC1cdFx0c2VxX3ByaW50ZihzLCBcJiMzNDsgJTlkIHwgJTlkIHwgJTlkIHwgJTlkIHxcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvbGVkcy5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNDojaW5jbHVkZSBcdTAwM2NsaW51eC91c2IuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTUtI2luY2x1ZGUgXHUwMDNjbGludXgvYXZlcmFnZS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9OTU9c3RydWN0IG10NzZfYnVzX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTEwOiNkZWZpbmUgbXQ3Nl9pc191c2IoZGV2KSAoKGRldiktXHUwMDNlYnVzLVx1MDAzZXR5cGUgPT0gTVQ3Nl9CVVNfVVNCKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTExLSNkZWZpbmUgbXQ3Nl9pc19tbWlvKGRldikgKChkZXYpLVx1MDAzZWJ1cy1cdTAwM2V0eXBlID09IE1UNzZfQlVTX01NSU8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9NjUwPXN0cnVjdCBtdDc2X21jdSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNjYzLSNkZWZpbmUgTUNVX1JFU1BfVVJCX1NJWkVcdDEwMjRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY2NDpzdHJ1Y3QgbXQ3Nl91c2Ige1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NjY1Olx0c3RydWN0IG11dGV4IHVzYl9jdHJsX210eDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTY2Ni1cdHU4ICpkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTkyND1zdHJ1Y3QgbXQ3Nl9kZXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEwNDEtXHRcdHN0cnVjdCBtdDc2X21taW8gbW1pbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEwNDI6XHRcdHN0cnVjdCBtdDc2X3VzYiB1c2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMDQzLVx0XHRzdHJ1Y3QgbXQ3Nl9zZGlvIHNkaW87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTgzND12b2lkIG10NzZfb2ZmY2hhbm5lbF9ub3RpZnkoc3RydWN0IG10NzZfcGh5ICpwaHksIGJvb2wgb2ZmY2hhbm5lbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTgzNjovKiB1c2IgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4Mzctc3RhdGljIGlubGluZSBib29sIG10NzZ1X3VyYl9lcnJvcihzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTg0Nj1tdDc2dV9idWxrX21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdm9pZCAqZGF0YSwgaW50IGxlbiwgaW50ICphY3R1YWxfbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4NDgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTg0OTpcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1aW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODUwOlx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVpbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4NTE6XHRzdHJ1Y3QgbXQ3Nl91c2IgKnVzYiA9IFx1MDAyNmRldi1cdTAwM2V1c2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODUyLVx0dW5zaWduZWQgaW50IHBpcGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg1NC1cdGlmIChhY3R1YWxfbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTg1NTpcdFx0cGlwZSA9IHVzYl9yY3ZidWxrcGlwZSh1ZGV2LCB1c2ItXHUwMDNlaW5fZXBbZXBdKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4NTYtXHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODU3Olx0XHRwaXBlID0gdXNiX3NuZGJ1bGtwaXBlKHVkZXYsIHVzYi1cdTAwM2VvdXRfZXBbZXBdKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4NTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODU5Olx0cmV0dXJuIHVzYl9idWxrX21zZyh1ZGV2LCBwaXBlLCBkYXRhLCBsZW4sIGFjdHVhbF9sZW4sIHRpbWVvdXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg2MC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTg3Nj12b2lkIF9fX210NzZ1X3dyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1OCByZXEsIHU4IHJlcV90eXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg3Ny1cdFx0IHUzMiBhZGRyLCB1MzIgdmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4Nzg6aW50IF9fbXQ3NnVfaW5pdChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODc5LVx0XHQgc3RydWN0IG10NzZfYnVzX29wcyAqb3BzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4ODA6aW50IG10NzZ1X2luaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4ODEtaW50IG10NzZ1X2FsbG9jX21jdV9xdWV1ZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU9ND1vYmotJChDT05GSUdfTVQ3NjE1RSkgJiM0Mzs9IG10NzYxNWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfTVQ3NjYzX1VTQl9TRElPX0NPTU1PTikgJiM0Mzs9IG10NzY2My11c2Itc2Rpby1jb21tb24ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGUtNi1vYmotJChDT05GSUdfTVQ3NjYzVSkgJiM0Mzs9IG10NzY2M3Uub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlPTE2PW10NzYxNWUtJChDT05GSUdfTVQ3NjIyX1dNQUMpICYjNDM7PSBzb2Mub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGUtMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZToxODptdDc2NjMtdXNiLXNkaW8tY29tbW9uLXkgOj0gdXNiX3NkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6MTk6bXQ3NjYzdS15IDo9IHVzYi5vIHVzYl9tY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGUtMjAtbXQ3NjYzcy15IDo9IHNkaW8ubyBzZGlvX21jdS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTk2PW10NzYxNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEwNTpcdGlmICghbXQ3NjE1X2Zpcm13YXJlX29mZmxvYWQoZGV2KSB8fCBtdDc2X2lzX3VzYihcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTA2LVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9MzU1PWV4dGVybiBjb25zdCB1MzIgbXQ3NjYzZV9yZWdfbWFwW19fTVRfQkFTRV9NQVhdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6MzU2OmV4dGVybiBjb25zdCB1MzIgbXQ3NjYzX3VzYl9zZGlvX3JlZ19tYXBbX19NVF9CQVNFX01BWF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC0zNTctZXh0ZXJuIHN0cnVjdCBwY2lfZHJpdmVyIG10NzYxNV9wY2lfZHJpdmVyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTU0MD12b2lkIG10NzYyMl90cmlnZ2VyX2hpZl9pbnQoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgYm9vbCBlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDI6LyogdXNiICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDM6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTQ0LVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTQ2LVx0XHRcdFx0ICAgc3RydWN0IG10NzZfdHhfaW5mbyAqdHhfaW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDc6Ym9vbCBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjU0ODp2b2lkIG10NzY2M191c2Jfc2Rpb190eF9jb21wbGV0ZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTQ5LVx0XHRcdFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NTA6aW50IG10NzY2M191c2Jfc2Rpb19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NTEtaW50IG10NzY2M3VfbWN1X2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jPTc2PXN0YXRpYyBpbnQgbXQ3NjYzc19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy04MS1cdFx0LmRydl9mbGFncyA9IE1UX0RSVl9SWF9ETUFfSERSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjgyOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6ODM6XHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjg0Olx0XHQudHhfc3RhdHVzX2RhdGEgPSBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtODUtXHRcdC5yeF9za2IgPSBtdDc2MTVfcXVldWVfcnhfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy0xMTgtXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1jdV93b3JrLCBtdDc2NjNzX2luaXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6MTE5Olx0ZGV2LVx1MDAzZXJlZ19tYXAgPSBtdDc2NjNfdXNiX3NkaW9fcmVnX21hcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy0xMjAtXHRkZXYtXHUwMDNlb3BzID0gb3BzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy0xNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6MTU5Olx0cmV0ID0gbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTE2MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTAtI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExOiNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzYi5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdDc2MTVfZGV2aWNlX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xOS1cdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwZThkLCAweDc2NjMsIDB4ZmYsIDB4ZmYsIDB4ZmYpIH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MjQ9c3RhdGljIHUzMiBtdDc2NjN1X3JyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjI4Olx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yOS1cdHJldCA9IF9fX210NzZ1X3JyKGRldiwgTVRfVkVORF9SRUFEX0VYVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTMwLVx0XHRcdCAgVVNCX0RJUl9JTiB8IFVTQl9UWVBFX1ZFTkRPUiwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzozMTpcdG11dGV4X3VubG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0zMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0zNj1zdGF0aWMgdm9pZCBtdDc2NjN1X3dyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkciwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTM3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjM4Olx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0zOS1cdF9fX210NzZ1X3dyKGRldiwgTVRfVkVORF9XUklURV9FWFQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy00MC1cdFx0ICAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfVkVORE9SLCBhZGRyLCB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6NDE6XHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNDItfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTQ0PXN0YXRpYyB1MzIgbXQ3NjYzdV9ybXcoc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTQ2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjQ3Olx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNldXNiLnVzYl9jdHJsX210eCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy00OC1cdHZhbCB8PSBfX19tdDc2dV9ycihkZXYsIE1UX1ZFTkRfUkVBRF9FWFQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNTEtXHRcdCAgICBVU0JfRElSX09VVCB8IFVTQl9UWVBFX1ZFTkRPUiwgYWRkciwgdmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjUyOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2V1c2IudXNiX2N0cmxfbXR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTU3PXN0YXRpYyB2b2lkIG10NzY2M3VfY29weShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIG9mZnNldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy01OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzo2MDpcdHN0cnVjdCBtdDc2X3VzYiAqdXNiID0gXHUwMDI2ZGV2LVx1MDAzZXVzYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTYxLVx0aW50IHJldCwgaSA9IDAsIGJhdGNoX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjY2Olx0bXV0ZXhfbG9jayhcdTAwMjZ1c2ItXHUwMDNldXNiX2N0cmxfbXR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTY3LVx0d2hpbGUgKGkgXHUwMDNjIGxlbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Njg6XHRcdGJhdGNoX2xlbiA9IG1pbl90KGludCwgdXNiLVx1MDAzZWRhdGFfbGVuLCBsZW4gLSBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjY5Olx0XHRtZW1jcHkodXNiLVx1MDAzZWRhdGEsIHZhbCAmIzQzOyBpLCBiYXRjaF9sZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNzAtXHRcdHJldCA9IF9fbXQ3NnVfdmVuZG9yX3JlcXVlc3QoZGV2LCBNVF9WRU5EX1dSSVRFX0VYVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy03Mi1cdFx0XHRcdFx0ICAgICAob2Zmc2V0ICYjNDM7IGkpIFx1MDAzZVx1MDAzZSAxNiwgb2Zmc2V0ICYjNDM7IGksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzo3MzpcdFx0XHRcdFx0ICAgICB1c2ItXHUwMDNlZGF0YSwgYmF0Y2hfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTc0LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTc4LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Nzk6XHRtdXRleF91bmxvY2soXHUwMDI2dXNiLVx1MDAzZXVzYl9jdHJsX210eCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy04MC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MTAxPXN0YXRpYyB2b2lkIG10NzY2M3VfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMTI6c3RhdGljIGludCBtdDc2NjN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExMzpcdFx0XHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTE0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTctXHRcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUiB8IE1UX0RSVl9IV19NR01UX1RYUSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExODpcdFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTE5Olx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjEyMDpcdFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTIxLVx0XHQucnhfc2tiID0gbXQ3NjE1X3F1ZXVlX3J4X3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMzUtXHR9O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTM2Olx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTEzNy1cdHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTQyOlx0b3BzID0gZGV2bV9rbWVtZHVwKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgXHUwMDI2bXQ3NjE1X29wcywgc2l6ZW9mKG10NzYxNV9vcHMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTQzLVx0XHRcdCAgIEdGUF9LRVJORUwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE0OTpcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIHNpemVvZigqZGV2KSwgb3BzLCBcdTAwMjZkcnZfb3BzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE1MC1cdGlmICghbWRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNTMtXHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzYxNV9kZXYsIG10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTU0Olx0dXNiX3Jlc2V0X2RldmljZSh1ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE1NjpcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNTgtXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1jdV93b3JrLCBtdDc2NjN1X2luaXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxNTk6XHRkZXYtXHUwMDNlcmVnX21hcCA9IG10NzY2M191c2Jfc2Rpb19yZWdfbWFwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTYwLVx0ZGV2LVx1MDAzZW9wcyA9IG9wcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE2MTpcdHJldCA9IF9fbXQ3NnVfaW5pdChtZGV2LCB1c2JfaW50ZiwgXHUwMDI2YnVzX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNjItXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE4NjpcdHJldCA9IG10NzY2M191c2Jfc2Rpb19yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTkzLVx0bXQ3NnVfcXVldWVzX2RlaW5pdChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxOTQ6XHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE5NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyMDE6c3RhdGljIHZvaWQgbXQ3NjYzdV9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTIwMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyMDM6XHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YSh1c2JfaW50Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MjExOlx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgTlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjE2LSNpZmRlZiBDT05GSUdfUE1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIxNzpzdGF0aWMgaW50IG10NzY2M3Vfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjE4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIxOTpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjIwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTIzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIzNjpzdGF0aWMgaW50IG10NzY2M3VfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjM3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIzODpcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjM5LVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyNTk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzYxNV9kZXZpY2VfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjYwLU1PRFVMRV9GSVJNV0FSRShNVDc2NjNfT0ZGTE9BRF9GSVJNV0FSRV9OOSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MjYzPU1PRFVMRV9GSVJNV0FSRShNVDc2NjNfUk9NX1BBVENIKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjI2NTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NjYzdV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNjYtXHQubmFtZVx0XHQ9IEtCVUlMRF9NT0ROQU1FLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3Ny19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Mjc4Om1vZHVsZV91c2JfZHJpdmVyKG10NzY2M3VfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTktI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTA6I2luY2x1ZGUgXHUwMDNjbGludXgvdXNiLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTc6Y29uc3QgdTMyIG10NzY2M191c2Jfc2Rpb19yZWdfbWFwW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE4LVx0W01UX1RPUF9DRkdfQkFTRV1cdD0gMHg4MDAyMDAwMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTQwLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjQxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb19yZWdfbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jPTQzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjQ0Om10NzY2M191c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTQ1LVx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjU2OnN0YXRpYyBpbnQgbXQ3NjYzX3VzYl9zZGlvX3NldF9yYXRlcyhzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy01Ny1cdFx0XHRcdCAgICAgc3RydWN0IG10NzYxNV93dGJsX3JhdGVfZGVzYyAqd3JkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxMzE6c3RhdGljIHZvaWQgbXQ3NjYzX3VzYl9zZGlvX3JhdGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTEzMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNDgtXHRcdG10NzYxNV9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE0OTpcdFx0bXQ3NjYzX3VzYl9zZGlvX3NldF9yYXRlcyhkZXYsIHdyZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE1MC1cdFx0bXQ3NjE1X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTU2OmJvb2wgbXQ3NjYzX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTU3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE2NS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE2NjpFWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE2ODp2b2lkIG10NzY2M191c2Jfc2Rpb190eF9jb21wbGV0ZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNjktXHRcdFx0XHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxNzM6XHRpZiAobXQ3Nl9pc191c2IobWRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE3NC1cdFx0aGVhZHJvb20gJiM0Mzs9IE1UX1VTQl9IRFJfU0laRTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE3OC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE3OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxODE6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xODItXHRcdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIwNy1cdHBrdGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChcdTAwMjZkZXYtXHUwMDNlbXQ3Niwgd2NpZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MjA4Olx0bXQ3NjYzX3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MjA5Olx0aWYgKG10NzZfaXNfdXNiKG1kZXYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIxMC1cdFx0dTMyIGxlbiA9IHNrYi1cdTAwM2VsZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMjQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMjU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0yMjc9c3RhdGljIGludCBtdDc2NjN1X2RtYV9zY2hlZF9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjI3OTpzdGF0aWMgaW50IG10NzY2M191c2Jfc2Rpb19pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTI4MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjI4NzpcdGlmIChtdDc2X2lzX3VzYihcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMjg4LVx0XHRyZXQgPSBtdDc2NjN1X2RtYV9zY2hlZF9pbml0KGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjMwNzppbnQgbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozMTI6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXJhdGVfd29yaywgbXQ3NjYzX3VzYl9zZGlvX3JhdGVfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTMxMy1cdElOSVRfTElTVF9IRUFEKFx1MDAyNmRldi1cdTAwM2V3cmRfaGVhZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjMxNjpcdGVyciA9IG10NzY2M191c2Jfc2Rpb19pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTMxNy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMjAtXHRody1cdTAwM2VleHRyYV90eF9oZWFkcm9vbSAmIzQzOz0gTVRfVVNCX1RYRF9TSVpFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozMjE6XHRpZiAobXQ3Nl9pc191c2IoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTMyMi1cdFx0aHctXHUwMDNlZXh0cmFfdHhfaGVhZHJvb20gJiM0Mzs9IE1UX1VTQl9IRFJfU0laRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzIzLVx0XHQvKiBjaGVjayBodyBzZyBzdXBwb3J0IGluIG9yZGVyIHRvIGVuYWJsZSBBTVNEVSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozMjQ6XHRcdGlmIChkZXYtXHUwMDNlbXQ3Ni51c2Iuc2dfZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTMyNS1cdFx0XHRody1cdTAwM2VtYXhfdHhfZnJhZ21lbnRzID0gTVRfSFdfVFhQX01BWF9CVUZfTlVNO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozMzU6XHRpZiAoIWRldi1cdTAwM2VtdDc2LnVzYi5zZ19lbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMzYtXHRcdHN0cnVjdCBpZWVlODAyMTFfc3RhX3ZodF9jYXAgKnZodF9jYXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zNDgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozNDk6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTM1MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jPTM2PWludCBtdDc2X2Nvbm5hY19wbV93YWtlKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjQwOlx0aWYgKG10NzZfaXNfdXNiKGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTQxLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jPTYyPXZvaWQgbXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYzo2NzpcdGlmIChtdDc2X2lzX3VzYihkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy02OC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9MjYyNT1tdDc2X2Nvbm5hY19tY3Vfc2V0X3dvd19jdHJsKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjY2Ny1cdFx0cmVxLndvd19jdHJsX3Rsdi53YWtldXBfaGlmID0gV09XX1BDSUU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjI2Njg6XHRlbHNlIGlmIChtdDc2X2lzX3VzYihkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy0yNjY5LVx0XHRyZXEud293X2N0cmxfdGx2Lndha2V1cF9oaWYgPSBXT1dfVVNCO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9MjY3OD1pbnQgbXQ3Nl9jb25uYWNfbWN1X3NldF9oaWZfc3VzcGVuZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgYm9vbCBzdXNwZW5kLCBib29sIHdhaXRfcmVzcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTI3MDMtXHRcdHJlcS5oZHIuaGlmX3R5cGUgPSAyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzoyNzA0Olx0ZWxzZSBpZiAobXQ3Nl9pc191c2IoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtMjcwNS1cdFx0cmVxLmhkci5oaWZfdHlwZSA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGU9Nj1tdDc2eDAtY29tbW9uLXkgOj0gaW5pdC5vIG1haW4ubyBlZXByb20ubyBwaHkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL01ha2VmaWxlOjg6bXQ3NngwdS15IDo9IHVzYi5vIHVzYl9tY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtOS1tdDc2eDBlLXkgOj0gcGNpLm8gcGNpX21jdS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmg6MTU6I2luY2x1ZGUgXHUwMDNjbGludXgvdXNiLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oLTE2LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBsZXRpb24uaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jPTEwMz1tdDc2eDBfcmZfd3Ioc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTEwNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYzoxMDU6XHRpZiAobXQ3Nl9pc191c2IoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xMDYtXHRcdHN0cnVjdCBtdDc2X3JlZ19wYWlyIHBhaXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmM9MTE5PXN0YXRpYyBpbnQgbXQ3NngwX3JmX3JyKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCB1MzIgb2Zmc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jOjEyNDpcdGlmIChtdDc2X2lzX3VzYihcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTEyNS1cdFx0c3RydWN0IG10NzZfcmVnX3BhaXIgcGFpciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYz05MTM9dm9pZCBtdDc2eDBfcGh5X3NldF9jaGFubmVsKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTk3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jOjk3MTpcdGlmIChtdDc2X2lzX3VzYihcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTk3Mi1cdFx0bXQ3NngwX3BoeV9iYnBfc2V0X2J3KGRldiwgY2hhbmRlZi1cdTAwM2V3aWR0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtNy0jaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6ODojaW5jbHVkZSBcdTAwM2NsaW51eC91c2IuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMS0jaW5jbHVkZSBcJiMzNDttY3UuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTI6I2luY2x1ZGUgXCYjMzQ7Li4vbXQ3NngwMl91c2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxNDpzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgbXQ3NngwX2RldmljZV90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTUtXHR7IFVTQl9ERVZJQ0UoMHgxNDhGLCAweDc2MTApIH0sXHQvKiBNVDc2MTBVICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzo0NjpzdGF0aWMgdm9pZCBtdDc2eDBfaW5pdF91c2JfZG1hKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtNDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTE1MT1zdGF0aWMgaW50IG10NzZ4MHVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxNjQ6XHRtdDc2eDBfaW5pdF91c2JfZG1hKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNjUtXHRlcnIgPSBtdDc2eDBfaW5pdF9oYXJkd2FyZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTE3OT1zdGF0aWMgaW50IG10NzZ4MHVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE4MS1cdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gZGV2LVx1MDAzZW10NzYuaHc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxODI6XHRzdHJ1Y3QgbXQ3Nl91c2IgKnVzYiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2LnVzYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE4My1cdGludCBlcnI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxODU6XHR1c2ItXHUwMDNlbWN1LmRhdGEgPSBkZXZtX2ttYWxsb2MoZGV2LVx1MDAzZW10NzYuZGV2LCBNQ1VfUkVTUF9VUkJfU0laRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE4Ni1cdFx0XHRcdCAgICAgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxODc6XHRpZiAoIXVzYi1cdTAwM2VtY3UuZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE4OC1cdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTk4LVx0LyogY2hlY2sgaHcgc2cgc3VwcG9ydCBpbiBvcmRlciB0byBlbmFibGUgQU1TRFUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE5OTpcdGh3LVx1MDAzZW1heF90eF9mcmFnbWVudHMgPSBkZXYtXHUwMDNlbXQ3Ni51c2Iuc2dfZW4gPyBNVF9UWF9TR19NQVhfU0laRSA6IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMDAtXHRlcnIgPSBtdDc2eDBfcmVnaXN0ZXJfZGV2aWNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjEzOnN0YXRpYyBpbnQgbXQ3NngwdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMTQ6XHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIxNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjI5LVx0fTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIzMDpcdHN0cnVjdCB1c2JfZGV2aWNlICp1c2JfZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldih1c2JfaW50Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMzEtXHRzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMzY6XHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBzaXplb2YoKmRldiksIFx1MDAyNm10NzZ4MHVfb3BzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjM3LVx0XHRcdFx0IFx1MDAyNmRydl9vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjI0ODpcdHVzYl9yZXNldF9kZXZpY2UodXNiX2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyNTA6XHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjUyLVx0bXQ3NngwMnVfaW5pdF9tY3UobWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyNTM6XHRyZXQgPSBtdDc2dV9pbml0KG1kZXYsIHVzYl9pbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI1NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjg0LWVycjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjI4NTpcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjg2LVx0bXQ3NnVfcXVldWVzX2RlaW5pdChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjkyOnN0YXRpYyB2b2lkIG10NzZ4MF9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI5My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyOTQ6XHRzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEodXNiX2ludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjk1LVx0Ym9vbCBpbml0aWFsaXplZCA9IHRlc3RfYml0KE1UNzZfU1RBVEVfSU5JVElBTElaRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMDM6XHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMDg6c3RhdGljIGludCBfX21heWJlX3VudXNlZCBtdDc2eDBfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMDktXHRcdFx0XHRcdCBwbV9tZXNzYWdlX3Qgc3RhdGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzExOlx0c3RydWN0IG10NzZ4MDJfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKHVzYl9pbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMjA6c3RhdGljIGludCBfX21heWJlX3VudXNlZCBtdDc2eDBfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMyMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMjI6XHRzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEodXNiX2ludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzIzLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMzk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzZ4MF9kZXZpY2VfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzQwLU1PRFVMRV9GSVJNV0FSRShNVDc2MTBFX0ZJUk1XQVJFKTtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTE1MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgQ29kZSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIGBtdDc2YCBkZWZpbml0ZWx5IGhhcyBVU0IgZHJpdmVycyDigJMgSSBrbm93IHRoYXQsIGBtdDc2eDB1YCwgYG10NzYxNXVgLCBhbGwgdGhvc2UuIEFuZCB0aGF0JiMzOTtzIGdyZWF0IG5ld3MgYmVjYXVzZSBzeXprYWxsZXIsIHdoaWNoIEkmIzM5O20gdmVyeSBmYW1pbGlhciB3aXRoLCBoYXMgYSBVU0IgZnV6emVyIGJ1aWx0IHJpZ2h0IGluLCBsZXZlcmFnaW5nIHRoYXQgYGR1bW15X2hjZGAgc2V0dXAuIFRoaXMgbWVhbnMgSSBjYW4gYWxtb3N0IGNlcnRhaW5seSB0cmlnZ2VyIHRoaXMgY29kZSwgZXZlbiB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhhdCYjMzk7cyBhIGh1Z2Ugd2luIGZvciB0ZXN0aW5nLiBOb3csIGxldCYjMzk7cyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMgZnVuY3Rpb24uIEkgd2FudCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfdHhfc3RhdHVzX3NrYl9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNTY2PXZvaWQgbXQ3Nl90eF9zdGF0dXNfdW5sb2NrKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE1NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNTY5OmludCBtdDc2X3R4X3N0YXR1c19za2JfYWRkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTU3MC1cdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWMuYz0xMDcxPWludCBtdDc2MDNfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWMuYy0xMDk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFjLmM6MTA5NjpcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cdTAwM2Vza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFjLmMtMTA5Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfbWFjLmM9NjA9aW50IG10NzYxNV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYy05OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYzo5OTpcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cdTAwM2Vza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX21hYy5jLTEwMC1cdG10NzYxNV9tYWNfd3JpdGVfdHh3aShkZXYsIHR4d2lfcHRyLCB0eF9pbmZvLVx1MDAzZXNrYiwgd2NpZCwgc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM9MTgxPWludCBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MjA3Olx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFx1MDAyNmRldi1cdTAwM2VtdDc2LCB3Y2lkLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMDgtXHRtdDc2NjNfdXNiX3NkaW9fd3JpdGVfdHh3aShkZXYsIHdjaWQsIHFpZCwgc3RhLCBrZXksIHBrdGlkLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM9MTM3PWludCBtdDc2eDAyX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jOjE1NTpcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cdTAwM2Vza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xNTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM9NjQ9aW50IG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy04Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jOjgzOlx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVx1MDAzZXNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy04NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYz03Mjg9aW50IG10NzkxNV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTc2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jOjc2ODpcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cdTAwM2Vza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMtNzY5LVx0bXQ3OTE1X21hY193cml0ZV90eHdpKG1kZXYsIHR4d2lfcHRyLCB0eF9pbmZvLVx1MDAzZXNrYiwgd2NpZCwgcGlkLCBrZXksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9Nzc2PWludCBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MDY6XHRwa3RpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHdjaWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MDctXHRtdDc5MjFfdXNiX3NkaW9fd3JpdGVfdHh3aShkZXYsIHdjaWQsIHFpZCwgc3RhLCBrZXksIHBrdGlkLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYz04PWludCBtdDc5MjFlX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jOjQzOlx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVx1MDAzZXNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtNDQtXHRtdDc2X2Nvbm5hYzJfbWFjX3dyaXRlX3R4d2kobWRldiwgdHh3aV9wdHIsIHR4X2luZm8tXHUwMDNlc2tiLCB3Y2lkLCBrZXksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTYzMz1pbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2NjM6XHRwa3RpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHdjaWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjY0LVx0bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmM9OT1pbnQgbXQ3OTI1ZV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYzo0NDpcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cdTAwM2Vza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jLTQ1LVx0bXQ3OTI1X21hY193cml0ZV90eHdpKG1kZXYsIHR4d2lfcHRyLCB0eF9pbmZvLVx1MDAzZXNrYiwgd2NpZCwga2V5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTEwMzQ9aW50IG10Nzk5Nl90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTExMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoxMTMzOlx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVx1MDAzZXNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xMTM0LVx0bWVtc2V0KHR4d2lfcHRyLCAwLCBNVF9UWERfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTEyMT1pbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzoxMjI6bXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy0xMjMtXHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy0xNzItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjE3MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3R4X3N0YXR1c19za2JfYWRkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy0xNzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxMjIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBmdW5jdGlvbi4gVGhlIGNvZGUgc2F5cyBpdCYjMzk7cyBjYWxsZWQgYnkgYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCwgYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBhbmQgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgdGhpcyBpc24mIzM5O3Qgc29tZSBkZWFkIGNvZGUuIFRoZXNlIGFyZSBhbGwgVVNCIGRyaXZlcnMsIHdoaWNoIGlzIGltcG9ydGFudCB0byByZW1lbWJlci4gU28sIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aG9zZSBVU0IgZGV2aWNlIGludGVyYWN0aW9ucy4KCk5vdywgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBNeSBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSBnb2luZyB0byBiZSB0cmFja2luZyBkb3duIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhvc2Ugd2lsbCB0ZWxsIG1lIHdoZW4gdGhlc2UgVVNCIGRyaXZlcnMsIGFuZCB0aGVyZWZvcmUgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgLCBhcmUgYWN0dWFsbHkgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjpjb25maWcgTVQ3Nl9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Njpjb25maWcgTVQ3Nl9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNy1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTI6Y29uZmlnIE1UNzZfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxNjpjb25maWcgTVQ3Nl9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyMDpjb25maWcgTVQ3NngwMl9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI0OmNvbmZpZyBNVDc2eDAyX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI1LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjg6Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzY9Y29uZmlnIE1UNzkyeF9VU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNDEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWc6Mjpjb25maWcgTVQ3NjAzRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjAzRSAoUENJZSkgYW5kIE1UNzZ4OCBXTEFOIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjM6Y29uZmlnIE1UNzYxNV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo4OmNvbmZpZyBNVDc2MTVFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2MTVFIGFuZCBNVDc2NjNFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MjE6Y29uZmlnIE1UNzYyMl9XTUFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtNVDc2MjIgKFNvQykgV01BQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MzI6Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjM2OmNvbmZpZyBNVDc2NjNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTM3LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjYzVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6NDc6Y29uZmlnIE1UNzY2M1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDgtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2NjNTIChTRElPKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDBfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Njpjb25maWcgTVQ3NngwVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6MTk6Y29uZmlnIE1UNzZ4MEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDBFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDJfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Njpjb25maWcgTVQ3NngyRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngyRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE4OmNvbmZpZyBNVDc2eDJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngyVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1MTIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIE1UNzYgRHJpdmVyIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBNVDc2IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyDigJMgYE1UNzZfQ09SRWAsIGBNVDc2X1VTQmAsIGBNVDc2eDAyX1VTQmAsIGEgd2hvbGUgc2xldyBvZiB0aGVtOiBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzY2M1VgLCBgTVQ3OTJ4X1VTQmAsIGBNVDc5MjFVYCwgYE1UNzkyNVVgLCBhbmQgc28gb24uIEl0JiMzOTtzIGEgZmFpcmx5IGV4dGVuc2l2ZSBmYW1pbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSByZWxhdGUsIGhvdyB0aGV5JiMzOTtyZSBpbnRlcmNvbm5lY3RlZC4gSSB0aGluayBhIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgd291bGQgYmUgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgTVQ3NngwVWAuIFNlZSB3aGF0IG90aGVyIGNvbXBvbmVudHMgdGhhdCBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gZGVwZW5kcyBvbiwgd2hhdCBvdGhlciBwYXJ0cyBvZiB0aGUgZWNvc3lzdGVtIGl0IHB1bGxzIGluLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlIGFuZCBob3cgaXQgZml0cyB3aXRoaW4gdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3NngwVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc9Mj1jb25maWcgTVQ3NngwX0NPTU1PTlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Njpjb25maWcgTVQ3NngwVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTk1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBLY29uZmlnIGZpbGUgZm9yIHRoZSBNZWRpYXRlayBNVDc2IHNlcmllcyB3aXJlbGVzcyBkcml2ZXJzLgoKKipEZWVwIERpdmUgaW50byB0aGUgTVQ3NngwIEtjb25maWcqKgoKQWxyaWdodCwgSSYjMzk7bSBwdWxsaW5nIHVwIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgTVQ3NngwIHNlcmllcyBhcmUgZGVmaW5lZCwgYW5kIEkmIzM5O20gZWFnZXIgdG8gc2VlIGhvdyB0aGUgTWVkaWF0ZWsgZm9sa3Mgc3RydWN0dXJlIHRoZWlyIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBrZXJuZWwgY29uZmlndXJhdGlvbiBlbGVtZW50czogYGNvbmZpZ2AgYmxvY2tzLCBgdHJpc3RhdGVgIGFuZCBgYm9vbGAgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBoZWxwIHRleHQuLi4gdGhlIHdob2xlIHNoZWJhbmcuIEtub3dpbmcgdGhlIGFyY2hpdGVjdHVyZSwgSSBhbnRpY2lwYXRlIHRoZXkmIzM5O2xsIGhhdmUgb3B0aW9ucyBmb3IgZmVhdHVyZXMgbGlrZSBkaWZmZXJlbnQgTVQ3NiBjaGlwc2V0IHZhcmlhbnRzLCBwb3dlci1zYXZpbmcgZmVhdHVyZXMsIGRlYnVnZ2luZyBhaWRzLCBhbmQgbWF5YmUgZXZlbiBhIGZldyBwbGF0Zm9ybS1zcGVjaWZpYyBzZXR0aW5ncy4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbnkgY2xldmVyIHVzZXMgb2YgZGVwZW5kZW5jaWVzIG9yIGNob2ljZSBibG9ja3MgdG8gZW5zdXJlIHRoYXQgb25seSByZWxldmFudCBvcHRpb25zIGFyZSBwcmVzZW50ZWQgYmFzZWQgb24gdGhlIHNlbGVjdGVkIGhhcmR3YXJlLiBJJiMzOTtsbCBhbHNvIGJlIHNjYW5uaW5nIGZvciBhbnkgcG90ZW50aWFsIGdvdGNoYXMgb3IgY29uZmlndXJhdGlvbiBsYW5kbWluZXMgdGhhdCBtaWdodCBjYXVzZSBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLiBGaW5hbGx5LCBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSB2ZXJzaW9uaW5nIGFuZCBjb21wYXRpYmlsaXR5IGNoZWNrcy4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSBhIGNydWNpYWwgcGllY2UgaW4gdW5kZXJzdGFuZGluZyBob3cgSSBjYW4gYmVzdCBjb25maWd1cmUgdGhpcyBkcml2ZXIgYW5kIGludGVncmF0ZSBpdCBpbnRvIG15IG93biBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNVDc2eDBfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzZ4MDJfTElCXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE1UNzZ4MFVcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MFUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAgODpcdFx0c2VsZWN0IE1UNzZ4MF9DT01NT05cbiAgIDk6XHRcdHNlbGVjdCBNVDc2eDAyX1VTQlxuICAxMDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMTpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMFUtYmFzZWQgVVNCIDIuMCB3aXJlbGVzcyBkb25nbGVzLFxuICAxNDpcdFx0ICB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydCAxeDFcbiAgMTU6XHRcdCAgNDMzTWJwcyBQSFkgcmF0ZS5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVQ3NngwRVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTY0MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZXZpZXdpbmcgdGhhdCBLY29uZmlnIGZpbGU6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc2MTUgS2NvbmZpZyoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBpbW1lZGlhdGVseSBleHBlY3RpbmcgdG8gc2VlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE1UNzYxNSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCBhbGwgdGhlIHR1bmFibGUgcGFyYW1ldGVycyDigJMgdGhlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgaG93IHRoaXMgZHJpdmVyIGlzIGNvbXBpbGVkIGFuZCBpbnRlZ3JhdGVkIGludG8gdGhlIGJyb2FkZXIga2VybmVsLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgdGhlIG1haW4gZmVhdHVyZSBmbGFncywgdGhpbmdzIGxpa2Ugc3VwcG9ydCBmb3Igc3BlY2lmaWMgODAyLjExIHN0YW5kYXJkcywgYW55IGhhcmR3YXJlLXNwZWNpZmljIHR3ZWFrcywgYW5kIG1heWJlIG9wdGlvbnMgZm9yIGRlYnVnZ2luZyBvciBsb2dnaW5nLiBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGRlZmF1bHQgdmFsdWVzIHNldCBmb3IgZWFjaCBvcHRpb24uIFRob3NlIGRlcGVuZGVuY2llcyBhcmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3Mgc3RhY2sgYW5kIHRoZSB1bmRlcmx5aW5nIGtlcm5lbCBuZXR3b3JraW5nIGZyYW1ld29yay4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZXkmIzM5O3ZlIHN0cnVjdHVyZWQgaXQ7IGFyZSB0aGV5IHVzaW5nIHRoZSB0eXBpY2FsIGBib29sYCwgYHRyaXN0YXRlYCwgYGludGAsIGV0Yy4gb3B0aW9ucz8gV2hhdCBhYm91dCBhbnkgc3BlY2lmaWMgaGVscCB0ZXh0PyBBcmUgdGhleSBmb2xsb3dpbmcgdGhlIHN0YW5kYXJkIGtlcm5lbCBjb2Rpbmcgc3R5bGU/IEkmIzM5O2xsIGFsc28gYmUgb24gdGhlIGxvb2tvdXQgZm9yIGFueXRoaW5nIHRoYXQgbWlnaHQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIHBvd2VyIGNvbnN1bXB0aW9uLiBUaGlzIHdpbGwgYWxsIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBkcml2ZXImIzM5O3MgY2FwYWJpbGl0aWVzIGFuZCBob3cgaXQmIzM5O3MgaW50ZW5kZWQgdG8gYmUgdXNlZC4gVGltZSB0byBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyNTpcdFx0c2VsZWN0IFJFR01BUFxuICAyNjpcdFx0ZGVmYXVsdCB5XG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gV01BQyBvbiBNVDc2MjIgU29DIGRldmljZXNcbiAgMjk6XHRcdCAgd2hpY2ggaGFzIHRoZSBzYW1lIGZlYXR1cmUgc2V0IGFzIGEgTVQ3NjE1LCBidXQgbGltaXRlZCB0b1xuICAzMDpcdFx0ICAyLjQgR0h6IG9ubHkuXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XHRzZWxlY3QgTVQ3NjE1X0NPTU1PTlxuICAzNTpcdFxuICAzNjpcdGNvbmZpZyBNVDc2NjNVXG4gIDM3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2NjNVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMzg6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAzOTpcdFx0c2VsZWN0IE1UNzY2M19VU0JfU0RJT19DT01NT05cbiAgNDA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgNDE6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDQyOlx0XHRoZWxwXG4gIDQzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2NjNVIDgwMi4xMWFjIDJ4MjoyIHdpcmVsZXNzIGRldmljZXMuXG4gIDQ0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MzA3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQ29uc2lkZXJpbmcgV2lyZWxlc3MgQ2hpcHNldHMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHdpcmVsZXNzIGNoaXBzZXRzLCBhbmQgdGhlIGluaXRpYWwgY2FuZGlkYXRlcyBhcmUgYE1UNzZ4MFVgIGFuZCBgTVQ3NjYzVWAuIFRob3NlIGFyZSBnb29kIHN0YXJ0aW5nIHBvaW50cywgZXN0YWJsaXNoZWQgcGVyZm9ybWVycy4gQnV0LCBsZXQmIzM5O3Mgbm90IGp1bXAgdGhlIGd1bi4gV2UgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIG9wdGlvbnMsIGVzcGVjaWFsbHkgd2hlbiB3ZSBhcmUgdGFsa2luZyBhYm91dCB3aXJlbGVzcy4gSXMgYE1UNzkyMVVgIGEgdmlhYmxlIGFsdGVybmF0aXZlIG9yIGFuIG9wdGlvbiB0byBpbmNvcnBvcmF0ZT8gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHdlaWdoIGFsbCBwb3NzaWJpbGl0aWVzIHRvIG1ha2UgYW4gaW5mb3JtZWQgZGVjaXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5MjFVJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZz0xNz1jb25maWcgTVQ3OTIxU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NjU0CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdgIGZpbGU6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc5MjEgS2NvbmZpZyoqCgpPa2F5LCB0aW1lIHRvIGRpc3NlY3QgdGhlIEtjb25maWcgZm9yIHRoZSBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBJIGFscmVhZHkga25vdyB0aGlzIGNoaXA7IGl0JiMzOTtzIE1lZGlhVGVrJiMzOTtzIGxhdGVzdCwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBiZWluZyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gVGhlIEtjb25maWcgZmlsZSBpcyB0aGUga2V5LiBGaXJzdCwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIGBjb25maWdgIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dC4gVGhpcyBpcyB3aGVyZSB0aGUgZGVjaXNpb25zIGFyZSBtYWRlOiB3aWxsIHRoZSBkcml2ZXIgYmUgYnVpbHQtaW4sIG1vZHVsYXJpemVkLCBvciBjb21wbGV0ZWx5IGV4Y2x1ZGVkPyBXaGF0JiMzOTtzIGdvaW5nIHRvIGRldGVybWluZSB0aGlzPyBJJiMzOTtsbCBwcm9iYWJseSBzZWUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHJlc3RyaWN0aW9ucywgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsbHksIHZhcmlvdXMgZmVhdHVyZSBmbGFncyBmb3IgdGhpbmdzIGxpa2UgcG93ZXIgbWFuYWdlbWVudCwgcmVndWxhdG9yeSBkb21haW4gY29uZmlndXJhdGlvbiwgYW5kIG9mZmxvYWQgY2FwYWJpbGl0aWVzLgoKSSBleHBlY3QgdG8gc2VlIGEgY2xlYXIgaGllcmFyY2h5OyBwZXJoYXBzIHNlY3Rpb25zIGRlZmluaW5nIHRoZSBjb3JlIGRyaXZlciBhbmQgdGhlbiBuZXN0ZWQgb3B0aW9ucyBmb3Igc3BlY2lmaWMgZmVhdHVyZXMuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGNydWNpYWw7IEnigJlsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBkcml2ZXIgcmVsaWVzIG9uIGFueSBvdGhlciBtb2R1bGVzIG9yIHByZS1yZXF1aXNpdGVzLiBBcmUgdGhlcmUgYW55IG90aGVyIHJlcXVpcmVkIE1lZGlhVGVrIGRyaXZlcnMgb3IgY29yZSB3aXJlbGVzcyBpbmZyYXN0cnVjdHVyZSByZXF1aXJlbWVudHM/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhvc2UgZGVwZW5kZW5jaWVzIG9uIHRoZSBvdmVyYWxsIHN5c3RlbSBjb25maWd1cmF0aW9uPyBBcmUgdGhlcmUgYW55IG1vZHVsZSBkZXBlbmRlbmNpZXMsIGFuZCBpZiBzbywgd2hhdCBhcmUgdGhleT8KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgKGUuZy4sIGBpZmAsIGBzZWxlY3RgLCBgZGVwZW5kcyBvbmApLiBUaGVzZSB3aWxsIHNob3cgbWUgaG93IHRoZSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgaW50ZXJhY3QuIEnigJlsbCBiZSB3YXRjaGluZyBmb3IgYW55IGBkZWZhdWx0YCB2YWx1ZXMg4oCTIHRoZXkgcmV2ZWFsIHRoZSBrZXJuZWwgZGV2ZWxvcGVycyYjMzk7IGludGVuZGVkIGNvbmZpZ3VyYXRpb25zLCBzbyBJJiMzOTtsbCBiZSBwYXlpbmcgY2FyZWZ1bCBhdHRlbnRpb24gdG8gdGhlc2UuIEnigJlsbCBhbHNvIGJlIHNlYXJjaGluZyBmb3IgYW55IGBib29sYCwgYHRyaXN0YXRlYCwgb3IgYGludGAgdmFyaWFibGVzLiBUaGVzZSBhcmUgdGhlIG1haW4gc2V0dGluZ3MsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZWFjaCBvbmUgYWZmZWN0cyB0aGUgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcgcHJvY2VzcywgYXMgd2VsbCBhcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZmluYWwgZHJpdmVyLiBGaW5hbGx5LCBJ4oCZbGwgYmUgY2hlY2tpbmcgb3V0IHRoZSAmIzM5O2hlbHAmIzM5OyB0ZXh0LiBJdCYjMzk7cyB0aGUgbW9zdCB2YWx1YWJsZSB0aGluZywgdG8gZXhwbGFpbiB0aGUgc2V0dGluZ3MgaW4gY29udGV4dCBhbmQgZ3VpZGUgdXNlcnMgaW4gdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyNTpcdFxuICAyNjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBNVDc5MjFVXG4gIDI5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMzA6XHRcdHNlbGVjdCBNVDc5MnhfVVNCXG4gIDMxOlx0XHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxuICAzMjpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAzMzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxuICAzNjpcdFxuICAzNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzM3MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIHRoZSBXTEFOIERyaXZlciBMYW5kc2NhcGUqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBnZXQgdGhpcyB3aXJlbGVzcyBpbnRlcmZhY2Ugd29ya2luZy4gVGhlIGNvcmUgY29tcG9uZW50cywgYXMgdXN1YWwsIGFyZSB0aGUgYE1BQzgwMjExYCBmcmFtZXdvcmsgYW5kIHRoZSBgVVNCYCBzdWJzeXN0ZW0sIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBVU0IgZG9uZ2xlLiBCYXNlZCBvbiB0aGUgZG9jdW1lbnRhdGlvbiwgSSYjMzk7bSBwcmV0dHkgc3VyZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBkcml2ZXJzIGZvciBNZWRpYVRlayBjaGlwc2V0cy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGBNVDc2eDBVYCwgYE1UNzY2M1VgLCBhbmQgYE1UNzkyMVVgLiBJdCYjMzk7cyBhIGJpdCBvZiBhIHN0YW5kYXJkIHNldC4KCkhhbmcgb24gYSBtaW51dGUuLi4gSSBuZWVkIHRvIGJlIGNhcmVmdWwuIFRoZSBkZXBlbmRlbmN5IHRyZWUgaXMgaW1wb3J0YW50LiBMb29raW5nIGNsb3NlciwgaXQgYXBwZWFycyB0aGF0IGBNVDc2X0NPUkVgIGlzIGFjdHVhbGx5IGEgZnVuZGFtZW50YWwgY29tcG9uZW50IHNlbGVjdGVkIGJ5IHRoZXNlIHNwZWNpZmljIE1lZGlhVGVrIGRyaXZlcnMuIEkga25ldyBJIGhhZCB0byBjaGVjayBiYWNrIG9uIHRoYXQuIEl0IHdpbGwgYmUgdGhlIGJhc2UgZm9yIGFsbCBvZiB0aGVtLiBHb29kIGNhdGNoLiBBbmQgaXQgYWxzbyBtZWFucyB0aGF0IHRoZSByaWdodCB0aGluZyB3aWxsIGRlcGVuZCBvbiB0aGUgY29ycmVjdCBzZWxlY3Rpb24uCgpOb3csIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSByZWxldmFudCBvcHRpb25zLCBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGBNVDc2eDJVYCBkcml2ZXIsIGp1c3QgaW4gY2FzZSB0aGVyZSYjMzk7cyBzb21ldGhpbmcgcmVsZXZhbnQgdGhlcmUgSSYjMzk7bSBvdmVybG9va2luZywgb3Igc29tZXRoaW5nIEkgY2FuIGxldmVyYWdlIGR1cmluZyB0aGUgY29uZmlndXJhdGlvbi4gWW91IGFsd2F5cyBuZWVkIHRvIGRvdWJsZS1jaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzZ4MlUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnPTY9Y29uZmlnIE1UNzZ4MkVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoxODpjb25maWcgTVQ3NngyVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MlUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzkyMQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgTVQ3OTI1VWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIFRoZSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYE1UNzkyNVVgLiBUaGlzIGxpa2VseSByZWZlcnMgdG8gYSBzcGVjaWZpYyBjb21wb25lbnQgb3Igc3lzdGVtLCBhbmQgbXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gZXN0YWJsaXNoIGNvbnRleHQuIElzIHRoaXMgYSBjaGlwLCBhIGRyaXZlciwgYSBmaXJtd2FyZSB2ZXJzaW9uLCBhIHNwZWNpZmljIG1vZHVsZSB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIHNwZWNpZmljaXR5IG9mIHRoZSBpZGVudGlmaWVyIHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHJlbGF0aXZlbHkgd2VsbC1kZWZpbmVkLCBub3QgYSBnZW5lcmFsIGNvbmNlcHQuIFRoZSAmIzM0O01UJiMzNDsgcHJlZml4IHVzdWFsbHkgcG9pbnRzIHRvIGEgTWVkaWFUZWsgcGFydCwgd2hpY2ggaGVscHMgbmFycm93IGRvd24gdGhlIHBvc3NpYmlsaXRpZXMuIFRoZSAmIzM0Ozc5MjVVJiMzNDsgdGhlbiByZXByZXNlbnRzIHNvbWUgdW5pcXVlIG1vZGVsIG9yIHJldmlzaW9uIHdpdGhpbiB0aGUgTWVkaWFUZWsgZWNvc3lzdGVtLiBNeSBuZXh0IHN0ZXBzIHdvdWxkIGJlIHRvIHN0YXJ0IGdhdGhlcmluZyBpbmZvcm1hdGlvbjogY3Jvc3MtcmVmZXJlbmNlIGl0IHdpdGgga25vd24gZGF0YWJhc2VzIG9mIE1lZGlhdGVrIGNvbXBvbmVudHMsIHNlYXJjaCBpbnRlcm5hbCBkb2N1bWVudGF0aW9uLCBsb29rIGZvciBtZW50aW9ucyBpbiBoYXJkd2FyZSByZXZpZXdzIG9yIGRhdGFzaGVldHMsIGNoZWNrIHJlbGV2YW50IGJ1ZyByZXBvcnRzIG9yIGVycmF0YSBzaGVldHMgaWYgYXZhaWxhYmxlLCBvciBldmVuIGNoZWNrIG15IG5vdGVzIGFuZCBrbm93bGVkZ2UgYmFzZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBUaGUgZ29hbCBpcyB0byByYXBpZGx5IGRldGVybWluZSB0aGUgZnVuY3Rpb24gYW5kIHNpZ25pZmljYW5jZSBvZiB0aGlzIGl0ZW0gaW4gdGhlIGxhcmdlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1VSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc9Nz1jb25maWcgTVQ3OTI1RVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MzY5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzY2M1VgLCBgTVQ3OTIxVWAsIGFuZCBgTVQ3OTI1VWAuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzdXBwb3J0ZWQgaGFyZHdhcmUuIEkgYWxzbyBzZWUgYE1BQzgwMjExYCBhbmQgYFVTQmAsIHNvIGl0JiMzOTtzIGEgd2lyZWxlc3MgZHJpdmVyIHdpdGggYSBVU0IgaW50ZXJmYWNlLCBvcGVyYXRpbmcgd2l0aGluIHRoZSBNQUM4MDIxMSBmcmFtZXdvcmssIHdoaWNoIGlzIHdoYXQgSSB3b3VsZCBleHBlY3QuIE5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGUgaXNzdWUgYnkgYW5hbHl6aW5nIHN5bWJvbHMgdG8gZGV0ZXJtaW5lIHRoZSBjb2RlIHBhdGggb2YgaW50ZXJlc3QuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoaXMgbW9kaWZpZWQgZnVuY3Rpb24sIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYC4gRmlyc3QsIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgZnVuY3Rpb24gaXMgc3RhdGljIG9yIGV4cG9ydGVkLiBBaCwgaXQmIzM5O3MgZXhwb3J0ZWQsIHNvIGl0JiMzOTtzIGFjY2Vzc2libGUgZnJvbSBvdXRzaWRlIGl0cyBkZWZpbmluZyBjb21waWxhdGlvbiB1bml0LiBUaGF04oCZcyBnb29kIHRvIGtub3cuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgLiBJIGtub3cgaXQgd2lsbCBiZSBsb2NhdGVkIHdpdGhpbiB0aGUgTWVkaWF0ZWsgZHJpdmVyIGNvZGUuIFRoZSBwYXRoIGlzOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jYC4gTGV0JiMzOTtzIHRha2UgYSBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTIwOlx0XG4gMTIxOlx0aW50XG4gMTIyOlx0bXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbiAxMjM6XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4gMTI0Olx0e1xuIDEyNTpcdFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKXNrYi1cdTAwM2VkYXRhO1xuIDEyNjpcdFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpO1xuIDEyNzpcdFx0c3RydWN0IG10NzZfdHhfY2IgKmNiID0gbXQ3Nl90eF9za2JfY2Ioc2tiKTtcbiAxMjg6XHRcdGludCBwaWQ7XG4gMTI5Olx0XG4gMTMwOlx0XHRtZW1zZXQoY2IsIDAsIHNpemVvZigqY2IpKTtcbiAxMzE6XHRcbiAxMzI6XHRcdGlmICghd2NpZClcbiAxMzM6XHRcdFx0cmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7XG4gMTM0Olx0XG4gMTM1Olx0XHRpZiAoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9OT19BQ0spXG4gMTM2Olx0XHRcdHJldHVybiBNVF9QQUNLRVRfSURfTk9fQUNLO1xuIDEzNzpcdFxuIDEzODpcdFx0aWYgKCEoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgKElFRUU4MDIxMV9UWF9DVExfUkVRX1RYX1NUQVRVUyB8XG4gMTM5Olx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RMX1JBVEVfQ1RSTF9QUk9CRSkpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjE1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGFja2V0IFRyYW5zbWlzc2lvbiBTdGF0dXMgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7dmUgcGlucG9pbnRlZCBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgYXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUuIEl0JiMzOTtzIHRoZSBvbmUgSSBuZWVkIHRvIGV4YW1pbmUuIFRoZSBiZWF1dHkgb2YgdGhpcyBpcyB0aGF0IGl0JiMzOTtzIGNhbGxlZCBieSBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYC4gVGhpcyBpcyBwZXJmZWN0IOKAkyB0aGVzZSBhY3QgbGlrZSBmb2N1cyBzeW1ib2xzLCB3aGljaCBtZWFucyBteSBpbnZlc3RpZ2F0aW9uIHdpbGwgYmUgbXVjaCBtb3JlIHRhcmdldGVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVzZSBjYWxsIHNpdGVzIGFyZSBzdGF0aWMgb3IgZXhwb3J0ZWQuIFRoYXQgd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IHRoZWlyIHBvdGVudGlhbCBzY29wZSBhbmQgdmlzaWJpbGl0eSB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2eDAydV90eF9wcmVwYXJlX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTIxMz1zdGF0aWMgaW50IG10NzZ4MHVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyMS1cdFx0LnNldF9jaGFubmVsID0gbXQ3NngwX3NldF9jaGFubmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjIyOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2eDAydV90eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyMy1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZ4MDJ1X3R4X2NvbXBsZXRlX3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmg9MTc9aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaDoxODppbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYi5oLTE5LVx0XHRcdCAgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYz00Nj1pbnQgbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGludCBwb3J0LCB1MzIgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzo2NDppbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjUtXHRcdFx0ICAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTExNi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzoxMTc6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMnVfdHhfcHJlcGFyZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtMTE4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jPTMyPXN0YXRpYyBpbnQgbXQ3NngydV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy00MC1cdFx0LnNldF9jaGFubmVsID0gbXQ3NngydV9zZXRfY2hhbm5lbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jOjQxOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2eDAydV90eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQyLVx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3NngwMnVfdHhfY29tcGxldGVfc2tiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQ4MAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBUWCBTS0IgUHJlcGFyYXRpb24gTGFuZHNjYXBlKioKClJpZ2h0LCBzbyBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgIGlzIGV4cG9zZWQsIHRoYXQmIzM5O3MgZ29vZC4gSXQgY29uZmlybXMgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIG9mIHRoYXQgcGFydGljdWxhciBwcmVwYXJhdGlvbiBmdW5jdGlvbi4gQnV0LCBub3cgdGhhdCBJIGhhdmUgdGhpcyBpbiBtaW5kLCBhbmQgdGhhdCBJIGFtIHRoaW5raW5nIGFib3V0IHRoaXMgZmFtaWx5IG9mIGRyaXZlcnMsIHdoYXQgYWJvdXQgdGhlIFNESU8gdmVyc2lvbiBvZiB0aGF0PyBMZXQgbWUgdGhpbmvigKYgdGhlIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIGZ1bmN0aW9uIGlzIHdoYXQgSSBuZWVkIHRvIGxvb2sgYXQgbmV4dC4gV2hhdCBhcmUgdGhlIGRpZmZlcmVuY2VzIHRoZXJlPyBEb2VzIGl0IGRpZmZlciBiYXNlZCBvbiB0aGUgaW50ZXJmYWNlLCBvciBpcyB0aGVyZSBzb21lIG1vcmUgZ2VuZXJhbCBmdW5jdGlvbj8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgZHJpdmVyIGFyY2hpdGVjdHVyZSwgYW5kIHBvc3NpYmxlIGNvbW1vbiBjb2RlIGJldHdlZW4gdGhlc2UsIHBhcnRpY3VsYXJseSBpbiBsaWdodCBvZiBzb21lIG9mIHRoZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2Ugb3IgaGFyZHdhcmUgZGlmZmVyZW5jZXMgaW5oZXJlbnQgYmV0d2VlbiBVU0IgYW5kIFNESU8gaW1wbGVtZW50YXRpb25zPyBJIG5lZWQgdG8gZ28gZGVlcGVyIG5vdyB0aGF0IHRoaXMgaGFzIGVtZXJnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTU0MD12b2lkIG10NzYyMl90cmlnZ2VyX2hpZl9pbnQoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgYm9vbCBlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTQyLS8qIHVzYiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6NTQzOmludCBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0NC1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYz03Nj1zdGF0aWMgaW50IG10NzY2M3NfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtODEtXHRcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzo4MjpcdFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTgzLVx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0xMTI9c3RhdGljIGludCBtdDc2NjN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTctXHRcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUiB8IE1UX0RSVl9IV19NR01UX1RYUSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExODpcdFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTE5LVx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jPTE3OT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxODE6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xODItXHRcdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIyNC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjIyNTpFWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNzY5CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBVU0IvU0RJTyBUWCBQcmVwYXJhdGlvbiBpbiBNZWRpYXRlayBXaUZpIERyaXZlcnMqKgoKSG1tLCBzbyBgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBpcyBhbiBleHBvcnRlZCBmdW5jdGlvbiwgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIGNsZWFybHkgYSBrZXkgcGFydCBvZiB0aGUgdHJhbnNtaXQgcGF0aCwgaGFuZGxpbmcgdGhlIFNlcnZpY2UgUmVxdWVzdCBCbG9jayAoU0tCKSBwcmVwYXJhdGlvbiwgd2hpY2ggaXMgZnVuZGFtZW50YWwgZm9yIG1vdmluZyBkYXRhIHBhY2tldHMgb3ZlciBVU0Igb3IgU0RJTyBpbiB0aGF0IHBhcnRpY3VsYXIgTWVkaWF0ZWsgY2hpcHNldC4gQnV0LCBpdCBnb3QgbWUgd29uZGVyaW5nLCBpcyB0aGVyZSBhbHNvIGBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGZvciB0aGUgbmV3ZXIgYG10NzkyMWAgY2hpcHNldD8gR2l2ZW4gTWVkaWF0ZWsmIzM5O3MgdHlwaWNhbCBkcml2ZXIgc3RydWN0dXJlLCBhbmQgdGhlIGV2b2x1dGlvbiBvZiB0aGVpciBoYXJkd2FyZSwgSSYjMzk7ZCBleHBlY3QgdGhlcmUgdG8gYmUgYSBkZWRpY2F0ZWQgZnVuY3Rpb24sIGxpa2VseSBzaGFyaW5nIHNpbWlsYXIgY29uY2VwdHMsIGJ1dCBvcHRpbWl6ZWQgZm9yIHRoZSBuZXcgaGFyZHdhcmUgZ2VuZXJhdGlvbi4gSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlYmFzZSB0byBzZWUgaG93IHRoZXkmIzM5O3ZlIGhhbmRsZWQgdGhhdCwgYmVjYXVzZSBpZiBpdCBkb2VzbiYjMzk7dCBleGlzdCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIHNoYXJpbmcgdGhlIHNhbWUgY29kZS4gSXQgd291bGQgYmUgZ29vZCB0byB1bmRlcnN0YW5kIGlmIGl04oCZcyBhIGRpcmVjdCBwb3J0IHdpdGggbWlub3IgdHdlYWtzLCBhIGNvbXBsZXRlbHkgcmVkZXNpZ25lZCBmdW5jdGlvbiwgb3Igc29tZXRoaW5nIGluLWJldHdlZW4uIFRoZSBzcGVjaWZpY3Mgd2lsbCBoYXZlIGltcGxpY2F0aW9ucyBvbiBwZXJmb3JtYW5jZSwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIGFueSBwb3RlbnRpYWwgYnVnIGZpeGVzLiBUaGlzIGlzIGEgY3JpdGljYWwgYXJlYSBmb3IgZWZmaWNpZW50IGFuZCByb2J1c3Qgd2lyZWxlc3MgZGF0YSB0cmFuc2ZlciwgYW5kIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyBNZWRpYXRlayBpcyBtYW5hZ2luZyB0aGUgcGFja2V0IGhhbmRsaW5nIG9uIHRoZSBuZXdlciBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NzY0PW10NzkyMV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6Nzc2OmludCBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3Ny1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MjI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaD0zMjY9aW50IG10NzkyMV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg6MzI4OmludCBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oLTMyOS1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz05MD1zdGF0aWMgaW50IG10NzkyMXNfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtOTgtXHRcdFx0XHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYzo5OTpcdFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTEwMC1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTU5LVx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNjA6XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE2MS1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMTI3CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBPdmVyc2lnaHQgaW4gVVNCL1NESU8gRHJpdmVyIEhhbmRsaW5nKioKCkFscmlnaHQsIHNvIEkgc2VlIHRoYXQgYG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAgaXMgZXhwb3NlZCBhcyBhbiBleHBvcnRlZCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBnb29kLCB0aGF0IHN1Z2dlc3RzIHNvbWUgZGVncmVlIG9mLCBwcm9iYWJseSwgYnJvYWRlciBzdXBwb3J0IG9yIHV0aWxpemF0aW9uIGJleW9uZCB0aGUgaW1tZWRpYXRlIGNvbnRleHQgb2YgdGhlIG10NzkyMS4gTm93LCBhIHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkLCB0aG91Z2gsIGFuZCBpdCYjMzk7cyBhIGNyaXRpY2FsIG9uZSBpZiB3ZSBhcmUgY29uc2lkZXJpbmcgdGhlIGRlc2lnbiBwcmluY2lwbGVzLiBXaGF0IGFib3V0IGl0cyBwcmVkZWNlc3Nvciwgb3IgYSByZWxhdGVkIGZ1bmN0aW9uLCBpbiB0aGUgYG10NzkyNWAgY29kZWJhc2U/IFdhcyB0aGVyZSBhIHNpbWlsYXIgZnVuY3Rpb24sIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgPyBJZiBzbywgaXMgaXQgaGFuZGxlZCBjb3JyZWN0bHksIGFuZCBpcyB0aGUgaW1wbGVtZW50YXRpb24gYW5kIGludGVyZmFjZSBjb3JyZWN0PyBJcyB0aGUgbG9naWMgY29uc2lzdGVudCBhY3Jvc3MgdGhlIHJlbGV2YW50IHZlcnNpb25zIG9mIHRoZSBjb2RlPyBUaGlzIG1lcml0cyBkZWVwZXIgaW52ZXN0aWdhdGlvbiBiZWNhdXNlIGEgcG90ZW50aWFsIGxhY2sgb2Ygc3ltbWV0cnkgaGVyZSBjb3VsZCBpbmRpY2F0ZSBhIGJ1ZywgYW4gb3ZlcnNpZ2h0LCBvciBhbiBpbmNvbXBsZXRlIHBvcnQuIEluIGFueSBjYXNlLCBpdCBzdWdnZXN0cyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBtdDc5MjVgIGNvZGUgYW5kIGNoZWNrIHRoZSBzdGF0ZSBvZiB0aGluZ3MgdGhlcmUuIENvbnNpc3RlbmN5IGlzIGtleSB3aGVuIGRlYWxpbmcgd2l0aCB0aGVzZSBzb3J0cyBvZiBsb3ctbGV2ZWwgZHJpdmVyIGNvbXBvbmVudHMuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGEgY29tbW9uLCBvciBhdCBsZWFzdCBoaWdobHkgcmVsYXRlZCwgZnVuY3Rpb24gc2hvdWxkIGFsc28gaGF2ZSBiZWVuIGltcGxlbWVudGVkIG9uIGEgc2ltaWxhciBiYXNpcywgZXZlbiBpZiBqdXN0IGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjE9bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMzppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjM0LVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY3Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjc4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM2OT1pbnQgbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNzE6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzcyLVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU5LVx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjA6XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2MS1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0Mjc5CgkJCQkJCQlvdXRwdXQ6IDI5OAoJCQkJCQkJdGhvdWdodHM6IDk2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgUHJvcG9zZWQgUGF0Y2ggYW5kIEl0cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCYjMzk7cyBhY2Nlc3NpYmxlLiBUaGF0IGltbWVkaWF0ZWx5IG5hcnJvd3MgdGhlIGZvY3VzIHRvIHRoZSBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgZnVuY3Rpb24sIGFuZCBpdHMgcmVsYXRlZCBgKnR4X3ByZXBhcmVfc2tiYCBmdW5jdGlvbnMgZm9yIHRoZSBVU0IvU0RJTyBkcml2ZXJzOiBgbXQ3NngwMnVgLCBgbXQ3NjYzX3VzYl9zZGlvYCwgYG10NzkyMV91c2Jfc2Rpb2AsIGFuZCBgbXQ3OTI1X3VzYl9zZGlvYC4gVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHdhdGNoLgoKVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHNlZW0gdG8gYmU6IGBNQUM4MDIxMWAsIGBVU0JgLCBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzY2M1VgLCBgTVQ3OTIxVWAsIGFuZCBgTVQ3OTI1VWAuIEEgYml0IG9mIGhvdXNla2VlcGluZyBoZXJlIGVuc3VyZXMgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuCgpOb3csIGEgY3J1Y2lhbCBwb2ludDogSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBjYWxsIHNpdGVzIGZvciBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAsIG5vdCBqdXN0IHRoZSBVU0IvU0RJTyBvbmVzLiBJIHNlZSB0aGF0IGl0IGlzIGFsc28gY2FsbGVkIGJ5IFBDSWUgZHJpdmVyczogYG10NzYwM190eF9wcmVwYXJlX3NrYmAsIGBtdDc2MTVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTE1X3R4X3ByZXBhcmVfc2tiYCwgYG10NzkyMWVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTI1ZV90eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTk2X3R4X3ByZXBhcmVfc2tiYC4gQnV0LCBzaW5jZSBTeXprYWxsZXIgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgTWVkaWFUZWsgUENJZSBkZXZpY2VzLCB0aG9zZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuIEhvd2V2ZXIsIHRoZSBVU0IgcGF0aHMgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIHRocm91Z2ggYGR1bW15X2hjZGAuCgpTbywgdGhlIGZ1enppbmcgaXMgZGVmaW5pdGVseSB2aWFibGUgYW5kIHdpbGwgYmUgd29ydGh3aGlsZS4KCkkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIGBNVDc2X0NPUkVgIGlzIGEgbXVzdCwgd2hpY2ggaXMgYSBnaXZlbi4gYE1UNzZfVVNCYCBpcyBzZWxlY3RlZCBieSBgTVQ3NjYzVWAuIGBNVDc2eDAyX1VTQmAgaXMgc2VsZWN0ZWQgYnkgYE1UNzZ4MFVgIGFuZCBgTVQ3NngyVWAsIGFuZCBgTVQ3OTJ4X1VTQmAgaXMgc2VsZWN0ZWQgYnkgYE1UNzkyMVVgIGFuZCBgTVQ3OTI1VWAuIFRoYXQgc2hvdWxkIGNvdmVyIGl0LiBMaXN0aW5nIHRoZSBsZWFmIGNvbmZpZ3MgaXMgc3VmZmljaWVudC4KCk5vdywgbGV0JiMzOTtzIGV4YW1pbmUgdGhlIHBhdGNoIGl0c2VsZi4KCmBgYGMKLQlpZiAoIXdjaWQgfHwgIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtJmd0O3djaWRbd2NpZC0mZ3Q7aWR4XSkpCiYjNDM7CWlmICghd2NpZCkKIAkJcmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7CiBgYGAKCmFuZAoKYGBgYwogCXNwaW5fbG9ja19iaCgmYW1wO2Rldi0mZ3Q7c3RhdHVzX2xvY2spOwogCiYjNDM7CWlmIChyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LSZndDt3Y2lkW3djaWQtJmd0O2lkeF0pICE9IHdjaWQpIHsKJiM0MzsJCXBpZCA9IE1UX1BBQ0tFVF9JRF9OT19BQ0s7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwogCXBpZCA9IGlkcl9hbGxvYygmYW1wO3djaWQtJmd0O3BrdGlkLCBza2IsIE1UX1BBQ0tFVF9JRF9GSVJTVCwKIGBgYAoKQWgsIGl0JiMzOTtzIGEgY3JpdGljYWwgZml4LiBJdCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgd2NpZGAgKHdpcmVsZXNzIGNvbnRleHQgSUQpIGNvdWxkIGJlIGZyZWVkIG9yIHJlcGxhY2VkIGJldHdlZW4gdGhlIGluaXRpYWwgY2hlY2sgYW5kIGl0cyB1c2UgaW4gYGlkcl9hbGxvY2AuICBUaGUgb3JpZ2luYWwgY2hlY2sgd2FzIHZ1bG5lcmFibGUgYmVjYXVzZSBgcmN1X2FjY2Vzc19wb2ludGVyYCBpcyBub3Qgc2FmZSB0byB1c2Ugb3V0c2lkZSB0aGUgcmN1IHJlYWQgbG9jay4gVGhlIGZpeCBtb3ZlcyB0aGUgY2hlY2sgaW5zaWRlIHRoZSBzcGlubG9jayB0byBlbnN1cmUgYXRvbWljaXR5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbXQ3NiBkcml2ZXIuIEJlY2F1c2UgaXQgaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIFVTQiBkcml2ZXIsIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSBjYW4gZnV6ei4KCioqU3VtbWFyeToqKiBUaGlzIHBhdGNoLCB3aGljaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBtdDc2IGRyaXZlciByZWxhdGVkIHRvIHdpcmVsZXNzIGNvbnRleHQgSURzICh3Y2lkKSwgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSBVU0IgZHJpdmVyIHZhcmlhbnRzIG9mIHRoZSBtdDc2IGRyaXZlci4gVGhlIGltcG9ydGFudCBmb2N1cyBzeW1ib2xzIGFyZSB0aGUgZnVuY3Rpb25zIEkgbGlzdGVkIGJlZm9yZS4gVGhlIGNvbmZpZ3VyYXRpb25zIG5lZWRlZCBhcmUgdGhlIG9uZXMgSSBtZW50aW9uZWQuIEkgd2lsbCBmdXp6IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzY2M1UmIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjVVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3Nl90eF9zdGF0dXNfc2tiX2FkZCYjMzQ7LAogICAgJiMzNDttdDc2eDAydV90eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgaW4gdGhlIE1lZGlhVGVrIG10NzYgd2lyZWxlc3MgZHJpdmVyIHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uIGJ5IG1vdmluZyB0aGUgYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgaW5zaWRlIHRoZSBgc3RhdHVzX2xvY2tgIHNwaW5sb2NrLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhyb3VnaCB0aGUgVVNCIHZhcmlhbnRzIG9mIHRoZSBtdDc2IGRyaXZlciAoZS5nLiwgbXQ3NngwdSwgbXQ3NjYzdSwgbXQ3OTIxdSwgbXQ3OTI1dSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzY2M1UmIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjVVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3Nl90eF9zdGF0dXNfc2tiX2FkZCYjMzQ7LAogICAgJiMzNDttdDc2eDAydV90eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgaW4gdGhlIE1lZGlhVGVrIG10NzYgd2lyZWxlc3MgZHJpdmVyIHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uIGJ5IG1vdmluZyB0aGUgYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgaW5zaWRlIHRoZSBgc3RhdHVzX2xvY2tgIHNwaW5sb2NrLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhyb3VnaCB0aGUgVVNCIHZhcmlhbnRzIG9mIHRoZSBtdDc2IGRyaXZlciAoZS5nLiwgbXQ3NngwdSwgbXQ3NjYzdSwgbXQ3OTIxdSwgbXQ3OTI1dSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGluIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBieSBtb3ZpbmcgdGhlIHZhbGlkYXRpb24gb2YgYHdjaWRgIGluc2lkZSB0aGUgYHN0YXR1c19sb2NrYCBzcGlubG9jayBhbmQgZW5zdXJpbmcgaXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgcG9pbnRlci4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGJ1Z3MgY2F1c2VkIGJ5IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyB0byB0aGUgYGRldi1cdTAwM2V3Y2lkYCBhcnJheS4gU3VjaCBjb25jdXJyZW5jeSBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBwYWRkaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgd2hpY2ggYXJlIHRoZSBzcGVjaWZpYyB0YXJnZXRzIG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzNTBiYWY4NzM4N2IyNzhhNTQ4MTk3YTgxNWU2MGNhMjE2MDFhNzhiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTM6MzE6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMKaW5kZXggMzcwN2VlMTllNGFlNy4uMGY3NGQ4MDhkMzI4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYwpAQCAtMTI5LDcgJiM0MzsxMjksNyBAQCBtdDc2X3R4X3N0YXR1c19za2JfYWRkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLAogCiAJbWVtc2V0KGNiLCAwLCBzaXplb2YoKmNiKSk7CiAKLQlpZiAoIXdjaWQgfHwgIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtJmd0O3djaWRbd2NpZC0mZ3Q7aWR4XSkpCiYjNDM7CWlmICghd2NpZCkKIAkJcmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7CiAKIAlpZiAoaW5mby0mZ3Q7ZmxhZ3MgJmFtcDsgSUVFRTgwMjExX1RYX0NUTF9OT19BQ0spCkBAIC0xNDcsNiAmIzQzOzE0NywxMSBAQCBtdDc2X3R4X3N0YXR1c19za2JfYWRkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLAogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7ZGV2LSZndDtzdGF0dXNfbG9jayk7CiAKJiM0MzsJaWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtJmd0O3djaWRbd2NpZC0mZ3Q7aWR4XSkgIT0gd2NpZCkgewomIzQzOwkJcGlkID0gTVRfUEFDS0VUX0lEX05PX0FDSzsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiYjNDM7CiAJcGlkID0gaWRyX2FsbG9jKCZhbXA7d2NpZC0mZ3Q7cGt0aWQsIHNrYiwgTVRfUEFDS0VUX0lEX0ZJUlNULAogCQkJTVRfUEFDS0VUX0lEX01BU0ssIEdGUF9BVE9NSUMpOwogCWlmIChwaWQgJmx0OyAwKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjE0CgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDU2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDb25jdXJyZW5jeSBGaXggaW4gbXQ3NiBEcml2ZXIqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSB3aXRoaW4gdGhlIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBmdW5jdGlvbiBpbiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGEgY3JpdGljYWwgbG9ja2luZyBmaXggcmVsYXRlZCB0byBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFdpLUZpIENvbm5lY3Rpb24gSURzLCBvciBgd2NpZGBzLgoKVGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgY2hlY2ssIGAhcmN1X2FjY2Vzc19wb2ludGVyKGRldi0mZ3Q7d2NpZFt3Y2lkLSZndDtpZHhdKWAsIGVhcmx5IGluIHRoZSBmdW5jdGlvbi4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgY2hlY2sgd2FzIG1lYW50IHRvIHByZXZlbnQgdXNpbmcgYSBgd2NpZGAgdGhhdCBoYWQgYWxyZWFkeSBiZWVuIGZyZWVkIG9yIHdhcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyByZXBsYWNlZC4gSG93ZXZlciwgdGhlIHBhdGNoIGhhcyBpZGVudGlmaWVkIGEgcmFjZSBjb25kaXRpb24uIEl0JiMzOTtzIG5vdyBjaGVja2luZyBpZiB0aGUgYHdjaWRgIGlzIHN0aWxsIHZhbGlkICp1bmRlciogdGhlIGBzdGF0dXNfbG9ja2AuICBUaGUga2V5IGNoYW5nZSBtb3ZlcyB0aGUgY2hlY2sgYHJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtJmd0O3djaWRbd2NpZC0mZ3Q7aWR4XSkgIT0gd2NpZGAgaW5zaWRlIGEgYHNwaW5fbG9ja19iaGAgY3JpdGljYWwgc2VjdGlvbi4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGB3Y2lkYCBpc24mIzM5O3QgZnJlZWQgb3IgY2hhbmdlZCBiZXR3ZWVuIHRoZSB2YWxpZGl0eSBjaGVjayBhbmQgdGhlIGBpZHJfYWxsb2NgIGNhbGwsIHdoaWNoIGlzIHdoZXJlIHRoZSBwb3RlbnRpYWwgZm9yIGEgdXNlLWFmdGVyLWZyZWUgb3IgYSByZWxhdGVkIHJhY2UgY29uZGl0aW9uIGV4aXN0ZWQuCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhIHRleHRib29rIGV4YW1wbGUgb2YgYSBsb2NraW5nIGJ1ZyBmaXguIFRoZSBvcmlnaW5hbCBjaGVjayB3YXNuJiMzOTt0IHN1ZmZpY2llbnRseSBzeW5jaHJvbml6ZWQgd2l0aCBwb3RlbnRpYWwgY2hhbmdlcyB0byB0aGUgYHdjaWRgIGRhdGEgc3RydWN0dXJlLiBNb3ZpbmcgdGhlIGNoZWNrIHVuZGVyIHRoZSBgc3RhdHVzX2xvY2tgIGNvcnJlY3RseSBzZXJpYWxpemVzIGFjY2VzcywgcHJvdGVjdGluZyBhZ2FpbnN0IHRoZSByYWNlLiBUaGlzIHNvcnQgb2YgYnVnIHdvdWxkIGxpa2VseSBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igb3RoZXIgbWVtb3J5IHNhZmV0eSB0b29scy4gSXQgZG9lcyBub3QgYXBwZWFyIHRvIGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgYW55IGtpbmQgb2YgaW5mb3JtYXRpb24gbGVhay4KCkkmIzM5O20gY29uZmlkZW50IGluIGNhbGxpbmcgdGhpcyBhIHN0cmFpZ2h0IHJhY2UgY29uZGl0aW9uIGZpeCwgc3RyaWN0bHkgcmVsYXRlZCB0byBjb25jdXJyZW50IGFjY2Vzcy4gTm8gbmVlZCB0byBmbGFnIGl0IGFzIEtNU0FOLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgYnkgbW92aW5nIHRoZSB2YWxpZGF0aW9uIG9mIGB3Y2lkYCBpbnNpZGUgdGhlIGBzdGF0dXNfbG9ja2Agc3BpbmxvY2sgYW5kIGVuc3VyaW5nIGl0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHBvaW50ZXIuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBidWdzIGNhdXNlZCBieSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGBkZXYtXHUwMDNld2NpZGAgYXJyYXkuIFN1Y2ggY29uY3VycmVuY3kgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgcGFkZGluZyBzZW50IHRvIHVzZXIgc3BhY2UsIHdoaWNoIGFyZSB0aGUgc3BlY2lmaWMgdGFyZ2V0cyBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGluIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBieSBtb3ZpbmcgdGhlIHZhbGlkYXRpb24gb2YgYHdjaWRgIGluc2lkZSB0aGUgYHN0YXR1c19sb2NrYCBzcGlubG9jayBhbmQgZW5zdXJpbmcgaXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgcG9pbnRlci4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGJ1Z3MgY2F1c2VkIGJ5IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyB0byB0aGUgYGRldi1cdTAwM2V3Y2lkYCBhcnJheS4gU3VjaCBjb25jdXJyZW5jeSBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBwYWRkaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgd2hpY2ggYXJlIHRoZSBzcGVjaWZpYyB0YXJnZXRzIG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTowOS4yNDA2NTMzMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDk5NTgxMDAxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc2NjNVXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl90eF9zdGF0dXNfc2tiX2FkZFwiLFxuICAgIFwibXQ3NngwMnVfdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGluIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBieSBtb3ZpbmcgdGhlIHZhbGlkYXRpb24gb2YgYHdjaWRgIGluc2lkZSB0aGUgYHN0YXR1c19sb2NrYCBzcGlubG9jayBhbmQgZW5zdXJpbmcgaXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgcG9pbnRlci4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGJ1Z3MgY2F1c2VkIGJ5IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyB0byB0aGUgYGRldi1cXHUwMDNld2NpZGAgYXJyYXkuIFN1Y2ggY29uY3VycmVuY3kgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIExPQ0tERVAuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgcGFkZGluZyBzZW50IHRvIHVzZXIgc3BhY2UsIHdoaWNoIGFyZSB0aGUgc3BlY2lmaWMgdGFyZ2V0cyBvZiBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgaW4gdGhlIE1lZGlhVGVrIG10NzYgd2lyZWxlc3MgZHJpdmVyIHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uIGJ5IG1vdmluZyB0aGUgYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgaW5zaWRlIHRoZSBgc3RhdHVzX2xvY2tgIHNwaW5sb2NrLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhyb3VnaCB0aGUgVVNCIHZhcmlhbnRzIG9mIHRoZSBtdDc2IGRyaXZlciAoZS5nLiwgbXQ3NngwdSwgbXQ3NjYzdSwgbXQ3OTIxdSwgbXQ3OTI1dSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTowOS4yNDA2NTk3MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3NzQwNzc3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM1MGJhZjg3Mzg3YjI3OGE1NDgxOTdhODE1ZTYwY2EyMTYwMWE3OGJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTM6MzE6MDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXFxuaW5kZXggMzcwN2VlMTllNGFlNy4uMGY3NGQ4MDhkMzI4NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcXG5AQCAtMTI5LDcgKzEyOSw3IEBAIG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuIFxcbiBcXHRtZW1zZXQoY2IsIDAsIHNpemVvZigqY2IpKTtcXG4gXFxuLVxcdGlmICghd2NpZCB8fCAhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cXHUwMDNld2NpZFt3Y2lkLVxcdTAwM2VpZHhdKSlcXG4rXFx0aWYgKCF3Y2lkKVxcbiBcXHRcXHRyZXR1cm4gTVRfUEFDS0VUX0lEX05PX0FDSztcXG4gXFxuIFxcdGlmIChpbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfTk9fQUNLKVxcbkBAIC0xNDcsNiArMTQ3LDExIEBAIG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuIFxcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmRldi1cXHUwMDNlc3RhdHVzX2xvY2spO1xcbiBcXG4rXFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXFx1MDAzZXdjaWRbd2NpZC1cXHUwMDNlaWR4XSkgIT0gd2NpZCkge1xcbitcXHRcXHRwaWQgPSBNVF9QQUNLRVRfSURfTk9fQUNLO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4gXFx0cGlkID0gaWRyX2FsbG9jKFxcdTAwMjZ3Y2lkLVxcdTAwM2Vwa3RpZCwgc2tiLCBNVF9QQUNLRVRfSURfRklSU1QsXFxuIFxcdFxcdFxcdE1UX1BBQ0tFVF9JRF9NQVNLLCBHRlBfQVRPTUlDKTtcXG4gXFx0aWYgKHBpZCBcXHUwMDNjIDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MTAuOTE5MTcyMTU5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODk4ODU2OTE4NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTVQ3NngwVVwiLFxuICAgIFwiTVQ3NngyVVwiLFxuICAgIFwiTVQ3NjYzVVwiLFxuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTVQ3OTI1VVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzZfdHhfc3RhdHVzX3NrYl9hZGRcIixcbiAgICBcIm10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgIGluIHRoZSBNZWRpYVRlayBtdDc2IHdpcmVsZXNzIGRyaXZlciB0byBmaXggYSByYWNlIGNvbmRpdGlvbiBieSBtb3ZpbmcgdGhlIGByY3VfYWNjZXNzX3BvaW50ZXJgIGNoZWNrIGluc2lkZSB0aGUgYHN0YXR1c19sb2NrYCBzcGlubG9jay4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRocm91Z2ggdGhlIFVTQiB2YXJpYW50cyBvZiB0aGUgbXQ3NiBkcml2ZXIgKGUuZy4sIG10NzZ4MHUsIG10NzY2M3UsIG10NzkyMXUsIG10NzkyNXUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZHVtbXlfaGNkKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzUwYmFmODczODdiMjc4YTU0ODE5N2E4MTVlNjBjYTIxNjAxYTc4YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDEzOjMxOjA3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG5pbmRleCAzNzA3ZWUxOWU0YWU3Li4wZjc0ZDgwOGQzMjg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbkBAIC0xMjksNyArMTI5LDcgQEAgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbiBcbiBcdG1lbXNldChjYiwgMCwgc2l6ZW9mKCpjYikpO1xuIFxuLVx0aWYgKCF3Y2lkIHx8ICFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZXdjaWRbd2NpZC1cdTAwM2VpZHhdKSlcbitcdGlmICghd2NpZClcbiBcdFx0cmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7XG4gXG4gXHRpZiAoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9OT19BQ0spXG5AQCAtMTQ3LDYgKzE0NywxMSBAQCBtdDc2X3R4X3N0YXR1c19za2JfYWRkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRldi1cdTAwM2VzdGF0dXNfbG9jayk7XG4gXG4rXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2V3Y2lkW3djaWQtXHUwMDNlaWR4XSkgIT0gd2NpZCkge1xuK1x0XHRwaWQgPSBNVF9QQUNLRVRfSURfTk9fQUNLO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbiBcdHBpZCA9IGlkcl9hbGxvYyhcdTAwMjZ3Y2lkLVx1MDAzZXBrdGlkLCBza2IsIE1UX1BBQ0tFVF9JRF9GSVJTVCxcbiBcdFx0XHRNVF9QQUNLRVRfSURfTUFTSywgR0ZQX0FUT01JQyk7XG4gXHRpZiAocGlkIFx1MDAzYyAwKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMToxMC45MTkxNzQ3NDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzUwNTg4MzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lZGlhdGVrIE1UNzYgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jYC4gSXQncyB0d2Vha2luZyB0aGUgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGF0IHRoZXkndmUgc2ltcGxpZmllZCBhIGNoZWNrIHJlbGF0ZWQgdG8gdGhlIGB3Y2lkYCAod2lyZWxlc3MgY2xpZW50IElEKS4gVGhleSByZW1vdmVkIG9uZSBjaGVjayB0aGF0IHdhcyBkZWVtZWQgcmVkdW5kYW50IGFuZCBhZGRlZCBhbm90aGVyIGNoZWNrICphZnRlciogYSBzcGlubG9jay4gVGhhdCdzIGludGVyZXN0aW5nOyBpdCBzdWdnZXN0cyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBkYXRhIGNvcnJ1cHRpb24gaXNzdWUgdGhleSdyZSB0cnlpbmcgdG8gYWRkcmVzcy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgYWJvdXQgdGVzdGFiaWxpdHksIG9mIGNvdXJzZS4gQ2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgYG10NzZgIGRyaXZlciBpbiBteSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXQncyBhIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciwgYW5kIG15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZXNlIGFyZSB0eXBpY2FsbHkgaGFyZHdhcmUtZGVwZW5kZW50LCBtZWFuaW5nIFBDSWUsIFVTQiwgb3IgU0RJTyBiYXNlZC4gSSBpbW1lZGlhdGVseSB0aGluaywgXCJEb2VzIFFFTVUgZXZlbiAqZW11bGF0ZSogTWVkaWF0ZWsgd2lyZWxlc3MgaGFyZHdhcmU/XCIgTm8sIGl0IGRvZXNuJ3QuIEFuZCBubywgaXQgY2FuJ3QgYmUgcmVhY2hlZCB2aWEgYG1hYzgwMjExX2h3c2ltYCBlaXRoZXIsIGFzIHRoYXQncyBhIGRpZmZlcmVudCBkcml2ZXIgYWx0b2dldGhlci5cblxuQnV0IHRoZW4gSSByZW1lbWJlci4gV2FpdCBhIG1pbnV0ZSEgKm10NzYqIGRvZXMgaGF2ZSBVU0IgZHJpdmVycywgbGlrZSBgbXQ3NngwMi11c2JgLCBgbXQ3NngydWAsIGFuZCBgbXQ3NjAxdWAuIEFoYSEgVVNCIG9wZW5zIHVwIGEgd2hvbGUgbmV3IGF0dGFjayBzdXJmYWNlIGZvciBmdXp6aW5nISBTeXprYWxsZXIgaXMgY2FwYWJsZSBvZiBmdXp6aW5nIFVTQiBkcml2ZXJzIHdpdGggYGR1bW15X2hjZGAgb3IgYHZoY2ktaGNkYC4gVGltZSB0byBjaGVjayB3aGV0aGVyIHRoZSB0YXJnZXRlZCBjb2RlIGhhcyBVU0Igc3VwcG9ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMxOjE3LjY2OTc2NjcyMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODMxNjExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjIzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX01UNzZfQ09SRSkgKz0gbXQ3Ni5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc2X1VTQikgKz0gbXQ3Ni11c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtNC1vYmotJChDT05GSUdfTVQ3Nl9TRElPKSArPSBtdDc2LXNkaW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTVQ3NngwMl9MSUIpICs9IG10NzZ4MDItbGliLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01UNzZ4MDJfVVNCKSArPSBtdDc2eDAyLXVzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS03LW9iai0kKENPTkZJR19NVDc2X0NPTk5BQ19MSUIpICs9IG10NzYtY29ubmFjLWxpYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT04PW9iai0kKENPTkZJR19NVDc5MnhfTElCKSArPSBtdDc5MngtbGliLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX01UNzkyeF9VU0IpICs9IG10NzkyeC11c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTIxPW10NzYtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZToyMzptdDc2LXVzYi15IDo9IHVzYi5vIHVzYl90cmFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS0yNC1tdDc2LXNkaW8teSA6PSBzZGlvLm8gc2Rpb190eHJ4Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9MjY9Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjI3OkNGTEFHU191c2JfdHJhY2UubyA6PSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMjgtQ0ZMQUdTX210NzZ4MDJfdHJhY2UubyA6PSAtSSQoc3JjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0zMT1tdDc2eDAyLWxpYi15IDo9IG10NzZ4MDJfdXRpbC5vIG10NzZ4MDJfbWFjLm8gbXQ3NngwMl9tY3UubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6MzY6bXQ3NngwMi11c2IteSA6PSBtdDc2eDAyX3VzYl9tY3UubyBtdDc2eDAyX3VzYl9jb3JlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT00Mj1tdDc5MngtbGliLSQoQ09ORklHX0FDUEkpICs9IG10NzkyeF9hY3BpX3Nhci5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0MzptdDc5MngtdXNiLXkgOj0gbXQ3OTJ4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jPTc0PXN0YXRpYyBpbnQgbXQ3Nl9yeF9xdWV1ZXNfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy04Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYzo4MzpcXHRcXHRxdWV1ZWQgPSBtdDc2X2lzX3VzYihkZXYpID8gcS1cXHUwMDNlbmRlc2MgLSBxLVxcdTAwM2VxdWV1ZWQgOiBxLVxcdTAwM2VxdWV1ZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMtODQtXFx0XFx0c2VxX3ByaW50ZihzLCBcXFwiICU5ZCB8ICU5ZCB8ICU5ZCB8ICU5ZCB8XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xlZHMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNDojaW5jbHVkZSBcXHUwMDNjbGludXgvdXNiLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTUtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F2ZXJhZ2UuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTk1PXN0cnVjdCBtdDc2X2J1c19vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjExMDojZGVmaW5lIG10NzZfaXNfdXNiKGRldikgKChkZXYpLVxcdTAwM2VidXMtXFx1MDAzZXR5cGUgPT0gTVQ3Nl9CVVNfVVNCKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTExMS0jZGVmaW5lIG10NzZfaXNfbW1pbyhkZXYpICgoZGV2KS1cXHUwMDNlYnVzLVxcdTAwM2V0eXBlID09IE1UNzZfQlVTX01NSU8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD02NTA9c3RydWN0IG10NzZfbWN1IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTY2My0jZGVmaW5lIE1DVV9SRVNQX1VSQl9TSVpFXFx0MTAyNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY2NDpzdHJ1Y3QgbXQ3Nl91c2Ige1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY2NTpcXHRzdHJ1Y3QgbXV0ZXggdXNiX2N0cmxfbXR4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTY2Ni1cXHR1OCAqZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTkyND1zdHJ1Y3QgbXQ3Nl9kZXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTA0MS1cXHRcXHRzdHJ1Y3QgbXQ3Nl9tbWlvIG1taW87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTA0MjpcXHRcXHRzdHJ1Y3QgbXQ3Nl91c2IgdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEwNDMtXFx0XFx0c3RydWN0IG10NzZfc2RpbyBzZGlvO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTgzND12b2lkIG10NzZfb2ZmY2hhbm5lbF9ub3RpZnkoc3RydWN0IG10NzZfcGh5ICpwaHksIGJvb2wgb2ZmY2hhbm5lbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTgzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODM2Oi8qIHVzYiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4Mzctc3RhdGljIGlubGluZSBib29sIG10NzZ1X3VyYl9lcnJvcihzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xODQ2PW10NzZ1X2J1bGtfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuLCBpbnQgKmFjdHVhbF9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODQ4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODQ5OlxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1aW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4NTA6XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVpbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODUxOlxcdHN0cnVjdCBtdDc2X3VzYiAqdXNiID0gXFx1MDAyNmRldi1cXHUwMDNldXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4NTItXFx0dW5zaWduZWQgaW50IHBpcGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODU0LVxcdGlmIChhY3R1YWxfbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4NTU6XFx0XFx0cGlwZSA9IHVzYl9yY3ZidWxrcGlwZSh1ZGV2LCB1c2ItXFx1MDAzZWluX2VwW2VwXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg1Ni1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTg1NzpcXHRcXHRwaXBlID0gdXNiX3NuZGJ1bGtwaXBlKHVkZXYsIHVzYi1cXHUwMDNlb3V0X2VwW2VwXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxODU5OlxcdHJldHVybiB1c2JfYnVsa19tc2codWRldiwgcGlwZSwgZGF0YSwgbGVuLCBhY3R1YWxfbGVuLCB0aW1lb3V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODYwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE4NzY9dm9pZCBfX19tdDc2dV93cihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTggcmVxLCB1OCByZXFfdHlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODc3LVxcdFxcdCB1MzIgYWRkciwgdTMyIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTg3ODppbnQgX19tdDc2dV9pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODc5LVxcdFxcdCBzdHJ1Y3QgbXQ3Nl9idXNfb3BzICpvcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4ODA6aW50IG10NzZ1X2luaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xODgxLWludCBtdDc2dV9hbGxvY19tY3VfcXVldWUoc3RydWN0IG10NzZfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU9ND1vYmotJChDT05GSUdfTVQ3NjE1RSkgKz0gbXQ3NjE1ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfTVQ3NjYzX1VTQl9TRElPX0NPTU1PTikgKz0gbXQ3NjYzLXVzYi1zZGlvLWNvbW1vbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGUtNi1vYmotJChDT05GSUdfTVQ3NjYzVSkgKz0gbXQ3NjYzdS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9NYWtlZmlsZT0xNj1tdDc2MTVlLSQoQ09ORklHX01UNzYyMl9XTUFDKSArPSBzb2Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlOjE4Om10NzY2My11c2Itc2Rpby1jb21tb24teSA6PSB1c2Jfc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvTWFrZWZpbGU6MTk6bXQ3NjYzdS15IDo9IHVzYi5vIHVzYl9tY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L01ha2VmaWxlLTIwLW10NzY2M3MteSA6PSBzZGlvLm8gc2Rpb19tY3Uub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTk2PW10NzYxNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEwNTpcXHRpZiAoIW10NzYxNV9maXJtd2FyZV9vZmZsb2FkKGRldikgfHwgbXQ3Nl9pc191c2IoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTEwNi1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaD0zNTU9ZXh0ZXJuIGNvbnN0IHUzMiBtdDc2NjNlX3JlZ19tYXBbX19NVF9CQVNFX01BWF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6MzU2OmV4dGVybiBjb25zdCB1MzIgbXQ3NjYzX3VzYl9zZGlvX3JlZ19tYXBbX19NVF9CQVNFX01BWF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtMzU3LWV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBtdDc2MTVfcGNpX2RyaXZlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTU0MD12b2lkIG10NzYyMl90cmlnZ2VyX2hpZl9pbnQoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgYm9vbCBlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjU0MjovKiB1c2IgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDM6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0NC1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0Ni1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbXQ3Nl90eF9pbmZvICp0eF9pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDc6Ym9vbCBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDg6dm9pZCBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDktXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6NTUwOmludCBtdDc2NjNfdXNiX3NkaW9fcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU1MS1pbnQgbXQ3NjYzdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYz03Nj1zdGF0aWMgaW50IG10NzY2M3NfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy04MS1cXHRcXHQuZHJ2X2ZsYWdzID0gTVRfRFJWX1JYX0RNQV9IRFIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjgyOlxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM6ODM6XFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzY2M191c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjg0OlxcdFxcdC50eF9zdGF0dXNfZGF0YSA9IG10NzY2M191c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtODUtXFx0XFx0LnJ4X3NrYiA9IG10NzYxNV9xdWV1ZV9yeF9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtMTE4LVxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VtY3Vfd29yaywgbXQ3NjYzc19pbml0X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzoxMTk6XFx0ZGV2LVxcdTAwM2VyZWdfbWFwID0gbXQ3NjYzX3VzYl9zZGlvX3JlZ19tYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTEyMC1cXHRkZXYtXFx1MDAzZW9wcyA9IG9wcztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy0xNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjE1OTpcXHRyZXQgPSBtdDc2NjNfdXNiX3NkaW9fcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTE2MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExOiNpbmNsdWRlIFxcdTAwM2NsaW51eC91c2IuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdDc2MTVfZGV2aWNlX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTktXFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDBlOGQsIDB4NzY2MywgMHhmZiwgMHhmZiwgMHhmZikgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTI0PXN0YXRpYyB1MzIgbXQ3NjYzdV9ycihzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyODpcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI5LVxcdHJldCA9IF9fX210NzZ1X3JyKGRldiwgTVRfVkVORF9SRUFEX0VYVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0zMC1cXHRcXHRcXHQgIFVTQl9ESVJfSU4gfCBVU0JfVFlQRV9WRU5ET1IsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjMxOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2V1c2IudXNiX2N0cmxfbXR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0zMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTM2PXN0YXRpYyB2b2lkIG10NzY2M3Vfd3Ioc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBhZGRyLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTM3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzozODpcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTM5LVxcdF9fX210NzZ1X3dyKGRldiwgTVRfVkVORF9XUklURV9FWFQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNDAtXFx0XFx0ICAgIFVTQl9ESVJfT1VUIHwgVVNCX1RZUEVfVkVORE9SLCBhZGRyLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjQxOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2V1c2IudXNiX2N0cmxfbXR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy00Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz00ND1zdGF0aWMgdTMyIG10NzY2M3Vfcm13KHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTQ2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzo0NzpcXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTQ4LVxcdHZhbCB8PSBfX19tdDc2dV9ycihkZXYsIE1UX1ZFTkRfUkVBRF9FWFQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy01MS1cXHRcXHQgICAgVVNCX0RJUl9PVVQgfCBVU0JfVFlQRV9WRU5ET1IsIGFkZHIsIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6NTI6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZXVzYi51c2JfY3RybF9tdHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9NTc9c3RhdGljIHZvaWQgbXQ3NjYzdV9jb3B5KHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgb2Zmc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjYwOlxcdHN0cnVjdCBtdDc2X3VzYiAqdXNiID0gXFx1MDAyNmRldi1cXHUwMDNldXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTYxLVxcdGludCByZXQsIGkgPSAwLCBiYXRjaF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy02NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzo2NjpcXHRtdXRleF9sb2NrKFxcdTAwMjZ1c2ItXFx1MDAzZXVzYl9jdHJsX210eCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNjctXFx0d2hpbGUgKGkgXFx1MDAzYyBsZW4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzo2ODpcXHRcXHRiYXRjaF9sZW4gPSBtaW5fdChpbnQsIHVzYi1cXHUwMDNlZGF0YV9sZW4sIGxlbiAtIGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjY5OlxcdFxcdG1lbWNweSh1c2ItXFx1MDAzZWRhdGEsIHZhbCArIGksIGJhdGNoX2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNzAtXFx0XFx0cmV0ID0gX19tdDc2dV92ZW5kb3JfcmVxdWVzdChkZXYsIE1UX1ZFTkRfV1JJVEVfRVhULFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNzItXFx0XFx0XFx0XFx0XFx0ICAgICAob2Zmc2V0ICsgaSkgXFx1MDAzZVxcdTAwM2UgMTYsIG9mZnNldCArIGksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6NzM6XFx0XFx0XFx0XFx0XFx0ICAgICB1c2ItXFx1MDAzZWRhdGEsIGJhdGNoX2xlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtNzQtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy03OC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Nzk6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ1c2ItXFx1MDAzZXVzYl9jdHJsX210eCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtODAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MTAxPXN0YXRpYyB2b2lkIG10NzY2M3VfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMTI6c3RhdGljIGludCBtdDc2NjN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMTM6XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTE3LVxcdFxcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUiB8IE1UX0RSVl9IV19NR01UX1RYUSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMTg6XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExOTpcXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMjA6XFx0XFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3NjYzX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTEyMS1cXHRcXHQucnhfc2tiID0gbXQ3NjE1X3F1ZXVlX3J4X3NrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTEzNS1cXHR9O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjEzNjpcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTEzNy1cXHRzdHJ1Y3QgaWVlZTgwMjExX29wcyAqb3BzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE0MjpcXHRvcHMgPSBkZXZtX2ttZW1kdXAoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc2MTVfb3BzLCBzaXplb2YobXQ3NjE1X29wcyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTQzLVxcdFxcdFxcdCAgIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE0OTpcXHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIHNpemVvZigqZGV2KSwgb3BzLCBcXHUwMDI2ZHJ2X29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTUwLVxcdGlmICghbWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE1My1cXHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzYxNV9kZXYsIG10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE1NDpcXHR1c2JfcmVzZXRfZGV2aWNlKHVkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxNTY6XFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTU4LVxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VtY3Vfd29yaywgbXQ3NjYzdV9pbml0X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjE1OTpcXHRkZXYtXFx1MDAzZXJlZ19tYXAgPSBtdDc2NjNfdXNiX3NkaW9fcmVnX21hcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xNjAtXFx0ZGV2LVxcdTAwM2VvcHMgPSBvcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTYxOlxcdHJldCA9IF9fbXQ3NnVfaW5pdChtZGV2LCB1c2JfaW50ZiwgXFx1MDAyNmJ1c19vcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE2Mi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxODY6XFx0cmV0ID0gbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTkzLVxcdG10NzZ1X3F1ZXVlc19kZWluaXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTk0OlxcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTE5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTIwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyMDE6c3RhdGljIHZvaWQgbXQ3NjYzdV9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMDIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIwMzpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YSh1c2JfaW50Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjA0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIxMTpcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMTYtI2lmZGVmIENPTkZJR19QTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIxNzpzdGF0aWMgaW50IG10NzY2M3Vfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTIxOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MjE5OlxcdHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTIyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyMzY6c3RhdGljIGludCBtdDc2NjN1X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjIzODpcXHRzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yMzktXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoyNTk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzYxNV9kZXZpY2VfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI2MC1NT0RVTEVfRklSTVdBUkUoTVQ3NjYzX09GRkxPQURfRklSTVdBUkVfTjkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MjYzPU1PRFVMRV9GSVJNV0FSRShNVDc2NjNfUk9NX1BBVENIKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MjY1OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2NjN1X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNjYtXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjc3LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Mjc4Om1vZHVsZV91c2JfZHJpdmVyKG10NzY2M3VfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0yNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTktI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTA6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTc6Y29uc3QgdTMyIG10NzY2M191c2Jfc2Rpb19yZWdfbWFwW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xOC1cXHRbTVRfVE9QX0NGR19CQVNFXVxcdD0gMHg4MDAyMDAwMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtNDAtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjQxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb19yZWdfbWFwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM9NDM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjQ0Om10NzY2M191c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy00NS1cXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzo1NjpzdGF0aWMgaW50IG10NzY2M191c2Jfc2Rpb19zZXRfcmF0ZXMoc3RydWN0IG10NzYxNV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTU3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG10NzYxNV93dGJsX3JhdGVfZGVzYyAqd3JkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxMzE6c3RhdGljIHZvaWQgbXQ3NjYzX3VzYl9zZGlvX3JhdGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNDgtXFx0XFx0bXQ3NjE1X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE0OTpcXHRcXHRtdDc2NjNfdXNiX3NkaW9fc2V0X3JhdGVzKGRldiwgd3JkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE1MC1cXHRcXHRtdDc2MTVfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxNTY6Ym9vbCBtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTY1LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE2NjpFWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTY4OnZvaWQgbXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xNjktXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MTczOlxcdGlmIChtdDc2X2lzX3VzYihtZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE3NC1cXHRcXHRoZWFkcm9vbSArPSBNVF9VU0JfSERSX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE3OC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxNzk6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxODE6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTgyLVxcdFxcdFxcdFxcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMDctXFx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHdjaWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMDg6XFx0bXQ3NjYzX3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjIwOTpcXHRpZiAobXQ3Nl9pc191c2IobWRldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIxMC1cXHRcXHR1MzIgbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIyNC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMjU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jPTIyNz1zdGF0aWMgaW50IG10NzY2M3VfZG1hX3NjaGVkX2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMjc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6Mjc5OnN0YXRpYyBpbnQgbXQ3NjYzX3VzYl9zZGlvX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTI4MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjI4NzpcXHRpZiAobXQ3Nl9pc191c2IoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTI4OC1cXHRcXHRyZXQgPSBtdDc2NjN1X2RtYV9zY2hlZF9pbml0KGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTMwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjMwNzppbnQgbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MzEyOlxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VyYXRlX3dvcmssIG10NzY2M191c2Jfc2Rpb19yYXRlX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzEzLVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZkZXYtXFx1MDAzZXdyZF9oZWFkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MzE2OlxcdGVyciA9IG10NzY2M191c2Jfc2Rpb19pbml0X2hhcmR3YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMTctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzIwLVxcdGh3LVxcdTAwM2VleHRyYV90eF9oZWFkcm9vbSArPSBNVF9VU0JfVFhEX1NJWkU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozMjE6XFx0aWYgKG10NzZfaXNfdXNiKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMjItXFx0XFx0aHctXFx1MDAzZWV4dHJhX3R4X2hlYWRyb29tICs9IE1UX1VTQl9IRFJfU0laRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTMyMy1cXHRcXHQvKiBjaGVjayBodyBzZyBzdXBwb3J0IGluIG9yZGVyIHRvIGVuYWJsZSBBTVNEVSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MzI0OlxcdFxcdGlmIChkZXYtXFx1MDAzZW10NzYudXNiLnNnX2VuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzI1LVxcdFxcdFxcdGh3LVxcdTAwM2VtYXhfdHhfZnJhZ21lbnRzID0gTVRfSFdfVFhQX01BWF9CVUZfTlVNO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzozMzU6XFx0aWYgKCFkZXYtXFx1MDAzZW10NzYudXNiLnNnX2VuKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0zMzYtXFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdGFfdmh0X2NhcCAqdmh0X2NhcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMzQ4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjM0OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fcmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTM1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9MzY9aW50IG10NzZfY29ubmFjX3BtX3dha2Uoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBtdDc2X2Nvbm5hY19wbSAqcG0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM6NDA6XFx0aWYgKG10NzZfaXNfdXNiKGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy00MS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9NjI9dm9pZCBtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKHN0cnVjdCBtdDc2X3BoeSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tYWMuYy02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjY3OlxcdGlmIChtdDc2X2lzX3VzYihkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNjgtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYz0yNjI1PW10NzZfY29ubmFjX21jdV9zZXRfd293X2N0cmwoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTI2NjctXFx0XFx0cmVxLndvd19jdHJsX3Rsdi53YWtldXBfaGlmID0gV09XX1BDSUU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzoyNjY4OlxcdGVsc2UgaWYgKG10NzZfaXNfdXNiKGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy0yNjY5LVxcdFxcdHJlcS53b3dfY3RybF90bHYud2FrZXVwX2hpZiA9IFdPV19VU0I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jPTI2Nzg9aW50IG10NzZfY29ubmFjX21jdV9zZXRfaGlmX3N1c3BlbmQoc3RydWN0IG10NzZfZGV2ICpkZXYsIGJvb2wgc3VzcGVuZCwgYm9vbCB3YWl0X3Jlc3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTI3MDMtXFx0XFx0cmVxLmhkci5oaWZfdHlwZSA9IDI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzoyNzA0OlxcdGVsc2UgaWYgKG10NzZfaXNfdXNiKGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy0yNzA1LVxcdFxcdHJlcS5oZHIuaGlmX3R5cGUgPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGU9Nj1tdDc2eDAtY29tbW9uLXkgOj0gaW5pdC5vIG1haW4ubyBlZXByb20ubyBwaHkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL01ha2VmaWxlLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGU6ODptdDc2eDB1LXkgOj0gdXNiLm8gdXNiX21jdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtOS1tdDc2eDBlLXkgOj0gcGNpLm8gcGNpX21jdS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaC0xNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvbXV0ZXguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaDoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvdXNiLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtMTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBsZXRpb24uaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jPTEwMz1tdDc2eDBfcmZfd3Ioc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xMDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jOjEwNTpcXHRpZiAobXQ3Nl9pc191c2IoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy0xMDYtXFx0XFx0c3RydWN0IG10NzZfcmVnX3BhaXIgcGFpciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jPTExOT1zdGF0aWMgaW50IG10NzZ4MF9yZl9ycihzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgdTMyIG9mZnNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYzoxMjQ6XFx0aWYgKG10NzZfaXNfdXNiKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmMtMTI1LVxcdFxcdHN0cnVjdCBtdDc2X3JlZ19wYWlyIHBhaXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYz05MTM9dm9pZCBtdDc2eDBfcGh5X3NldF9jaGFubmVsKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGh5LmMtOTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BoeS5jOjk3MTpcXHRpZiAobXQ3Nl9pc191c2IoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9waHkuYy05NzItXFx0XFx0bXQ3NngwX3BoeV9iYnBfc2V0X2J3KGRldiwgY2hhbmRlZi1cXHUwMDNld2lkdGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtNy0jaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6ODojaW5jbHVkZSBcXHUwMDNjbGludXgvdXNiLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTExLSNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxMjojaW5jbHVkZSBcXFwiLi4vbXQ3NngwMl91c2IuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxNDpzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgbXQ3NngwX2RldmljZV90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE1LVxcdHsgVVNCX0RFVklDRSgweDE0OEYsIDB4NzYxMCkgfSxcXHQvKiBNVDc2MTBVICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy00NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzo0NjpzdGF0aWMgdm9pZCBtdDc2eDBfaW5pdF91c2JfZG1hKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTE1MT1zdGF0aWMgaW50IG10NzZ4MHVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxNjQ6XFx0bXQ3NngwX2luaXRfdXNiX2RtYShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE2NS1cXHRlcnIgPSBtdDc2eDBfaW5pdF9oYXJkd2FyZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MTc5PXN0YXRpYyBpbnQgbXQ3NngwdV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xODEtXFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBkZXYtXFx1MDAzZW10NzYuaHc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTgyOlxcdHN0cnVjdCBtdDc2X3VzYiAqdXNiID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni51c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTgzLVxcdGludCBlcnI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE4NTpcXHR1c2ItXFx1MDAzZW1jdS5kYXRhID0gZGV2bV9rbWFsbG9jKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIE1DVV9SRVNQX1VSQl9TSVpFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE4Ni1cXHRcXHRcXHRcXHQgICAgIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE4NzpcXHRpZiAoIXVzYi1cXHUwMDNlbWN1LmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTg4LVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTk4LVxcdC8qIGNoZWNrIGh3IHNnIHN1cHBvcnQgaW4gb3JkZXIgdG8gZW5hYmxlIEFNU0RVICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTk5OlxcdGh3LVxcdTAwM2VtYXhfdHhfZnJhZ21lbnRzID0gZGV2LVxcdTAwM2VtdDc2LnVzYi5zZ19lbiA/IE1UX1RYX1NHX01BWF9TSVpFIDogMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMDAtXFx0ZXJyID0gbXQ3NngwX3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIxMzpzdGF0aWMgaW50IG10NzZ4MHVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIxNDpcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIxNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjktXFx0fTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMzA6XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMzEtXFx0c3RydWN0IG10NzZ4MDJfZGV2ICpkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjM2OlxcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcXHUwMDI2dXNiX2ludGYtXFx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBcXHUwMDI2bXQ3NngwdV9vcHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjM3LVxcdFxcdFxcdFxcdCBcXHUwMDI2ZHJ2X29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjQ4OlxcdHVzYl9yZXNldF9kZXZpY2UodXNiX2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjI1MDpcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yNTItXFx0bXQ3NngwMnVfaW5pdF9tY3UobWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjUzOlxcdHJldCA9IG10NzZ1X2luaXQobWRldiwgdXNiX2ludGYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI1NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjg0LWVycjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyODU6XFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjg2LVxcdG10NzZ1X3F1ZXVlc19kZWluaXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjkyOnN0YXRpYyB2b2lkIG10NzZ4MF9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yOTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjI5NDpcXHRzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEodXNiX2ludGYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI5NS1cXHRib29sIGluaXRpYWxpemVkID0gdGVzdF9iaXQoTVQ3Nl9TVEFURV9JTklUSUFMSVpFRCwgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzAzOlxcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMDg6c3RhdGljIGludCBfX21heWJlX3VudXNlZCBtdDc2eDBfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzA5LVxcdFxcdFxcdFxcdFxcdCBwbV9tZXNzYWdlX3Qgc3RhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzEwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMTE6XFx0c3RydWN0IG10NzZ4MDJfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKHVzYl9pbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzIwOnN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbXQ3NngwX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzIxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMjI6XFx0c3RydWN0IG10NzZ4MDJfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKHVzYl9pbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMjMtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozMzk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzZ4MF9kZXZpY2VfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTM0MC1NT0RVTEVfRklSTVdBUkUoTVQ3NjEwRV9GSVJNV0FSRSk7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MTcuNzU4MDg3MzlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzE5MzM3ODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBgbXQ3NmAgZGVmaW5pdGVseSBoYXMgVVNCIGRyaXZlcnMg4oCTIEkga25vdyB0aGF0LCBgbXQ3NngwdWAsIGBtdDc2MTV1YCwgYWxsIHRob3NlLiBBbmQgdGhhdCdzIGdyZWF0IG5ld3MgYmVjYXVzZSBzeXprYWxsZXIsIHdoaWNoIEknbSB2ZXJ5IGZhbWlsaWFyIHdpdGgsIGhhcyBhIFVTQiBmdXp6ZXIgYnVpbHQgcmlnaHQgaW4sIGxldmVyYWdpbmcgdGhhdCBgZHVtbXlfaGNkYCBzZXR1cC4gVGhpcyBtZWFucyBJIGNhbiBhbG1vc3QgY2VydGFpbmx5IHRyaWdnZXIgdGhpcyBjb2RlLCBldmVuIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0J3MgYSBodWdlIHdpbiBmb3IgdGVzdGluZy4gTm93LCBsZXQncyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMgZnVuY3Rpb24uIEkgd2FudCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgLiBMZXQncyBzZWUgd2hhdCdzIGhhcHBlbmluZyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxNTMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MjIuMDc3NDI4MjE1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjM0MzE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X3R4X3N0YXR1c19za2JfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE1NjY9dm9pZCBtdDc2X3R4X3N0YXR1c191bmxvY2soc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE1Njk6aW50IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTU3MC1cXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21hYy5jPTEwNzE9aW50IG10NzYwM190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFjLmMtMTA5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWMuYzoxMDk2OlxcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cXHUwMDNlc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWMuYy0xMDk3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX21hYy5jPTYwPWludCBtdDc2MTVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYy05OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfbWFjLmM6OTk6XFx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVxcdTAwM2Vza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9tYWMuYy0xMDAtXFx0bXQ3NjE1X21hY193cml0ZV90eHdpKGRldiwgdHh3aV9wdHIsIHR4X2luZm8tXFx1MDAzZXNrYiwgd2NpZCwgc3RhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0xODE9aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMDc6XFx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHdjaWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMDgtXFx0bXQ3NjYzX3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl90eHJ4LmM9MTM3PWludCBtdDc2eDAyX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jLTE1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdHhyeC5jOjE1NTpcXHRwaWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKG1kZXYsIHdjaWQsIHR4X2luZm8tXFx1MDAzZXNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3R4cnguYy0xNTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYz02ND1pbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6ODM6XFx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVxcdTAwM2Vza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTg0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmM9NzI4PWludCBtdDc5MTVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTc2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuYzo3Njg6XFx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVxcdTAwM2Vza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jLTc2OS1cXHRtdDc5MTVfbWFjX3dyaXRlX3R4d2kobWRldiwgdHh3aV9wdHIsIHR4X2luZm8tXFx1MDAzZXNrYiwgd2NpZCwgcGlkLCBrZXksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz03NzY9aW50IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjgwNjpcXHRwa3RpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Niwgd2NpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MDctXFx0bXQ3OTIxX3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYz04PWludCBtdDc5MjFlX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jOjQzOlxcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cXHUwMDNlc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtNDQtXFx0bXQ3Nl9jb25uYWMyX21hY193cml0ZV90eHdpKG1kZXYsIHR4d2lfcHRyLCB0eF9pbmZvLVxcdTAwM2Vza2IsIHdjaWQsIGtleSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MzM9aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjYzOlxcdHBrdGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCB3Y2lkLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NjQtXFx0bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz05PWludCBtdDc5MjVlX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jOjQ0OlxcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cXHUwMDNlc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtNDUtXFx0bXQ3OTI1X21hY193cml0ZV90eHdpKG1kZXYsIHR4d2lfcHRyLCB0eF9pbmZvLVxcdTAwM2Vza2IsIHdjaWQsIGtleSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTEwMzQ9aW50IG10Nzk5Nl90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtMTEzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzoxMTMzOlxcdHBpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQobWRldiwgd2NpZCwgdHhfaW5mby1cXHUwMDNlc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYy0xMTM0LVxcdG1lbXNldCh0eHdpX3B0ciwgMCwgTVRfVFhEX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTEyMT1pbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6MTIyOm10NzZfdHhfc3RhdHVzX3NrYl9hZGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTEyMy1cXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy0xNzItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzoxNzM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl90eF9zdGF0dXNfc2tiX2FkZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTE3NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MjIuMTkzNzc3MzU1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ2ODMxMTY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBmdW5jdGlvbi4gVGhlIGNvZGUgc2F5cyBpdCdzIGNhbGxlZCBieSBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSB0aGlzIGlzbid0IHNvbWUgZGVhZCBjb2RlLiBUaGVzZSBhcmUgYWxsIFVTQiBkcml2ZXJzLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIuIFNvLCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aG9zZSBVU0IgZGV2aWNlIGludGVyYWN0aW9ucy5cblxuTm93LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIE15IG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIHRyYWNraW5nIGRvd24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVW5kZXJzdGFuZGluZyB0aG9zZSB3aWxsIHRlbGwgbWUgd2hlbiB0aGVzZSBVU0IgZHJpdmVycywgYW5kIHRoZXJlZm9yZSBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAsIGFyZSBhY3R1YWxseSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTIyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMxOjI3LjY2MjA5MTQxM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjg4ODkxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3NlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjpjb25maWcgTVQ3Nl9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo2OmNvbmZpZyBNVDc2X0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNy1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjEyOmNvbmZpZyBNVDc2X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxNjpjb25maWcgTVQ3Nl9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTE3LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjIwOmNvbmZpZyBNVDc2eDAyX0xJQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyNDpjb25maWcgTVQ3NngwMl9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjUtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjg6Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTM2PWNvbmZpZyBNVDc5MnhfVVNCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQwOmNvbmZpZyBNVDc2X05QVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy00MS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWc6Mjpjb25maWcgTVQ3NjAzRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjAzRSAoUENJZSkgYW5kIE1UNzZ4OCBXTEFOIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozOmNvbmZpZyBNVDc2MTVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo4OmNvbmZpZyBNVDc2MTVFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2MTVFIGFuZCBNVDc2NjNFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjIxOmNvbmZpZyBNVDc2MjJfV01BQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMjItXFx0Ym9vbCBcXFwiTVQ3NjIyIChTb0MpIFdNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozMjpjb25maWcgTVQ3NjYzX1VTQl9TRElPX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozNjpjb25maWcgTVQ3NjYzVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzctXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzY2M1UgKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo0Nzpjb25maWcgTVQ3NjYzU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzY2M1MgKFNESU8pIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDBfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6MTk6Y29uZmlnIE1UNzZ4MEVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDBFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Mjpjb25maWcgTVQ3NngyX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Njpjb25maWcgTVQ3NngyRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngyRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoxODpjb25maWcgTVQ3NngyVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MlUgKFVTQikgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MjcuNzI0OTg1MzY5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4MzU2MjEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIE1UNzYgRHJpdmVyIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgTVQ3NiBjb25maWd1cmF0aW9uIG9wdGlvbnMg4oCTIGBNVDc2X0NPUkVgLCBgTVQ3Nl9VU0JgLCBgTVQ3NngwMl9VU0JgLCBhIHdob2xlIHNsZXcgb2YgdGhlbTogYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc2NjNVYCwgYE1UNzkyeF9VU0JgLCBgTVQ3OTIxVWAsIGBNVDc5MjVVYCwgYW5kIHNvIG9uLiBJdCdzIGEgZmFpcmx5IGV4dGVuc2l2ZSBmYW1pbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSByZWxhdGUsIGhvdyB0aGV5J3JlIGludGVyY29ubmVjdGVkLiBJIHRoaW5rIGEgbG9naWNhbCBzdGFydGluZyBwb2ludCB3b3VsZCBiZSB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNVDc2eDBVYC4gU2VlIHdoYXQgb3RoZXIgY29tcG9uZW50cyB0aGF0IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBkZXBlbmRzIG9uLCB3aGF0IG90aGVyIHBhcnRzIG9mIHRoZSBlY29zeXN0ZW0gaXQgcHVsbHMgaW4uIFRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgYW5kIGhvdyBpdCBmaXRzIHdpdGhpbiB0aGUgYnJvYWRlciBwaWN0dXJlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ1MTIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTozMS45MDg1NTA0MzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTY3Nzg3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3NngwVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnPTI9Y29uZmlnIE1UNzZ4MF9DT01NT05cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjY6Y29uZmlnIE1UNzZ4MFVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MFUgKFVTQikgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MzIuMDU0MjQzMzY1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzc3MTYxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIEtjb25maWcgZmlsZSBmb3IgdGhlIE1lZGlhdGVrIE1UNzYgc2VyaWVzIHdpcmVsZXNzIGRyaXZlcnMuXG5cbioqRGVlcCBEaXZlIGludG8gdGhlIE1UNzZ4MCBLY29uZmlnKipcblxuQWxyaWdodCwgSSdtIHB1bGxpbmcgdXAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBNVDc2eDAgc2VyaWVzIGFyZSBkZWZpbmVkLCBhbmQgSSdtIGVhZ2VyIHRvIHNlZSBob3cgdGhlIE1lZGlhdGVrIGZvbGtzIHN0cnVjdHVyZSB0aGVpciBkcml2ZXIgY29uZmlndXJhdGlvbi4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBrZXJuZWwgY29uZmlndXJhdGlvbiBlbGVtZW50czogYGNvbmZpZ2AgYmxvY2tzLCBgdHJpc3RhdGVgIGFuZCBgYm9vbGAgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBoZWxwIHRleHQuLi4gdGhlIHdob2xlIHNoZWJhbmcuIEtub3dpbmcgdGhlIGFyY2hpdGVjdHVyZSwgSSBhbnRpY2lwYXRlIHRoZXknbGwgaGF2ZSBvcHRpb25zIGZvciBmZWF0dXJlcyBsaWtlIGRpZmZlcmVudCBNVDc2IGNoaXBzZXQgdmFyaWFudHMsIHBvd2VyLXNhdmluZyBmZWF0dXJlcywgZGVidWdnaW5nIGFpZHMsIGFuZCBtYXliZSBldmVuIGEgZmV3IHBsYXRmb3JtLXNwZWNpZmljIHNldHRpbmdzLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYW55IGNsZXZlciB1c2VzIG9mIGRlcGVuZGVuY2llcyBvciBjaG9pY2UgYmxvY2tzIHRvIGVuc3VyZSB0aGF0IG9ubHkgcmVsZXZhbnQgb3B0aW9ucyBhcmUgcHJlc2VudGVkIGJhc2VkIG9uIHRoZSBzZWxlY3RlZCBoYXJkd2FyZS4gSSdsbCBhbHNvIGJlIHNjYW5uaW5nIGZvciBhbnkgcG90ZW50aWFsIGdvdGNoYXMgb3IgY29uZmlndXJhdGlvbiBsYW5kbWluZXMgdGhhdCBtaWdodCBjYXVzZSBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLiBGaW5hbGx5LCBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHZlcnNpb25pbmcgYW5kIGNvbXBhdGliaWxpdHkgY2hlY2tzLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIGEgY3J1Y2lhbCBwaWVjZSBpbiB1bmRlcnN0YW5kaW5nIGhvdyBJIGNhbiBiZXN0IGNvbmZpZ3VyZSB0aGlzIGRyaXZlciBhbmQgaW50ZWdyYXRlIGl0IGludG8gbXkgb3duIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5OTUsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTozNi4wOTE5NjE4NzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1UNzZ4MF9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3NngwMl9MSUJcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE1UNzZ4MFVcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAgODpcXHRcXHRzZWxlY3QgTVQ3NngwX0NPTU1PTlxcbiAgIDk6XFx0XFx0c2VsZWN0IE1UNzZ4MDJfVVNCXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjEwVS1iYXNlZCBVU0IgMi4wIHdpcmVsZXNzIGRvbmdsZXMsXFxuICAxNDpcXHRcXHQgIHdoaWNoIGNvbXBseSB3aXRoIElFRUUgODAyLjExYWMgc3RhbmRhcmRzIGFuZCBzdXBwb3J0IDF4MVxcbiAgMTU6XFx0XFx0ICA0MzNNYnBzIFBIWSByYXRlLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBNVDc2eDBFXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwRSAoUENJZSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6MzYuMDkyMDE4Nzc1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDAwOTQ1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgcmV2aWV3aW5nIHRoYXQgS2NvbmZpZyBmaWxlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc2MTUgS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnYCBmaWxlLiBJJ20gaW1tZWRpYXRlbHkgZXhwZWN0aW5nIHRvIHNlZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBNVDc2MTUgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGlzIHdoZXJlIEknbGwgZmluZCBhbGwgdGhlIHR1bmFibGUgcGFyYW1ldGVycyDigJMgdGhlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgaG93IHRoaXMgZHJpdmVyIGlzIGNvbXBpbGVkIGFuZCBpbnRlZ3JhdGVkIGludG8gdGhlIGJyb2FkZXIga2VybmVsLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGZvciB0aGUgbWFpbiBmZWF0dXJlIGZsYWdzLCB0aGluZ3MgbGlrZSBzdXBwb3J0IGZvciBzcGVjaWZpYyA4MDIuMTEgc3RhbmRhcmRzLCBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgdHdlYWtzLCBhbmQgbWF5YmUgb3B0aW9ucyBmb3IgZGVidWdnaW5nIG9yIGxvZ2dpbmcuIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0IHZhbHVlcyBzZXQgZm9yIGVhY2ggb3B0aW9uLiBUaG9zZSBkZXBlbmRlbmNpZXMgYXJlIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIE1lZGlhdGVrIHdpcmVsZXNzIHN0YWNrIGFuZCB0aGUgdW5kZXJseWluZyBrZXJuZWwgbmV0d29ya2luZyBmcmFtZXdvcmsuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZXkndmUgc3RydWN0dXJlZCBpdDsgYXJlIHRoZXkgdXNpbmcgdGhlIHR5cGljYWwgYGJvb2xgLCBgdHJpc3RhdGVgLCBgaW50YCwgZXRjLiBvcHRpb25zPyBXaGF0IGFib3V0IGFueSBzcGVjaWZpYyBoZWxwIHRleHQ/IEFyZSB0aGV5IGZvbGxvd2luZyB0aGUgc3RhbmRhcmQga2VybmVsIGNvZGluZyBzdHlsZT8gSSdsbCBhbHNvIGJlIG9uIHRoZSBsb29rb3V0IGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCBwZXJmb3JtYW5jZSBvciBwb3dlciBjb25zdW1wdGlvbi4gVGhpcyB3aWxsIGFsbCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgZHJpdmVyJ3MgY2FwYWJpbGl0aWVzIGFuZCBob3cgaXQncyBpbnRlbmRlZCB0byBiZSB1c2VkLiBUaW1lIHRvIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTY0MywiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6NDAuMTkyMTE1MzgxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjU6XFx0XFx0c2VsZWN0IFJFR01BUFxcbiAgMjY6XFx0XFx0ZGVmYXVsdCB5XFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gV01BQyBvbiBNVDc2MjIgU29DIGRldmljZXNcXG4gIDI5OlxcdFxcdCAgd2hpY2ggaGFzIHRoZSBzYW1lIGZlYXR1cmUgc2V0IGFzIGEgTVQ3NjE1LCBidXQgbGltaXRlZCB0b1xcbiAgMzA6XFx0XFx0ICAyLjQgR0h6IG9ubHkuXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBNVDc2NjNfVVNCX1NESU9fQ09NTU9OXFxuICAzMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMzQ6XFx0XFx0c2VsZWN0IE1UNzYxNV9DT01NT05cXG4gIDM1OlxcdFxcbiAgMzY6XFx0Y29uZmlnIE1UNzY2M1VcXG4gIDM3OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2NjNVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAzODpcXHRcXHRzZWxlY3QgTVQ3Nl9VU0JcXG4gIDM5OlxcdFxcdHNlbGVjdCBNVDc2NjNfVVNCX1NESU9fQ09NTU9OXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICA0MTpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgNDI6XFx0XFx0aGVscFxcbiAgNDM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjYzVSA4MDIuMTFhYyAyeDI6MiB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgNDQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMxOjQwLjE5MjE4MDc3MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODA2OTQ1ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipDb25zaWRlcmluZyBXaXJlbGVzcyBDaGlwc2V0cyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IHdpcmVsZXNzIGNoaXBzZXRzLCBhbmQgdGhlIGluaXRpYWwgY2FuZGlkYXRlcyBhcmUgYE1UNzZ4MFVgIGFuZCBgTVQ3NjYzVWAuIFRob3NlIGFyZSBnb29kIHN0YXJ0aW5nIHBvaW50cywgZXN0YWJsaXNoZWQgcGVyZm9ybWVycy4gQnV0LCBsZXQncyBub3QganVtcCB0aGUgZ3VuLiBXZSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgb3B0aW9ucywgZXNwZWNpYWxseSB3aGVuIHdlIGFyZSB0YWxraW5nIGFib3V0IHdpcmVsZXNzLiBJcyBgTVQ3OTIxVWAgYSB2aWFibGUgYWx0ZXJuYXRpdmUgb3IgYW4gb3B0aW9uIHRvIGluY29ycG9yYXRlPyBJdCdzIGltcG9ydGFudCB0byB3ZWlnaCBhbGwgcG9zc2liaWxpdGllcyB0byBtYWtlIGFuIGluZm9ybWVkIGRlY2lzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjMwNywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6NDMuOTk5MTI4NDIxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzA2NTMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTIxVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnPTE3PWNvbmZpZyBNVDc5MjFTXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjg6Y29uZmlnIE1UNzkyMVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMxOjQ0LjA5NjE5OTY5OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTc3MzgyNjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ2AgZmlsZTpcblxuKipEaXZpbmcgaW50byB0aGUgTVQ3OTIxIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpc3NlY3QgdGhlIEtjb25maWcgZm9yIHRoZSBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBJIGFscmVhZHkga25vdyB0aGlzIGNoaXA7IGl0J3MgTWVkaWFUZWsncyBsYXRlc3QsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBiZWluZyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gVGhlIEtjb25maWcgZmlsZSBpcyB0aGUga2V5LiBGaXJzdCwgSSdsbCBiZSBsb29raW5nIGZvciB0aGUgYGNvbmZpZ2Agb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgaGVscCB0ZXh0LiBUaGlzIGlzIHdoZXJlIHRoZSBkZWNpc2lvbnMgYXJlIG1hZGU6IHdpbGwgdGhlIGRyaXZlciBiZSBidWlsdC1pbiwgbW9kdWxhcml6ZWQsIG9yIGNvbXBsZXRlbHkgZXhjbHVkZWQ/IFdoYXQncyBnb2luZyB0byBkZXRlcm1pbmUgdGhpcz8gSSdsbCBwcm9iYWJseSBzZWUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHJlc3RyaWN0aW9ucywgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsbHksIHZhcmlvdXMgZmVhdHVyZSBmbGFncyBmb3IgdGhpbmdzIGxpa2UgcG93ZXIgbWFuYWdlbWVudCwgcmVndWxhdG9yeSBkb21haW4gY29uZmlndXJhdGlvbiwgYW5kIG9mZmxvYWQgY2FwYWJpbGl0aWVzLlxuXG5JIGV4cGVjdCB0byBzZWUgYSBjbGVhciBoaWVyYXJjaHk7IHBlcmhhcHMgc2VjdGlvbnMgZGVmaW5pbmcgdGhlIGNvcmUgZHJpdmVyIGFuZCB0aGVuIG5lc3RlZCBvcHRpb25zIGZvciBzcGVjaWZpYyBmZWF0dXJlcy4gVGhlIGRlcGVuZGVuY2llcyBhcmUgY3J1Y2lhbDsgSeKAmWxsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGRyaXZlciByZWxpZXMgb24gYW55IG90aGVyIG1vZHVsZXMgb3IgcHJlLXJlcXVpc2l0ZXMuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVxdWlyZWQgTWVkaWFUZWsgZHJpdmVycyBvciBjb3JlIHdpcmVsZXNzIGluZnJhc3RydWN0dXJlIHJlcXVpcmVtZW50cz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgb24gdGhlIG92ZXJhbGwgc3lzdGVtIGNvbmZpZ3VyYXRpb24/IEFyZSB0aGVyZSBhbnkgbW9kdWxlIGRlcGVuZGVuY2llcywgYW5kIGlmIHNvLCB3aGF0IGFyZSB0aGV5P1xuXG5JJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgKGUuZy4sIGBpZmAsIGBzZWxlY3RgLCBgZGVwZW5kcyBvbmApLiBUaGVzZSB3aWxsIHNob3cgbWUgaG93IHRoZSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgaW50ZXJhY3QuIEnigJlsbCBiZSB3YXRjaGluZyBmb3IgYW55IGBkZWZhdWx0YCB2YWx1ZXMg4oCTIHRoZXkgcmV2ZWFsIHRoZSBrZXJuZWwgZGV2ZWxvcGVycycgaW50ZW5kZWQgY29uZmlndXJhdGlvbnMsIHNvIEknbGwgYmUgcGF5aW5nIGNhcmVmdWwgYXR0ZW50aW9uIHRvIHRoZXNlLiBJ4oCZbGwgYWxzbyBiZSBzZWFyY2hpbmcgZm9yIGFueSBgYm9vbGAsIGB0cmlzdGF0ZWAsIG9yIGBpbnRgIHZhcmlhYmxlcy4gVGhlc2UgYXJlIHRoZSBtYWluIHNldHRpbmdzLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGVhY2ggb25lIGFmZmVjdHMgdGhlIGNvbXBpbGF0aW9uIGFuZCBsaW5raW5nIHByb2Nlc3MsIGFzIHdlbGwgYXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGZpbmFsIGRyaXZlci4gRmluYWxseSwgSeKAmWxsIGJlIGNoZWNraW5nIG91dCB0aGUgJ2hlbHAnIHRleHQuIEl0J3MgdGhlIG1vc3QgdmFsdWFibGUgdGhpbmcsIHRvIGV4cGxhaW4gdGhlIHNldHRpbmdzIGluIGNvbnRleHQgYW5kIGd1aWRlIHVzZXJzIGluIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NjU0LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6NDkuMDczNTg0NzYzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAyNzpcXHRcXG4gIDI4OlxcdGNvbmZpZyBNVDc5MjFVXFxuICAyOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMzA6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDMxOlxcdFxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMzQ6XFx0XFx0aGVscFxcbiAgMzU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzE6NDkuMDczNjY5NDAzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MDk4MzcwNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqRXhhbWluaW5nIHRoZSBXTEFOIERyaXZlciBMYW5kc2NhcGUqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGdldCB0aGlzIHdpcmVsZXNzIGludGVyZmFjZSB3b3JraW5nLiBUaGUgY29yZSBjb21wb25lbnRzLCBhcyB1c3VhbCwgYXJlIHRoZSBgTUFDODAyMTFgIGZyYW1ld29yayBhbmQgdGhlIGBVU0JgIHN1YnN5c3RlbSwgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgVVNCIGRvbmdsZS4gQmFzZWQgb24gdGhlIGRvY3VtZW50YXRpb24sIEknbSBwcmV0dHkgc3VyZSB3ZSdyZSBsb29raW5nIGF0IGRyaXZlcnMgZm9yIE1lZGlhVGVrIGNoaXBzZXRzLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBgTVQ3NngwVWAsIGBNVDc2NjNVYCwgYW5kIGBNVDc5MjFVYC4gSXQncyBhIGJpdCBvZiBhIHN0YW5kYXJkIHNldC5cblxuSGFuZyBvbiBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bC4gVGhlIGRlcGVuZGVuY3kgdHJlZSBpcyBpbXBvcnRhbnQuIExvb2tpbmcgY2xvc2VyLCBpdCBhcHBlYXJzIHRoYXQgYE1UNzZfQ09SRWAgaXMgYWN0dWFsbHkgYSBmdW5kYW1lbnRhbCBjb21wb25lbnQgc2VsZWN0ZWQgYnkgdGhlc2Ugc3BlY2lmaWMgTWVkaWFUZWsgZHJpdmVycy4gSSBrbmV3IEkgaGFkIHRvIGNoZWNrIGJhY2sgb24gdGhhdC4gSXQgd2lsbCBiZSB0aGUgYmFzZSBmb3IgYWxsIG9mIHRoZW0uIEdvb2QgY2F0Y2guIEFuZCBpdCBhbHNvIG1lYW5zIHRoYXQgdGhlIHJpZ2h0IHRoaW5nIHdpbGwgZGVwZW5kIG9uIHRoZSBjb3JyZWN0IHNlbGVjdGlvbi5cblxuTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSByZWxldmFudCBvcHRpb25zLCBsZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgYE1UNzZ4MlVgIGRyaXZlciwganVzdCBpbiBjYXNlIHRoZXJlJ3Mgc29tZXRoaW5nIHJlbGV2YW50IHRoZXJlIEknbSBvdmVybG9va2luZywgb3Igc29tZXRoaW5nIEkgY2FuIGxldmVyYWdlIGR1cmluZyB0aGUgY29uZmlndXJhdGlvbi4gWW91IGFsd2F5cyBuZWVkIHRvIGRvdWJsZS1jaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjczNzMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMxOjUzLjY4MzUwOTQ0NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0Njk5MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc2eDJVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc9Nj1jb25maWcgTVQ3NngyRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE4OmNvbmZpZyBNVDc2eDJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngyVSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTo1My43OTgyMTM4NTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1ODE2OTgzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBNVDc5MjVVYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIFRoZSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYE1UNzkyNVVgLiBUaGlzIGxpa2VseSByZWZlcnMgdG8gYSBzcGVjaWZpYyBjb21wb25lbnQgb3Igc3lzdGVtLCBhbmQgbXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gZXN0YWJsaXNoIGNvbnRleHQuIElzIHRoaXMgYSBjaGlwLCBhIGRyaXZlciwgYSBmaXJtd2FyZSB2ZXJzaW9uLCBhIHNwZWNpZmljIG1vZHVsZSB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIHNwZWNpZmljaXR5IG9mIHRoZSBpZGVudGlmaWVyIHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRpdmVseSB3ZWxsLWRlZmluZWQsIG5vdCBhIGdlbmVyYWwgY29uY2VwdC4gVGhlIFwiTVRcIiBwcmVmaXggdXN1YWxseSBwb2ludHMgdG8gYSBNZWRpYVRlayBwYXJ0LCB3aGljaCBoZWxwcyBuYXJyb3cgZG93biB0aGUgcG9zc2liaWxpdGllcy4gVGhlIFwiNzkyNVVcIiB0aGVuIHJlcHJlc2VudHMgc29tZSB1bmlxdWUgbW9kZWwgb3IgcmV2aXNpb24gd2l0aGluIHRoZSBNZWRpYVRlayBlY29zeXN0ZW0uIE15IG5leHQgc3RlcHMgd291bGQgYmUgdG8gc3RhcnQgZ2F0aGVyaW5nIGluZm9ybWF0aW9uOiBjcm9zcy1yZWZlcmVuY2UgaXQgd2l0aCBrbm93biBkYXRhYmFzZXMgb2YgTWVkaWF0ZWsgY29tcG9uZW50cywgc2VhcmNoIGludGVybmFsIGRvY3VtZW50YXRpb24sIGxvb2sgZm9yIG1lbnRpb25zIGluIGhhcmR3YXJlIHJldmlld3Mgb3IgZGF0YXNoZWV0cywgY2hlY2sgcmVsZXZhbnQgYnVnIHJlcG9ydHMgb3IgZXJyYXRhIHNoZWV0cyBpZiBhdmFpbGFibGUsIG9yIGV2ZW4gY2hlY2sgbXkgbm90ZXMgYW5kIGtub3dsZWRnZSBiYXNlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gVGhlIGdvYWwgaXMgdG8gcmFwaWRseSBkZXRlcm1pbmUgdGhlIGZ1bmN0aW9uIGFuZCBzaWduaWZpY2FuY2Ugb2YgdGhpcyBpdGVtIGluIHRoZSBsYXJnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5MjEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTo1OS4wNTYzODY2NDRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MjEyNzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5MjVVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc9Nz1jb25maWcgTVQ3OTI1RVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMTo1OS4xMTQ2MDMwNzlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI5MjE5NzI2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gVGhhdCBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHN1cHBvcnRlZCBoYXJkd2FyZS4gSSBhbHNvIHNlZSBgTUFDODAyMTFgIGFuZCBgVVNCYCwgc28gaXQncyBhIHdpcmVsZXNzIGRyaXZlciB3aXRoIGEgVVNCIGludGVyZmFjZSwgb3BlcmF0aW5nIHdpdGhpbiB0aGUgTUFDODAyMTEgZnJhbWV3b3JrLCB3aGljaCBpcyB3aGF0IEkgd291bGQgZXhwZWN0LiBOb3csIGxldCdzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGUgaXNzdWUgYnkgYW5hbHl6aW5nIHN5bWJvbHMgdG8gZGV0ZXJtaW5lIHRoZSBjb2RlIHBhdGggb2YgaW50ZXJlc3QuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoaXMgbW9kaWZpZWQgZnVuY3Rpb24sIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYC4gRmlyc3QsIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgZnVuY3Rpb24gaXMgc3RhdGljIG9yIGV4cG9ydGVkLiBBaCwgaXQncyBleHBvcnRlZCwgc28gaXQncyBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSBpdHMgZGVmaW5pbmcgY29tcGlsYXRpb24gdW5pdC4gVGhhdOKAmXMgZ29vZCB0byBrbm93LiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYC4gSSBrbm93IGl0IHdpbGwgYmUgbG9jYXRlZCB3aXRoaW4gdGhlIE1lZGlhdGVrIGRyaXZlciBjb2RlLiBUaGUgcGF0aCBpczogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguY2AuIExldCdzIHRha2UgYSBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM2OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMjowNC40MDY4MDIxMTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyMDpcXHRcXG4gMTIxOlxcdGludFxcbiAxMjI6XFx0bXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4gMTIzOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAxMjQ6XFx0e1xcbiAxMjU6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKXNrYi1cXHUwMDNlZGF0YTtcXG4gMTI2OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTtcXG4gMTI3OlxcdFxcdHN0cnVjdCBtdDc2X3R4X2NiICpjYiA9IG10NzZfdHhfc2tiX2NiKHNrYik7XFxuIDEyODpcXHRcXHRpbnQgcGlkO1xcbiAxMjk6XFx0XFxuIDEzMDpcXHRcXHRtZW1zZXQoY2IsIDAsIHNpemVvZigqY2IpKTtcXG4gMTMxOlxcdFxcbiAxMzI6XFx0XFx0aWYgKCF3Y2lkKVxcbiAxMzM6XFx0XFx0XFx0cmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7XFxuIDEzNDpcXHRcXG4gMTM1OlxcdFxcdGlmIChpbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfTk9fQUNLKVxcbiAxMzY6XFx0XFx0XFx0cmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7XFxuIDEzNzpcXHRcXG4gMTM4OlxcdFxcdGlmICghKGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgKElFRUU4MDIxMV9UWF9DVExfUkVRX1RYX1NUQVRVUyB8XFxuIDEzOTpcXHRcXHRcXHRcXHQgICAgIElFRUU4MDIxMV9UWF9DVExfUkFURV9DVFJMX1BST0JFKSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzI6MDQuNDA2ODk3NzAxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MzM2MjM0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYWNrZXQgVHJhbnNtaXNzaW9uIFN0YXR1cyBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkndmUgcGlucG9pbnRlZCBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgYXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUuIEl0J3MgdGhlIG9uZSBJIG5lZWQgdG8gZXhhbWluZS4gVGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgaXQncyBjYWxsZWQgYnkgYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCwgYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBhbmQgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAuIFRoaXMgaXMgcGVyZmVjdCDigJMgdGhlc2UgYWN0IGxpa2UgZm9jdXMgc3ltYm9scywgd2hpY2ggbWVhbnMgbXkgaW52ZXN0aWdhdGlvbiB3aWxsIGJlIG11Y2ggbW9yZSB0YXJnZXRlZC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlc2UgY2FsbCBzaXRlcyBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBUaGF0IHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGVpciBwb3RlbnRpYWwgc2NvcGUgYW5kIHZpc2liaWxpdHkgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyMTUsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMjowOS4wNDA1MjQ5MDVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMjE5NzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTIxMz1zdGF0aWMgaW50IG10NzZ4MHVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjIxLVxcdFxcdC5zZXRfY2hhbm5lbCA9IG10NzZ4MF9zZXRfY2hhbm5lbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMjI6XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3NngwMnVfdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjIzLVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2eDAydV90eF9jb21wbGV0ZV9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmg9MTc9aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmg6MTg6aW50IG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmgtMTktXFx0XFx0XFx0ICAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM9NDY9aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6NjQ6aW50IG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy02NS1cXHRcXHRcXHQgICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy0xMTYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jOjExNzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2eDAydV90eF9wcmVwYXJlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtMTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MzI9c3RhdGljIGludCBtdDc2eDJ1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtNDAtXFx0XFx0LnNldF9jaGFubmVsID0gbXQ3NngydV9zZXRfY2hhbm5lbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYzo0MTpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc2eDAydV90eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy00Mi1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3NngwMnVfdHhfY29tcGxldGVfc2tiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMjowOS4xMTM3NTEwMzFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyMTgzNjExNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgVFggU0tCIFByZXBhcmF0aW9uIExhbmRzY2FwZSoqXG5cblJpZ2h0LCBzbyBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgIGlzIGV4cG9zZWQsIHRoYXQncyBnb29kLiBJdCBjb25maXJtcyBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgb2YgdGhhdCBwYXJ0aWN1bGFyIHByZXBhcmF0aW9uIGZ1bmN0aW9uLiBCdXQsIG5vdyB0aGF0IEkgaGF2ZSB0aGlzIGluIG1pbmQsIGFuZCB0aGF0IEkgYW0gdGhpbmtpbmcgYWJvdXQgdGhpcyBmYW1pbHkgb2YgZHJpdmVycywgd2hhdCBhYm91dCB0aGUgU0RJTyB2ZXJzaW9uIG9mIHRoYXQ/IExldCBtZSB0aGlua+KApiB0aGUgYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAgZnVuY3Rpb24gaXMgd2hhdCBJIG5lZWQgdG8gbG9vayBhdCBuZXh0LiBXaGF0IGFyZSB0aGUgZGlmZmVyZW5jZXMgdGhlcmU/IERvZXMgaXQgZGlmZmVyIGJhc2VkIG9uIHRoZSBpbnRlcmZhY2UsIG9yIGlzIHRoZXJlIHNvbWUgbW9yZSBnZW5lcmFsIGZ1bmN0aW9uPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlLCBhbmQgcG9zc2libGUgY29tbW9uIGNvZGUgYmV0d2VlbiB0aGVzZSwgcGFydGljdWxhcmx5IGluIGxpZ2h0IG9mIHNvbWUgb2YgdGhlIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBvciBoYXJkd2FyZSBkaWZmZXJlbmNlcyBpbmhlcmVudCBiZXR3ZWVuIFVTQiBhbmQgU0RJTyBpbXBsZW1lbnRhdGlvbnM/IEkgbmVlZCB0byBnbyBkZWVwZXIgbm93IHRoYXQgdGhpcyBoYXMgZW1lcmdlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0ODAsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMjoxMy41MzU1OTE5MTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MzIzMjczNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9NTQwPXZvaWQgbXQ3NjIyX3RyaWdnZXJfaGlmX2ludChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCBib29sIGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0Mi0vKiB1c2IgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDM6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU0NC1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYz03Nj1zdGF0aWMgaW50IG10NzY2M3NfcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy04MS1cXHRcXHQuZHJ2X2ZsYWdzID0gTVRfRFJWX1JYX0RNQV9IRFIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjgyOlxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtODMtXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzY2M191c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0xMTI9c3RhdGljIGludCBtdDc2NjN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTExNy1cXHRcXHQuZHJ2X2ZsYWdzID0gTVRfRFJWX1JYX0RNQV9IRFIgfCBNVF9EUlZfSFdfTUdNVF9UWFEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTE4OlxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTktXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzY2M191c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jPTE3OT1FWFBPUlRfU1lNQk9MX0dQTChtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE4MTppbnQgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xODItXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIyNC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMjU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIyNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzI6MTMuODA4ODU4MDRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA4NjgzMDE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBVU0IvU0RJTyBUWCBQcmVwYXJhdGlvbiBpbiBNZWRpYXRlayBXaUZpIERyaXZlcnMqKlxuXG5IbW0sIHNvIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIGlzIGFuIGV4cG9ydGVkIGZ1bmN0aW9uLCBpbnRlcmVzdGluZy4gSXQncyBjbGVhcmx5IGEga2V5IHBhcnQgb2YgdGhlIHRyYW5zbWl0IHBhdGgsIGhhbmRsaW5nIHRoZSBTZXJ2aWNlIFJlcXVlc3QgQmxvY2sgKFNLQikgcHJlcGFyYXRpb24sIHdoaWNoIGlzIGZ1bmRhbWVudGFsIGZvciBtb3ZpbmcgZGF0YSBwYWNrZXRzIG92ZXIgVVNCIG9yIFNESU8gaW4gdGhhdCBwYXJ0aWN1bGFyIE1lZGlhdGVrIGNoaXBzZXQuIEJ1dCwgaXQgZ290IG1lIHdvbmRlcmluZywgaXMgdGhlcmUgYWxzbyBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBvciBzb21ldGhpbmcgc2ltaWxhciBmb3IgdGhlIG5ld2VyIGBtdDc5MjFgIGNoaXBzZXQ/IEdpdmVuIE1lZGlhdGVrJ3MgdHlwaWNhbCBkcml2ZXIgc3RydWN0dXJlLCBhbmQgdGhlIGV2b2x1dGlvbiBvZiB0aGVpciBoYXJkd2FyZSwgSSdkIGV4cGVjdCB0aGVyZSB0byBiZSBhIGRlZGljYXRlZCBmdW5jdGlvbiwgbGlrZWx5IHNoYXJpbmcgc2ltaWxhciBjb25jZXB0cywgYnV0IG9wdGltaXplZCBmb3IgdGhlIG5ldyBoYXJkd2FyZSBnZW5lcmF0aW9uLiBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGViYXNlIHRvIHNlZSBob3cgdGhleSd2ZSBoYW5kbGVkIHRoYXQsIGJlY2F1c2UgaWYgaXQgZG9lc24ndCBleGlzdCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIHNoYXJpbmcgdGhlIHNhbWUgY29kZS4gSXQgd291bGQgYmUgZ29vZCB0byB1bmRlcnN0YW5kIGlmIGl04oCZcyBhIGRpcmVjdCBwb3J0IHdpdGggbWlub3IgdHdlYWtzLCBhIGNvbXBsZXRlbHkgcmVkZXNpZ25lZCBmdW5jdGlvbiwgb3Igc29tZXRoaW5nIGluLWJldHdlZW4uIFRoZSBzcGVjaWZpY3Mgd2lsbCBoYXZlIGltcGxpY2F0aW9ucyBvbiBwZXJmb3JtYW5jZSwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIGFueSBwb3RlbnRpYWwgYnVnIGZpeGVzLiBUaGlzIGlzIGEgY3JpdGljYWwgYXJlYSBmb3IgZWZmaWNpZW50IGFuZCByb2J1c3Qgd2lyZWxlc3MgZGF0YSB0cmFuc2ZlciwgYW5kIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyBNZWRpYXRlayBpcyBtYW5hZ2luZyB0aGUgcGFja2V0IGhhbmRsaW5nIG9uIHRoZSBuZXdlciBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3NjksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMjoyMC44OTU2OTA4MzJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5Mzc0NzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz03NjQ9bXQ3OTIxX3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3NzY6aW50IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3Ny1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODIyOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODIzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MzI2PWludCBtdDc5MjFfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg6MzI4OmludCBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMjktXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM9OTA9c3RhdGljIGludCBtdDc5MjFzX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtOTgtXFx0XFx0XFx0XFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jOjk5OlxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmMtMTAwLVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTIxdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNTktXFx0XFx0XFx0XFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTYwOlxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNjEtXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMyOjIwLjk5NTA2OTg0MVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQxMDcwMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIE92ZXJzaWdodCBpbiBVU0IvU0RJTyBEcml2ZXIgSGFuZGxpbmcqKlxuXG5BbHJpZ2h0LCBzbyBJIHNlZSB0aGF0IGBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIGlzIGV4cG9zZWQgYXMgYW4gZXhwb3J0ZWQgZnVuY3Rpb24uIFRoYXQncyBnb29kLCB0aGF0IHN1Z2dlc3RzIHNvbWUgZGVncmVlIG9mLCBwcm9iYWJseSwgYnJvYWRlciBzdXBwb3J0IG9yIHV0aWxpemF0aW9uIGJleW9uZCB0aGUgaW1tZWRpYXRlIGNvbnRleHQgb2YgdGhlIG10NzkyMS4gTm93LCBhIHF1ZXN0aW9uIHBvcHMgaW50byBteSBoZWFkLCB0aG91Z2gsIGFuZCBpdCdzIGEgY3JpdGljYWwgb25lIGlmIHdlIGFyZSBjb25zaWRlcmluZyB0aGUgZGVzaWduIHByaW5jaXBsZXMuIFdoYXQgYWJvdXQgaXRzIHByZWRlY2Vzc29yLCBvciBhIHJlbGF0ZWQgZnVuY3Rpb24sIGluIHRoZSBgbXQ3OTI1YCBjb2RlYmFzZT8gV2FzIHRoZXJlIGEgc2ltaWxhciBmdW5jdGlvbiwgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmA/IElmIHNvLCBpcyBpdCBoYW5kbGVkIGNvcnJlY3RseSwgYW5kIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgaW50ZXJmYWNlIGNvcnJlY3Q/IElzIHRoZSBsb2dpYyBjb25zaXN0ZW50IGFjcm9zcyB0aGUgcmVsZXZhbnQgdmVyc2lvbnMgb2YgdGhlIGNvZGU/IFRoaXMgbWVyaXRzIGRlZXBlciBpbnZlc3RpZ2F0aW9uIGJlY2F1c2UgYSBwb3RlbnRpYWwgbGFjayBvZiBzeW1tZXRyeSBoZXJlIGNvdWxkIGluZGljYXRlIGEgYnVnLCBhbiBvdmVyc2lnaHQsIG9yIGFuIGluY29tcGxldGUgcG9ydC4gSW4gYW55IGNhc2UsIGl0IHN1Z2dlc3RzIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYG10NzkyNWAgY29kZSBhbmQgY2hlY2sgdGhlIHN0YXRlIG9mIHRoaW5ncyB0aGVyZS4gQ29uc2lzdGVuY3kgaXMga2V5IHdoZW4gZGVhbGluZyB3aXRoIHRoZXNlIHNvcnRzIG9mIGxvdy1sZXZlbCBkcml2ZXIgY29tcG9uZW50cy4gSXQncyBsaWtlbHkgdGhhdCBhIGNvbW1vbiwgb3IgYXQgbGVhc3QgaGlnaGx5IHJlbGF0ZWQsIGZ1bmN0aW9uIHNob3VsZCBhbHNvIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCBvbiBhIHNpbWlsYXIgYmFzaXMsIGV2ZW4gaWYganVzdCBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzEyNywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMyOjI1LjMzNjE0MzM3OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU0NTc3OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjE9bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMzppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzNC1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2Nzg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzY5PWludCBtdDc5MjVfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzcxOmludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzItXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1OS1cXHRcXHRcXHRcXHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjA6XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2MS1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzI6MjUuNDAxNjA1ODM0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MjkyMDMzOTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQcm9wb3NlZCBQYXRjaCBhbmQgSXRzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCdzIGFjY2Vzc2libGUuIFRoYXQgaW1tZWRpYXRlbHkgbmFycm93cyB0aGUgZm9jdXMgdG8gdGhlIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBmdW5jdGlvbiwgYW5kIGl0cyByZWxhdGVkIGAqdHhfcHJlcGFyZV9za2JgIGZ1bmN0aW9ucyBmb3IgdGhlIFVTQi9TRElPIGRyaXZlcnM6IGBtdDc2eDAydWAsIGBtdDc2NjNfdXNiX3NkaW9gLCBgbXQ3OTIxX3VzYl9zZGlvYCwgYW5kIGBtdDc5MjVfdXNiX3NkaW9gLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gd2F0Y2guXG5cblRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBzZWVtIHRvIGJlOiBgTUFDODAyMTFgLCBgVVNCYCwgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc2NjNVYCwgYE1UNzkyMVVgLCBhbmQgYE1UNzkyNVVgLiBBIGJpdCBvZiBob3VzZWtlZXBpbmcgaGVyZSBlbnN1cmVzIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLlxuXG5Ob3csIGEgY3J1Y2lhbCBwb2ludDogSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBjYWxsIHNpdGVzIGZvciBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAsIG5vdCBqdXN0IHRoZSBVU0IvU0RJTyBvbmVzLiBJIHNlZSB0aGF0IGl0IGlzIGFsc28gY2FsbGVkIGJ5IFBDSWUgZHJpdmVyczogYG10NzYwM190eF9wcmVwYXJlX3NrYmAsIGBtdDc2MTVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTE1X3R4X3ByZXBhcmVfc2tiYCwgYG10NzkyMWVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTI1ZV90eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTk2X3R4X3ByZXBhcmVfc2tiYC4gQnV0LCBzaW5jZSBTeXprYWxsZXIgZG9lc24ndCBlbXVsYXRlIHRoZSBNZWRpYVRlayBQQ0llIGRldmljZXMsIHRob3NlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS4gSG93ZXZlciwgdGhlIFVTQiBwYXRocyBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUgdGhyb3VnaCBgZHVtbXlfaGNkYC5cblxuU28sIHRoZSBmdXp6aW5nIGlzIGRlZmluaXRlbHkgdmlhYmxlIGFuZCB3aWxsIGJlIHdvcnRod2hpbGUuXG5cbkkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIGBNVDc2X0NPUkVgIGlzIGEgbXVzdCwgd2hpY2ggaXMgYSBnaXZlbi4gYE1UNzZfVVNCYCBpcyBzZWxlY3RlZCBieSBgTVQ3NjYzVWAuIGBNVDc2eDAyX1VTQmAgaXMgc2VsZWN0ZWQgYnkgYE1UNzZ4MFVgIGFuZCBgTVQ3NngyVWAsIGFuZCBgTVQ3OTJ4X1VTQmAgaXMgc2VsZWN0ZWQgYnkgYE1UNzkyMVVgIGFuZCBgTVQ3OTI1VWAuIFRoYXQgc2hvdWxkIGNvdmVyIGl0LiBMaXN0aW5nIHRoZSBsZWFmIGNvbmZpZ3MgaXMgc3VmZmljaWVudC5cblxuTm93LCBsZXQncyBleGFtaW5lIHRoZSBwYXRjaCBpdHNlbGYuXG5cbmBgYGNcbi1cdGlmICghd2NpZCB8fCAhcmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2V3Y2lkW3djaWQtXHUwMDNlaWR4XSkpXG4rXHRpZiAoIXdjaWQpXG4gXHRcdHJldHVybiBNVF9QQUNLRVRfSURfTk9fQUNLO1xuIGBgYFxuXG5hbmRcblxuYGBgY1xuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRldi1cdTAwM2VzdGF0dXNfbG9jayk7XG4gXG4rXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2V3Y2lkW3djaWQtXHUwMDNlaWR4XSkgIT0gd2NpZCkge1xuK1x0XHRwaWQgPSBNVF9QQUNLRVRfSURfTk9fQUNLO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbiBcdHBpZCA9IGlkcl9hbGxvYyhcdTAwMjZ3Y2lkLVx1MDAzZXBrdGlkLCBza2IsIE1UX1BBQ0tFVF9JRF9GSVJTVCxcbiBgYGBcblxuQWgsIGl0J3MgYSBjcml0aWNhbCBmaXguIEl0IGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGB3Y2lkYCAod2lyZWxlc3MgY29udGV4dCBJRCkgY291bGQgYmUgZnJlZWQgb3IgcmVwbGFjZWQgYmV0d2VlbiB0aGUgaW5pdGlhbCBjaGVjayBhbmQgaXRzIHVzZSBpbiBgaWRyX2FsbG9jYC4gIFRoZSBvcmlnaW5hbCBjaGVjayB3YXMgdnVsbmVyYWJsZSBiZWNhdXNlIGByY3VfYWNjZXNzX3BvaW50ZXJgIGlzIG5vdCBzYWZlIHRvIHVzZSBvdXRzaWRlIHRoZSByY3UgcmVhZCBsb2NrLiBUaGUgZml4IG1vdmVzIHRoZSBjaGVjayBpbnNpZGUgdGhlIHNwaW5sb2NrIHRvIGVuc3VyZSBhdG9taWNpdHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtdDc2IGRyaXZlci4gQmVjYXVzZSBpdCBpcyByZWFjaGFibGUgdGhyb3VnaCB0aGUgVVNCIGRyaXZlciwgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIGNhbiBmdXp6LlxuXG4qKlN1bW1hcnk6KiogVGhpcyBwYXRjaCwgd2hpY2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbXQ3NiBkcml2ZXIgcmVsYXRlZCB0byB3aXJlbGVzcyBjb250ZXh0IElEcyAod2NpZCksIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGRyaXZlciB2YXJpYW50cyBvZiB0aGUgbXQ3NiBkcml2ZXIuIFRoZSBpbXBvcnRhbnQgZm9jdXMgc3ltYm9scyBhcmUgdGhlIGZ1bmN0aW9ucyBJIGxpc3RlZCBiZWZvcmUuIFRoZSBjb25maWd1cmF0aW9ucyBuZWVkZWQgYXJlIHRoZSBvbmVzIEkgbWVudGlvbmVkLiBJIHdpbGwgZnV6eiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDI3OSwiT3V0cHV0VG9rZW5zIjoyOTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MzI6NDAuNjkzNjQyNDY5WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMjE4MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc2NjNVXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl90eF9zdGF0dXNfc2tiX2FkZFwiLFxuICAgIFwibXQ3NngwMnVfdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgaW4gdGhlIE1lZGlhVGVrIG10NzYgd2lyZWxlc3MgZHJpdmVyIHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uIGJ5IG1vdmluZyB0aGUgYHJjdV9hY2Nlc3NfcG9pbnRlcmAgY2hlY2sgaW5zaWRlIHRoZSBgc3RhdHVzX2xvY2tgIHNwaW5sb2NrLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdGhyb3VnaCB0aGUgVVNCIHZhcmlhbnRzIG9mIHRoZSBtdDc2IGRyaXZlciAoZS5nLiwgbXQ3NngwdSwgbXQ3NjYzdSwgbXQ3OTIxdSwgbXQ3OTI1dSkgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIixcbiAgICBcIk1UNzY2M1VcIixcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2X3R4X3N0YXR1c19za2JfYWRkXCIsXG4gICAgXCJtdDc2eDAydV90eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBpbiB0aGUgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXIgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gYnkgbW92aW5nIHRoZSBgcmN1X2FjY2Vzc19wb2ludGVyYCBjaGVjayBpbnNpZGUgdGhlIGBzdGF0dXNfbG9ja2Agc3BpbmxvY2suIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aHJvdWdoIHRoZSBVU0IgdmFyaWFudHMgb2YgdGhlIG10NzYgZHJpdmVyIChlLmcuLCBtdDc2eDB1LCBtdDc2NjN1LCBtdDc5MjF1LCBtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24gKGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMyOjQwLjgwNDg2ODA0OVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQzMTU4MzI2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMyOjQwLjgwNTMxMDUwOVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5NDMxMTM1MjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgYnkgbW92aW5nIHRoZSB2YWxpZGF0aW9uIG9mIGB3Y2lkYCBpbnNpZGUgdGhlIGBzdGF0dXNfbG9ja2Agc3BpbmxvY2sgYW5kIGVuc3VyaW5nIGl0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHBvaW50ZXIuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBidWdzIGNhdXNlZCBieSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGBkZXYtXFx1MDAzZXdjaWRgIGFycmF5LiBTdWNoIGNvbmN1cnJlbmN5IGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIHBhZGRpbmcgc2VudCB0byB1c2VyIHNwYWNlLCB3aGljaCBhcmUgdGhlIHNwZWNpZmljIHRhcmdldHMgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzUwYmFmODczODdiMjc4YTU0ODE5N2E4MTVlNjBjYTIxNjAxYTc4YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDEzOjMxOjA3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG5pbmRleCAzNzA3ZWUxOWU0YWU3Li4wZjc0ZDgwOGQzMjg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbkBAIC0xMjksNyArMTI5LDcgQEAgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbiBcbiBcdG1lbXNldChjYiwgMCwgc2l6ZW9mKCpjYikpO1xuIFxuLVx0aWYgKCF3Y2lkIHx8ICFyY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZXdjaWRbd2NpZC1cdTAwM2VpZHhdKSlcbitcdGlmICghd2NpZClcbiBcdFx0cmV0dXJuIE1UX1BBQ0tFVF9JRF9OT19BQ0s7XG4gXG4gXHRpZiAoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9OT19BQ0spXG5AQCAtMTQ3LDYgKzE0NywxMSBAQCBtdDc2X3R4X3N0YXR1c19za2JfYWRkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRldi1cdTAwM2VzdGF0dXNfbG9jayk7XG4gXG4rXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGRldi1cdTAwM2V3Y2lkW3djaWQtXHUwMDNlaWR4XSkgIT0gd2NpZCkge1xuK1x0XHRwaWQgPSBNVF9QQUNLRVRfSURfTk9fQUNLO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbiBcdHBpZCA9IGlkcl9hbGxvYyhcdTAwMjZ3Y2lkLVx1MDAzZXBrdGlkLCBza2IsIE1UX1BBQ0tFVF9JRF9GSVJTVCxcbiBcdFx0XHRNVF9QQUNLRVRfSURfTUFTSywgR0ZQX0FUT01JQyk7XG4gXHRpZiAocGlkIFx1MDAzYyAwKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzozMjo0MC44MDUzMTEyMzlaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQzMTEwNzYwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb25jdXJyZW5jeSBGaXggaW4gbXQ3NiBEcml2ZXIqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdC4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSB3aXRoaW4gdGhlIGBtdDc2X3R4X3N0YXR1c19za2JfYWRkYCBmdW5jdGlvbiBpbiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgYSBjcml0aWNhbCBsb2NraW5nIGZpeCByZWxhdGVkIHRvIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgV2ktRmkgQ29ubmVjdGlvbiBJRHMsIG9yIGB3Y2lkYHMuXG5cblRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIGNoZWNrLCBgIXJjdV9hY2Nlc3NfcG9pbnRlcihkZXYtXHUwMDNld2NpZFt3Y2lkLVx1MDAzZWlkeF0pYCwgZWFybHkgaW4gdGhlIGZ1bmN0aW9uLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBjaGVjayB3YXMgbWVhbnQgdG8gcHJldmVudCB1c2luZyBhIGB3Y2lkYCB0aGF0IGhhZCBhbHJlYWR5IGJlZW4gZnJlZWQgb3Igd2FzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIHJlcGxhY2VkLiBIb3dldmVyLCB0aGUgcGF0Y2ggaGFzIGlkZW50aWZpZWQgYSByYWNlIGNvbmRpdGlvbi4gSXQncyBub3cgY2hlY2tpbmcgaWYgdGhlIGB3Y2lkYCBpcyBzdGlsbCB2YWxpZCAqdW5kZXIqIHRoZSBgc3RhdHVzX2xvY2tgLiAgVGhlIGtleSBjaGFuZ2UgbW92ZXMgdGhlIGNoZWNrIGByY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZXdjaWRbd2NpZC1cdTAwM2VpZHhdKSAhPSB3Y2lkYCBpbnNpZGUgYSBgc3Bpbl9sb2NrX2JoYCBjcml0aWNhbCBzZWN0aW9uLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYHdjaWRgIGlzbid0IGZyZWVkIG9yIGNoYW5nZWQgYmV0d2VlbiB0aGUgdmFsaWRpdHkgY2hlY2sgYW5kIHRoZSBgaWRyX2FsbG9jYCBjYWxsLCB3aGljaCBpcyB3aGVyZSB0aGUgcG90ZW50aWFsIGZvciBhIHVzZS1hZnRlci1mcmVlIG9yIGEgcmVsYXRlZCByYWNlIGNvbmRpdGlvbiBleGlzdGVkLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBpcyBhIHRleHRib29rIGV4YW1wbGUgb2YgYSBsb2NraW5nIGJ1ZyBmaXguIFRoZSBvcmlnaW5hbCBjaGVjayB3YXNuJ3Qgc3VmZmljaWVudGx5IHN5bmNocm9uaXplZCB3aXRoIHBvdGVudGlhbCBjaGFuZ2VzIHRvIHRoZSBgd2NpZGAgZGF0YSBzdHJ1Y3R1cmUuIE1vdmluZyB0aGUgY2hlY2sgdW5kZXIgdGhlIGBzdGF0dXNfbG9ja2AgY29ycmVjdGx5IHNlcmlhbGl6ZXMgYWNjZXNzLCBwcm90ZWN0aW5nIGFnYWluc3QgdGhlIHJhY2UuIFRoaXMgc29ydCBvZiBidWcgd291bGQgbGlrZWx5IGJlIGNhdWdodCBieSBLQVNBTiBvciBvdGhlciBtZW1vcnkgc2FmZXR5IHRvb2xzLiBJdCBkb2VzIG5vdCBhcHBlYXIgdG8gaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBhbnkga2luZCBvZiBpbmZvcm1hdGlvbiBsZWFrLlxuXG5JJ20gY29uZmlkZW50IGluIGNhbGxpbmcgdGhpcyBhIHN0cmFpZ2h0IHJhY2UgY29uZGl0aW9uIGZpeCwgc3RyaWN0bHkgcmVsYXRlZCB0byBjb25jdXJyZW50IGFjY2Vzcy4gTm8gbmVlZCB0byBmbGFnIGl0IGFzIEtNU0FOLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjE0LCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjMyOjUwLjIzNjQyMjY1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBgbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZGAgYnkgbW92aW5nIHRoZSB2YWxpZGF0aW9uIG9mIGB3Y2lkYCBpbnNpZGUgdGhlIGBzdGF0dXNfbG9ja2Agc3BpbmxvY2sgYW5kIGVuc3VyaW5nIGl0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHBvaW50ZXIuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBidWdzIGNhdXNlZCBieSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGBkZXYtXFx1MDAzZXdjaWRgIGFycmF5LiBTdWNoIGNvbmN1cnJlbmN5IGFuZCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBMT0NLREVQLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIHBhZGRpbmcgc2VudCB0byB1c2VyIHNwYWNlLCB3aGljaCBhcmUgdGhlIHNwZWNpZmljIHRhcmdldHMgb2YgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gaW4gYG10NzZfdHhfc3RhdHVzX3NrYl9hZGRgIGJ5IG1vdmluZyB0aGUgdmFsaWRhdGlvbiBvZiBgd2NpZGAgaW5zaWRlIHRoZSBgc3RhdHVzX2xvY2tgIHNwaW5sb2NrIGFuZCBlbnN1cmluZyBpdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBwb2ludGVyLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MgYnVncyBjYXVzZWQgYnkgY29uY3VycmVudCBtb2RpZmljYXRpb25zIHRvIHRoZSBgZGV2LVxcdTAwM2V3Y2lkYCBhcnJheS4gU3VjaCBjb25jdXJyZW5jeSBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBwYWRkaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgd2hpY2ggYXJlIHRoZSBzcGVjaWZpYyB0YXJnZXRzIG9mIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow7zqh5[1] Phase: Succeeded StartedAt: 2026-08-21 13:33:01 +0000 UTC FinishedAt: 2026-08-21 13:33:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-21 13:33:01 +0000 UTC FinishedAt: 2026-08-21 13:33:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2] Phase: Succeeded StartedAt: 2026-08-21 13:33:01 +0000 UTC FinishedAt: 2026-08-21 14:17:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-21 13:33:01 +0000 UTC FinishedAt: 2026-08-21 14:17:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-21 13:33:01 +0000 UTC FinishedAt: 2026-08-21 13:33:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-21 13:33:01 +0000 UTC FinishedAt: 2026-08-21 13:33:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflow7zqh5/series-workflow7zqh5-convert-artifact-3645804055/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-21 13:33:11 +0000 UTC FinishedAt: 2026-08-21 13:50:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-21 13:33:11 +0000 UTC FinishedAt: 2026-08-21 13:50:45 +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:*3761df78-3ec5-49d6-9e35-b043a8046a30,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-workflow7zqh5/series-workflow7zqh5-convert-artifact-3645804055/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": "638b97ae-c0c0-4fd1-b5ad-89affff6c422", "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-workflow7zqh5/series-workflow7zqh5-build-action-2709605229/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-21 13:33:11 +0000 UTC FinishedAt: 2026-08-21 13:50:35 +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:*3761df78-3ec5-49d6-9e35-b043a8046a30,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-workflow7zqh5/series-workflow7zqh5-convert-artifact-3645804055/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": "638b97ae-c0c0-4fd1-b5ad-89affff6c422", "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-workflow7zqh5/series-workflow7zqh5-build-action-2709605229/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-21 13:50:45 +0000 UTC FinishedAt: 2026-08-21 13:50:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-21 13:50:45 +0000 UTC FinishedAt: 2026-08-21 13:50:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-21 13:50:45 +0000 UTC FinishedAt: 2026-08-21 13:50:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-21 13:50:45 +0000 UTC FinishedAt: 2026-08-21 13:50:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflow7zqh5/series-workflow7zqh5-convert-artifact-999125318/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-21 13:50:55 +0000 UTC FinishedAt: 2026-08-21 13:53:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-21 13:50:55 +0000 UTC FinishedAt: 2026-08-21 13:52:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*638b97ae-c0c0-4fd1-b5ad-89affff6c422,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-workflow7zqh5/series-workflow7zqh5-build-action-2709605229/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-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-21 13:53:04 +0000 UTC FinishedAt: 2026-08-21 13:53:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-21 13:53:04 +0000 UTC FinishedAt: 2026-08-21 13:53:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-21 13:53:04 +0000 UTC FinishedAt: 2026-08-21 14:13:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-21 13:53:04 +0000 UTC FinishedAt: 2026-08-21 14:13:53 +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:*3761df78-3ec5-49d6-9e35-b043a8046a30,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-workflow7zqh5/series-workflow7zqh5-convert-artifact-999125318/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": "5ccd42dd-baf8-48e0-ba78-4882c43ce24d", "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-workflow7zqh5/series-workflow7zqh5-build-action-1861874826/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-21 13:53:04 +0000 UTC FinishedAt: 2026-08-21 14:13:43 +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:*3761df78-3ec5-49d6-9e35-b043a8046a30,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-workflow7zqh5/series-workflow7zqh5-convert-artifact-999125318/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": "5ccd42dd-baf8-48e0-ba78-4882c43ce24d", "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-workflow7zqh5/series-workflow7zqh5-build-action-1861874826/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-21 14:13:53 +0000 UTC FinishedAt: 2026-08-21 14:13:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-21 14:13:53 +0000 UTC FinishedAt: 2026-08-21 14:13:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-21 14:13:53 +0000 UTC FinishedAt: 2026-08-21 14:16:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-21 14:13:53 +0000 UTC FinishedAt: 2026-08-21 14:15:55 +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:*5ccd42dd-baf8-48e0-ba78-4882c43ce24d,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-workflow7zqh5/series-workflow7zqh5-build-action-1861874826/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-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-21 14:16:05 +0000 UTC FinishedAt: 2026-08-21 14:17:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-21 14:16:05 +0000 UTC FinishedAt: 2026-08-21 14:17:24 +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":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"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:*638b97ae-c0c0-4fd1-b5ad-89affff6c422,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5ccd42dd-baf8-48e0-ba78-4882c43ce24d,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-workflow7zqh5/series-workflow7zqh5-build-action-2709605229/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-workflow7zqh5/series-workflow7zqh5-build-action-1861874826/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-21 14:16:05 +0000 UTC FinishedAt: 2026-08-21 14:16:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-21 14:16:05 +0000 UTC FinishedAt: 2026-08-21 14:16:10 +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":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"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-workflow7zqh5/series-workflow7zqh5-convert-artifact-1604007947/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-21 14:16:05 +0000 UTC FinishedAt: 2026-08-21 14:16:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-21 14:16:05 +0000 UTC FinishedAt: 2026-08-21 14:16:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-21 14:16:05 +0000 UTC FinishedAt: 2026-08-21 14:16:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-21 14:16:15 +0000 UTC FinishedAt: 2026-08-21 14:17:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7zqh5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_tx_status_skb_add","mt76x02u_tx_prepare_skb","mt7663_usb_sdio_tx_prepare_skb","mt7921_usb_sdio_tx_prepare_skb","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U"],"series_id":"c574b062-3831-4598-b232-fb765c2b339d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-21 14:16:15 +0000 UTC FinishedAt: 2026-08-21 14:17:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*638b97ae-c0c0-4fd1-b5ad-89affff6c422,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5ccd42dd-baf8-48e0-ba78-4882c43ce24d,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-workflow7zqh5/series-workflow7zqh5-build-action-2709605229/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-workflow7zqh5/series-workflow7zqh5-build-action-1861874826/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-workflow7zqh5/series-workflow7zqh5-convert-artifact-1604007947/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,}