Name: series-workflow9v8nz Phase: Succeeded StartedAt: 2026-08-17 09:08:27 +0000 UTC FinishedAt: 2026-08-17 10:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[0] Phase: Succeeded StartedAt: 2026-08-17 09:08:27 +0000 UTC FinishedAt: 2026-08-17 09:28:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[0].run-triage Phase: Succeeded StartedAt: 2026-08-17 09:08:27 +0000 UTC FinishedAt: 2026-08-17 09:28:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76x0U", "MT76x2U", "MT7663U", "MT7921U", "MT7925U", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76x0U", "MT76x2U", "MT7663U", "MT7921U", "MT7925U", "MAC80211", "USB" ], "series_id": "fc8b3785-e67f-4321-a939-ab629582199a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt76_skb_adjust_pad", "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+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc2NjNVJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X3NrYl9hZGp1c3RfcGFkJiMzNDssCiAgICAmIzM0O210NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYHNrYl9wYWQobGFzdCwgcGFkKWAgd2l0aCBgX19za2JfcGFkKGxhc3QsIHBhZCwgZmFsc2UpYC4gVGhlIGBza2JfcGFkKClgIGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBhcm91bmQgYF9fc2tiX3BhZCgpYCB0aGF0IHBhc3NlcyBgdHJ1ZWAgZm9yIHRoZSBgZnJlZV9vbl9lcnJvcmAgYXJndW1lbnQsIG1lYW5pbmcgaXQgZnJlZXMgdGhlIHNrYiBpZiBwYWRkaW5nIGZhaWxzLiBJZiBgc2tiX3BhZCgpYCBmYWlscyBhbmQgZnJlZXMgdGhlIHNrYiAob3IgYSBmcmFnbWVudCBvZiBpdCksIHRoZSBjYWxsZXIgb2YgYG10NzZfc2tiX2FkanVzdF9wYWQoKWAgbWlnaHQgYWxzbyBhdHRlbXB0IHRvIGZyZWUgdGhlIG9yaWdpbmFsIHNrYiB1cG9uIHJlY2VpdmluZyB0aGUgYC1FTk9NRU1gIGVycm9yLCBsZWFkaW5nIHRvIGEgZG91YmxlIGZyZWUgb3IgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eS5cblxuQnkgY2hhbmdpbmcgdGhlIGNhbGwgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAsIHRoZSBwYXRjaCBwcmV2ZW50cyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IsIGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gc2FmZWx5IGhhbmRsZSB0aGUgY2xlYW51cCB3aXRob3V0IHRyaWdnZXJpbmcgYSBkb3VibGUgZnJlZS5cblxuRG91YmxlIGZyZWUgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MgYXJlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB0aGF0IGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBza2JfcGFkIHRvIF9fc2tiX3BhZCguLi4sIGZhbHNlKSBpbiBtdDc2X3NrYl9hZGp1c3RfcGFkLCBwcmV2ZW50aW5nIHRoZSBza2IgZnJvbSBiZWluZyBmcmVlZCBvbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBtZW1vcnkgbWFuYWdlbWVudCAoYXZvaWRpbmcgZG91YmxlLWZyZWUgb3IgbWVtb3J5IGxlYWtzKS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdmFyaW91cyBNZWRpYVRlayBtdDc2IHdpcmVsZXNzIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzMWQ0Y2FiOGVkMmJkZDUzNGQ0MjQxNjdkNWUzNDgxYzRmYTM4Mzg1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDk6MjU6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG5pbmRleCAzNzA3ZWUxOWU0YWU3Li5lYzUwMzUyMWFlNjMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbkBAIC04NzksNyAmIzQzOzg3OSw3IEBAIGludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGlmIChza2JfcGFkKGxhc3QsIHBhZCkpXG4mIzQzO1x0aWYgKF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRfX3NrYl9wdXQobGFzdCwgcGFkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzY2M1UmIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZfc2tiX2FkanVzdF9wYWQmIzM0OywKICAgICYjMzQ7bXQ3NngwMnVfdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBza2JfcGFkIHRvIF9fc2tiX3BhZCguLi4sIGZhbHNlKSBpbiBtdDc2X3NrYl9hZGp1c3RfcGFkLCBwcmV2ZW50aW5nIHRoZSBza2IgZnJvbSBiZWluZyBmcmVlZCBvbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBtZW1vcnkgbWFuYWdlbWVudCAoYXZvaWRpbmcgZG91YmxlLWZyZWUgb3IgbWVtb3J5IGxlYWtzKS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdmFyaW91cyBNZWRpYVRlayBtdDc2IHdpcmVsZXNzIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMWQ0Y2FiOGVkMmJkZDUzNGQ0MjQxNjdkNWUzNDgxYzRmYTM4Mzg1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTcgMDk6MjU6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMKaW5kZXggMzcwN2VlMTllNGFlNy4uZWM1MDM1MjFhZTYzMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYwpAQCAtODc5LDcgJiM0Mzs4NzksNyBAQCBpbnQgbXQ3Nl9za2JfYWRqdXN0X3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKQogCQl9CiAJfQogCi0JaWYgKHNrYl9wYWQobGFzdCwgcGFkKSkKJiM0MzsJaWYgKF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlfX3NrYl9wdXQobGFzdCwgcGFkKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MwoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZWRpYXRlayBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBhbHRlcnMgYG10NzZfc2tiX2FkanVzdF9wYWRgIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBzd2l0Y2hpbmcgZnJvbSBgc2tiX3BhZChsYXN0LCBwYWQpYCB0byBgX19za2JfcGFkKGxhc3QsIHBhZCwgZmFsc2UpYC4gUmlnaHQsIGBza2JfcGFkYCBpcyBqdXN0IGEgY29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgYF9fc2tiX3BhZGAgd2l0aCB0aGF0IHRoaXJkIGFyZ3VtZW50LCBgZnJlZV9vbl9lcnJvcmAsIHNldCB0byBgdHJ1ZWAuIFNvLCBlZmZlY3RpdmVseSwgdGhlIG9yaWdpbmFsIGNvZGUgZnJlZWQgdGhlIFNLQiBvbiBlcnJvciwgYW5kIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBpdCB0byAqbm90KiBmcmVlIGl0IG9uIGVycm9yLiBUaGlzIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgc3VidGxlIGRpZmZlcmVuY2UgaW4gaG93IG1lbW9yeSBpcyBtYW5hZ2VkIGR1cmluZyBwYWNrZXQgcGFkZGluZy4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBoZXJlLCBnaXZlbiBteSBleHBlcnRpc2UsIGlzIHRoZSBpbXBhY3Qgb2YgdGhpcy4gTXQ3NiBpcyBhIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlci4uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgdXNlIGNhc2UgdG8gZGV0ZXJtaW5lIHRoZSBpbXBhY3QuIFdhaXQsIGlzIHRoaXMgZHJpdmVyIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgaXQgZW11bGF0ZWQgaGFyZHdhcmUsIG9yIGlzIGl0IGEgVVNCIGRyaXZlcj8gVGhlIGFuc3dlciB3aWxsIGhlYXZpbHkgaW5mbHVlbmNlIHRoZSBpbXBhY3QuIE9rYXksIGxldCYjMzk7cyBjaGVjay4gQWgsIHJpZ2h0LCBgbXQ3NmAgZG9lcyBoYXZlIFVTQiBkcml2ZXJzOiBgbXQ3NngwMl91c2JgLCBgbXQ3NngydWAsIGBtdDc5MjF1YCwgYW5kIGEgZmV3IG90aGVycy4gCgpJJiMzOTtsbCBjaGVjayB0aGUgS2NvbmZpZyBub3cgdG8gc2VlIHdoaWNoIGRyaXZlcnMgYXJlIGVuYWJsZWQgaW4gd2hpY2ggc2NlbmFyaW9zIGFuZCBob3cgdGhpcyBjaGFuZ2UgbWlnaHQgcmlwcGxlIHRocm91Z2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgaXMgcmVsYXRlZCB0byBhIGNvbW1vbmx5IHVzZWQgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBvciBub3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9za2JfYWRqdXN0X3BhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE4NjM9dm9pZCBtdDc2X2V0aHRvb2xfd29ya2VyKHN0cnVjdCBtdDc2X2V0aHRvb2xfd29ya2VyX2luZm8gKndpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg2NC1cdFx0XHQgc3RydWN0IG10NzZfc3RhX3N0YXRzICpzdGF0cywgYm9vbCBlaHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTg2NTppbnQgbXQ3Nl9za2JfYWRqdXN0X3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4NjYtaW50IF9fbXQ3NnVfdmVuZG9yX3JlcXVlc3Qoc3RydWN0IG10NzZfZGV2ICpkZXYsIHU4IHJlcSwgdTggcmVxX3R5cGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jPTE3PW10NzY2M3VfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jLTMxLVx0cGFkID0gcm91bmRfdXAoc2tiLVx1MDAzZWxlbiwgNCkgJiM0MzsgNCAtIHNrYi1cdTAwM2VsZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2JfbWN1LmM6MzI6XHRyZXQgPSBtdDc2X3NrYl9hZGp1c3RfcGFkKHNrYiwgcGFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9tY3UuYy0zMy1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0xODE9aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMjE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMTg6XHRlcnIgPSBtdDc2X3NrYl9hZGp1c3RfcGFkKHNrYiwgcGFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMjE5LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYz00Nj1pbnQgbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGludCBwb3J0LCB1MzIgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjAtXHRwYWQgPSByb3VuZF91cChza2ItXHUwMDNlbGVuLCA0KSAmIzQzOyA0IC0gc2tiLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jOjYxOlx0cmV0dXJuIG10NzZfc2tiX2FkanVzdF9wYWQoc2tiLCBwYWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjItfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTc3Nj1pbnQgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODE1Olx0ZXJyID0gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MTYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MzM9aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjcxOlx0ZXJyID0gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjcyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYz01NTk9bXQ3NnNfdHhfcXVldWVfc2tiX3JhdyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNTY0LVx0cGFkID0gcm91bmRfdXAoc2tiLVx1MDAzZWxlbiwgNCkgLSBza2ItXHUwMDNlbGVuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NTY1Olx0cmV0ID0gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy01NjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYz04NjQ9RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9hY190b19od3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzo4NjY6aW50IG10NzZfc2tiX2FkanVzdF9wYWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHBhZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04Njcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04ODgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjg4OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3NrYl9hZGp1c3RfcGFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04OTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE3MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gbXQ3Nl9za2JfYWRqdXN0X3BhZCoqCgpPa2F5LCBzbyBgbXQ3Nl9za2JfYWRqdXN0X3BhZGDigKYgdGhhdCByaW5ncyBhIGJlbGwuIEl04oCZcyB1c2VkIHdpdGhpbiB0aGUgbXQ3NiBmcmFtZXdvcmssIHNwZWNpZmljYWxseSB3aXRoaW4gaXRzIFVTQiBhbmQgU0RJTyBkcml2ZXJzLiBJbnRlcmVzdGluZy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBmdXp6aW5nIHBvc3NpYmlsaXRpZXMuIFNpbmNlIGl0JiMzOTtzIGluIHRoZSBVU0IgZHJpdmVyLCBJIHNob3VsZCBiZSBhYmxlIHRvIGxldmVyYWdlIGR1bW15X2hjZCBvciBzeXprYWxsZXLigJlzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gVGhhdCYjMzk7cyBhIGdyZWF0IHN0YXJ0aW5nIHBvaW50IGZvciBmaW5kaW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIEJ1dCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIG10NzYgVVNCIGRyaXZlcnMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gVW5kZXJzdGFuZGluZyB3aGF0JiMzOTtzIGVuYWJsZWQgYW5kIGRpc2FibGVkIHdpbGwgaGVscCBkZXRlcm1pbmUgdGhlIGF0dGFjayBzdXJmYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjpjb25maWcgTVQ3Nl9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Njpjb25maWcgTVQ3Nl9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNy1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTI6Y29uZmlnIE1UNzZfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxNjpjb25maWcgTVQ3Nl9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyMDpjb25maWcgTVQ3NngwMl9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI0OmNvbmZpZyBNVDc2eDAyX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI1LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjg6Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzY9Y29uZmlnIE1UNzkyeF9VU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNDEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWc6Mjpjb25maWcgTVQ3NjAzRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjAzRSAoUENJZSkgYW5kIE1UNzZ4OCBXTEFOIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjM6Y29uZmlnIE1UNzYxNV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo4OmNvbmZpZyBNVDc2MTVFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2MTVFIGFuZCBNVDc2NjNFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MjE6Y29uZmlnIE1UNzYyMl9XTUFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtNVDc2MjIgKFNvQykgV01BQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MzI6Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjM2OmNvbmZpZyBNVDc2NjNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTM3LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjYzVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6NDc6Y29uZmlnIE1UNzY2M1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDgtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2NjNTIChTRElPKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDBfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Njpjb25maWcgTVQ3NngwVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6MTk6Y29uZmlnIE1UNzZ4MEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDBFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDJfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Njpjb25maWcgTVQ3NngyRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngyRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE4OmNvbmZpZyBNVDc2eDJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngyVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQyOQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHF1aWNrIHJ1bmRvd24gb2YgdGhvc2UgY2hpcHNldHMsIGtlZXBpbmcgaW4gbWluZCBteSBmaWVsZCBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBNZWRpYXRlayBMaW5ldXAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhlIE1lZGlhdGVrIFdpRmkgY2hpcHNldCBsYW5kc2NhcGUuIEkmIzM5O3ZlIGdvdCBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYW5kIGBNVDc2NjNVYCBmbGFnZ2VkLCBvYnZpb3VzbHkgZmFtaWxpYXIgdGVycml0b3J5LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHVwIHRvIHNwZWVkIG9uIHRoZSAqZW50aXJlKiByYW5nZS4gR2l2ZW4gcmVjZW50IGRldmVsb3BtZW50cywgaXQmIzM5O3Mgd29ydGggY3Jvc3MtcmVmZXJlbmNpbmcgdGhlc2UgYWdhaW5zdCB0aGUgbmV3ZXIgb2ZmZXJpbmdzLiBTbywgbGV0JiMzOTtzIGNpcmNsZSBiYWNrIHRvIGNvbnNpZGVyIGhvdyBgTVQ3OTIxVWAgYW5kIGBNVDc5MjVVYCBmaXQgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBXaGVyZSBkbyB0aGV5IHN0YW5kIGluIHRoZSBldm9sdXRpb24gYW5kIHdoYXQgY2FwYWJpbGl0aWVzIGRvIHRoZXkgYnJpbmcgdG8gdGhlIHRhYmxlIGNvbXBhcmVkIHRvIHRoZXNlIG9sZGVyIGNoaXBzPyBLZWVwaW5nIGFuIGV5ZSBvbiB0aGUgYmlnZ2VyIHBpY3R1cmUgaXMga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI4PWNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzI6Y29uZmlnIE1UNzkyeF9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM2OmNvbmZpZyBNVDc5MnhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWc6Mjpjb25maWcgTVQ3OTE1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTE1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnOjE3OmNvbmZpZyBNVDc5OFhfV01BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7TVQ3OTh4IChTb0MpIFdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyODpjb25maWcgTVQ3OTIxVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6Mjpjb25maWcgTVQ3OTk2RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTk2IChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6MTY6Y29uZmlnIE1UNzk5Nl9OUFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTctXHRib29sIFwmIzM0O01UNzk5NiAoUENJZSkgTlBVIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDcwCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMjk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBNVDc2IERyaXZlciBVU0IgVnVsbmVyYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2VzIGluIHRoaXMgTVQ3NiBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBVU0Igc2luY2UgU0RJTyBpcyBhIGhhcmRlciB0YXJnZXQgZm9yIGZ1enppbmcuICBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBVU0Itc3BlY2lmaWMgZnVuY3Rpb25zIGFyZSBtb3N0IGludGVyZXN0aW5nLiBJJiMzOTt2ZSBub3RlZCB0aGF0IHdlIGNhbiBlbmFibGUgc3VwcG9ydCBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgY2hpcHNldHM6IGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0OyBrbm93aW5nIHRoZSBzdXBwb3J0ZWQgaGFyZHdhcmUgZ2l2ZXMgbWUgYSB3aWRlIHJhbmdlIHRvIGV4cGxvcmUuCgpUaGVuLCBJIGlkZW50aWZpZWQgdGhhdCB0aGUgYG10NzZfc2tiX2FkanVzdF9wYWRgIGZ1bmN0aW9uIGlzIHVzZWQgYnkgc2V2ZXJhbCBjcml0aWNhbC1sb29raW5nIGZ1bmN0aW9ucyBhY3Jvc3MgbXVsdGlwbGUgZGV2aWNlLXNwZWNpZmljIHN1Ym1vZHVsZXMuIEkmIzM5O20gbm90aW5nIHRoZSBwbGFjZXMgd2hlcmUgaXQmIzM5O3MgdXNlZDogaW4gYG10NzY2M3VfbWN1X3NlbmRfbWVzc2FnZWAgKHRoYXQgY291bGQgYmUgaW50ZXJlc3RpbmcgZm9yIGNvbW1hbmQgaW5qZWN0aW9uLCBvciBtZXNzaW5nIHdpdGggbWVzc2FnZXMgYmV0d2VlbiB0aGUgaG9zdCBhbmQgZmlybXdhcmUpLCBgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYG10NzZ4MDJ1X3NrYl9kbWFfaW5mb2AsIGBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCAodGhhdCYjMzk7cyBnb2luZyB0byBiZSBhIGxvdCBvZiBjb2RlIHJldXNlKSBhbmQgYG10NzZzX3R4X3F1ZXVlX3NrYl9yYXdgIHdoaWNoIGNvdWxkIGJlIHVzZWZ1bCB0byBpbnZlc3RpZ2F0ZSwgdGhvdWdoIHRoaXMgaXMgdGhlIFNESU8gaW1wbGVtZW50YXRpb24uICBTaW5jZSBJJiMzOTttIHRhcmdldGluZyBVU0IsIEkgY2FuIHByb2JhYmx5IGlnbm9yZSB0aGF0LgoKTm93LCBteSBhdHRlbnRpb24gaXMgcGFydGljdWxhcmx5IGRyYXduIHRvIGBtdDc2eDAydV9za2JfZG1hX2luZm9gLCBiZWNhdXNlIHRoYXQmIzM5O3MgcmlnaHQgaW4gdGhlIFVTQiBwYXRoLCBhbmQgaXQmIzM5O3MgY2FsbGluZyBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAuIEkmIzM5O2xsIHdhbnQgdG8gc2VlIHdoZXJlIGBtdDc2eDAydV9za2JfZG1hX2luZm9gIGlzIGFjdHVhbGx5IGNhbGxlZCBhbmQgd2hhdCBkYXRhIGlzIGJlaW5nIHBhc3NlZCB0byBpdC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBpZiBJIGNhbiBmaW5kIHNvbWV0aGluZyBleHBsb2l0YWJsZSB0aGVyZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwMnVfc2tiX2RtYV9pbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYi5oPTE0PWludCBtdDc2eDAydV9tY3VfZndfc2VuZF9kYXRhKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaC0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaDoxNzppbnQgbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGludCBwb3J0LCB1MzIgZmxhZ3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYi5oLTE4LWludCBtdDc2eDAydV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM9NDQ9RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMnVfbWFjX3N0YXJ0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6NDY6aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jPTY0PWludCBtdDc2eDAydV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtMTA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6MTEwOlx0ZXJyID0gbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHR4X2luZm8tXHUwMDNlc2tiLCBXTEFOX1BPUlQsIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTExMS1cdGlmIChlcnIgXHUwMDI2XHUwMDI2IHdjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz03MD1fX210NzZ4MDJ1X21jdV9zZW5kX21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTkwLVx0ICAgICAgIE1UX01DVV9NU0dfVFlQRV9DTUQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jOjkxOlx0cmV0ID0gbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHNrYiwgQ1BVX1RYX1BPUlQsIGluZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy05Mi1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NzQKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGNvZGUgZW50cnkgcG9pbnRzLCB0aGlua2luZyB0aHJvdWdoIHRoaXMgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgZXhhbWluaW5nIHRoZSBjb2RlOgoKKipBbmFseXppbmcgUG90ZW50aWFsIEVudHJ5IFBvaW50cyBmb3IgVHJhbnNtaXNzaW9uIFBhdGgqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCBhbmQgYF9fbXQ3NngwMnVfbWN1X3NlbmRfbXNnYCBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcyB0byBraWNrIHRoaW5ncyBvZmYuIFRoZXkmIzM5O3JlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciBleGFtaW5pbmcgdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzLCBnaXZlbiB0aGVpciBuYW1pbmcgY29udmVudGlvbi4gTm93LCBsZXQmIzM5O3MgYnJvYWRlbiB0aGUgc2NvcGUgYSBiaXQuIEkgc2hvdWxkIGFsc28gY2hlY2sgYG10NzY2M3VfbWN1X3NlbmRfbWVzc2FnZWAgYW5kIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCB0byBzZWUgaWYgdGhleSBhcmUgc2ltaWxhciBhbmQvb3Igb2ZmZXIgYW55IGFkZGl0aW9uYWwgaW5zaWdodHMgaW50byB0aGUgZGF0YSBmbG93LiBUaGlzIG1pZ2h0IGhlbHAgaWRlbnRpZnkgYW55IGRldmlhdGlvbnMgaW4gdGhlIGNoaXBzZXQmIzM5O3MgdHJhbnNtaXNzaW9uIHByb2NlZHVyZXMsIGRlcGVuZGluZyBvbiBob3cgaXQmIzM5O3MgaW50ZXJmYWNpbmcgKGUuZy4sIFVTQiB2cy4gU0RJTykuIEV4cGFuZGluZyB0aGUgc2VhcmNoIGFsd2F5cyBoZWxwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9NTQwPXZvaWQgbXQ3NjIyX3RyaWdnZXJfaGlmX2ludChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCBib29sIGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDItLyogdXNiICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDM6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTQ0LVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jPTc2PXN0YXRpYyBpbnQgbXQ3NjYzc19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy04MS1cdFx0LmRydl9mbGFncyA9IE1UX0RSVl9SWF9ETUFfSERSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjgyOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtODMtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTExMj1zdGF0aWMgaW50IG10NzY2M3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTExNy1cdFx0LmRydl9mbGFncyA9IE1UX0RSVl9SWF9ETUFfSERSIHwgTVRfRFJWX0hXX01HTVRfVFhRLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTE4Olx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTktXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM9MTc5PUVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE4MTppbnQgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE4Mi1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMjI0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MjI1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwMDcKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSB3ZXJlIHRoaW5raW5nIHRocm91Z2ggdGhlIHByb2JsZW06CgoqKkNoZWNraW5nIFRYIFByZXBhcmF0aW9uIGZvciBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIGlzIHVzZWQgaW4gYm90aCB0aGUgVVNCIChgbXQ3NjYzdV9wcm9iZWApIGFuZCBTRElPIChgbXQ3NjYzc19wcm9iZWApIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBUaGF0IG1ha2VzIGl0IGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgVVNCIGZ1enppbmcsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBHaXZlbiB0aGF0IGl0JiMzOTtzIGEgY29tbW9uIGZ1bmN0aW9uLCBpdCBpcyBwcm9iYWJseSBjYWxsZWQgZnJvbSBzb21lIGNlbnRyYWwgcG9pbnQgb2YgdGhlIFVTQiBkcml2ZXIuIEl0JiMzOTtzIHRpbWUgdG8gYnJhbmNoIG91dC4gTGV0JiMzOTtzIHNoaWZ0IG91ciBmb2N1cyB0byBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCB0byBjaGVjayBpZiBhIHNpbWlsYXIgcGF0dGVybiBleGlzdHMsIGFuZCBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgZGlmZmVyZW5jZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiB0aG9zZSAqc2tiKiBwcmVwYXJhdGlvbiByb3V0aW5lcy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2UgbGlrZWx5IGxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTc2ND1tdDc5MjFfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc3NjppbnQgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03NzctXHRcdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MjEtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODIyOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MjMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MzI2PWludCBtdDc5MjFfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oLTMyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oOjMyODppbnQgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMjktXHRcdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM9OTA9c3RhdGljIGludCBtdDc5MjFzX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTk4LVx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6OTk6XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0xMDAtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE1OS1cdFx0XHRcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTYwOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNjEtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjMwMAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBtdDc5MjEgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGBtdDc5MjFgIFVTQi9TRElPIGRyaXZlciBpcyBiZWluZyBpbml0aWFsaXplZC4gTXkgY3VycmVudCBsaW5lIG9mIHRoaW5raW5nIHJldm9sdmVzIGFyb3VuZCBob3cgdGhlIHRyYW5zbWl0IHBhdGggaXMgc2V0IHVwLiBJIHNlZSB0aGF0IHRoZSBmdW5jdGlvbiBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIHRoZSBgbXQ3OTIxdV9wcm9iZWAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdGhlIGtleSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgc28gSSYjMzk7bSBnZXR0aW5nIGEgc2Vuc2Ugb2Ygd2hlcmUgdGhpcyBmaXRzIGludG8gdGhlIG92ZXJhbGwgc2NoZW1lLgoKTm93LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIHJlbGF0ZWQgZnVuY3Rpb24gZm9yIHRoZSBgbXQ3OTI1YCBzZXJpZXMuIExldCBtZSBjb21wYXJlIHRoYXQgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIHNvIHRoYXQgSSBjYW4gc2VlIHRoZSBwb3RlbnRpYWwgc2ltaWxhcml0aWVzIGFuZCBkaWZmZXJlbmNlcyBpbiB0aGUgdHJhbnNtaXQgcHJlcGFyYXRpb24gbG9naWMgb2YgdGhlIHR3by4gVGhpcyBjb21wYXJpc29uIHNob3VsZCBwcm92aWRlIHNvbWUgdmFsdWFibGUgaW5zaWdodHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjE9bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMzppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjM0LVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY3Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjc4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM2OT1pbnQgbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNzE6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzcyLVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU5LVx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjA6XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2MS1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMzc4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIGNsZWFyIHRoZSBjaGFuZ2UgZnJvbSBgc2tiX3BhZGAgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAgaW4gYG10NzkyNXVfcHJvYmVgIGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IHNlZW1zIHRvIGJlIHByZXZlbnRpbmcgdGhlIGZyZWVpbmcgb2YgdGhlIFNLQiBvbiBlcnJvciwgd2hpY2ggY291bGQgaGF2ZSBpbXBsaWNhdGlvbnMgZG93biB0aGUgbGluZS4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGlzIGNoYW5nZSBsaWVzIHdpdGhpbiBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAsIGFuZCB0aGF0JiMzOTtzIGNhbGxlZCBpbiBzZXZlcmFsIG90aGVyIHBsYWNlcyBiZXNpZGVzIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uCgpJIHNlZSB0aGF0IGBtdDc2eDAydV9za2JfZG1hX2luZm9gLCBgbXQ3NjYzdV9tY3Vfc2VuZF9tZXNzYWdlYCwgYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBhbGwgY2FsbCB0aGF0IHNhbWUgYG10NzZfc2tiX2FkanVzdF9wYWRgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdywgYmVjYXVzZSB0aG9zZSBhcmUgYWxsIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmchIFRoaXMgY291bGQgY3JlYXRlIGEgYnJvYWRlciBhdHRhY2sgc3VyZmFjZSB0aGFuIGluaXRpYWxseSBhbnRpY2lwYXRlZC4KClRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcHBlYXIgdG8gYmUgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc2NjNVYCwgYE1UNzkyMVVgLCBgTVQ3OTI1VWAsIGFuZCBvZiBjb3Vyc2UgYE1UNzZfVVNCYC4gTm93LCBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlc2UgY29uZmlndXJhdGlvbnMgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcy4gV2UgbmVlZCB0byB0cmFjZSB0aGlzIGZ1cnRoZXIgdG8gc2VlIHdoYXQgZWxzZSBjb3VsZCBiZSBhZmZlY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzZ4MFUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnPTI9Y29uZmlnIE1UNzZ4MF9DT01NT05cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjY6Y29uZmlnIE1UNzZ4MFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MFUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDIwNAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBNVDc2eDBVIERlcGVuZGVuY2llcyoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBNVDc2eDBVLiBCZWZvcmUgSSBldmVuIGJlZ2luIHRvIGNvbnNpZGVyIHRoZSBtYWluIGZ1bmN0aW9uYWxpdHksIEkgbmVlZCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaXRzIGRlcGVuZGVuY2llcy4gSSYjMzk7bSB0aGlua2luZyBiZXlvbmQganVzdCB0aGUgb2J2aW91cyBkcml2ZXIgbW9kdWxlcy4gV2hlcmUgZG9lcyB0aGlzIGNoaXAgaW50ZXJmYWNlPyBBcmUgdGhlcmUgc3BlY2lmaWMga2VybmVsIHZlcnNpb25zIG9yIGZlYXR1cmVzIGl0IHJlbGllcyBvbj8gV2hhdCBhYm91dCBmaXJtd2FyZT8gQXJlIHRoZXJlIGFueSBoYXJkY29kZWQgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGhhcmR3YXJlIGVudmlyb25tZW50LCBsaWtlIHNwZWNpZmljIGNsb2NrIGZyZXF1ZW5jaWVzIG9yIG1lbW9yeSBtYXBwaW5nIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkPwoKTGV0JiMzOTtzIHNlZSwgd2hhdCB0b29scyBhcmUgYXZhaWxhYmxlIHRvIGhlbHAgaWRlbnRpZnkgdGhlc2UgZGVwZW5kZW5jaWVzPyBgbW9kaW5mb2AgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBvZiBjb3Vyc2UsIGJ1dCB0aGF0JiMzOTtsbCBvbmx5IGdpdmUgbWUgdGhlIGV4cGxpY2l0bHkgc3RhdGVkIG1vZHVsZSBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBkZWVwZXIuIENyb3NzLXJlZmVyZW5jaW5nIHRoZSBzb3VyY2UgY29kZSBmb3IgYW55IGBpbmNsdWRlYCBkaXJlY3RpdmVzIGFuZCBzeW1ib2wgdXNhZ2Ugd2l0aCBvdGhlciBtb2R1bGVzIGluIHRoZSBzeXN0ZW0gaXMgZXNzZW50aWFsLiBBbnl0aGluZyBub24tc3RhbmRhcmQ/IEFyZSB0aGVyZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyBsdXJraW5nIGluIGN1c3RvbSBidWlsZCBjb25maWd1cmF0aW9ucyBvciBwbGF0Zm9ybS1zcGVjaWZpYyBkZWZpbml0aW9ucz8KCkZ1cnRoZXJtb3JlLCBJIGhhdmUgdG8gY29uc2lkZXIgdGhlIHBvdGVudGlhbCBmb3IgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLiBBIHNlZW1pbmdseSBpbmRlcGVuZGVudCBtb2R1bGUgbWlnaHQgaW5kaXJlY3RseSBpbnRlcmFjdCB3aXRoIE1UNzZ4MFUgdGhyb3VnaCBzaGFyZWQgcmVzb3VyY2VzIG9yIEFQSXMuIFRoYXQgcmVxdWlyZXMgYSBicm9hZGVyIHN5c3RlbSB2aWV3LCBvciBwZXJoYXBzIGEgcnVudGltZSBhbmFseXNpcyB0byBpZGVudGlmeSBzdWNoIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gbWFwIG91dCB0aGUgY2FsbCBncmFwaCBhbmQgcmVzb3VyY2UgdXNhZ2UgdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLgoKVWx0aW1hdGVseSwgdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSBsYW5kc2NhcGUgaXMgY3JpdGljYWwuIE9ubHkgdGhlbiBjYW4gSSBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIG9yIGRlYnVnZ2luZyBzdGVwcyBJIG5lZWQgdG8gaW1wbGVtZW50LiBJdCB3aWxsIGFsc28gaGVscCBtZSBwcm9wZXJseSB0cm91Ymxlc2hvb3QgYW5kIHJlc29sdmUgYW55IGNvbXBhdGliaWxpdHkgaXNzdWVzLiBUaGlzIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMgaW4gZWl0aGVyIGludGVncmF0aW5nIG9yIGRlYnVnZ2luZyB0aGlzIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1UNzZ4MF9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3NngwMl9MSUJcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3NngwVVxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gICA4Olx0XHRzZWxlY3QgTVQ3NngwX0NPTU1PTlxuICAgOTpcdFx0c2VsZWN0IE1UNzZ4MDJfVVNCXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFVTQlxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjEwVS1iYXNlZCBVU0IgMi4wIHdpcmVsZXNzIGRvbmdsZXMsXG4gIDE0Olx0XHQgIHdoaWNoIGNvbXBseSB3aXRoIElFRUUgODAyLjExYWMgc3RhbmRhcmRzIGFuZCBzdXBwb3J0IDF4MVxuICAxNTpcdFx0ICA0MzNNYnBzIFBIWSByYXRlLlxuICAxNjpcdFxuICAxNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNVDc2eDBFXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDBFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTA2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYSBXaXJlbGVzcyBEZXZpY2UgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoaXMgd2lyZWxlc3MgZGV2aWNlLCBwcm9iYWJseSB0cnlpbmcgdG8gdHJvdWJsZXNob290IHNvbWV0aGluZyBvciBpbnRlZ3JhdGUgaXQgaW50byBhIG5ldyBzZXR1cC4gTXkgaW1tZWRpYXRlIGNvbmNlcm5zIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHM6IGBNQUM4MDIxMWAgYW5kIGBVU0JgLiBUaG9zZSBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyBJJiMzOTttIGV4cGVjdGluZyB0byBiZSBpbnZvbHZlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnJhbWV3b3JrIGlzIHByZXNlbnQsIGFuZCB0aGF0IHRoZSBVU0Igc3Vic3lzdGVtIGlzIGhhbmRsaW5nIHRoZSBkZXZpY2UgY29ycmVjdGx5LiAKCk5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMgYWJvdXQgdGhpcyBzcGVjaWZpYyBjaGlwc2V0OiBgTVQ3NngyVWAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGRpZyBpbiBhbmQgc2VlIGlmIHRoZSBkcml2ZXIgaXMgbG9hZGVkLCBpZiBpdCYjMzk7cyBiZWhhdmluZyBhcyBleHBlY3RlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkga25vd24gaXNzdWVzIHdpdGggaXQuIFRoaXMgaXMgdGhlIGNydWNpYWwgc3RlcCB0byBwaW5wb2ludGluZyB0aGUgcHJvYmxlbSBhbmQgd2hlcmUgdGhlIHJlYWwgaW52ZXN0aWdhdGlvbiBiZWdpbnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBtb2R1bGVzLCB0aGUgZGV2aWNlIHRyZWUgKGlmIGFwcGxpY2FibGUpLCBhbmQgYW55IHJlbGV2YW50IGRvY3VtZW50YXRpb24gZm9yIHRoaXMgcGFydGljdWxhciBkZXZpY2UuIEVzc2VudGlhbGx5LCBJJiMzOTttIHNldHRpbmcgdGhlIHN0YWdlIGZvciBzb21lIGluLWRlcHRoIGRlYnVnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzZ4Ml9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3NngwMl9MSUJcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3NngyRVxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngyRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuICAgODpcdFx0c2VsZWN0IE1UNzZ4Ml9DT01NT05cbiAgIDk6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTA6XHRcdGRlcGVuZHMgb24gUENJXG4gIDExOlx0XHRoZWxwXG4gIDEyOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2MTIvTVQ3NjAyL01UNzY2Mi1iYXNlZCBQQ0llIHdpcmVsZXNzXG4gIDEzOlx0XHQgIGRldmljZXMsIHdoaWNoIGNvbXBseSB3aXRoIElFRUUgODAyLjExYWMgc3RhbmRhcmRzIGFuZCBzdXBwb3J0XG4gIDE0Olx0XHQgIDJTUyB0byA4NjZNYml0L3MgUEhZIHJhdGUuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIE1UNzZ4MlVcbiAgMTk6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MlUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMDpcdFx0c2VsZWN0IE1UNzZ4Ml9DT01NT05cbiAgMjE6XHRcdHNlbGVjdCBNVDc2eDAyX1VTQlxuICAyMjpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAyMzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMlUtYmFzZWQgVVNCIDMuMCB3aXJlbGVzcyBkb25nbGVzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU3OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3NpbmcgYXMgYW4gZXhwZXJ0IGluIG15IGZpZWxkOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIFdpcmVsZXNzIERyaXZlciBMYW5kc2NhcGUqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIHNpdHVhdGlvbi4gRmlyc3QsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IGRlcGVuZGVuY2llcy4gUmlnaHQgYXdheSwgYE1BQzgwMjExYCBpcyBqdW1waW5nIG91dCBhdCBtZSBhcyBhIGNydWNpYWwgY29tcG9uZW50LiBUaGlzIGlzIHRoZSBjb3JlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3RhY2ssIHNvIGFueXRoaW5nIGludm9sdmluZyB3aXJlbGVzcyB3aWxsIGRlZmluaXRlbHkgcmVseSBvbiBpdC4gQW5kIGdpdmVuIHRoZSAmIzM0O1UmIzM0OyBkZXNpZ25hdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSBjaGlwc2V0IG5hbWUgSSYjMzk7bSBhbHNvIHN1c3BlY3Rpbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgVVNCIGJhc2VkLCBzbyBgVVNCYCBpcyBhbHNvIGluIHRoZSBtaXguIE5vdyB0aGF0IEkgaGF2ZSBteSBjb3JlIGRlcGVuZGVuY2llcyBpZGVudGlmaWVkLCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3M6IEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIGBNVDc2NjNVYCBjaGlwc2V0LiBUaW1lIHRvIGRpdmUgaW50byB3aGF0IHRoYXQgZW50YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdFx0ICAyLjQgR0h6IG9ubHkuXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XHRzZWxlY3QgTVQ3NjE1X0NPTU1PTlxuICAzNTpcdFxuICAzNjpcdGNvbmZpZyBNVDc2NjNVXG4gIDM3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2NjNVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMzg6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAzOTpcdFx0c2VsZWN0IE1UNzY2M19VU0JfU0RJT19DT01NT05cbiAgNDA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgNDE6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDQyOlx0XHRoZWxwXG4gIDQzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2NjNVIDgwMi4xMWFjIDJ4MjoyIHdpcmVsZXNzIGRldmljZXMuXG4gIDQ0Olx0XG4gIDQ1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDQ2Olx0XG4gIDQ3Olx0Y29uZmlnIE1UNzY2M1NcbiAgNDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzY2M1MgKFNESU8pIHN1cHBvcnRcJiMzNDtcbiAgNDk6XHRcdHNlbGVjdCBNVDc2X1NESU9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxMzEKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIE1UNzkyMVUgYW5kIGl0cyBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBNVDc5MjFVYOKApiBMZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBJIGFscmVhZHkga25vdyB0aGF0IEkgbmVlZCB0byBjb25zaWRlciBgTUFDODAyMTFgLCB0aGF0JiMzOTtzIGEgZ2l2ZW4gZm9yIGFueSB3aXJlbGVzcyBjaGlwc2V0LCBhbmQgYWxzbyB0aGF0IGl0IHdpbGwgbGlrZWx5IHJlbHkgb24gYFVTQmAgZm9yIGNvbW11bmljYXRpb24uIFRob3NlIHR3byBhcmUgZnVuZGFtZW50YWwuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhlIGBNVDc5MjFVYCBpdHNlbGYuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgdGhlIHNwZWNpZmljIGRyaXZlciB2ZXJzaW9uIGNvbXBhdGliaWxpdHksIGFueSBrbm93biBmaXJtd2FyZSBpc3N1ZXMsIGFuZCBwZXJmb3JtYW5jZSBiZW5jaG1hcmtzIGluIGNvbXBhcmlzb24gdG8gc2ltaWxhciBjaGlwc2V0cy4gSSBhbHNvIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIGBNQUM4MDIxMWAgZnJhbWV3b3JrIHZlcnNpb24gSSYjMzk7bSB0YXJnZXRpbmcgc3VwcG9ydHMgdGhpcyBwYXJ0aWN1bGFyIGRldmljZS4gSXMgdGhlcmUgYW55dGhpbmcgdW51c3VhbCBhYm91dCB0aGUgVVNCIGltcGxlbWVudGF0aW9uIG9yIHBvd2VyIG1hbmFnZW1lbnQgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgcmVwb3J0ZWQgcXVpcmtzIG9yIHdvcmthcm91bmRzIEkgc2hvdWxkIGludmVzdGlnYXRlPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgcXVpY2sgc2VhcmNoIG9mIHRoZSBtYWlsaW5nIGxpc3RzIGFuZCBidWcgdHJhY2tlcnMgcmVsYXRlZCB0byB0aG9zZSBjb21wb25lbnRzIHRvIHNlZSBpZiBhbnl0aGluZyBqdW1wcyBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDIxOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDIyOlx0XHRkZXBlbmRzIG9uIE1NQ1xuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxUyA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDI1Olx0XG4gIDI2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE1UNzkyMVVcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAzMDpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMzE6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDMyOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDMzOlx0XHRkZXBlbmRzIG9uIFVTQlxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDM2Olx0XG4gIDM3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NzI5CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gTVQ3OTI1VSoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgbmV3IHByb2plY3QsIGFuZCBpbW1lZGlhdGVseSwgdGhlIHVzdWFsIHN1c3BlY3RzIHBvcCBpbnRvIG1pbmQ6IGRlcGVuZGVuY2llcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBzdXJlIG15IGBNQUM4MDIxMWAgZHJpdmVyIGlzIHBsYXlpbmcgbmljZSwgYW5kIHRoYXQgdGhlIGBVU0JgIGludGVyZmFjZSBpcyByb2NrIHNvbGlkLiBUaGF0JiMzOTtzIGFsd2F5cyBteSBzdGFydGluZyBwb2ludCAtIEkgKm5lZWQqIHRvIGJlIGNvbmZpZGVudCBpbiB0aG9zZSBmb3VuZGF0aW9uYWwgbGF5ZXJzLiBJIGNhbiYjMzk7dCBzdGFydCBvcHRpbWl6aW5nIG9yIGV2ZW4gcmVhbGx5IGRlYnVnZ2luZyB1bnRpbCBJIGhhdmUgdGhvc2UgcGllY2VzIHNxdWFyZWQgYXdheS4KCkFuZCB0aGVuIHRoZSByZWFsIHRhcmdldDogYE1UNzkyNVVgLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIHNwZWNpZmljcyBvZiAqdGhhdCogZGV2aWNlLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGF0IG9uZSBmaXRzIGludG8gZXZlcnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxNTpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIE1UNzkyNVVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMjI6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDI0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxuICAyNzpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMjg6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzI2NwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1UNzYgVVNCIERyaXZlciBNb2R1bGVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBNVDc2IFVTQiBkcml2ZXIgbW9kdWxlcy4gVGhlIGNvcmUgZGVwZW5kZW5jaWVzLCBhcyBJIHNlZSBpdCwgYXJlIG9uIGBNQUM4MDIxMWAgYW5kIHRoZSBgVVNCYCBzdWJzeXN0ZW0sIGFzIGV4cGVjdGVkLgoKUmlnaHQsIHNvIHRvIGdldCB0aGlzIHRoaW5nIGVuYWJsZWQsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZvbGxvd2luZyBjb25maWdzIGFyZSBzZXQ6IGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gVGhhdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLgoKTm93LCBmb3IgdGhlIHJlYWxseSBpbnRlcmVzdGluZyBiaXRzIOKAkyB0aGUgdHJhbnNtaXNzaW9uIChUWCkgcHJlcGFyYXRpb24gZnVuY3Rpb25zLiBMb29rcyBsaWtlIEkgc2hvdWxkIGZvY3VzIG9uIGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAsIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYW5kIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLiBUaGVzZSBhcmUgcHJvYmFibHkgdGhlIGtleSBhcmVhcyB3aGVyZSB0aGUgZGF0YSBwYWNrZXRzIGdldCBwcmVwcGVkIGZvciB0aGUgVVNCIGJ1cy4KCkhvbGQgb24gYSBzZWMuLi4gYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCBpcyB1c2VkIHdpdGhpbiBgbXQ3NngwMl91c2JfY29yZS5jYC4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgdGhpcyBmdW5jdGlvbiBpc24mIzM5O3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AgaW5zaWRlIHRoYXQgZmlsZS4gVGhhdCB3b3VsZCBoYXZlIGltcGxpY2F0aW9ucyBmb3IgaXRzIGV4dGVybmFsIHVzZS4gSSBzaG91bGQgY2hlY2sgdGhhdCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGxpbmtpbmcgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2eDAydV90eF9wcmVwYXJlX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTIxMz1zdGF0aWMgaW50IG10NzZ4MHVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyMS1cdFx0LnNldF9jaGFubmVsID0gbXQ3NngwX3NldF9jaGFubmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjIyOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2eDAydV90eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyMy1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZ4MDJ1X3R4X2NvbXBsZXRlX3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmg9MTc9aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaDoxODppbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYi5oLTE5LVx0XHRcdCAgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYz00Nj1pbnQgbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGludCBwb3J0LCB1MzIgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzo2NDppbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjUtXHRcdFx0ICAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTExNi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzoxMTc6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMnVfdHhfcHJlcGFyZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtMTE4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jPTMyPXN0YXRpYyBpbnQgbXQ3NngydV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy00MC1cdFx0LnNldF9jaGFubmVsID0gbXQ3NngydV9zZXRfY2hhbm5lbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jOjQxOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2eDAydV90eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQyLVx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3NngwMnVfdHhfY29tcGxldGVfc2tiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc1MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBNVDc2IERyaXZlciBDb2RlKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXI6IGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgZXhwb3J0ZWQuIEkgc2VlIGl0IGJlaW5nIHVzZWQgZGlyZWN0bHkgd2l0aGluIHRoZSBgbXQ3NngwdV9wcm9iZWAgYW5kIGBtdDc2eDJ1X3Byb2JlYCByb3V0aW5lcyDigJMgd2hpY2ggYXJlLCBvZiBjb3Vyc2UsIHRoZSBwcm9iZSBmdW5jdGlvbnMgZm9yIHRoZSBkZXZpY2VzLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHRob3NlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemluZyB0aGUgaGFyZHdhcmUuIFRoZXnigJlkIGNlcnRhaW5seSBuZWVkIHRvIHByZXBhcmUgdGhlIFNLQiBmb3IgdHJhbnNtaXNzaW9uLCBzZXR0aW5nIHVwIHRoZSBuZWNlc3NhcnkgZGF0YSBzdHJ1Y3R1cmVzIGZvciB0cmFuc21pc3Npb24uCgpGdXJ0aGVyLCB0aGUgZGVwZW5kZW5jeSBjaGFpbiBjb250aW51ZXM7IGBtdDc2X3NrYl9hZGp1c3RfcGFkYCBpcyBjYWxsZWQgZnJvbSBgbXQ3NngwMnVfc2tiX2RtYV9pbmZvYC4gTm93LCBgbXQ3NngwMnVfc2tiX2RtYV9pbmZvYCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGBfX210NzZ4MDJ1X21jdV9zZW5kX21zZ2AuIFRoaXMgbWVhbnMgd2UmIzM5O3ZlIGdvdCBhIHNlcXVlbmNlOiB0aGUgU0tCIHByZXBhcmF0aW9uLCB0aGVuIHRoZSBETUEgaW5mb3JtYXRpb24gc2V0dXAsIGFuZCBmaW5hbGx5IHRoZSBhY3R1YWwgc2VuZGluZyBvZiB0aGUgbWVzc2FnZSB0byB0aGUgTUNVLiBUaGVzZSBmdW5jdGlvbnMgYWxsIHdvcmsgdG9nZXRoZXIgdG8gdHJhbnNtaXQgdGhlIGRhdGEuIE1ha2VzIGNvbXBsZXRlIHNlbnNlIHRvIG1lLiBUaGUgZnVuY3Rpb24gbmFtZXMgYXJlIHByZXR0eSBzZWxmLWV4cGxhbmF0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX210NzZ4MDJ1X21jdV9zZW5kX21zZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9Njk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzo3MDpfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtNzEtXHRcdFx0aW50IGNtZCwgYm9vbCB3YWl0X3Jlc3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz0xMTA9bXQ3NngwMnVfbWN1X3NlbmRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTIwLVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlbWN1Lm11dGV4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTIxOlx0ZXJyID0gX19tdDc2eDAydV9tY3Vfc2VuZF9tc2coZGV2LCBza2IsIGNtZCwgd2FpdF9yZXNwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTIyLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtY3UubXV0ZXgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MTMzPW10NzZ4MDJ1X21jdV93cl9ycChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGJhc2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xNTYtXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VtY3UubXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzoxNTc6XHRyZXQgPSBfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhkZXYsIHNrYiwgQ01EX1JBTkRPTV9XUklURSwgY250ID09IG4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xNTgtXHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZW1jdS5tdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz0xNjY9bXQ3NngwMnVfbWN1X3JkX3JwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYmFzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTk4Olx0cmV0ID0gX19tdDc2eDAydV9tY3Vfc2VuZF9tc2coZGV2LCBza2IsIENNRF9SQU5ET01fUkVBRCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE5OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5NTQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlOgoKKipJbnZlc3RpZ2F0aW5nIGBtdDc2eDAydV9tY3Vfc2VuZF9tc2dgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc2eDAydV9tY3Vfc2VuZF9tc2dgIGZ1bmN0aW9uLiAgVGhlIHF1ZXN0aW9uIGlzLCBpcyBpdCBleHBvcnRlZD8gIEkgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyB2aXNpYmlsaXR5LiBUaGlzIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciB0aGlzIGZ1bmN0aW9uIGlzIG1lYW50IGZvciBpbnRlcm5hbCB1c2Ugb25seSB3aXRoaW4gdGhlIG1vZHVsZSwgb3IgaWYgaXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCBvciBwb3RlbnRpYWxseSBmcm9tIHVzZXIgc3BhY2UgKHRob3VnaCB0aGF0JiMzOTtzIGxlc3MgbGlrZWx5IGluIHRoaXMgY29udGV4dCkuICBLbm93aW5nIGlmIGl0JiMzOTtzIGV4cG9ydGVkIHdpbGwgZGljdGF0ZSBob3cgaXQgbmVlZHMgdG8gYmUgdHJlYXRlZCBnb2luZyBmb3J3YXJkIGluIG15IGFuYWx5c2lzLiBJdCYjMzk7bGwgZGVmaW5pdGVseSBpbmZsdWVuY2UgbXkgYXNzdW1wdGlvbnMgYWJvdXQgc3RhYmlsaXR5LCBBUEkgZ3VhcmFudGVlcywgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIGFueSBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBzeXN0ZW1zLiBUaW1lIHRvIGNoZWNrIHRoZSBzeW1ib2wgdGFibGUgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZ4MDJ1X21jdV9zZW5kX21zZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9Njk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzo3MDpfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtNzEtXHRcdFx0aW50IGNtZCwgYm9vbCB3YWl0X3Jlc3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz0xMDk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzoxMTA6bXQ3NngwMnVfbWN1X3NlbmRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xMTEtXHRcdCAgICAgIGludCBsZW4sIGJvb2wgd2FpdF9yZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTIwLVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlbWN1Lm11dGV4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTIxOlx0ZXJyID0gX19tdDc2eDAydV9tY3Vfc2VuZF9tc2coZGV2LCBza2IsIGNtZCwgd2FpdF9yZXNwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTIyLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtY3UubXV0ZXgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MTMzPW10NzZ4MDJ1X21jdV93cl9ycChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGJhc2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xNTYtXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VtY3UubXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzoxNTc6XHRyZXQgPSBfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhkZXYsIHNrYiwgQ01EX1JBTkRPTV9XUklURSwgY250ID09IG4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xNTgtXHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZW1jdS5tdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz0xNjY9bXQ3NngwMnVfbWN1X3JkX3JwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYmFzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTk4Olx0cmV0ID0gX19tdDc2eDAydV9tY3Vfc2VuZF9tc2coZGV2LCBza2IsIENNRF9SQU5ET01fUkVBRCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jPTI4MD12b2lkIG10NzZ4MDJ1X2luaXRfbWN1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMjg0LVx0XHQudGFpbHJvb20gPSA4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzoyODU6XHRcdC5tY3Vfc2VuZF9tc2cgPSBtdDc2eDAydV9tY3Vfc2VuZF9tc2csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTI4Ni1cdFx0Lm1jdV9wYXJzZV9yZXNwb25zZSA9IG10NzZ4MDJfbWN1X3BhcnNlX3Jlc3BvbnNlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTI3OAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDE4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBNVDc2eDAydSBNQ1UgSW5pdGlhbGl6YXRpb24gYW5kIFRYIFBhdGgqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBtdDc2eDAydV9pbml0X21jdWAgYXNzaWducyB0aGUgYC5tY3Vfc2VuZF9tc2dgIGZ1bmN0aW9uIHBvaW50ZXIgdG8gYG10NzZ4MDJ1X21jdV9zZW5kX21zZ2AuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgaW5pdGlhbGl6YXRpb24sIGVuc3VyaW5nIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgTUNVLiBJIGFscmVhZHkga25ldyB0aGF0LCBidXQgaXQmIzM5O3MgZ29vZCB0byBjb25maXJtLiBJdOKAmXMgdHJpZ2dlcmVkIGVpdGhlciBieSB0aGUgbWFjODAyMTEgc3RhY2sgZGlyZWN0bHksIG9yIHBlcmhhcHMgdGhlIG10NzYgY29yZSBjb2RlIC0gdGhhdOKAmXMgdGhlIGZpcnN0IHF1ZXN0aW9uIHRvIGJlIGFuc3dlcmVkLgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0OiB0aGUgZW50cnkgcG9pbnRzLiBXZSBoYXZlIGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAsIGFuZCBhIGNvdXBsZSBvZiB0aG9zZSBVU0IvU0RJTyBzcGVjaWZpYyB2YXJpYW50cyBmb3IgZGlmZmVyZW50IGNoaXBzZXRzIOKAkyBgbXQ3NjYzYCwgYG10NzkyMWAsIGFuZCBgbXQ3OTI1YC4gQnV0IHdoYXQgY2F0Y2hlcyBteSBleWUgaXMgYG10NzZfc2tiX2FkanVzdF9wYWRgIC0gdGhhdCYjMzk7cyBhIHV0aWxpdHkgZnVuY3Rpb24gdG8gaGFuZGxlIHBhZGRpbmcgd2l0aGluIHRoZSBTS0IgKFNvY2tldCBCdWZmZXIpLiBJdCYjMzk7cyBhbHNvIGV4cG9ydGVkLCBtZWFuaW5nIGl0JiMzOTtzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIG90aGVyIG1vZHVsZXMuIFRoaXMgaW1wbGllcyBpdCYjMzk7cyBhIGNvbW1vbiBmdW5jdGlvbiwgcHJvYmFibHkgdXNlZCBieSBtdWx0aXBsZSBkcml2ZXJzLCB3aGljaCBJIGZpZ3VyZWQsIGJ1dCBJJiMzOTtsbCBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgdGhlIHNvdXJjZS4gSSYjMzk7bGwgbWFrZSBhIHF1aWNrIHNlYXJjaCB0byBlbnN1cmUgdGhhdCYjMzk7cyBpbmRlZWQgdGhlIGNhc2UuIExldCYjMzk7cyBzZWUgaWYgdGhhdCYjMzk7cyB0cnVseSBleHBvcnRlZC4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIHRvIG15c2VsZiB0byBjaGVjayB0aGUgY2FsbGluZyBjb250ZXh0cyBvZiB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MX0dQTFxcKG10NzZfc2tiX2FkanVzdF9wYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9ODY2PWludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg4OC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODg5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfc2tiX2FkanVzdF9wYWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg5MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5OTUKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAzMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgRm9jdXMgU3ltYm9scyBhbmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7dmUgcGlucG9pbnRlZCBhIHZhbHVhYmxlIGZvY3VzIHN5bWJvbDogYG10NzZfc2tiX2FkanVzdF9wYWRgLiBUaGF0JiMzOTtzIGRlZmluaXRlbHkgZ29pbmcgb24gdGhlIGxpc3QuIEFuZCwgb2YgY291cnNlLCB0aGUgYXNzb2NpYXRlZCBgdHhfcHJlcGFyZV9za2JgIGZhbWlseSBvZiBmdW5jdGlvbnMgYXJlIGNydWNpYWwgdG8gaW5jbHVkZS4gTm93LCBsZXQmIzM5O3MgZXhwYW5kIHRoaXMgdG8gZW5jb21wYXNzIG90aGVyIHJlbGV2YW50IFVTQi1zcGVjaWZpYyBwcmVwYXJlIGZ1bmN0aW9ucywgc28gSSYjMzk7bGwgYWRkIGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAsIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYW5kIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLgoKTm93LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBsb29rIGF0IHRoZSBiaWdnZXIgcGljdHVyZSB3aXRoIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnM6IEkgc2VlIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYE1UNzkyNVVgLCBhbmQgdGhlIGdlbmVyYWwgYE1UNzZfVVNCYC4gQWhhISBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgYE1UNzZfVVNCYCBpcyBjb3JyZWN0bHkgYWNjb3VudGVkIGZvciwgZXZlbiBpZiBpdCYjMzk7cyBpbXBsaWNpdGx5IHNlbGVjdGVkIGJ5IHRoZSBtb3JlIHNwZWNpZmljIGRyaXZlciBjaG9pY2VzIGxpa2UgYE1UNzY2M1VgIGFuZCBvdGhlcnMuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4KCk9rYXksIGNoZWNraW5nIGZvciBkZXBlbmRlbmNpZXMsIEkga25vdyBJIG5lZWQgYE1BQzgwMjExYCBhbmQgYFVTQmAuIEFuZCBsZXQmIzM5O3Mgbm90IGZvcmdldCBgTU1DYCDigJMgdGhvdWdoIEkgdGhpbmsgdGhhdCYjMzk7cyBvbmx5IGZvciB0aGUgU0RJTyB2YXJpYW50IG9mIGBNVDc5MjFgLCB3aGljaCBpcyBub3Qgd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aC4gSnVzdCB0byBiZSBzdXJlLCBJJiMzOTtsbCBkb3VibGUgY2hlY2sgdGhlIHNwZWNpZmljIGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyMVVgLiBJdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyODpcdGNvbmZpZyBNVDc5MjFVXG4gIDI5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMzA6XHRcdHNlbGVjdCBNVDc5MnhfVVNCXG4gIDMxOlx0XHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxuICAzMjpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAzMzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxuICAzNjpcdFxuICAzNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg5NQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkRlcGVuZGVuY2llcyBEZWVwIERpdmU6IEEgUXVpY2sgQ2hlY2sqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGRlcGVuZGVuY2llcy4gRnJvbSB3aGF0IEkgcmVjYWxsLCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBhdCBsZWFzdCBpbml0aWFsbHkuIE15IG1pbmQgaW1tZWRpYXRlbHkgZ29lcyB0byBgTUFDODAyMTFgIGFuZCB0aGUgYFVTQmAgc3RhY2suIFRob3NlIGFyZSB0aGUgYmlnIHBsYXllcnMsIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgdGhhdCBldmVyeXRoaW5nIGVsc2UsIGF0IGxlYXN0IGluIHRoaXMgY29udGV4dCwgbGVhbnMgb24uCgpCdXQgSSBuZWVkIHRvIGJlIHN1cmUuIExldCYjMzk7cyBkaWcgYSBiaXQgZGVlcGVyLiBTcGVjaWZpY2FsbHksIGxldCYjMzk7cyB0dXJuIG91ciBhdHRlbnRpb24gdG8gdGhlIGBNVDc5MjVVYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBhbmQgd2hlcmUgdGhlIG51YW5jZXMgYXJlLiBJIG5lZWQgdG8gZ2V0IGEgZmlybSBncmFzcCBvbiB0aGUgaW50cmljYWNpZXMgb2YgKml0cyogZGVwZW5kZW5jaWVzLCBhbnkgb3RoZXIgbGlicmFyaWVzLCBkcml2ZXJzLCBvciBmaXJtd2FyZSBjb21wb25lbnRzIHRoYXQgaXQgcmVsaWVzIG9uLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBpbnZlc3RpZ2F0aW9uIGZvciBtZSBhdCB0aGUgbW9tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE5Olx0Y29uZmlnIE1UNzkyNVVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMjI6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDI0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxuICAyNzpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMjg6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM1MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbmNlcm5zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgZGVwZW5kZW5jaWVzIGhlcmUuIEFzIGZhciBhcyBJIGNhbiBzZWUsIHRoaXMgd2hvbGUgdGhpbmcgYm9pbHMgZG93biB0byBgTUFDODAyMTFgIGFuZCBgVVNCYC4gRXZlcnl0aGluZyBlbHNlLCBsaWtlIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYCwgdGhleSYjMzk7cmUgdGhlIHRhcmdldHMsIHJpZ2h0PyBUaGVzZSBhcmUgdGhlIGFjdHVhbCBkcml2ZXJzIG9yIGRldmljZXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gVGhlIGJhc2UgY29uZmlnIGluY2x1ZGVzIGBNQUM4MDIxMWAgYW5kIGBVU0JgIHdoaWNoIHByb3ZpZGVzIHN1cHBvcnQgdG8gYSBsb3Qgb2YgdGhlIG90aGVyIGRyaXZlcnMuCgpIYW5nIG9uIGEgbWludXRlLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBgTVQ3NngwVWAgYW5kIGBNVDc2eDJVYCBleHBsaWNpdGx5IHJlcXVpcmUgYE1BQzgwMjExYCBhbmQgYFVTQmAsIHJpZ2h0PyBJJiMzOTtkIGhhdmUgdG8gY2hlY2sgdGhlIGNvZGUgYnV0IHRoYXQgc2VlbXMgY29ycmVjdC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJIGRpZG4mIzM5O3QgbWlzcyBhbnl0aGluZy4gQmVmb3JlIEkgbW92ZSBvbiwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNVDc2X0NPUkVgIOKAkyBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IG90aGVyIGNydWNpYWwgY29tcG9uZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgTVQ3Nl9DT1JFXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBNVDc2X0xFRFNcbiAgIDc6XHRcdGJvb2xcbiAgIDg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gICA5Olx0XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBNVDc2X0NPUkU9TEVEU19DTEFTU1xuICAxMDpcdFx0ZGVmYXVsdCB5XG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE1UNzZfVVNCXG4gIDEzOlx0XHR0cmlzdGF0ZVxuICAxNDpcdFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcbiAgMTU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM5NTAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIE1UNzYgRHJpdmVyIERlcGVuZGVuY3kgQ2hhaW4qKgoKT2theSwgc28gdGhlIGRyaXZlcnMgYXJlIGhhbmRsaW5nIHRoZSBgTVQ3Nl9DT1JFYCBzZWxlY3Rpb24uIEhtbSwgd2FpdCBhIHNlY29uZC4uLiBsb29raW5nIGNsb3NlciBhdCBgTVQ3NngwVWAsIEkgZG9uJiMzOTt0IHNlZSBgTVQ3Nl9DT1JFYCBiZWluZyBkaXJlY3RseSBjaG9zZW4uIFRoYXQmIzM5O3MgcGVjdWxpYXIuIExldCYjMzk7cyB0cmFjZSBpdCBiYWNrLiBBaCwgKnJpZ2h0KiAtIGl0JiMzOTtzIGxpa2VseSB0aGF0IGBNVDc2eDBfQ09NTU9OYCBkb2VzIHRoZSBoZWF2eSBsaWZ0aW5nLCBzaW5jZSBpdCBzZWxlY3RzIGBNVDc2eDAyX0xJQmAuIEFuZCAqdGhhdCogbGlicmFyeSAqbWlnaHQqIGJlIHRoZSBrZXkgdG8gcHVsbGluZyBpbiBgTVQ3Nl9DT1JFYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBzdXNwaWNpb24uIExldCYjMzk7cyBkaXZlIGludG8gYE1UNzZ4MDJfTElCYCBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE2Olx0Y29uZmlnIE1UNzZfU0RJT1xuICAxNzpcdFx0dHJpc3RhdGVcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1UNzZ4MDJfTElCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFx0c2VsZWN0IE1UNzZfQ09SRVxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNVDc2eDAyX1VTQlxuICAyNTpcdFx0dHJpc3RhdGVcbiAgMjY6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcbiAgMjk6XHRcdHRyaXN0YXRlXG4gIDMwOlx0XHRzZWxlY3QgTVQ3Nl9DT1JFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDEwCgkJCQkJCQlvdXRwdXQ6IDI1MwoJCQkJCQkJdGhvdWdodHM6IDg1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTVQ3NiBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgTWVkaWFUZWsgTVQ3NiBkcml2ZXIgcGF0Y2guIFRoZSBjb3JlIG9mIGl0IHJldm9sdmVzIGFyb3VuZCBhIGNoYW5nZSBpbiBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIHJlcGxhY2VzIGBza2JfcGFkKClgIHdpdGggYF9fc2tiX3BhZCguLi4sIGZhbHNlKWAuIFRoaXMgaXMga2V5OyBpdCBwcmV2ZW50cyB0aGUgYHNrYmAgKHNvY2tldCBidWZmZXIpIGZyb20gYmVpbmcgZnJlZWQgd2l0aGluIGBtdDc2X3NrYl9hZGp1c3RfcGFkYCB3aGVuIGFuIGVycm9yIG9jY3Vycy4gSSBzZWUgdGhhdCBgTVQ3NngwMl9MSUJgIHNlbGVjdHMgYE1UNzZfQ09SRWAsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KClRoaXMgbW9kaWZpY2F0aW9uIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LiBFc3NlbnRpYWxseSwgaXQgYWx0ZXJzIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZXJyb3JzIGR1cmluZyBgc2tiYCBwYWRkaW5nLCBwb3RlbnRpYWxseSBhdm9pZGluZyBkb3VibGUtZnJlZXMgb3IgbWVtb3J5IGxlYWtzLiBQcmV2aW91c2x5LCBpZiBgc2tiX3BhZGAgZnJlZWQgdGhlIGBza2JgIGFuZCBhbiBlcnJvciBwcm9wYWdhdGVkIHVwIHRoZSBjYWxsIGNoYWluIChsaWtlIHRocm91Z2ggYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCksIHRoZXJlJiMzOTtzIGEgcmlzayBvZiB0aGUgY2FsbGVyIGFsc28gYXR0ZW1wdGluZyB0byBmcmVlIHRoZSBidWZmZXIsIGxlYWRpbmcgdG8gYSBkb3VibGUgZnJlZS4gQ29udmVyc2VseSwgaWYgdGhlIGNhbGxlciAqZGlkbiYjMzk7dCogZnJlZSB0aGUgYnVmZmVyLCB0aGVyZSYjMzk7cyBhIG1lbW9yeSBsZWFrLiBOb3csIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZnJlZWluZyB0aGUgYHNrYmAgbGllcyB3aXRoIHRoZSBjYWxsZXIuCgpHaXZlbiB0aGUgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaW1wbGljYXRpb25zLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byBmdXp6IHRob3JvdWdobHkuIEJhc2VkIG9uIHRoZSBjb2RlLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYG10NzZfc2tiX2FkanVzdF9wYWRgLCBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYC4gVGhlc2UgZnVuY3Rpb25zIHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIG9yIHJlbGF0ZWQgZnVuY3Rpb25zIGluIHRoZSBjYWxsIGNoYWluLgoKVG8gZW5hYmxlIHRoZSBjb3JyZWN0IGVudmlyb25tZW50IGZvciBmdXp6aW5nLCBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwgbmVlZCBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzY2M1VgLCBgTVQ3OTIxVWAsIGFuZCBgTVQ3OTI1VWAgdG8gY292ZXIgdGhlIHJlbGV2YW50IGRyaXZlciBmYW1pbGllcy4gSSYjMzk7bGwgYWxzbyBhZGQgYE1BQzgwMjExYCBhbmQgYFVTQmAsIGV2ZW4gdGhvdWdoIHRoZXNlIGFyZSB1c3VhbGx5IGVuYWJsZWQsIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNvdmVyZWQuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBjaGFuZ2UgaW1wYWN0cyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdGhlIGZvY3VzIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGludGVyZmFjZSBvZiB0aGVzZSBNZWRpYVRlayBkcml2ZXJzLCBtYWtpbmcgVVNCIGZ1enppbmcgYSByZWxldmFudCBhbmQgdXNlZnVsIHRlY2huaXF1ZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzY2M1UmIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZfc2tiX2FkanVzdF9wYWQmIzM0OywKICAgICYjMzQ7bXQ3NngwMnVfdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBza2JfcGFkIHRvIF9fc2tiX3BhZCguLi4sIGZhbHNlKSBpbiBtdDc2X3NrYl9hZGp1c3RfcGFkLCBwcmV2ZW50aW5nIHRoZSBza2IgZnJvbSBiZWluZyBmcmVlZCBvbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBtZW1vcnkgbWFuYWdlbWVudCAoYXZvaWRpbmcgZG91YmxlLWZyZWUgb3IgbWVtb3J5IGxlYWtzKS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdmFyaW91cyBNZWRpYVRlayBtdDc2IHdpcmVsZXNzIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc2NjNVJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X3NrYl9hZGp1c3RfcGFkJiMzNDssCiAgICAmIzM0O210NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgc2tiX3BhZCB0byBfX3NrYl9wYWQoLi4uLCBmYWxzZSkgaW4gbXQ3Nl9za2JfYWRqdXN0X3BhZCwgcHJldmVudGluZyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgbWVtb3J5IG1hbmFnZW1lbnQgKGF2b2lkaW5nIGRvdWJsZS1mcmVlIG9yIG1lbW9yeSBsZWFrcykuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHZhcmlvdXMgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBza2JfcGFkKGxhc3QsIHBhZClgIHdpdGggYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAuIFRoZSBgc2tiX3BhZCgpYCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIGBfX3NrYl9wYWQoKWAgdGhhdCBwYXNzZXMgYHRydWVgIGZvciB0aGUgYGZyZWVfb25fZXJyb3JgIGFyZ3VtZW50LCBtZWFuaW5nIGl0IGZyZWVzIHRoZSBza2IgaWYgcGFkZGluZyBmYWlscy4gSWYgYHNrYl9wYWQoKWAgZmFpbHMgYW5kIGZyZWVzIHRoZSBza2IgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLCB0aGUgY2FsbGVyIG9mIGBtdDc2X3NrYl9hZGp1c3RfcGFkKClgIG1pZ2h0IGFsc28gYXR0ZW1wdCB0byBmcmVlIHRoZSBvcmlnaW5hbCBza2IgdXBvbiByZWNlaXZpbmcgdGhlIGAtRU5PTUVNYCBlcnJvciwgbGVhZGluZyB0byBhIGRvdWJsZSBmcmVlIG9yIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkuXG5cbkJ5IGNoYW5naW5nIHRoZSBjYWxsIHRvIGBfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSlgLCB0aGUgcGF0Y2ggcHJldmVudHMgdGhlIHNrYiBmcm9tIGJlaW5nIGZyZWVkIG9uIGVycm9yLCBhbGxvd2luZyB0aGUgY2FsbGVyIHRvIHNhZmVseSBoYW5kbGUgdGhlIGNsZWFudXAgd2l0aG91dCB0cmlnZ2VyaW5nIGEgZG91YmxlIGZyZWUuXG5cbkRvdWJsZSBmcmVlIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgdGhhdCBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMxZDRjYWI4ZWQyYmRkNTM0ZDQyNDE2N2Q1ZTM0ODFjNGZhMzgzODUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAwOToyNTowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYwppbmRleCAzNzA3ZWUxOWU0YWU3Li5lYzUwMzUyMWFlNjMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jCkBAIC04NzksNyAmIzQzOzg3OSw3IEBAIGludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpCiAJCX0KIAl9CiAKLQlpZiAoc2tiX3BhZChsYXN0LCBwYWQpKQomIzQzOwlpZiAoX19za2JfcGFkKGxhc3QsIHBhZCwgZmFsc2UpKQogCQlyZXR1cm4gLUVOT01FTTsKIAogCV9fc2tiX3B1dChsYXN0LCBwYWQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDQxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIFBvdGVudGlhbCBNZW1vcnkgU2FmZXR5IElzc3VlcyoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQmIzM5O3MgcnVubmluZyB0aHJvdWdoIG15IGhlYWQgYXMgSSByZXZpZXcgdGhpcyBwYXRjaC4gVGhlIGtleSBjaGFuZ2UgaXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguY2AsIHdoZXJlIHRoZXkmIzM5O3ZlIHN3YXBwZWQgYHNrYl9wYWQobGFzdCwgcGFkKWAgZm9yIGBfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSlgIHdpdGhpbiBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doeSB0aGUgY2hhbmdlPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0IGhlcmU/JiMzNDsKCkZpcnN0LCBJIG5lZWQgdG8gZGlnIGludG8gd2hhdCBgX19za2JfcGFkYCBhY3R1YWxseSBkb2VzLCBlc3BlY2lhbGx5IHRoZSBtZWFuaW5nIG9mIHRoYXQgdGhpcmQgYGZhbHNlYCBhcmd1bWVudC4gUXVpY2tseSBsb29raW5nIGF0IHRoZSBkZWZpbml0aW9ucywgSSBzZWUgYHNrYl9wYWRgIGlzIGp1c3QgYSB3cmFwcGVyIGZvciBgX19za2JfcGFkYCwgYW5kIHRoZSB0aGlyZCBwYXJhbWV0ZXIgaXMgcmVsYXRlZCB0byBlcnJvciBoYW5kbGluZyDigJMgc3BlY2lmaWNhbGx5LCB3aGV0aGVyIHRvIGBmcmVlX29uX2Vycm9yYC4gQS1oYSEgTm93IGl0JiMzOTtzIHN0YXJ0aW5nIHRvIGNsaWNrLgoKUmlnaHQsIGBza2JfcGFkYCAqaXRzZWxmKiBjYWxscyBgX19za2JfcGFkYCB3aXRoIGB0cnVlYCBmb3IgYGZyZWVfb25fZXJyb3JgLiBTbywgdGhlIG9sZCBjb2RlJiMzOTtzIGxvZ2ljIHdhczogaWYgYHNrYl9wYWRgIGZhaWxlZCAoZS5nLiwgYC1FTk9NRU1gKSwgaXQgZnJlZWQgdGhlIGBsYXN0YCBza2IuIFRoZSBjb2RlIHRoZW4gY2hlY2tlZCB0aGUgcmV0dXJuIHZhbHVlLCBhbmQgaWYgaXQgd2FzIGFuIGVycm9yLCByZXR1cm5lZCBgLUVOT01FTWAuCgpOb3csIHdhaXQgYSBzZWNvbmQuLi4gdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nIGFuZCBjb25jZXJuaW5nLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBjYWxsZXIgKmFsc28qIG1pZ2h0IGJlIGhhbmRsaW5nIGVycm9ycyBieSBmcmVlaW5nIHRoZSBgc2tiYCwgYGxhc3RgLCBvciB0aGUgZnJhZ19saXN0IHNrYi4gU28sIGlmIGBza2JfcGFkYCBmYWlscyBhbmQgZnJlZXMgdGhlIGBsYXN0YCBza2IsIGFuZCB0aGUgY2FsbGVyICphbHNvKiBmcmVlcywgdGhhdCYjMzk7cyBhIGNsYXNzaWMgZG91YmxlLWZyZWUgc2NlbmFyaW8sIGxlYWRpbmcgdG8gYSBjcmFzaCBvciB1bmRlZmluZWQgYmVoYXZpb3VyLiBUaGUgY2FsbGVyIGlzIHByb2JhYmx5IGFsc28gZnJlZWluZyB0aGUgc2tiIG9uIGVycm9yLCB3aGljaCBtZWFucyB3ZSBjYW4gYXZvaWQgdGhlIGRvdWJsZSBmcmVlIG9yIHVzZS1hZnRlci1mcmVlIGJ5IGNoYW5naW5nIHRoZSBgZnJlZV9vbl9lcnJvcmAgcGFyYW1ldGVyIG9mIHRoZSB1bmRlcmx5aW5nIG1ldGhvZC4KClNvLCB0aGlzIHBhdGNoIGNoYW5nZXMgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAgdG8gKnByZXZlbnQqIGBfX3NrYl9wYWRgIGZyb20gZnJlZWluZyBgbGFzdGAgb24gZXJyb3IuIFRoaXMgZ2l2ZXMgdGhlIGNhbGxlciBtb3JlIGNvbnRyb2wgYW5kIGVuc3VyZXMgb25seSBvbmUgZnJlZSBvY2N1cnMsIHRodXMgYXZvaWRpbmcgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb3IgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eS4gVGhhdCYjMzk7cyBhIGdvb2QgZmluZCEgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgd291bGQgaGF2ZSBsaWtlbHkgY2F1Z2h0IHRoaXMsIGV2ZW50dWFsbHkuCgpOb3csIG15IGV4cGVydCBtaW5kIGlzIGdvaW5nIG9uZSBzdGVwIGZ1cnRoZXIuIElzIHRoaXMgY2hhbmdlIGludHJvZHVjaW5nIGFueSAqbmV3KiByaXNrcz8gQ291bGQgdGhpcyBjcmVhdGUgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmU/IE5vLCBJIGRvbiYjMzk7dCB0aGluayBzby4gVGhlIHBhdGNoIG9ubHkgYWx0ZXJzIHRoZSBmcmVlaW5nIGJlaGF2aW9yIG9uIGVycm9yLCBub3QgdGhlIGNvbnRlbnQgb2YgdGhlIHNrYiBpdHNlbGYuCgpPa2F5LCB0aGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBmaXggZm9yIGEgbWVtb3J5IHNhZmV0eSBpc3N1ZS4gSSYjMzk7bGwgdmVyaWZ5IHRoZSBsb2dpYyBjYXJlZnVsbHksIGFuZCBydW4gYSBxdWljayBkaWZmIGNoZWNrLCBidXQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgbGVnaXRpbWF0ZSBkb3VibGUtZnJlZS91c2UtYWZ0ZXItZnJlZSBidWcuIEdvb2QgY2F0Y2ghCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfc2tiX2FkanVzdF9wYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTg2ND1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X2FjX3RvX2h3cSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtODY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjg2NjppbnQgbXQ3Nl9za2JfYWRqdXN0X3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg2Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg4OC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODg5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfc2tiX2FkanVzdF9wYWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg5MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxMQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYG10NzZfc2tiX2FkanVzdF9wYWRgKioKCk9rYXksIHRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBtdDc2X3NrYl9hZGp1c3RfcGFkYC4gV2UmIzM5O3ZlIGJlZW4gc2VlaW5nIHNvbWUgb2RkIGJlaGF2aW9yLCBhbmQgdGhpcyBmdW5jdGlvbiBpcyBhIGxpa2VseSBjYW5kaWRhdGUgZm9yIGNvbnRyaWJ1dGluZyB0byBpdC4gSSB3YW50IHRvIG1ha2UgKmFic29sdXRlbHkqIGNlcnRhaW4gSSB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGl0JiMzOTtzIGhhbmRsaW5nIHRoZSBTS0ImIzM5O3MgZGF0YSBidWZmZXIgYWRqdXN0bWVudHMsIGVzcGVjaWFsbHkgYXJvdW5kIHRoZSBwYWRkaW5nLiBNeSBndXQgZmVlbGluZyBpcyB3ZSBtaWdodCBiZSBtaXNzaW5nIHNvbWV0aGluZyBzdWJ0bGUgaW4gdGhlIGludGVyYWN0aW9uIHdpdGggaGFyZHdhcmUgRE1BIG9yIG1lbW9yeSBhbGlnbm1lbnQuIE5lZWQgdG8gdmVyaWZ5IGl0cyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgUlgvVFggcGF0aHMsIGVzcGVjaWFsbHkgdGhlIGltcGxpY2F0aW9ucyBvZiBwcmUtcGVuZGluZy9hcHBlbmRpbmcgZGF0YS4gQW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIGFyZSBteSBwcmltYXJ5IGNvbmNlcm4gaGVyZTsgZGF0YSBjb3JydXB0aW9uIGlzIHRoZSB3b3JzdC1jYXNlIHNjZW5hcmlvLiBJdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGUgZHJpdmVyLCBzbyBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBhc3N1bXB0aW9ucyBhcmUgYWxsIHN0aWxsIHZhbGlkLCBnaXZlbiBhbnkgcmVjZW50IGNoYW5nZXMgdG8gdGhlIHdpcmVsZXNzIGZpcm13YXJlIGFuZC9vciBoYXJkd2FyZS4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg2NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODY2Olx0aW50IG10NzZfc2tiX2FkanVzdF9wYWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHBhZClcbiA4Njc6XHR7XG4gODY4Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqaXRlciwgKmxhc3QgPSBza2I7XG4gODY5Olx0XG4gODcwOlx0XHQvKiBGaXJzdCBwYWNrZXQgb2YgYSBBLU1TRFUgYnVyc3Qga2VlcHMgdHJhY2sgb2YgdGhlIHdob2xlIGJ1cnN0XG4gODcxOlx0XHQgKiBsZW5ndGgsIG5lZWQgdG8gdXBkYXRlIGxlbmd0aCBvZiBpdCBhbmQgdGhlIGxhc3QgcGFja2V0LlxuIDg3MjpcdFx0ICovXG4gODczOlx0XHRza2Jfd2Fsa19mcmFncyhza2IsIGl0ZXIpIHtcbiA4NzQ6XHRcdFx0bGFzdCA9IGl0ZXI7XG4gODc1Olx0XHRcdGlmICghaXRlci1cdTAwM2VuZXh0KSB7XG4gODc2Olx0XHRcdFx0c2tiLVx1MDAzZWRhdGFfbGVuICYjNDM7PSBwYWQ7XG4gODc3Olx0XHRcdFx0c2tiLVx1MDAzZWxlbiAmIzQzOz0gcGFkO1xuIDg3ODpcdFx0XHRcdGJyZWFrO1xuIDg3OTpcdFx0XHR9XG4gODgwOlx0XHR9XG4gODgxOlx0XG4gODgyOlx0XHRpZiAoX19za2JfcGFkKGxhc3QsIHBhZCwgZmFsc2UpKVxuIDg4MzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA4ODQ6XHRcbiA4ODU6XHRcdF9fc2tiX3B1dChsYXN0LCBwYWQpO1xuIDg4NjpcdFxuIDg4NzpcdFx0cmV0dXJuIDA7XG4gODg4Olx0fVxuIDg4OTpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfc2tiX2FkanVzdF9wYWQpO1xuIDg5MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTQwCgkJCQkJCQlvdXRwdXQ6IDI3NgoJCQkJCQkJdGhvdWdodHM6IDE1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAgSXNzdWUqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgZGVhbC4gYG10NzZfc2tiX2FkanVzdF9wYWRgIGlzIGRlc2lnbmVkIHN1Y2ggdGhhdCBpdHMgY2FsbGVyIHRha2VzIHJlc3BvbnNpYmlsaXR5IGZvciBoYW5kbGluZyBhbnkgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuIElmIGBtdDc2X3NrYl9hZGp1c3RfcGFkYCB0aHJvd3MgYW4gYC1FTk9NRU1gIGVycm9yLCB0aGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIGNsZWFuIHVwLCB3aGljaCB1c3VhbGx5IG1lYW5zIGZyZWVpbmcgdGhlIGBza2JgLiBOb3csIGhlcmUmIzM5O3MgdGhlIHBvdGVudGlhbCBwaXRmYWxsOiBpZiBgc2tiX3BhZGAgaGFzICphbHJlYWR5KiBkZWFsbG9jYXRlZCBgbGFzdGAgKHRoYXQgY291bGQgYmUgdGhlIGBza2JgIGl0c2VsZiBvciBvbmUgb2YgaXRzIGZyYWdtZW50cyksIHRoZW4gdGhlIGNhbGxlciYjMzk7cyBzdWJzZXF1ZW50IGF0dGVtcHQgdG8gZnJlZSB0aGUgYHNrYmAgaXMgZ29pbmcgdG8gdHJpZ2dlciBlaXRoZXIgYSBkb3VibGUtZnJlZSBvciBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLiBDbGVhcmx5LCB0aGlzIHBvaW50cyB0byBhIG5hc3R5IG1lbW9yeSBjb3JydXB0aW9uIHZ1bG5lcmFiaWxpdHkuCgpUaGUgZ29vZCBuZXdzIGlzIHRoYXQgdGhpcyBpcyBhIHRleHRib29rIGNhc2UgZm9yIEtBU0FOLiBXZSBhcmUgbG9va2luZyBhdCBhbiBpc3N1ZSB3aGVyZSBtZW1vcnkgaXMgYmVpbmcgaW5jb3JyZWN0bHkgbWFuYWdlZCwgbGVhZGluZyB0byBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgc2FtZSBtZW1vcnkgaXMgYmVpbmcgZnJlZWQgbXVsdGlwbGUgdGltZXMgb3IgYWNjZXNzZWQgYWZ0ZXIgaXQmIzM5O3MgYmVlbiByZWxlYXNlZC4gVGhlIG5hdHVyZSBvZiB0aGUgYnVnIGRvZXNuJiMzOTt0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgYW55IHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcy4gVGhlcmVmb3JlLCB0aGVyZSYjMzk7cyBhYnNvbHV0ZWx5IG5vIHJlYXNvbiB0byBicmluZyBLTVNBTiBpbnRvIHRoZSBwaWN0dXJlIGhlcmUuCgpTbywgSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgd2UgY2FuIGNvbmZpZGVudGx5IHNldCBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBLQVNBTiBpcyBwZXJmZWN0bHkgc3VpdGVkIHRvIGRpYWdub3NlIHRoZSBkb3VibGUtZnJlZS9VQUYgdGhhdCB0aGlzIGJ1ZyBjcmVhdGVzLiBUaGVyZSBpcyBubyBuZWVkIGZvciBLTVNBTi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYHNrYl9wYWQobGFzdCwgcGFkKWAgd2l0aCBgX19za2JfcGFkKGxhc3QsIHBhZCwgZmFsc2UpYC4gVGhlIGBza2JfcGFkKClgIGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBhcm91bmQgYF9fc2tiX3BhZCgpYCB0aGF0IHBhc3NlcyBgdHJ1ZWAgZm9yIHRoZSBgZnJlZV9vbl9lcnJvcmAgYXJndW1lbnQsIG1lYW5pbmcgaXQgZnJlZXMgdGhlIHNrYiBpZiBwYWRkaW5nIGZhaWxzLiBJZiBgc2tiX3BhZCgpYCBmYWlscyBhbmQgZnJlZXMgdGhlIHNrYiAob3IgYSBmcmFnbWVudCBvZiBpdCksIHRoZSBjYWxsZXIgb2YgYG10NzZfc2tiX2FkanVzdF9wYWQoKWAgbWlnaHQgYWxzbyBhdHRlbXB0IHRvIGZyZWUgdGhlIG9yaWdpbmFsIHNrYiB1cG9uIHJlY2VpdmluZyB0aGUgYC1FTk9NRU1gIGVycm9yLCBsZWFkaW5nIHRvIGEgZG91YmxlIGZyZWUgb3IgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eS5cblxuQnkgY2hhbmdpbmcgdGhlIGNhbGwgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAsIHRoZSBwYXRjaCBwcmV2ZW50cyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IsIGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gc2FmZWx5IGhhbmRsZSB0aGUgY2xlYW51cCB3aXRob3V0IHRyaWdnZXJpbmcgYSBkb3VibGUgZnJlZS5cblxuRG91YmxlIGZyZWUgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MgYXJlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB0aGF0IGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBza2JfcGFkKGxhc3QsIHBhZClgIHdpdGggYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAuIFRoZSBgc2tiX3BhZCgpYCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIGBfX3NrYl9wYWQoKWAgdGhhdCBwYXNzZXMgYHRydWVgIGZvciB0aGUgYGZyZWVfb25fZXJyb3JgIGFyZ3VtZW50LCBtZWFuaW5nIGl0IGZyZWVzIHRoZSBza2IgaWYgcGFkZGluZyBmYWlscy4gSWYgYHNrYl9wYWQoKWAgZmFpbHMgYW5kIGZyZWVzIHRoZSBza2IgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLCB0aGUgY2FsbGVyIG9mIGBtdDc2X3NrYl9hZGp1c3RfcGFkKClgIG1pZ2h0IGFsc28gYXR0ZW1wdCB0byBmcmVlIHRoZSBvcmlnaW5hbCBza2IgdXBvbiByZWNlaXZpbmcgdGhlIGAtRU5PTUVNYCBlcnJvciwgbGVhZGluZyB0byBhIGRvdWJsZSBmcmVlIG9yIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkuXG5cbkJ5IGNoYW5naW5nIHRoZSBjYWxsIHRvIGBfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSlgLCB0aGUgcGF0Y2ggcHJldmVudHMgdGhlIHNrYiBmcm9tIGJlaW5nIGZyZWVkIG9uIGVycm9yLCBhbGxvd2luZyB0aGUgY2FsbGVyIHRvIHNhZmVseSBoYW5kbGUgdGhlIGNsZWFudXAgd2l0aG91dCB0cmlnZ2VyaW5nIGEgZG91YmxlIGZyZWUuXG5cbkRvdWJsZSBmcmVlIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgdGhhdCBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjAyLjA3NzkwODg2MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTU5NDczMDI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc2NjNVXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl9za2JfYWRqdXN0X3BhZFwiLFxuICAgIFwibXQ3NngwMnVfdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGBza2JfcGFkKGxhc3QsIHBhZClgIHdpdGggYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAuIFRoZSBgc2tiX3BhZCgpYCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIGBfX3NrYl9wYWQoKWAgdGhhdCBwYXNzZXMgYHRydWVgIGZvciB0aGUgYGZyZWVfb25fZXJyb3JgIGFyZ3VtZW50LCBtZWFuaW5nIGl0IGZyZWVzIHRoZSBza2IgaWYgcGFkZGluZyBmYWlscy4gSWYgYHNrYl9wYWQoKWAgZmFpbHMgYW5kIGZyZWVzIHRoZSBza2IgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLCB0aGUgY2FsbGVyIG9mIGBtdDc2X3NrYl9hZGp1c3RfcGFkKClgIG1pZ2h0IGFsc28gYXR0ZW1wdCB0byBmcmVlIHRoZSBvcmlnaW5hbCBza2IgdXBvbiByZWNlaXZpbmcgdGhlIGAtRU5PTUVNYCBlcnJvciwgbGVhZGluZyB0byBhIGRvdWJsZSBmcmVlIG9yIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkuXFxuXFxuQnkgY2hhbmdpbmcgdGhlIGNhbGwgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAsIHRoZSBwYXRjaCBwcmV2ZW50cyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IsIGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gc2FmZWx5IGhhbmRsZSB0aGUgY2xlYW51cCB3aXRob3V0IHRyaWdnZXJpbmcgYSBkb3VibGUgZnJlZS5cXG5cXG5Eb3VibGUgZnJlZSBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncyBhcmUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHRoYXQgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgc2tiX3BhZCB0byBfX3NrYl9wYWQoLi4uLCBmYWxzZSkgaW4gbXQ3Nl9za2JfYWRqdXN0X3BhZCwgcHJldmVudGluZyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgbWVtb3J5IG1hbmFnZW1lbnQgKGF2b2lkaW5nIGRvdWJsZS1mcmVlIG9yIG1lbW9yeSBsZWFrcykuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHZhcmlvdXMgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNTowMi4wNzc5MTU0NzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzAxMjI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMxZDRjYWI4ZWQyYmRkNTM0ZDQyNDE2N2Q1ZTM0ODFjNGZhMzgzODVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDk6MjU6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXFxuaW5kZXggMzcwN2VlMTllNGFlNy4uZWM1MDM1MjFhZTYzMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcXG5AQCAtODc5LDcgKzg3OSw3IEBAIGludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHNrYl9wYWQobGFzdCwgcGFkKSlcXG4rXFx0aWYgKF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRfX3NrYl9wdXQobGFzdCwgcGFkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MDIuNTg1NjI0MDU5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQ5MDY2MDY3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIixcbiAgICBcIk1UNzY2M1VcIixcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2X3NrYl9hZGp1c3RfcGFkXCIsXG4gICAgXCJtdDc2eDAydV90eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgc2tiX3BhZCB0byBfX3NrYl9wYWQoLi4uLCBmYWxzZSkgaW4gbXQ3Nl9za2JfYWRqdXN0X3BhZCwgcHJldmVudGluZyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgbWVtb3J5IG1hbmFnZW1lbnQgKGF2b2lkaW5nIGRvdWJsZS1mcmVlIG9yIG1lbW9yeSBsZWFrcykuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHZhcmlvdXMgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMWQ0Y2FiOGVkMmJkZDUzNGQ0MjQxNjdkNWUzNDgxYzRmYTM4Mzg1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDk6MjU6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbmluZGV4IDM3MDdlZTE5ZTRhZTcuLmVjNTAzNTIxYWU2MzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguY1xuQEAgLTg3OSw3ICs4NzksNyBAQCBpbnQgbXQ3Nl9za2JfYWRqdXN0X3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoc2tiX3BhZChsYXN0LCBwYWQpKVxuK1x0aWYgKF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRfX3NrYl9wdXQobGFzdCwgcGFkKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjAyLjU4NTYyNTI3OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1Mzk4NDE3NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVkaWF0ZWsgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGFsdGVycyBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHN3aXRjaGluZyBmcm9tIGBza2JfcGFkKGxhc3QsIHBhZClgIHRvIGBfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSlgLiBSaWdodCwgYHNrYl9wYWRgIGlzIGp1c3QgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBgX19za2JfcGFkYCB3aXRoIHRoYXQgdGhpcmQgYXJndW1lbnQsIGBmcmVlX29uX2Vycm9yYCwgc2V0IHRvIGB0cnVlYC4gU28sIGVmZmVjdGl2ZWx5LCB0aGUgb3JpZ2luYWwgY29kZSBmcmVlZCB0aGUgU0tCIG9uIGVycm9yLCBhbmQgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGl0IHRvICpub3QqIGZyZWUgaXQgb24gZXJyb3IuIFRoaXMgaXMgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYSBzdWJ0bGUgZGlmZmVyZW5jZSBpbiBob3cgbWVtb3J5IGlzIG1hbmFnZWQgZHVyaW5nIHBhY2tldCBwYWRkaW5nLlxuXG5UaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSwgZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBpcyB0aGUgaW1wYWN0IG9mIHRoaXMuIE10NzYgaXMgYSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXIuLi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHVzZSBjYXNlIHRvIGRldGVybWluZSB0aGUgaW1wYWN0LiBXYWl0LCBpcyB0aGlzIGRyaXZlciBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElzIGl0IGVtdWxhdGVkIGhhcmR3YXJlLCBvciBpcyBpdCBhIFVTQiBkcml2ZXI/IFRoZSBhbnN3ZXIgd2lsbCBoZWF2aWx5IGluZmx1ZW5jZSB0aGUgaW1wYWN0LiBPa2F5LCBsZXQncyBjaGVjay4gQWgsIHJpZ2h0LCBgbXQ3NmAgZG9lcyBoYXZlIFVTQiBkcml2ZXJzOiBgbXQ3NngwMl91c2JgLCBgbXQ3NngydWAsIGBtdDc5MjF1YCwgYW5kIGEgZmV3IG90aGVycy4gXG5cbkknbGwgY2hlY2sgdGhlIEtjb25maWcgbm93IHRvIHNlZSB3aGljaCBkcml2ZXJzIGFyZSBlbmFibGVkIGluIHdoaWNoIHNjZW5hcmlvcyBhbmQgaG93IHRoaXMgY2hhbmdlIG1pZ2h0IHJpcHBsZSB0aHJvdWdoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gYSBjb21tb25seSB1c2VkIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gb3Igbm90LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTkzLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MDguMTI1NDgzODk4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MDc1MTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfc2tiX2FkanVzdF9wYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTg2Mz12b2lkIG10NzZfZXRodG9vbF93b3JrZXIoc3RydWN0IG10NzZfZXRodG9vbF93b3JrZXJfaW5mbyAqd2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg2NC1cXHRcXHRcXHQgc3RydWN0IG10NzZfc3RhX3N0YXRzICpzdGF0cywgYm9vbCBlaHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4NjU6aW50IG10NzZfc2tiX2FkanVzdF9wYWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHBhZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg2Ni1pbnQgX19tdDc2dV92ZW5kb3JfcmVxdWVzdChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTggcmVxLCB1OCByZXFfdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9tY3UuYz0xNz1tdDc2NjN1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jLTMxLVxcdHBhZCA9IHJvdW5kX3VwKHNrYi1cXHUwMDNlbGVuLCA0KSArIDQgLSBza2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2JfbWN1LmM6MzI6XFx0cmV0ID0gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jLTMzLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0xODE9aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMTg6XFx0ZXJyID0gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMTktXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jPTQ2PWludCBtdDc2eDAydV9za2JfZG1hX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHBvcnQsIHUzMiBmbGFncylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTYwLVxcdHBhZCA9IHJvdW5kX3VwKHNrYi1cXHUwMDNlbGVuLCA0KSArIDQgLSBza2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzo2MTpcXHRyZXR1cm4gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjItfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9Nzc2PWludCBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MTU6XFx0ZXJyID0gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODE2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjMzPWludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY3MTpcXHRlcnIgPSBtdDc2X3NrYl9hZGp1c3RfcGFkKHNrYiwgcGFkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjcyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYz01NTk9bXQ3NnNfdHhfcXVldWVfc2tiX3JhdyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy01NjQtXFx0cGFkID0gcm91bmRfdXAoc2tiLVxcdTAwM2VsZW4sIDQpIC0gc2tiLVxcdTAwM2VsZW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NTY1OlxcdHJldCA9IG10NzZfc2tiX2FkanVzdF9wYWQoc2tiLCBwYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTU2Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTg2ND1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X2FjX3RvX2h3cSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODY2OmludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtODg4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODg5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfc2tiX2FkanVzdF9wYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04OTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjA4LjIwMDU2MzMzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYxODQ4MjQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIG10NzZfc2tiX2FkanVzdF9wYWQqKlxuXG5Pa2F5LCBzbyBgbXQ3Nl9za2JfYWRqdXN0X3BhZGDigKYgdGhhdCByaW5ncyBhIGJlbGwuIEl04oCZcyB1c2VkIHdpdGhpbiB0aGUgbXQ3NiBmcmFtZXdvcmssIHNwZWNpZmljYWxseSB3aXRoaW4gaXRzIFVTQiBhbmQgU0RJTyBkcml2ZXJzLiBJbnRlcmVzdGluZy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBmdXp6aW5nIHBvc3NpYmlsaXRpZXMuIFNpbmNlIGl0J3MgaW4gdGhlIFVTQiBkcml2ZXIsIEkgc2hvdWxkIGJlIGFibGUgdG8gbGV2ZXJhZ2UgZHVtbXlfaGNkIG9yIHN5emthbGxlcuKAmXMgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBUaGF0J3MgYSBncmVhdCBzdGFydGluZyBwb2ludCBmb3IgZmluZGluZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBCdXQgYmVmb3JlIGRpdmluZyB0b28gZGVlcCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIG10NzYgVVNCIGRyaXZlcnMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gVW5kZXJzdGFuZGluZyB3aGF0J3MgZW5hYmxlZCBhbmQgZGlzYWJsZWQgd2lsbCBoZWxwIGRldGVybWluZSB0aGUgYXR0YWNrIHN1cmZhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNzMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNToxMS44MTkwNTYwNDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc4ODE0OTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyOmNvbmZpZyBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjY6Y29uZmlnIE1UNzZfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy03LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTI6Y29uZmlnIE1UNzZfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc2X1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MjA6Y29uZmlnIE1UNzZ4MDJfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI0OmNvbmZpZyBNVDc2eDAyX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyODpjb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzY9Y29uZmlnIE1UNzkyeF9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZzoyOmNvbmZpZyBNVDc2MDNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2MDNFIChQQ0llKSBhbmQgTVQ3Nng4IFdMQU4gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjM6Y29uZmlnIE1UNzYxNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjg6Y29uZmlnIE1UNzYxNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzYxNUUgYW5kIE1UNzY2M0UgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MjE6Y29uZmlnIE1UNzYyMl9XTUFDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yMi1cXHRib29sIFxcXCJNVDc2MjIgKFNvQykgV01BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjMyOmNvbmZpZyBNVDc2NjNfVVNCX1NESU9fQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjM2OmNvbmZpZyBNVDc2NjNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zNy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjYzVSAoVVNCKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjQ3OmNvbmZpZyBNVDc2NjNTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00OC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjYzUyAoU0RJTykgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjI6Y29uZmlnIE1UNzZ4MF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjY6Y29uZmlnIE1UNzZ4MFVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MFUgKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzoxOTpjb25maWcgTVQ3NngwRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MEUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDJFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE4OmNvbmZpZyBNVDc2eDJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngyVSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNToxMi4wOTc4NzYzMjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM2OTY5MTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgcXVpY2sgcnVuZG93biBvZiB0aG9zZSBjaGlwc2V0cywga2VlcGluZyBpbiBtaW5kIG15IGZpZWxkIGV4cGVydGlzZTpcblxuKipDaGVja2luZyB0aGUgTWVkaWF0ZWsgTGluZXVwKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoZSBNZWRpYXRlayBXaUZpIGNoaXBzZXQgbGFuZHNjYXBlLiBJJ3ZlIGdvdCBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYW5kIGBNVDc2NjNVYCBmbGFnZ2VkLCBvYnZpb3VzbHkgZmFtaWxpYXIgdGVycml0b3J5LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gdXAgdG8gc3BlZWQgb24gdGhlICplbnRpcmUqIHJhbmdlLiBHaXZlbiByZWNlbnQgZGV2ZWxvcG1lbnRzLCBpdCdzIHdvcnRoIGNyb3NzLXJlZmVyZW5jaW5nIHRoZXNlIGFnYWluc3QgdGhlIG5ld2VyIG9mZmVyaW5ncy4gU28sIGxldCdzIGNpcmNsZSBiYWNrIHRvIGNvbnNpZGVyIGhvdyBgTVQ3OTIxVWAgYW5kIGBNVDc5MjVVYCBmaXQgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBXaGVyZSBkbyB0aGV5IHN0YW5kIGluIHRoZSBldm9sdXRpb24gYW5kIHdoYXQgY2FwYWJpbGl0aWVzIGRvIHRoZXkgYnJpbmcgdG8gdGhlIHRhYmxlIGNvbXBhcmVkIHRvIHRoZXNlIG9sZGVyIGNoaXBzPyBLZWVwaW5nIGFuIGV5ZSBvbiB0aGUgYmlnZ2VyIHBpY3R1cmUgaXMga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDI5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MTUuNDM0ODQ4Nzk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NTgzNzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz0yOD1jb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjMyOmNvbmZpZyBNVDc5MnhfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM2OmNvbmZpZyBNVDc5MnhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM3LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MTVFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MTVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnOjE3OmNvbmZpZyBNVDc5OFhfV01BQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMTgtXFx0Ym9vbCBcXFwiTVQ3OTh4IChTb0MpIFdNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyMV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MTc6Y29uZmlnIE1UNzkyMVNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFTIChTRElPKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Nzpjb25maWcgTVQ3OTI1RVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnOjI6Y29uZmlnIE1UNzk5NkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzk5NiAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZzoxNjpjb25maWcgTVQ3OTk2X05QVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTctXFx0Ym9vbCBcXFwiTVQ3OTk2IChQQ0llKSBOUFUgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MTUuNTAwNDM2NDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Njc5NTM3MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBNVDc2IERyaXZlciBVU0IgVnVsbmVyYWJpbGl0aWVzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlcyBpbiB0aGlzIE1UNzYgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gVVNCIHNpbmNlIFNESU8gaXMgYSBoYXJkZXIgdGFyZ2V0IGZvciBmdXp6aW5nLiAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggVVNCLXNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgbW9zdCBpbnRlcmVzdGluZy4gSSd2ZSBub3RlZCB0aGF0IHdlIGNhbiBlbmFibGUgc3VwcG9ydCBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgY2hpcHNldHM6IGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gIFRoYXQncyBhIGdvb2Qgc3RhcnQ7IGtub3dpbmcgdGhlIHN1cHBvcnRlZCBoYXJkd2FyZSBnaXZlcyBtZSBhIHdpZGUgcmFuZ2UgdG8gZXhwbG9yZS5cblxuVGhlbiwgSSBpZGVudGlmaWVkIHRoYXQgdGhlIGBtdDc2X3NrYl9hZGp1c3RfcGFkYCBmdW5jdGlvbiBpcyB1c2VkIGJ5IHNldmVyYWwgY3JpdGljYWwtbG9va2luZyBmdW5jdGlvbnMgYWNyb3NzIG11bHRpcGxlIGRldmljZS1zcGVjaWZpYyBzdWJtb2R1bGVzLiBJJ20gbm90aW5nIHRoZSBwbGFjZXMgd2hlcmUgaXQncyB1c2VkOiBpbiBgbXQ3NjYzdV9tY3Vfc2VuZF9tZXNzYWdlYCAodGhhdCBjb3VsZCBiZSBpbnRlcmVzdGluZyBmb3IgY29tbWFuZCBpbmplY3Rpb24sIG9yIG1lc3Npbmcgd2l0aCBtZXNzYWdlcyBiZXR3ZWVuIHRoZSBob3N0IGFuZCBmaXJtd2FyZSksIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBgbXQ3NngwMnVfc2tiX2RtYV9pbmZvYCwgYG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgICh0aGF0J3MgZ29pbmcgdG8gYmUgYSBsb3Qgb2YgY29kZSByZXVzZSkgYW5kIGBtdDc2c190eF9xdWV1ZV9za2JfcmF3YCB3aGljaCBjb3VsZCBiZSB1c2VmdWwgdG8gaW52ZXN0aWdhdGUsIHRob3VnaCB0aGlzIGlzIHRoZSBTRElPIGltcGxlbWVudGF0aW9uLiAgU2luY2UgSSdtIHRhcmdldGluZyBVU0IsIEkgY2FuIHByb2JhYmx5IGlnbm9yZSB0aGF0LlxuXG5Ob3csIG15IGF0dGVudGlvbiBpcyBwYXJ0aWN1bGFybHkgZHJhd24gdG8gYG10NzZ4MDJ1X3NrYl9kbWFfaW5mb2AsIGJlY2F1c2UgdGhhdCdzIHJpZ2h0IGluIHRoZSBVU0IgcGF0aCwgYW5kIGl0J3MgY2FsbGluZyBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAuIEknbGwgd2FudCB0byBzZWUgd2hlcmUgYG10NzZ4MDJ1X3NrYl9kbWFfaW5mb2AgaXMgYWN0dWFsbHkgY2FsbGVkIGFuZCB3aGF0IGRhdGEgaXMgYmVpbmcgcGFzc2VkIHRvIGl0LiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgc29tZXRoaW5nIGV4cGxvaXRhYmxlIHRoZXJlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDcwLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjIzLjE3OTk3NjU0N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY5MDYzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMnVfc2tiX2RtYV9pbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaD0xND1pbnQgbXQ3NngwMnVfbWN1X2Z3X3NlbmRfZGF0YShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaC0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmg6MTc6aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmgtMTgtaW50IG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jPTQ0PUVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJ1X21hY19zdGFydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6NDY6aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jPTY0PWludCBtdDc2eDAydV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy0xMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6MTEwOlxcdGVyciA9IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyh0eF9pbmZvLVxcdTAwM2Vza2IsIFdMQU5fUE9SVCwgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTExMS1cXHRpZiAoZXJyIFxcdTAwMjZcXHUwMDI2IHdjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jPTcwPV9fbXQ3NngwMnVfbWN1X3NlbmRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy05MC1cXHQgICAgICAgTVRfTUNVX01TR19UWVBFX0NNRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jOjkxOlxcdHJldCA9IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhza2IsIENQVV9UWF9QT1JULCBpbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTkyLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjIzLjI3Njg4ODc3N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQyMDk2ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb2RlIGVudHJ5IHBvaW50cywgdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGFzIGlmIEkgd2VyZSB0aGUgb25lIGV4YW1pbmluZyB0aGUgY29kZTpcblxuKipBbmFseXppbmcgUG90ZW50aWFsIEVudHJ5IFBvaW50cyBmb3IgVHJhbnNtaXNzaW9uIFBhdGgqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAgYW5kIGBfX210NzZ4MDJ1X21jdV9zZW5kX21zZ2Agc2VlbSBsaWtlIHByaW1lIGNhbmRpZGF0ZXMgdG8ga2ljayB0aGluZ3Mgb2ZmLiBUaGV5J3JlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciBleGFtaW5pbmcgdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzLCBnaXZlbiB0aGVpciBuYW1pbmcgY29udmVudGlvbi4gTm93LCBsZXQncyBicm9hZGVuIHRoZSBzY29wZSBhIGJpdC4gSSBzaG91bGQgYWxzbyBjaGVjayBgbXQ3NjYzdV9tY3Vfc2VuZF9tZXNzYWdlYCBhbmQgYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIHRvIHNlZSBpZiB0aGV5IGFyZSBzaW1pbGFyIGFuZC9vciBvZmZlciBhbnkgYWRkaXRpb25hbCBpbnNpZ2h0cyBpbnRvIHRoZSBkYXRhIGZsb3cuIFRoaXMgbWlnaHQgaGVscCBpZGVudGlmeSBhbnkgZGV2aWF0aW9ucyBpbiB0aGUgY2hpcHNldCdzIHRyYW5zbWlzc2lvbiBwcm9jZWR1cmVzLCBkZXBlbmRpbmcgb24gaG93IGl0J3MgaW50ZXJmYWNpbmcgKGUuZy4sIFVTQiB2cy4gU0RJTykuIEV4cGFuZGluZyB0aGUgc2VhcmNoIGFsd2F5cyBoZWxwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY3NCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjI3LjIxODk4ODY4MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI1MjYzNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTU0MD12b2lkIG10NzYyMl90cmlnZ2VyX2hpZl9pbnQoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgYm9vbCBlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDItLyogdXNiICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6NTQzOmludCBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDQtXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM9NzY9c3RhdGljIGludCBtdDc2NjNzX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtODEtXFx0XFx0LmRydl9mbGFncyA9IE1UX0RSVl9SWF9ETUFfSERSLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzo4MjpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTgzLVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MTEyPXN0YXRpYyBpbnQgbXQ3NjYzdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTctXFx0XFx0LmRydl9mbGFncyA9IE1UX0RSVl9SWF9ETUFfSERSIHwgTVRfRFJWX0hXX01HTVRfVFhRLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExODpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTE5LVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0xNzk9RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxODE6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTgyLVxcdFxcdFxcdFxcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMjQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MjI1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjI3LjMwMTUyMTc0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjMxMjg3OTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBwcm9ibGVtOlxuXG4qKkNoZWNraW5nIFRYIFByZXBhcmF0aW9uIGZvciBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAgaXMgdXNlZCBpbiBib3RoIHRoZSBVU0IgKGBtdDc2NjN1X3Byb2JlYCkgYW5kIFNESU8gKGBtdDc2NjNzX3Byb2JlYCkgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIFRoYXQgbWFrZXMgaXQgYSBsaWtlbHkgY2FuZGlkYXRlIGZvciBVU0IgZnV6emluZywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEdpdmVuIHRoYXQgaXQncyBhIGNvbW1vbiBmdW5jdGlvbiwgaXQgaXMgcHJvYmFibHkgY2FsbGVkIGZyb20gc29tZSBjZW50cmFsIHBvaW50IG9mIHRoZSBVU0IgZHJpdmVyLiBJdCdzIHRpbWUgdG8gYnJhbmNoIG91dC4gTGV0J3Mgc2hpZnQgb3VyIGZvY3VzIHRvIGBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIHRvIGNoZWNrIGlmIGEgc2ltaWxhciBwYXR0ZXJuIGV4aXN0cywgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBkaWZmZXJlbmNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gdGhvc2UgKnNrYiogcHJlcGFyYXRpb24gcm91dGluZXMuIFRoYXQncyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2UgbGlrZWx5IGxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMDA3LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MzEuNTMyODEyNTg4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTUzODcxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NzY0PW10NzkyMV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6Nzc2OmludCBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03NzctXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MjEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjgyMjpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTMyNj1pbnQgbXQ3OTIxX21jdV9nZXRfdGVtcGVyYXR1cmUoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oOjMyODppbnQgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzI5LVxcdFxcdFxcdFxcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jPTkwPXN0YXRpYyBpbnQgbXQ3OTIxc19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTk4LVxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYzo5OTpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTEwMC1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTIxX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTU5LVxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE2MDpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTYxLVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNTozMS42MDQzNTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE2Nzk3MDM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIG10NzkyMSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGBtdDc5MjFgIFVTQi9TRElPIGRyaXZlciBpcyBiZWluZyBpbml0aWFsaXplZC4gTXkgY3VycmVudCBsaW5lIG9mIHRoaW5raW5nIHJldm9sdmVzIGFyb3VuZCBob3cgdGhlIHRyYW5zbWl0IHBhdGggaXMgc2V0IHVwLiBJIHNlZSB0aGF0IHRoZSBmdW5jdGlvbiBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIHRoZSBgbXQ3OTIxdV9wcm9iZWAgZnVuY3Rpb24uIFRoYXQncyB0aGUga2V5IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCBzbyBJJ20gZ2V0dGluZyBhIHNlbnNlIG9mIHdoZXJlIHRoaXMgZml0cyBpbnRvIHRoZSBvdmVyYWxsIHNjaGVtZS5cblxuTm93LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIHJlbGF0ZWQgZnVuY3Rpb24gZm9yIHRoZSBgbXQ3OTI1YCBzZXJpZXMuIExldCBtZSBjb21wYXJlIHRoYXQgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIHNvIHRoYXQgSSBjYW4gc2VlIHRoZSBwb3RlbnRpYWwgc2ltaWxhcml0aWVzIGFuZCBkaWZmZXJlbmNlcyBpbiB0aGUgdHJhbnNtaXQgcHJlcGFyYXRpb24gbG9naWMgb2YgdGhlIHR3by4gVGhpcyBjb21wYXJpc29uIHNob3VsZCBwcm92aWRlIHNvbWUgdmFsdWFibGUgaW5zaWdodHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzAwLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MzcuNzcyMzI4Mzk2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAyNzIwMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjE9bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMzppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzNC1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2Nzg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzY5PWludCBtdDc5MjVfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzcxOmludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzItXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1OS1cXHRcXHRcXHRcXHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjA6XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2MS1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MzcuODgyNjA0Mzg1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MTU3Mzk1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgY2xlYXIgdGhlIGNoYW5nZSBmcm9tIGBza2JfcGFkYCB0byBgX19za2JfcGFkKGxhc3QsIHBhZCwgZmFsc2UpYCBpbiBgbXQ3OTI1dV9wcm9iZWAgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgc2VlbXMgdG8gYmUgcHJldmVudGluZyB0aGUgZnJlZWluZyBvZiB0aGUgU0tCIG9uIGVycm9yLCB3aGljaCBjb3VsZCBoYXZlIGltcGxpY2F0aW9ucyBkb3duIHRoZSBsaW5lLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIGxpZXMgd2l0aGluIGBtdDc2X3NrYl9hZGp1c3RfcGFkYCwgYW5kIHRoYXQncyBjYWxsZWQgaW4gc2V2ZXJhbCBvdGhlciBwbGFjZXMgYmVzaWRlcyB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uLlxuXG5JIHNlZSB0aGF0IGBtdDc2eDAydV9za2JfZG1hX2luZm9gLCBgbXQ3NjYzdV9tY3Vfc2VuZF9tZXNzYWdlYCwgYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBhbGwgY2FsbCB0aGF0IHNhbWUgYG10NzZfc2tiX2FkanVzdF9wYWRgIGZ1bmN0aW9uLiBUaGF0J3MgZ29vZCB0byBrbm93LCBiZWNhdXNlIHRob3NlIGFyZSBhbGwgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZyEgVGhpcyBjb3VsZCBjcmVhdGUgYSBicm9hZGVyIGF0dGFjayBzdXJmYWNlIHRoYW4gaW5pdGlhbGx5IGFudGljaXBhdGVkLlxuXG5UaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXBwZWFyIHRvIGJlIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYE1UNzkyNVVgLCBhbmQgb2YgY291cnNlIGBNVDc2X1VTQmAuIE5vdywgSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZXNlIGNvbmZpZ3VyYXRpb25zIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMuIFdlIG5lZWQgdG8gdHJhY2UgdGhpcyBmdXJ0aGVyIHRvIHNlZSB3aGF0IGVsc2UgY291bGQgYmUgYWZmZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzc4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjQ0LjI5ODM0NjI2NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg5MDEwOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzZ4MFVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZz0yPWNvbmZpZyBNVDc2eDBfQ09NTU9OXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjQ0LjM4NzI1NDA3NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODc4NTk1NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgTVQ3NngwVSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBNVDc2eDBVLiBCZWZvcmUgSSBldmVuIGJlZ2luIHRvIGNvbnNpZGVyIHRoZSBtYWluIGZ1bmN0aW9uYWxpdHksIEkgbmVlZCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaXRzIGRlcGVuZGVuY2llcy4gSSdtIHRoaW5raW5nIGJleW9uZCBqdXN0IHRoZSBvYnZpb3VzIGRyaXZlciBtb2R1bGVzLiBXaGVyZSBkb2VzIHRoaXMgY2hpcCBpbnRlcmZhY2U/IEFyZSB0aGVyZSBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbnMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIG9uPyBXaGF0IGFib3V0IGZpcm13YXJlPyBBcmUgdGhlcmUgYW55IGhhcmRjb2RlZCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgaGFyZHdhcmUgZW52aXJvbm1lbnQsIGxpa2Ugc3BlY2lmaWMgY2xvY2sgZnJlcXVlbmNpZXMgb3IgbWVtb3J5IG1hcHBpbmcgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQ/XG5cbkxldCdzIHNlZSwgd2hhdCB0b29scyBhcmUgYXZhaWxhYmxlIHRvIGhlbHAgaWRlbnRpZnkgdGhlc2UgZGVwZW5kZW5jaWVzPyBgbW9kaW5mb2AgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBvZiBjb3Vyc2UsIGJ1dCB0aGF0J2xsIG9ubHkgZ2l2ZSBtZSB0aGUgZXhwbGljaXRseSBzdGF0ZWQgbW9kdWxlIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIGxvb2sgZGVlcGVyLiBDcm9zcy1yZWZlcmVuY2luZyB0aGUgc291cmNlIGNvZGUgZm9yIGFueSBgaW5jbHVkZWAgZGlyZWN0aXZlcyBhbmQgc3ltYm9sIHVzYWdlIHdpdGggb3RoZXIgbW9kdWxlcyBpbiB0aGUgc3lzdGVtIGlzIGVzc2VudGlhbC4gQW55dGhpbmcgbm9uLXN0YW5kYXJkPyBBcmUgdGhlcmUgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgbHVya2luZyBpbiBjdXN0b20gYnVpbGQgY29uZmlndXJhdGlvbnMgb3IgcGxhdGZvcm0tc3BlY2lmaWMgZGVmaW5pdGlvbnM/XG5cbkZ1cnRoZXJtb3JlLCBJIGhhdmUgdG8gY29uc2lkZXIgdGhlIHBvdGVudGlhbCBmb3IgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLiBBIHNlZW1pbmdseSBpbmRlcGVuZGVudCBtb2R1bGUgbWlnaHQgaW5kaXJlY3RseSBpbnRlcmFjdCB3aXRoIE1UNzZ4MFUgdGhyb3VnaCBzaGFyZWQgcmVzb3VyY2VzIG9yIEFQSXMuIFRoYXQgcmVxdWlyZXMgYSBicm9hZGVyIHN5c3RlbSB2aWV3LCBvciBwZXJoYXBzIGEgcnVudGltZSBhbmFseXNpcyB0byBpZGVudGlmeSBzdWNoIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMuIEknbGwgbmVlZCB0byBtYXAgb3V0IHRoZSBjYWxsIGdyYXBoIGFuZCByZXNvdXJjZSB1c2FnZSB0byBnZXQgYSBmdWxsIHBpY3R1cmUuXG5cblVsdGltYXRlbHksIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kgbGFuZHNjYXBlIGlzIGNyaXRpY2FsLiBPbmx5IHRoZW4gY2FuIEkgYWNjdXJhdGVseSBhc3Nlc3MgdGhlIGltcGFjdCBvZiBhbnkgY2hhbmdlcyBvciBkZWJ1Z2dpbmcgc3RlcHMgSSBuZWVkIHRvIGltcGxlbWVudC4gSXQgd2lsbCBhbHNvIGhlbHAgbWUgcHJvcGVybHkgdHJvdWJsZXNob290IGFuZCByZXNvbHZlIGFueSBjb21wYXRpYmlsaXR5IGlzc3Vlcy4gVGhpcyB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIGVpdGhlciBpbnRlZ3JhdGluZyBvciBkZWJ1Z2dpbmcgdGhpcyBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MjA0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6NDkuMjY1ODUzNzkzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5NTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNVDc2eDBfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzZ4MDJfTElCXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNVDc2eDBVXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE1UNzZ4MF9DT01NT05cXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc2eDAyX1VTQlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMFUtYmFzZWQgVVNCIDIuMCB3aXJlbGVzcyBkb25nbGVzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydCAxeDFcXG4gIDE1OlxcdFxcdCAgNDMzTWJwcyBQSFkgcmF0ZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVQ3NngwRVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MEUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjQ5LjI2NTk1NjE0M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAwMjY2Mjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBhIFdpcmVsZXNzIERldmljZSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoaXMgd2lyZWxlc3MgZGV2aWNlLCBwcm9iYWJseSB0cnlpbmcgdG8gdHJvdWJsZXNob290IHNvbWV0aGluZyBvciBpbnRlZ3JhdGUgaXQgaW50byBhIG5ldyBzZXR1cC4gTXkgaW1tZWRpYXRlIGNvbmNlcm5zIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHM6IGBNQUM4MDIxMWAgYW5kIGBVU0JgLiBUaG9zZSBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyBJJ20gZXhwZWN0aW5nIHRvIGJlIGludm9sdmVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmcmFtZXdvcmsgaXMgcHJlc2VudCwgYW5kIHRoYXQgdGhlIFVTQiBzdWJzeXN0ZW0gaXMgaGFuZGxpbmcgdGhlIGRldmljZSBjb3JyZWN0bHkuIFxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIGFib3V0IHRoaXMgc3BlY2lmaWMgY2hpcHNldDogYE1UNzZ4MlVgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGRpZyBpbiBhbmQgc2VlIGlmIHRoZSBkcml2ZXIgaXMgbG9hZGVkLCBpZiBpdCdzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBrbm93biBpc3N1ZXMgd2l0aCBpdC4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBzdGVwIHRvIHBpbnBvaW50aW5nIHRoZSBwcm9ibGVtIGFuZCB3aGVyZSB0aGUgcmVhbCBpbnZlc3RpZ2F0aW9uIGJlZ2lucy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgbW9kdWxlcywgdGhlIGRldmljZSB0cmVlIChpZiBhcHBsaWNhYmxlKSwgYW5kIGFueSByZWxldmFudCBkb2N1bWVudGF0aW9uIGZvciB0aGlzIHBhcnRpY3VsYXIgZGV2aWNlLiBFc3NlbnRpYWxseSwgSSdtIHNldHRpbmcgdGhlIHN0YWdlIGZvciBzb21lIGluLWRlcHRoIGRlYnVnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5MDYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjUzLjA2NjIyNTA4MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzZ4Ml9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3NngwMl9MSUJcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE1UNzZ4MkVcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDJFIChQQ0llKSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE1UNzZ4Ml9DT01NT05cXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2MTIvTVQ3NjAyL01UNzY2Mi1iYXNlZCBQQ0llIHdpcmVsZXNzXFxuICAxMzpcXHRcXHQgIGRldmljZXMsIHdoaWNoIGNvbXBseSB3aXRoIElFRUUgODAyLjExYWMgc3RhbmRhcmRzIGFuZCBzdXBwb3J0XFxuICAxNDpcXHRcXHQgIDJTUyB0byA4NjZNYml0L3MgUEhZIHJhdGUuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0Y29uZmlnIE1UNzZ4MlVcXG4gIDE5OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDJVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAyMDpcXHRcXHRzZWxlY3QgTVQ3NngyX0NPTU1PTlxcbiAgMjE6XFx0XFx0c2VsZWN0IE1UNzZ4MDJfVVNCXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjEyVS1iYXNlZCBVU0IgMy4wIHdpcmVsZXNzIGRvbmdsZXMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjUzLjA2NjMzNjc4MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjk3Mzg1NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQgaW4gbXkgZmllbGQ6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBOYXZpZ2F0aW5nIHRoZSBXaXJlbGVzcyBEcml2ZXIgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgc2l0dWF0aW9uLiBGaXJzdCwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGtleSBkZXBlbmRlbmNpZXMuIFJpZ2h0IGF3YXksIGBNQUM4MDIxMWAgaXMganVtcGluZyBvdXQgYXQgbWUgYXMgYSBjcnVjaWFsIGNvbXBvbmVudC4gVGhpcyBpcyB0aGUgY29yZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN0YWNrLCBzbyBhbnl0aGluZyBpbnZvbHZpbmcgd2lyZWxlc3Mgd2lsbCBkZWZpbml0ZWx5IHJlbHkgb24gaXQuIEFuZCBnaXZlbiB0aGUgXCJVXCIgZGVzaWduYXRpb24gYXQgdGhlIGVuZCBvZiB0aGUgY2hpcHNldCBuYW1lIEknbSBhbHNvIHN1c3BlY3Rpbmcgd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBVU0IgYmFzZWQsIHNvIGBVU0JgIGlzIGFsc28gaW4gdGhlIG1peC4gTm93IHRoYXQgSSBoYXZlIG15IGNvcmUgZGVwZW5kZW5jaWVzIGlkZW50aWZpZWQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzOiBJdCBsb29rcyBsaWtlIHdlJ3JlIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIGBNVDc2NjNVYCBjaGlwc2V0LiBUaW1lIHRvIGRpdmUgaW50byB3aGF0IHRoYXQgZW50YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NzksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjU4LjM2MzcyNjM4M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMDpcXHRcXHQgIDIuNCBHSHogb25seS5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXHRzZWxlY3QgTVQ3NjE1X0NPTU1PTlxcbiAgMzU6XFx0XFxuICAzNjpcXHRjb25maWcgTVQ3NjYzVVxcbiAgMzc6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzY2M1UgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDM4OlxcdFxcdHNlbGVjdCBNVDc2X1VTQlxcbiAgMzk6XFx0XFx0c2VsZWN0IE1UNzY2M19VU0JfU0RJT19DT01NT05cXG4gIDQwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDQxOlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2NjNVIDgwMi4xMWFjIDJ4MjoyIHdpcmVsZXNzIGRldmljZXMuXFxuICA0NDpcXHRcXG4gIDQ1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0Y29uZmlnIE1UNzY2M1NcXG4gIDQ4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2NjNTIChTRElPKSBzdXBwb3J0XFxcIlxcbiAgNDk6XFx0XFx0c2VsZWN0IE1UNzZfU0RJT1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNTo1OC4zNjM4MzA1ODNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUwNzgxNTc1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBNVDc5MjFVIGFuZCBpdHMgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgYE1UNzkyMVVg4oCmIExldCdzIHNlZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gSSBhbHJlYWR5IGtub3cgdGhhdCBJIG5lZWQgdG8gY29uc2lkZXIgYE1BQzgwMjExYCwgdGhhdCdzIGEgZ2l2ZW4gZm9yIGFueSB3aXJlbGVzcyBjaGlwc2V0LCBhbmQgYWxzbyB0aGF0IGl0IHdpbGwgbGlrZWx5IHJlbHkgb24gYFVTQmAgZm9yIGNvbW11bmljYXRpb24uIFRob3NlIHR3byBhcmUgZnVuZGFtZW50YWwuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRoZSBgTVQ3OTIxVWAgaXRzZWxmLiBJJ20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgdGhlIHNwZWNpZmljIGRyaXZlciB2ZXJzaW9uIGNvbXBhdGliaWxpdHksIGFueSBrbm93biBmaXJtd2FyZSBpc3N1ZXMsIGFuZCBwZXJmb3JtYW5jZSBiZW5jaG1hcmtzIGluIGNvbXBhcmlzb24gdG8gc2ltaWxhciBjaGlwc2V0cy4gSSBhbHNvIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIGBNQUM4MDIxMWAgZnJhbWV3b3JrIHZlcnNpb24gSSdtIHRhcmdldGluZyBzdXBwb3J0cyB0aGlzIHBhcnRpY3VsYXIgZGV2aWNlLiBJcyB0aGVyZSBhbnl0aGluZyB1bnVzdWFsIGFib3V0IHRoZSBVU0IgaW1wbGVtZW50YXRpb24gb3IgcG93ZXIgbWFuYWdlbWVudCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGFueSByZXBvcnRlZCBxdWlya3Mgb3Igd29ya2Fyb3VuZHMgSSBzaG91bGQgaW52ZXN0aWdhdGU/IEknbGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIHF1aWNrIHNlYXJjaCBvZiB0aGUgbWFpbGluZyBsaXN0cyBhbmQgYnVnIHRyYWNrZXJzIHJlbGF0ZWQgdG8gdGhvc2UgY29tcG9uZW50cyB0byBzZWUgaWYgYW55dGhpbmcganVtcHMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjEzMSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjY6MDUuODcxNjUwODg5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdFxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuICAyMTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIE1NQ1xcbiAgMjM6XFx0XFx0aGVscFxcbiAgMjQ6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxUyA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuICAyNTpcXHRcXG4gIDI2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDI3OlxcdFxcbiAgMjg6XFx0Y29uZmlnIE1UNzkyMVVcXG4gIDI5OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAzMDpcXHRcXHRzZWxlY3QgTVQ3OTJ4X1VTQlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1UNzkyMV9DT01NT05cXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDMzOlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAzNDpcXHRcXHRoZWxwXFxuICAzNTpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFVIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNjowNS44NzE3NzAxODlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA3NjE3NzM2MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIE1UNzkyNVUqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSB0aGlua2luZyBhYm91dCB0aGlzIG5ldyBwcm9qZWN0LCBhbmQgaW1tZWRpYXRlbHksIHRoZSB1c3VhbCBzdXNwZWN0cyBwb3AgaW50byBtaW5kOiBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBzdXJlIG15IGBNQUM4MDIxMWAgZHJpdmVyIGlzIHBsYXlpbmcgbmljZSwgYW5kIHRoYXQgdGhlIGBVU0JgIGludGVyZmFjZSBpcyByb2NrIHNvbGlkLiBUaGF0J3MgYWx3YXlzIG15IHN0YXJ0aW5nIHBvaW50IC0gSSAqbmVlZCogdG8gYmUgY29uZmlkZW50IGluIHRob3NlIGZvdW5kYXRpb25hbCBsYXllcnMuIEkgY2FuJ3Qgc3RhcnQgb3B0aW1pemluZyBvciBldmVuIHJlYWxseSBkZWJ1Z2dpbmcgdW50aWwgSSBoYXZlIHRob3NlIHBpZWNlcyBzcXVhcmVkIGF3YXkuXG5cbkFuZCB0aGVuIHRoZSByZWFsIHRhcmdldDogYE1UNzkyNVVgLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIHNwZWNpZmljcyBvZiAqdGhhdCogZGV2aWNlLiBMZXQncyBzZWUgaG93IHRoYXQgb25lIGZpdHMgaW50byBldmVyeXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjcyOSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjY6MTYuNjMzNTQ3MDAzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE1OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBNVDc5MjVVXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxcbiAgMjc6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDI4OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI2OjE2LjYzMzY1MzY2M1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTg0OTEwODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTVQ3NiBVU0IgRHJpdmVyIE1vZHVsZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBNVDc2IFVTQiBkcml2ZXIgbW9kdWxlcy4gVGhlIGNvcmUgZGVwZW5kZW5jaWVzLCBhcyBJIHNlZSBpdCwgYXJlIG9uIGBNQUM4MDIxMWAgYW5kIHRoZSBgVVNCYCBzdWJzeXN0ZW0sIGFzIGV4cGVjdGVkLlxuXG5SaWdodCwgc28gdG8gZ2V0IHRoaXMgdGhpbmcgZW5hYmxlZCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3MgYXJlIHNldDogYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc2NjNVYCwgYE1UNzkyMVVgLCBhbmQgYE1UNzkyNVVgLiBUaGF0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuXG5cbk5vdywgZm9yIHRoZSByZWFsbHkgaW50ZXJlc3RpbmcgYml0cyDigJMgdGhlIHRyYW5zbWlzc2lvbiAoVFgpIHByZXBhcmF0aW9uIGZ1bmN0aW9ucy4gTG9va3MgbGlrZSBJIHNob3VsZCBmb2N1cyBvbiBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYC4gVGhlc2UgYXJlIHByb2JhYmx5IHRoZSBrZXkgYXJlYXMgd2hlcmUgdGhlIGRhdGEgcGFja2V0cyBnZXQgcHJlcHBlZCBmb3IgdGhlIFVTQiBidXMuXG5cbkhvbGQgb24gYSBzZWMuLi4gYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCBpcyB1c2VkIHdpdGhpbiBgbXQ3NngwMl91c2JfY29yZS5jYC4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgdGhpcyBmdW5jdGlvbiBpc24ndCBkZWNsYXJlZCBhcyBgc3RhdGljYCBpbnNpZGUgdGhhdCBmaWxlLiBUaGF0IHdvdWxkIGhhdmUgaW1wbGljYXRpb25zIGZvciBpdHMgZXh0ZXJuYWwgdXNlLiBJIHNob3VsZCBjaGVjayB0aGF0IHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gbGlua2luZyBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MjY3LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjY6MjIuMjE4NTY3NTY5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzAyMzE5MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMnVfdHhfcHJlcGFyZV9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MjEzPXN0YXRpYyBpbnQgbXQ3NngwdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjEtXFx0XFx0LnNldF9jaGFubmVsID0gbXQ3NngwX3NldF9jaGFubmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIyMjpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc2eDAydV90eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjMtXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZ4MDJ1X3R4X2NvbXBsZXRlX3NrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaD0xNz1pbnQgbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGludCBwb3J0LCB1MzIgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaDoxODppbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaC0xOS1cXHRcXHRcXHQgICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYz00Nj1pbnQgbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGludCBwb3J0LCB1MzIgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzo2NDppbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTY1LVxcdFxcdFxcdCAgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTExNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6MTE3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy0xMTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYz0zMj1zdGF0aWMgaW50IG10NzZ4MnVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy00MC1cXHRcXHQuc2V0X2NoYW5uZWwgPSBtdDc2eDJ1X3NldF9jaGFubmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jOjQxOlxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQyLVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2eDAydV90eF9jb21wbGV0ZV9za2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI2OjIyLjY4ODgwNzk5MVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDQ4NzIzNDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBNVDc2IERyaXZlciBDb2RlKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0J3MgcHJldHR5IGNsZWFyOiBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24sIGFuZCBpdCdzIGRlZmluaXRlbHkgZXhwb3J0ZWQuIEkgc2VlIGl0IGJlaW5nIHVzZWQgZGlyZWN0bHkgd2l0aGluIHRoZSBgbXQ3NngwdV9wcm9iZWAgYW5kIGBtdDc2eDJ1X3Byb2JlYCByb3V0aW5lcyDigJMgd2hpY2ggYXJlLCBvZiBjb3Vyc2UsIHRoZSBwcm9iZSBmdW5jdGlvbnMgZm9yIHRoZSBkZXZpY2VzLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHRob3NlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemluZyB0aGUgaGFyZHdhcmUuIFRoZXnigJlkIGNlcnRhaW5seSBuZWVkIHRvIHByZXBhcmUgdGhlIFNLQiBmb3IgdHJhbnNtaXNzaW9uLCBzZXR0aW5nIHVwIHRoZSBuZWNlc3NhcnkgZGF0YSBzdHJ1Y3R1cmVzIGZvciB0cmFuc21pc3Npb24uXG5cbkZ1cnRoZXIsIHRoZSBkZXBlbmRlbmN5IGNoYWluIGNvbnRpbnVlczsgYG10NzZfc2tiX2FkanVzdF9wYWRgIGlzIGNhbGxlZCBmcm9tIGBtdDc2eDAydV9za2JfZG1hX2luZm9gLiBOb3csIGBtdDc2eDAydV9za2JfZG1hX2luZm9gIGl0c2VsZiBpcyBjYWxsZWQgYnkgYF9fbXQ3NngwMnVfbWN1X3NlbmRfbXNnYC4gVGhpcyBtZWFucyB3ZSd2ZSBnb3QgYSBzZXF1ZW5jZTogdGhlIFNLQiBwcmVwYXJhdGlvbiwgdGhlbiB0aGUgRE1BIGluZm9ybWF0aW9uIHNldHVwLCBhbmQgZmluYWxseSB0aGUgYWN0dWFsIHNlbmRpbmcgb2YgdGhlIG1lc3NhZ2UgdG8gdGhlIE1DVS4gVGhlc2UgZnVuY3Rpb25zIGFsbCB3b3JrIHRvZ2V0aGVyIHRvIHRyYW5zbWl0IHRoZSBkYXRhLiBNYWtlcyBjb21wbGV0ZSBzZW5zZSB0byBtZS4gVGhlIGZ1bmN0aW9uIG5hbWVzIGFyZSBwcmV0dHkgc2VsZi1leHBsYW5hdG9yeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3NTMsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNjoyOC4xMzc1MzY1MzJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MzA3MjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fbXQ3NngwMnVfbWN1X3NlbmRfbXNnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9Njk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6NzA6X19tdDc2eDAydV9tY3Vfc2VuZF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy03MS1cXHRcXHRcXHRpbnQgY21kLCBib29sIHdhaXRfcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MTEwPW10NzZ4MDJ1X21jdV9zZW5kX21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgaW50IGNtZCwgY29uc3Qgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTIwLVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlbWN1Lm11dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jOjEyMTpcXHRlcnIgPSBfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhkZXYsIHNrYiwgY21kLCB3YWl0X3Jlc3ApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTIyLVxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtY3UubXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz0xMzM9bXQ3NngwMnVfbWN1X3dyX3JwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYmFzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTU2LVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlbWN1Lm11dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jOjE1NzpcXHRyZXQgPSBfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhkZXYsIHNrYiwgQ01EX1JBTkRPTV9XUklURSwgY250ID09IG4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTU4LVxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtY3UubXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz0xNjY9bXQ3NngwMnVfbWN1X3JkX3JwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYmFzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTk4OlxcdHJldCA9IF9fbXQ3NngwMnVfbWN1X3NlbmRfbXNnKGRldiwgc2tiLCBDTURfUkFORE9NX1JFQUQsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTk5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNjoyOC4yMDM4NDgwNTVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4Nzg1NzY4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2U6XG5cbioqSW52ZXN0aWdhdGluZyBgbXQ3NngwMnVfbWN1X3NlbmRfbXNnYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG10NzZ4MDJ1X21jdV9zZW5kX21zZ2AgZnVuY3Rpb24uICBUaGUgcXVlc3Rpb24gaXMsIGlzIGl0IGV4cG9ydGVkPyAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXRzIHZpc2liaWxpdHkuIFRoaXMgaXMgYSBjcml0aWNhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgZm9yIGludGVybmFsIHVzZSBvbmx5IHdpdGhpbiB0aGUgbW9kdWxlLCBvciBpZiBpdCdzIGRlc2lnbmVkIHRvIGJlIGNhbGxlZCBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwgb3IgcG90ZW50aWFsbHkgZnJvbSB1c2VyIHNwYWNlICh0aG91Z2ggdGhhdCdzIGxlc3MgbGlrZWx5IGluIHRoaXMgY29udGV4dCkuICBLbm93aW5nIGlmIGl0J3MgZXhwb3J0ZWQgd2lsbCBkaWN0YXRlIGhvdyBpdCBuZWVkcyB0byBiZSB0cmVhdGVkIGdvaW5nIGZvcndhcmQgaW4gbXkgYW5hbHlzaXMuIEl0J2xsIGRlZmluaXRlbHkgaW5mbHVlbmNlIG15IGFzc3VtcHRpb25zIGFib3V0IHN0YWJpbGl0eSwgQVBJIGd1YXJhbnRlZXMsIGFuZCB0aGUgcG90ZW50aWFsIGZvciBhbnkgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgc3lzdGVtcy4gVGltZSB0byBjaGVjayB0aGUgc3ltYm9sIHRhYmxlIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTU0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjY6MzMuMjkxNzA4OTEyWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg2MDc4MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMnVfbWN1X3NlbmRfbXNnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9Njk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6NzA6X19tdDc2eDAydV9tY3Vfc2VuZF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy03MS1cXHRcXHRcXHRpbnQgY21kLCBib29sIHdhaXRfcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MTA5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jOjExMDptdDc2eDAydV9tY3Vfc2VuZF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBjbWQsIGNvbnN0IHZvaWQgKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xMTEtXFx0XFx0ICAgICAgaW50IGxlbiwgYm9vbCB3YWl0X3Jlc3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTEyMC1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW1jdS5tdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzoxMjE6XFx0ZXJyID0gX19tdDc2eDAydV9tY3Vfc2VuZF9tc2coZGV2LCBza2IsIGNtZCwgd2FpdF9yZXNwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTEyMi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlbWN1Lm11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MTMzPW10NzZ4MDJ1X21jdV93cl9ycChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGJhc2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE1Ni1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW1jdS5tdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzoxNTc6XFx0cmV0ID0gX19tdDc2eDAydV9tY3Vfc2VuZF9tc2coZGV2LCBza2IsIENNRF9SQU5ET01fV1JJVEUsIGNudCA9PSBuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE1OC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlbWN1Lm11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MTY2PW10NzZ4MDJ1X21jdV9yZF9ycChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGJhc2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jOjE5ODpcXHRyZXQgPSBfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhkZXYsIHNrYiwgQ01EX1JBTkRPTV9SRUFELCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MjgwPXZvaWQgbXQ3NngwMnVfaW5pdF9tY3Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTI4NC1cXHRcXHQudGFpbHJvb20gPSA4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6Mjg1OlxcdFxcdC5tY3Vfc2VuZF9tc2cgPSBtdDc2eDAydV9tY3Vfc2VuZF9tc2csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0yODYtXFx0XFx0Lm1jdV9wYXJzZV9yZXNwb25zZSA9IG10NzZ4MDJfbWN1X3BhcnNlX3Jlc3BvbnNlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNjozMy40MDAzMjY5NzJaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTg5NDgwOTU4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgTVQ3NngwMnUgTUNVIEluaXRpYWxpemF0aW9uIGFuZCBUWCBQYXRoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYG10NzZ4MDJ1X2luaXRfbWN1YCBhc3NpZ25zIHRoZSBgLm1jdV9zZW5kX21zZ2AgZnVuY3Rpb24gcG9pbnRlciB0byBgbXQ3NngwMnVfbWN1X3NlbmRfbXNnYC4gVGhhdCdzIHN0YW5kYXJkIGluaXRpYWxpemF0aW9uLCBlbnN1cmluZyB0aGUgY29ycmVjdCBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIE1DVS4gSSBhbHJlYWR5IGtuZXcgdGhhdCwgYnV0IGl0J3MgZ29vZCB0byBjb25maXJtLiBJdOKAmXMgdHJpZ2dlcmVkIGVpdGhlciBieSB0aGUgbWFjODAyMTEgc3RhY2sgZGlyZWN0bHksIG9yIHBlcmhhcHMgdGhlIG10NzYgY29yZSBjb2RlIC0gdGhhdOKAmXMgdGhlIGZpcnN0IHF1ZXN0aW9uIHRvIGJlIGFuc3dlcmVkLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBiaXQ6IHRoZSBlbnRyeSBwb2ludHMuIFdlIGhhdmUgYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCwgYW5kIGEgY291cGxlIG9mIHRob3NlIFVTQi9TRElPIHNwZWNpZmljIHZhcmlhbnRzIGZvciBkaWZmZXJlbnQgY2hpcHNldHMg4oCTIGBtdDc2NjNgLCBgbXQ3OTIxYCwgYW5kIGBtdDc5MjVgLiBCdXQgd2hhdCBjYXRjaGVzIG15IGV5ZSBpcyBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAgLSB0aGF0J3MgYSB1dGlsaXR5IGZ1bmN0aW9uIHRvIGhhbmRsZSBwYWRkaW5nIHdpdGhpbiB0aGUgU0tCIChTb2NrZXQgQnVmZmVyKS4gSXQncyBhbHNvIGV4cG9ydGVkLCBtZWFuaW5nIGl0J3MgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGZyb20gb3RoZXIgbW9kdWxlcy4gVGhpcyBpbXBsaWVzIGl0J3MgYSBjb21tb24gZnVuY3Rpb24sIHByb2JhYmx5IHVzZWQgYnkgbXVsdGlwbGUgZHJpdmVycywgd2hpY2ggSSBmaWd1cmVkLCBidXQgSSdsbCBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgdGhlIHNvdXJjZS4gSSdsbCBtYWtlIGEgcXVpY2sgc2VhcmNoIHRvIGVuc3VyZSB0aGF0J3MgaW5kZWVkIHRoZSBjYXNlLiBMZXQncyBzZWUgaWYgdGhhdCdzIHRydWx5IGV4cG9ydGVkLiBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgdG8gbXlzZWxmIHRvIGNoZWNrIHRoZSBjYWxsaW5nIGNvbnRleHRzIG9mIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjc4LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI2OjUyLjM0ODQyNTk2NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxOTEzMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTF9HUExcXFxcKG10NzZfc2tiX2FkanVzdF9wYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTg2Nj1pbnQgbXQ3Nl9za2JfYWRqdXN0X3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg4OC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjg4OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3NrYl9hZGp1c3RfcGFkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtODkwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNjo1Mi40Mjc2MjI4MDZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTg1MzY2NTI0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBGb2N1cyBTeW1ib2xzIGFuZCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkndmUgcGlucG9pbnRlZCBhIHZhbHVhYmxlIGZvY3VzIHN5bWJvbDogYG10NzZfc2tiX2FkanVzdF9wYWRgLiBUaGF0J3MgZGVmaW5pdGVseSBnb2luZyBvbiB0aGUgbGlzdC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBhc3NvY2lhdGVkIGB0eF9wcmVwYXJlX3NrYmAgZmFtaWx5IG9mIGZ1bmN0aW9ucyBhcmUgY3J1Y2lhbCB0byBpbmNsdWRlLiBOb3csIGxldCdzIGV4cGFuZCB0aGlzIHRvIGVuY29tcGFzcyBvdGhlciByZWxldmFudCBVU0Itc3BlY2lmaWMgcHJlcGFyZSBmdW5jdGlvbnMsIHNvIEknbGwgYWRkIGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAsIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYW5kIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLlxuXG5Ob3csIGxldCdzIHN0ZXAgYmFjayBhbmQgbG9vayBhdCB0aGUgYmlnZ2VyIHBpY3R1cmUgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zOiBJIHNlZSBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzY2M1VgLCBgTVQ3OTIxVWAsIGBNVDc5MjVVYCwgYW5kIHRoZSBnZW5lcmFsIGBNVDc2X1VTQmAuIEFoYSEgSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGBNVDc2X1VTQmAgaXMgY29ycmVjdGx5IGFjY291bnRlZCBmb3IsIGV2ZW4gaWYgaXQncyBpbXBsaWNpdGx5IHNlbGVjdGVkIGJ5IHRoZSBtb3JlIHNwZWNpZmljIGRyaXZlciBjaG9pY2VzIGxpa2UgYE1UNzY2M1VgIGFuZCBvdGhlcnMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0LlxuXG5Pa2F5LCBjaGVja2luZyBmb3IgZGVwZW5kZW5jaWVzLCBJIGtub3cgSSBuZWVkIGBNQUM4MDIxMWAgYW5kIGBVU0JgLiBBbmQgbGV0J3Mgbm90IGZvcmdldCBgTU1DYCDigJMgdGhvdWdoIEkgdGhpbmsgdGhhdCdzIG9ubHkgZm9yIHRoZSBTRElPIHZhcmlhbnQgb2YgYE1UNzkyMWAsIHdoaWNoIGlzIG5vdCB3aGF0IEknbSBkZWFsaW5nIHdpdGguIEp1c3QgdG8gYmUgc3VyZSwgSSdsbCBkb3VibGUgY2hlY2sgdGhlIHNwZWNpZmljIGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyMVVgLiBJdCdzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTk5NSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzowMi4yODEyOTEyODVaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA3MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyODpcXHRjb25maWcgTVQ3OTIxVVxcbiAgMjk6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDMwOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAzMTpcXHRcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMzM6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI3OjAyLjI4MTM2NDEwNVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkzMjkzNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipEZXBlbmRlbmNpZXMgRGVlcCBEaXZlOiBBIFF1aWNrIENoZWNrKipcblxuUmlnaHQsIHNvIHdlJ3JlIHRhbGtpbmcgZGVwZW5kZW5jaWVzLiBGcm9tIHdoYXQgSSByZWNhbGwsIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYXQgbGVhc3QgaW5pdGlhbGx5LiBNeSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gYE1BQzgwMjExYCBhbmQgdGhlIGBVU0JgIHN0YWNrLiBUaG9zZSBhcmUgdGhlIGJpZyBwbGF5ZXJzLCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIHRoYXQgZXZlcnl0aGluZyBlbHNlLCBhdCBsZWFzdCBpbiB0aGlzIGNvbnRleHQsIGxlYW5zIG9uLlxuXG5CdXQgSSBuZWVkIHRvIGJlIHN1cmUuIExldCdzIGRpZyBhIGJpdCBkZWVwZXIuIFNwZWNpZmljYWxseSwgbGV0J3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIHRoZSBgTVQ3OTI1VWAuIFRoYXQncyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBhbmQgd2hlcmUgdGhlIG51YW5jZXMgYXJlLiBJIG5lZWQgdG8gZ2V0IGEgZmlybSBncmFzcCBvbiB0aGUgaW50cmljYWNpZXMgb2YgKml0cyogZGVwZW5kZW5jaWVzLCBhbnkgb3RoZXIgbGlicmFyaWVzLCBkcml2ZXJzLCBvciBmaXJtd2FyZSBjb21wb25lbnRzIHRoYXQgaXQgcmVsaWVzIG9uLiBUaGF0J3MgdGhlIGNvcmUgb2YgdGhlIGludmVzdGlnYXRpb24gZm9yIG1lIGF0IHRoZSBtb21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODk1LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzowNi41NzQ2NjA4MTNaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTksXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTk6XFx0Y29uZmlnIE1UNzkyNVVcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTVQ3OTJ4X1VTQlxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXFxuICAyNzpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMjg6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI3OjA2LjU3NDc3MTAyM1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTg2NTE2MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29uY2VybnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgZGVwZW5kZW5jaWVzIGhlcmUuIEFzIGZhciBhcyBJIGNhbiBzZWUsIHRoaXMgd2hvbGUgdGhpbmcgYm9pbHMgZG93biB0byBgTUFDODAyMTFgIGFuZCBgVVNCYC4gRXZlcnl0aGluZyBlbHNlLCBsaWtlIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYCwgdGhleSdyZSB0aGUgdGFyZ2V0cywgcmlnaHQ/IFRoZXNlIGFyZSB0aGUgYWN0dWFsIGRyaXZlcnMgb3IgZGV2aWNlcyB3ZSdyZSBkZWFsaW5nIHdpdGguIFRoZSBiYXNlIGNvbmZpZyBpbmNsdWRlcyBgTUFDODAyMTFgIGFuZCBgVVNCYCB3aGljaCBwcm92aWRlcyBzdXBwb3J0IHRvIGEgbG90IG9mIHRoZSBvdGhlciBkcml2ZXJzLlxuXG5IYW5nIG9uIGEgbWludXRlLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBgTVQ3NngwVWAgYW5kIGBNVDc2eDJVYCBleHBsaWNpdGx5IHJlcXVpcmUgYE1BQzgwMjExYCBhbmQgYFVTQmAsIHJpZ2h0PyBJJ2QgaGF2ZSB0byBjaGVjayB0aGUgY29kZSBidXQgdGhhdCBzZWVtcyBjb3JyZWN0LiBMZXQncyBtYWtlIHN1cmUgSSBkaWRuJ3QgbWlzcyBhbnl0aGluZy4gQmVmb3JlIEkgbW92ZSBvbiwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNVDc2X0NPUkVgIOKAkyBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJ3Qgb3Zlcmxvb2tlZCBhbnkgb3RoZXIgY3J1Y2lhbCBjb21wb25lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzM1MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI3OjEyLjc2MTI5MTY3OFoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3Nl9DT1JFXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTVQ3Nl9MRURTXFxuICAgNzpcXHRcXHRib29sXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcXG4gIDEwOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTVQ3Nl9VU0JcXG4gIDEzOlxcdFxcdHRyaXN0YXRlXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgMTU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI3OjEyLjc2MTQxMjQ4OFoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQ1NTg5MDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgTVQ3NiBEcml2ZXIgRGVwZW5kZW5jeSBDaGFpbioqXG5cbk9rYXksIHNvIHRoZSBkcml2ZXJzIGFyZSBoYW5kbGluZyB0aGUgYE1UNzZfQ09SRWAgc2VsZWN0aW9uLiBIbW0sIHdhaXQgYSBzZWNvbmQuLi4gbG9va2luZyBjbG9zZXIgYXQgYE1UNzZ4MFVgLCBJIGRvbid0IHNlZSBgTVQ3Nl9DT1JFYCBiZWluZyBkaXJlY3RseSBjaG9zZW4uIFRoYXQncyBwZWN1bGlhci4gTGV0J3MgdHJhY2UgaXQgYmFjay4gQWgsICpyaWdodCogLSBpdCdzIGxpa2VseSB0aGF0IGBNVDc2eDBfQ09NTU9OYCBkb2VzIHRoZSBoZWF2eSBsaWZ0aW5nLCBzaW5jZSBpdCBzZWxlY3RzIGBNVDc2eDAyX0xJQmAuIEFuZCAqdGhhdCogbGlicmFyeSAqbWlnaHQqIGJlIHRoZSBrZXkgdG8gcHVsbGluZyBpbiBgTVQ3Nl9DT1JFYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBzdXNwaWNpb24uIExldCdzIGRpdmUgaW50byBgTVQ3NngwMl9MSUJgIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTUwLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzoxNy4zMDcwMDM3MzFaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE2OlxcdGNvbmZpZyBNVDc2X1NESU9cXG4gIDE3OlxcdFxcdHRyaXN0YXRlXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgTVQ3NngwMl9MSUJcXG4gIDIxOlxcdFxcdHRyaXN0YXRlXFxuICAyMjpcXHRcXHRzZWxlY3QgTVQ3Nl9DT1JFXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBNVDc2eDAyX1VTQlxcbiAgMjU6XFx0XFx0dHJpc3RhdGVcXG4gIDI2OlxcdFxcdHNlbGVjdCBNVDc2X1VTQlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuICAyOTpcXHRcXHR0cmlzdGF0ZVxcbiAgMzA6XFx0XFx0c2VsZWN0IE1UNzZfQ09SRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzoxNy4zMDcwNjM1OTFaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQxODk0NTgxOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIE1UNzYgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBNZWRpYVRlayBNVDc2IGRyaXZlciBwYXRjaC4gVGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIGEgY2hhbmdlIGluIGBtdDc2X3NrYl9hZGp1c3RfcGFkYC4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggcmVwbGFjZXMgYHNrYl9wYWQoKWAgd2l0aCBgX19za2JfcGFkKC4uLiwgZmFsc2UpYC4gVGhpcyBpcyBrZXk7IGl0IHByZXZlbnRzIHRoZSBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgZnJvbSBiZWluZyBmcmVlZCB3aXRoaW4gYG10NzZfc2tiX2FkanVzdF9wYWRgIHdoZW4gYW4gZXJyb3Igb2NjdXJzLiBJIHNlZSB0aGF0IGBNVDc2eDAyX0xJQmAgc2VsZWN0cyBgTVQ3Nl9DT1JFYCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5UaGlzIG1vZGlmaWNhdGlvbiBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LiBFc3NlbnRpYWxseSwgaXQgYWx0ZXJzIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZXJyb3JzIGR1cmluZyBgc2tiYCBwYWRkaW5nLCBwb3RlbnRpYWxseSBhdm9pZGluZyBkb3VibGUtZnJlZXMgb3IgbWVtb3J5IGxlYWtzLiBQcmV2aW91c2x5LCBpZiBgc2tiX3BhZGAgZnJlZWQgdGhlIGBza2JgIGFuZCBhbiBlcnJvciBwcm9wYWdhdGVkIHVwIHRoZSBjYWxsIGNoYWluIChsaWtlIHRocm91Z2ggYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCksIHRoZXJlJ3MgYSByaXNrIG9mIHRoZSBjYWxsZXIgYWxzbyBhdHRlbXB0aW5nIHRvIGZyZWUgdGhlIGJ1ZmZlciwgbGVhZGluZyB0byBhIGRvdWJsZSBmcmVlLiBDb252ZXJzZWx5LCBpZiB0aGUgY2FsbGVyICpkaWRuJ3QqIGZyZWUgdGhlIGJ1ZmZlciwgdGhlcmUncyBhIG1lbW9yeSBsZWFrLiBOb3csIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZnJlZWluZyB0aGUgYHNrYmAgbGllcyB3aXRoIHRoZSBjYWxsZXIuXG5cbkdpdmVuIHRoZSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpbXBsaWNhdGlvbnMsIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSB3YW50IHRvIGZ1enogdGhvcm91Z2hseS4gQmFzZWQgb24gdGhlIGNvZGUsIEkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAsIGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAsIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYW5kIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLiBUaGVzZSBmdW5jdGlvbnMgc2VlbSB0byBiZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgb3IgcmVsYXRlZCBmdW5jdGlvbnMgaW4gdGhlIGNhbGwgY2hhaW4uXG5cblRvIGVuYWJsZSB0aGUgY29ycmVjdCBlbnZpcm9ubWVudCBmb3IgZnV6emluZywgSSdsbCBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9ucy4gSSdsbCBuZWVkIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYCB0byBjb3ZlciB0aGUgcmVsZXZhbnQgZHJpdmVyIGZhbWlsaWVzLiBJJ2xsIGFsc28gYWRkIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBldmVuIHRob3VnaCB0aGVzZSBhcmUgdXN1YWxseSBlbmFibGVkLCB0byBtYWtlIHN1cmUgSSdtIGNvdmVyZWQuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBjaGFuZ2UgaW1wYWN0cyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdGhlIGZvY3VzIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGludGVyZmFjZSBvZiB0aGVzZSBNZWRpYVRlayBkcml2ZXJzLCBtYWtpbmcgVVNCIGZ1enppbmcgYSByZWxldmFudCBhbmQgdXNlZnVsIHRlY2huaXF1ZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDQxMCwiT3V0cHV0VG9rZW5zIjoyNTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzozMS40OTY1MjQzNDVaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUxNjEyNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIixcbiAgICBcIk1UNzY2M1VcIixcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2X3NrYl9hZGp1c3RfcGFkXCIsXG4gICAgXCJtdDc2eDAydV90eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgc2tiX3BhZCB0byBfX3NrYl9wYWQoLi4uLCBmYWxzZSkgaW4gbXQ3Nl9za2JfYWRqdXN0X3BhZCwgcHJldmVudGluZyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgbWVtb3J5IG1hbmFnZW1lbnQgKGF2b2lkaW5nIGRvdWJsZS1mcmVlIG9yIG1lbW9yeSBsZWFrcykuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHZhcmlvdXMgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIixcbiAgICBcIk1UNzY2M1VcIixcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2X3NrYl9hZGp1c3RfcGFkXCIsXG4gICAgXCJtdDc2eDAydV90eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgc2tiX3BhZCB0byBfX3NrYl9wYWQoLi4uLCBmYWxzZSkgaW4gbXQ3Nl9za2JfYWRqdXN0X3BhZCwgcHJldmVudGluZyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgbWVtb3J5IG1hbmFnZW1lbnQgKGF2b2lkaW5nIGRvdWJsZS1mcmVlIG9yIG1lbW9yeSBsZWFrcykuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHZhcmlvdXMgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzozMS42NTE2OTY2NTlaIiwiU2VxIjo0NywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDIwOTI1NDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6Mjc6MzEuNjUyNTUxNzI5WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIyMDIwMDY0Nzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgc2tiX3BhZChsYXN0LCBwYWQpYCB3aXRoIGBfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSlgLiBUaGUgYHNrYl9wYWQoKWAgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCBgX19za2JfcGFkKClgIHRoYXQgcGFzc2VzIGB0cnVlYCBmb3IgdGhlIGBmcmVlX29uX2Vycm9yYCBhcmd1bWVudCwgbWVhbmluZyBpdCBmcmVlcyB0aGUgc2tiIGlmIHBhZGRpbmcgZmFpbHMuIElmIGBza2JfcGFkKClgIGZhaWxzIGFuZCBmcmVlcyB0aGUgc2tiIChvciBhIGZyYWdtZW50IG9mIGl0KSwgdGhlIGNhbGxlciBvZiBgbXQ3Nl9za2JfYWRqdXN0X3BhZCgpYCBtaWdodCBhbHNvIGF0dGVtcHQgdG8gZnJlZSB0aGUgb3JpZ2luYWwgc2tiIHVwb24gcmVjZWl2aW5nIHRoZSBgLUVOT01FTWAgZXJyb3IsIGxlYWRpbmcgdG8gYSBkb3VibGUgZnJlZSBvciB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5LlxcblxcbkJ5IGNoYW5naW5nIHRoZSBjYWxsIHRvIGBfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSlgLCB0aGUgcGF0Y2ggcHJldmVudHMgdGhlIHNrYiBmcm9tIGJlaW5nIGZyZWVkIG9uIGVycm9yLCBhbGxvd2luZyB0aGUgY2FsbGVyIHRvIHNhZmVseSBoYW5kbGUgdGhlIGNsZWFudXAgd2l0aG91dCB0cmlnZ2VyaW5nIGEgZG91YmxlIGZyZWUuXFxuXFxuRG91YmxlIGZyZWUgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MgYXJlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB0aGF0IGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMWQ0Y2FiOGVkMmJkZDUzNGQ0MjQxNjdkNWUzNDgxYzRmYTM4Mzg1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDk6MjU6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbmluZGV4IDM3MDdlZTE5ZTRhZTcuLmVjNTAzNTIxYWU2MzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguY1xuQEAgLTg3OSw3ICs4NzksNyBAQCBpbnQgbXQ3Nl9za2JfYWRqdXN0X3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoc2tiX3BhZChsYXN0LCBwYWQpKVxuK1x0aWYgKF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRfX3NrYl9wdXQobGFzdCwgcGFkKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI3OjMxLjY1MjU1MzIzOVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM4MzgxNDIxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIFBvdGVudGlhbCBNZW1vcnkgU2FmZXR5IElzc3VlcyoqXG5cbk9rYXksIGhlcmUncyB3aGF0J3MgcnVubmluZyB0aHJvdWdoIG15IGhlYWQgYXMgSSByZXZpZXcgdGhpcyBwYXRjaC4gVGhlIGtleSBjaGFuZ2UgaXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguY2AsIHdoZXJlIHRoZXkndmUgc3dhcHBlZCBgc2tiX3BhZChsYXN0LCBwYWQpYCBmb3IgYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAgd2l0aGluIGBtdDc2X3NrYl9hZGp1c3RfcGFkYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2h5IHRoZSBjaGFuZ2U/IFdoYXQncyB0aGUgY29udGV4dCBoZXJlP1wiXG5cbkZpcnN0LCBJIG5lZWQgdG8gZGlnIGludG8gd2hhdCBgX19za2JfcGFkYCBhY3R1YWxseSBkb2VzLCBlc3BlY2lhbGx5IHRoZSBtZWFuaW5nIG9mIHRoYXQgdGhpcmQgYGZhbHNlYCBhcmd1bWVudC4gUXVpY2tseSBsb29raW5nIGF0IHRoZSBkZWZpbml0aW9ucywgSSBzZWUgYHNrYl9wYWRgIGlzIGp1c3QgYSB3cmFwcGVyIGZvciBgX19za2JfcGFkYCwgYW5kIHRoZSB0aGlyZCBwYXJhbWV0ZXIgaXMgcmVsYXRlZCB0byBlcnJvciBoYW5kbGluZyDigJMgc3BlY2lmaWNhbGx5LCB3aGV0aGVyIHRvIGBmcmVlX29uX2Vycm9yYC4gQS1oYSEgTm93IGl0J3Mgc3RhcnRpbmcgdG8gY2xpY2suXG5cblJpZ2h0LCBgc2tiX3BhZGAgKml0c2VsZiogY2FsbHMgYF9fc2tiX3BhZGAgd2l0aCBgdHJ1ZWAgZm9yIGBmcmVlX29uX2Vycm9yYC4gU28sIHRoZSBvbGQgY29kZSdzIGxvZ2ljIHdhczogaWYgYHNrYl9wYWRgIGZhaWxlZCAoZS5nLiwgYC1FTk9NRU1gKSwgaXQgZnJlZWQgdGhlIGBsYXN0YCBza2IuIFRoZSBjb2RlIHRoZW4gY2hlY2tlZCB0aGUgcmV0dXJuIHZhbHVlLCBhbmQgaWYgaXQgd2FzIGFuIGVycm9yLCByZXR1cm5lZCBgLUVOT01FTWAuXG5cbk5vdywgd2FpdCBhIHNlY29uZC4uLiB0aGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcgYW5kIGNvbmNlcm5pbmcuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIGNhbGxlciAqYWxzbyogbWlnaHQgYmUgaGFuZGxpbmcgZXJyb3JzIGJ5IGZyZWVpbmcgdGhlIGBza2JgLCBgbGFzdGAsIG9yIHRoZSBmcmFnX2xpc3Qgc2tiLiBTbywgaWYgYHNrYl9wYWRgIGZhaWxzIGFuZCBmcmVlcyB0aGUgYGxhc3RgIHNrYiwgYW5kIHRoZSBjYWxsZXIgKmFsc28qIGZyZWVzLCB0aGF0J3MgYSBjbGFzc2ljIGRvdWJsZS1mcmVlIHNjZW5hcmlvLCBsZWFkaW5nIHRvIGEgY3Jhc2ggb3IgdW5kZWZpbmVkIGJlaGF2aW91ci4gVGhlIGNhbGxlciBpcyBwcm9iYWJseSBhbHNvIGZyZWVpbmcgdGhlIHNrYiBvbiBlcnJvciwgd2hpY2ggbWVhbnMgd2UgY2FuIGF2b2lkIHRoZSBkb3VibGUgZnJlZSBvciB1c2UtYWZ0ZXItZnJlZSBieSBjaGFuZ2luZyB0aGUgYGZyZWVfb25fZXJyb3JgIHBhcmFtZXRlciBvZiB0aGUgdW5kZXJseWluZyBtZXRob2QuXG5cblNvLCB0aGlzIHBhdGNoIGNoYW5nZXMgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAgdG8gKnByZXZlbnQqIGBfX3NrYl9wYWRgIGZyb20gZnJlZWluZyBgbGFzdGAgb24gZXJyb3IuIFRoaXMgZ2l2ZXMgdGhlIGNhbGxlciBtb3JlIGNvbnRyb2wgYW5kIGVuc3VyZXMgb25seSBvbmUgZnJlZSBvY2N1cnMsIHRodXMgYXZvaWRpbmcgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb3IgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eS4gVGhhdCdzIGEgZ29vZCBmaW5kISBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSB3b3VsZCBoYXZlIGxpa2VseSBjYXVnaHQgdGhpcywgZXZlbnR1YWxseS5cblxuTm93LCBteSBleHBlcnQgbWluZCBpcyBnb2luZyBvbmUgc3RlcCBmdXJ0aGVyLiBJcyB0aGlzIGNoYW5nZSBpbnRyb2R1Y2luZyBhbnkgKm5ldyogcmlza3M/IENvdWxkIHRoaXMgY3JlYXRlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlPyBObywgSSBkb24ndCB0aGluayBzby4gVGhlIHBhdGNoIG9ubHkgYWx0ZXJzIHRoZSBmcmVlaW5nIGJlaGF2aW9yIG9uIGVycm9yLCBub3QgdGhlIGNvbnRlbnQgb2YgdGhlIHNrYiBpdHNlbGYuXG5cbk9rYXksIHRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGZpeCBmb3IgYSBtZW1vcnkgc2FmZXR5IGlzc3VlLiBJJ2xsIHZlcmlmeSB0aGUgbG9naWMgY2FyZWZ1bGx5LCBhbmQgcnVuIGEgcXVpY2sgZGlmZiBjaGVjaywgYnV0IG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGxlZ2l0aW1hdGUgZG91YmxlLWZyZWUvdXNlLWFmdGVyLWZyZWUgYnVnLiBHb29kIGNhdGNoIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTkwLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6Mjc6NDIuMDM2MzcyMzY2WiIsIlNlcSI6NTAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDM3MTI5NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9za2JfYWRqdXN0X3BhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTg2ND1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X2FjX3RvX2h3cSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODY2OmludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtODg4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODg5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfc2tiX2FkanVzdF9wYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04OTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI3OjQyLjU4MDA4OTk1WiIsIlNlcSI6NTEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNjMxMTU4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYG10NzZfc2tiX2FkanVzdF9wYWRgKipcblxuT2theSwgdGltZSB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG10NzZfc2tiX2FkanVzdF9wYWRgLiBXZSd2ZSBiZWVuIHNlZWluZyBzb21lIG9kZCBiZWhhdmlvciwgYW5kIHRoaXMgZnVuY3Rpb24gaXMgYSBsaWtlbHkgY2FuZGlkYXRlIGZvciBjb250cmlidXRpbmcgdG8gaXQuIEkgd2FudCB0byBtYWtlICphYnNvbHV0ZWx5KiBjZXJ0YWluIEkgdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdCdzIGhhbmRsaW5nIHRoZSBTS0IncyBkYXRhIGJ1ZmZlciBhZGp1c3RtZW50cywgZXNwZWNpYWxseSBhcm91bmQgdGhlIHBhZGRpbmcuIE15IGd1dCBmZWVsaW5nIGlzIHdlIG1pZ2h0IGJlIG1pc3Npbmcgc29tZXRoaW5nIHN1YnRsZSBpbiB0aGUgaW50ZXJhY3Rpb24gd2l0aCBoYXJkd2FyZSBETUEgb3IgbWVtb3J5IGFsaWdubWVudC4gTmVlZCB0byB2ZXJpZnkgaXRzIGludGVyYWN0aW9ucyB3aXRoIHRoZSBSWC9UWCBwYXRocywgZXNwZWNpYWxseSB0aGUgaW1wbGljYXRpb25zIG9mIHByZS1wZW5kaW5nL2FwcGVuZGluZyBkYXRhLiBBbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgYXJlIG15IHByaW1hcnkgY29uY2VybiBoZXJlOyBkYXRhIGNvcnJ1cHRpb24gaXMgdGhlIHdvcnN0LWNhc2Ugc2NlbmFyaW8uIEl0J3MgYSBrZXkgcGllY2Ugb2YgdGhlIGRyaXZlciwgc28gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgYXNzdW1wdGlvbnMgYXJlIGFsbCBzdGlsbCB2YWxpZCwgZ2l2ZW4gYW55IHJlY2VudCBjaGFuZ2VzIHRvIHRoZSB3aXJlbGVzcyBmaXJtd2FyZSBhbmQvb3IgaGFyZHdhcmUuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzExLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6Mjc6NDUuNzQzMjA5MjQzWiIsIlNlcSI6NTIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogODY2LFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODY2OlxcdGludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpXFxuIDg2NzpcXHR7XFxuIDg2ODpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqaXRlciwgKmxhc3QgPSBza2I7XFxuIDg2OTpcXHRcXG4gODcwOlxcdFxcdC8qIEZpcnN0IHBhY2tldCBvZiBhIEEtTVNEVSBidXJzdCBrZWVwcyB0cmFjayBvZiB0aGUgd2hvbGUgYnVyc3RcXG4gODcxOlxcdFxcdCAqIGxlbmd0aCwgbmVlZCB0byB1cGRhdGUgbGVuZ3RoIG9mIGl0IGFuZCB0aGUgbGFzdCBwYWNrZXQuXFxuIDg3MjpcXHRcXHQgKi9cXG4gODczOlxcdFxcdHNrYl93YWxrX2ZyYWdzKHNrYiwgaXRlcikge1xcbiA4NzQ6XFx0XFx0XFx0bGFzdCA9IGl0ZXI7XFxuIDg3NTpcXHRcXHRcXHRpZiAoIWl0ZXItXFx1MDAzZW5leHQpIHtcXG4gODc2OlxcdFxcdFxcdFxcdHNrYi1cXHUwMDNlZGF0YV9sZW4gKz0gcGFkO1xcbiA4Nzc6XFx0XFx0XFx0XFx0c2tiLVxcdTAwM2VsZW4gKz0gcGFkO1xcbiA4Nzg6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDg3OTpcXHRcXHRcXHR9XFxuIDg4MDpcXHRcXHR9XFxuIDg4MTpcXHRcXG4gODgyOlxcdFxcdGlmIChfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSkpXFxuIDg4MzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gODg0OlxcdFxcbiA4ODU6XFx0XFx0X19za2JfcHV0KGxhc3QsIHBhZCk7XFxuIDg4NjpcXHRcXG4gODg3OlxcdFxcdHJldHVybiAwO1xcbiA4ODg6XFx0fVxcbiA4ODk6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9za2JfYWRqdXN0X3BhZCk7XFxuIDg5MDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6Mjc6NDUuNzQzMzY5NTMzWiIsIlNlcSI6NTMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5MjkyMTc1NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYG10NzZfc2tiX2FkanVzdF9wYWRgIElzc3VlKipcblxuT2theSwgc28gaGVyZSdzIHRoZSBkZWFsLiBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAgaXMgZGVzaWduZWQgc3VjaCB0aGF0IGl0cyBjYWxsZXIgdGFrZXMgcmVzcG9uc2liaWxpdHkgZm9yIGhhbmRsaW5nIGFueSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy4gSWYgYG10NzZfc2tiX2FkanVzdF9wYWRgIHRocm93cyBhbiBgLUVOT01FTWAgZXJyb3IsIHRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gY2xlYW4gdXAsIHdoaWNoIHVzdWFsbHkgbWVhbnMgZnJlZWluZyB0aGUgYHNrYmAuIE5vdywgaGVyZSdzIHRoZSBwb3RlbnRpYWwgcGl0ZmFsbDogaWYgYHNrYl9wYWRgIGhhcyAqYWxyZWFkeSogZGVhbGxvY2F0ZWQgYGxhc3RgICh0aGF0IGNvdWxkIGJlIHRoZSBgc2tiYCBpdHNlbGYgb3Igb25lIG9mIGl0cyBmcmFnbWVudHMpLCB0aGVuIHRoZSBjYWxsZXIncyBzdWJzZXF1ZW50IGF0dGVtcHQgdG8gZnJlZSB0aGUgYHNrYmAgaXMgZ29pbmcgdG8gdHJpZ2dlciBlaXRoZXIgYSBkb3VibGUtZnJlZSBvciBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLiBDbGVhcmx5LCB0aGlzIHBvaW50cyB0byBhIG5hc3R5IG1lbW9yeSBjb3JydXB0aW9uIHZ1bG5lcmFiaWxpdHkuXG5cblRoZSBnb29kIG5ld3MgaXMgdGhhdCB0aGlzIGlzIGEgdGV4dGJvb2sgY2FzZSBmb3IgS0FTQU4uIFdlIGFyZSBsb29raW5nIGF0IGFuIGlzc3VlIHdoZXJlIG1lbW9yeSBpcyBiZWluZyBpbmNvcnJlY3RseSBtYW5hZ2VkLCBsZWFkaW5nIHRvIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBzYW1lIG1lbW9yeSBpcyBiZWluZyBmcmVlZCBtdWx0aXBsZSB0aW1lcyBvciBhY2Nlc3NlZCBhZnRlciBpdCdzIGJlZW4gcmVsZWFzZWQuIFRoZSBuYXR1cmUgb2YgdGhlIGJ1ZyBkb2Vzbid0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgYW55IHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcy4gVGhlcmVmb3JlLCB0aGVyZSdzIGFic29sdXRlbHkgbm8gcmVhc29uIHRvIGJyaW5nIEtNU0FOIGludG8gdGhlIHBpY3R1cmUgaGVyZS5cblxuU28sIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgd2UgY2FuIGNvbmZpZGVudGx5IHNldCBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBLQVNBTiBpcyBwZXJmZWN0bHkgc3VpdGVkIHRvIGRpYWdub3NlIHRoZSBkb3VibGUtZnJlZS9VQUYgdGhhdCB0aGlzIGJ1ZyBjcmVhdGVzLiBUaGVyZSBpcyBubyBuZWVkIGZvciBLTVNBTi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk0MCwiT3V0cHV0VG9rZW5zIjoyNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzo1My42NzI1OTA0NjRaIiwiU2VxIjo1NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGBza2JfcGFkKGxhc3QsIHBhZClgIHdpdGggYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAuIFRoZSBgc2tiX3BhZCgpYCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIGBfX3NrYl9wYWQoKWAgdGhhdCBwYXNzZXMgYHRydWVgIGZvciB0aGUgYGZyZWVfb25fZXJyb3JgIGFyZ3VtZW50LCBtZWFuaW5nIGl0IGZyZWVzIHRoZSBza2IgaWYgcGFkZGluZyBmYWlscy4gSWYgYHNrYl9wYWQoKWAgZmFpbHMgYW5kIGZyZWVzIHRoZSBza2IgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLCB0aGUgY2FsbGVyIG9mIGBtdDc2X3NrYl9hZGp1c3RfcGFkKClgIG1pZ2h0IGFsc28gYXR0ZW1wdCB0byBmcmVlIHRoZSBvcmlnaW5hbCBza2IgdXBvbiByZWNlaXZpbmcgdGhlIGAtRU5PTUVNYCBlcnJvciwgbGVhZGluZyB0byBhIGRvdWJsZSBmcmVlIG9yIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkuXFxuXFxuQnkgY2hhbmdpbmcgdGhlIGNhbGwgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAsIHRoZSBwYXRjaCBwcmV2ZW50cyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IsIGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gc2FmZWx5IGhhbmRsZSB0aGUgY2xlYW51cCB3aXRob3V0IHRyaWdnZXJpbmcgYSBkb3VibGUgZnJlZS5cXG5cXG5Eb3VibGUgZnJlZSBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncyBhcmUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHRoYXQgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGBza2JfcGFkKGxhc3QsIHBhZClgIHdpdGggYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAuIFRoZSBgc2tiX3BhZCgpYCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIGBfX3NrYl9wYWQoKWAgdGhhdCBwYXNzZXMgYHRydWVgIGZvciB0aGUgYGZyZWVfb25fZXJyb3JgIGFyZ3VtZW50LCBtZWFuaW5nIGl0IGZyZWVzIHRoZSBza2IgaWYgcGFkZGluZyBmYWlscy4gSWYgYHNrYl9wYWQoKWAgZmFpbHMgYW5kIGZyZWVzIHRoZSBza2IgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLCB0aGUgY2FsbGVyIG9mIGBtdDc2X3NrYl9hZGp1c3RfcGFkKClgIG1pZ2h0IGFsc28gYXR0ZW1wdCB0byBmcmVlIHRoZSBvcmlnaW5hbCBza2IgdXBvbiByZWNlaXZpbmcgdGhlIGAtRU5PTUVNYCBlcnJvciwgbGVhZGluZyB0byBhIGRvdWJsZSBmcmVlIG9yIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkuXFxuXFxuQnkgY2hhbmdpbmcgdGhlIGNhbGwgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAsIHRoZSBwYXRjaCBwcmV2ZW50cyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IsIGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gc2FmZWx5IGhhbmRsZSB0aGUgY2xlYW51cCB3aXRob3V0IHRyaWdnZXJpbmcgYSBkb3VibGUgZnJlZS5cXG5cXG5Eb3VibGUgZnJlZSBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncyBhcmUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHRoYXQgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow9v8nz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-17 09:08:27 +0000 UTC FinishedAt: 2026-08-17 09:27:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76x0U", "MT76x2U", "MT7663U", "MT7921U", "MT7925U", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76x0U", "MT76x2U", "MT7663U", "MT7921U", "MT7925U", "MAC80211", "USB" ], "series_id": "fc8b3785-e67f-4321-a939-ab629582199a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt76_skb_adjust_pad", "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+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc2NjNVJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X3NrYl9hZGp1c3RfcGFkJiMzNDssCiAgICAmIzM0O210NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYHNrYl9wYWQobGFzdCwgcGFkKWAgd2l0aCBgX19za2JfcGFkKGxhc3QsIHBhZCwgZmFsc2UpYC4gVGhlIGBza2JfcGFkKClgIGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBhcm91bmQgYF9fc2tiX3BhZCgpYCB0aGF0IHBhc3NlcyBgdHJ1ZWAgZm9yIHRoZSBgZnJlZV9vbl9lcnJvcmAgYXJndW1lbnQsIG1lYW5pbmcgaXQgZnJlZXMgdGhlIHNrYiBpZiBwYWRkaW5nIGZhaWxzLiBJZiBgc2tiX3BhZCgpYCBmYWlscyBhbmQgZnJlZXMgdGhlIHNrYiAob3IgYSBmcmFnbWVudCBvZiBpdCksIHRoZSBjYWxsZXIgb2YgYG10NzZfc2tiX2FkanVzdF9wYWQoKWAgbWlnaHQgYWxzbyBhdHRlbXB0IHRvIGZyZWUgdGhlIG9yaWdpbmFsIHNrYiB1cG9uIHJlY2VpdmluZyB0aGUgYC1FTk9NRU1gIGVycm9yLCBsZWFkaW5nIHRvIGEgZG91YmxlIGZyZWUgb3IgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eS5cblxuQnkgY2hhbmdpbmcgdGhlIGNhbGwgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAsIHRoZSBwYXRjaCBwcmV2ZW50cyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IsIGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gc2FmZWx5IGhhbmRsZSB0aGUgY2xlYW51cCB3aXRob3V0IHRyaWdnZXJpbmcgYSBkb3VibGUgZnJlZS5cblxuRG91YmxlIGZyZWUgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MgYXJlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB0aGF0IGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBza2JfcGFkIHRvIF9fc2tiX3BhZCguLi4sIGZhbHNlKSBpbiBtdDc2X3NrYl9hZGp1c3RfcGFkLCBwcmV2ZW50aW5nIHRoZSBza2IgZnJvbSBiZWluZyBmcmVlZCBvbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBtZW1vcnkgbWFuYWdlbWVudCAoYXZvaWRpbmcgZG91YmxlLWZyZWUgb3IgbWVtb3J5IGxlYWtzKS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdmFyaW91cyBNZWRpYVRlayBtdDc2IHdpcmVsZXNzIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzMWQ0Y2FiOGVkMmJkZDUzNGQ0MjQxNjdkNWUzNDgxYzRmYTM4Mzg1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDk6MjU6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG5pbmRleCAzNzA3ZWUxOWU0YWU3Li5lYzUwMzUyMWFlNjMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbkBAIC04NzksNyAmIzQzOzg3OSw3IEBAIGludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGlmIChza2JfcGFkKGxhc3QsIHBhZCkpXG4mIzQzO1x0aWYgKF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRfX3NrYl9wdXQobGFzdCwgcGFkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzY2M1UmIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZfc2tiX2FkanVzdF9wYWQmIzM0OywKICAgICYjMzQ7bXQ3NngwMnVfdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBza2JfcGFkIHRvIF9fc2tiX3BhZCguLi4sIGZhbHNlKSBpbiBtdDc2X3NrYl9hZGp1c3RfcGFkLCBwcmV2ZW50aW5nIHRoZSBza2IgZnJvbSBiZWluZyBmcmVlZCBvbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBtZW1vcnkgbWFuYWdlbWVudCAoYXZvaWRpbmcgZG91YmxlLWZyZWUgb3IgbWVtb3J5IGxlYWtzKS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdmFyaW91cyBNZWRpYVRlayBtdDc2IHdpcmVsZXNzIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMWQ0Y2FiOGVkMmJkZDUzNGQ0MjQxNjdkNWUzNDgxYzRmYTM4Mzg1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTcgMDk6MjU6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMKaW5kZXggMzcwN2VlMTllNGFlNy4uZWM1MDM1MjFhZTYzMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYwpAQCAtODc5LDcgJiM0Mzs4NzksNyBAQCBpbnQgbXQ3Nl9za2JfYWRqdXN0X3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKQogCQl9CiAJfQogCi0JaWYgKHNrYl9wYWQobGFzdCwgcGFkKSkKJiM0MzsJaWYgKF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlfX3NrYl9wdXQobGFzdCwgcGFkKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MwoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZWRpYXRlayBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBhbHRlcnMgYG10NzZfc2tiX2FkanVzdF9wYWRgIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBzd2l0Y2hpbmcgZnJvbSBgc2tiX3BhZChsYXN0LCBwYWQpYCB0byBgX19za2JfcGFkKGxhc3QsIHBhZCwgZmFsc2UpYC4gUmlnaHQsIGBza2JfcGFkYCBpcyBqdXN0IGEgY29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgYF9fc2tiX3BhZGAgd2l0aCB0aGF0IHRoaXJkIGFyZ3VtZW50LCBgZnJlZV9vbl9lcnJvcmAsIHNldCB0byBgdHJ1ZWAuIFNvLCBlZmZlY3RpdmVseSwgdGhlIG9yaWdpbmFsIGNvZGUgZnJlZWQgdGhlIFNLQiBvbiBlcnJvciwgYW5kIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBpdCB0byAqbm90KiBmcmVlIGl0IG9uIGVycm9yLiBUaGlzIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgc3VidGxlIGRpZmZlcmVuY2UgaW4gaG93IG1lbW9yeSBpcyBtYW5hZ2VkIGR1cmluZyBwYWNrZXQgcGFkZGluZy4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBoZXJlLCBnaXZlbiBteSBleHBlcnRpc2UsIGlzIHRoZSBpbXBhY3Qgb2YgdGhpcy4gTXQ3NiBpcyBhIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlci4uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgdXNlIGNhc2UgdG8gZGV0ZXJtaW5lIHRoZSBpbXBhY3QuIFdhaXQsIGlzIHRoaXMgZHJpdmVyIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgaXQgZW11bGF0ZWQgaGFyZHdhcmUsIG9yIGlzIGl0IGEgVVNCIGRyaXZlcj8gVGhlIGFuc3dlciB3aWxsIGhlYXZpbHkgaW5mbHVlbmNlIHRoZSBpbXBhY3QuIE9rYXksIGxldCYjMzk7cyBjaGVjay4gQWgsIHJpZ2h0LCBgbXQ3NmAgZG9lcyBoYXZlIFVTQiBkcml2ZXJzOiBgbXQ3NngwMl91c2JgLCBgbXQ3NngydWAsIGBtdDc5MjF1YCwgYW5kIGEgZmV3IG90aGVycy4gCgpJJiMzOTtsbCBjaGVjayB0aGUgS2NvbmZpZyBub3cgdG8gc2VlIHdoaWNoIGRyaXZlcnMgYXJlIGVuYWJsZWQgaW4gd2hpY2ggc2NlbmFyaW9zIGFuZCBob3cgdGhpcyBjaGFuZ2UgbWlnaHQgcmlwcGxlIHRocm91Z2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgaXMgcmVsYXRlZCB0byBhIGNvbW1vbmx5IHVzZWQgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBvciBub3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3Nl9za2JfYWRqdXN0X3BhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE4NjM9dm9pZCBtdDc2X2V0aHRvb2xfd29ya2VyKHN0cnVjdCBtdDc2X2V0aHRvb2xfd29ya2VyX2luZm8gKndpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg2NC1cdFx0XHQgc3RydWN0IG10NzZfc3RhX3N0YXRzICpzdGF0cywgYm9vbCBlaHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTg2NTppbnQgbXQ3Nl9za2JfYWRqdXN0X3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4NjYtaW50IF9fbXQ3NnVfdmVuZG9yX3JlcXVlc3Qoc3RydWN0IG10NzZfZGV2ICpkZXYsIHU4IHJlcSwgdTggcmVxX3R5cGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jPTE3PW10NzY2M3VfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jLTMxLVx0cGFkID0gcm91bmRfdXAoc2tiLVx1MDAzZWxlbiwgNCkgJiM0MzsgNCAtIHNrYi1cdTAwM2VsZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2JfbWN1LmM6MzI6XHRyZXQgPSBtdDc2X3NrYl9hZGp1c3RfcGFkKHNrYiwgcGFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9tY3UuYy0zMy1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0xODE9aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMjE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMTg6XHRlcnIgPSBtdDc2X3NrYl9hZGp1c3RfcGFkKHNrYiwgcGFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMjE5LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYz00Nj1pbnQgbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGludCBwb3J0LCB1MzIgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjAtXHRwYWQgPSByb3VuZF91cChza2ItXHUwMDNlbGVuLCA0KSAmIzQzOyA0IC0gc2tiLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jOjYxOlx0cmV0dXJuIG10NzZfc2tiX2FkanVzdF9wYWQoc2tiLCBwYWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjItfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTc3Nj1pbnQgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODE1Olx0ZXJyID0gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MTYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MzM9aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjcxOlx0ZXJyID0gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjcyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYz01NTk9bXQ3NnNfdHhfcXVldWVfc2tiX3JhdyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmMtNTY0LVx0cGFkID0gcm91bmRfdXAoc2tiLVx1MDAzZWxlbiwgNCkgLSBza2ItXHUwMDNlbGVuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NTY1Olx0cmV0ID0gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy01NjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYz04NjQ9RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9hY190b19od3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzo4NjY6aW50IG10NzZfc2tiX2FkanVzdF9wYWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHBhZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04Njcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04ODgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjg4OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3NrYl9hZGp1c3RfcGFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04OTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE3MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gbXQ3Nl9za2JfYWRqdXN0X3BhZCoqCgpPa2F5LCBzbyBgbXQ3Nl9za2JfYWRqdXN0X3BhZGDigKYgdGhhdCByaW5ncyBhIGJlbGwuIEl04oCZcyB1c2VkIHdpdGhpbiB0aGUgbXQ3NiBmcmFtZXdvcmssIHNwZWNpZmljYWxseSB3aXRoaW4gaXRzIFVTQiBhbmQgU0RJTyBkcml2ZXJzLiBJbnRlcmVzdGluZy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBmdXp6aW5nIHBvc3NpYmlsaXRpZXMuIFNpbmNlIGl0JiMzOTtzIGluIHRoZSBVU0IgZHJpdmVyLCBJIHNob3VsZCBiZSBhYmxlIHRvIGxldmVyYWdlIGR1bW15X2hjZCBvciBzeXprYWxsZXLigJlzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gVGhhdCYjMzk7cyBhIGdyZWF0IHN0YXJ0aW5nIHBvaW50IGZvciBmaW5kaW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIEJ1dCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIG10NzYgVVNCIGRyaXZlcnMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gVW5kZXJzdGFuZGluZyB3aGF0JiMzOTtzIGVuYWJsZWQgYW5kIGRpc2FibGVkIHdpbGwgaGVscCBkZXRlcm1pbmUgdGhlIGF0dGFjayBzdXJmYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjpjb25maWcgTVQ3Nl9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Njpjb25maWcgTVQ3Nl9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNy1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTI6Y29uZmlnIE1UNzZfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxNjpjb25maWcgTVQ3Nl9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyMDpjb25maWcgTVQ3NngwMl9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI0OmNvbmZpZyBNVDc2eDAyX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI1LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Mjg6Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzY9Y29uZmlnIE1UNzkyeF9VU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNDEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWc6Mjpjb25maWcgTVQ3NjAzRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjAzRSAoUENJZSkgYW5kIE1UNzZ4OCBXTEFOIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjM6Y29uZmlnIE1UNzYxNV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo4OmNvbmZpZyBNVDc2MTVFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2MTVFIGFuZCBNVDc2NjNFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MjE6Y29uZmlnIE1UNzYyMl9XTUFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtNVDc2MjIgKFNvQykgV01BQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MzI6Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjM2OmNvbmZpZyBNVDc2NjNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTM3LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjYzVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6NDc6Y29uZmlnIE1UNzY2M1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDgtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2NjNTIChTRElPKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDBfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Njpjb25maWcgTVQ3NngwVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6MTk6Y29uZmlnIE1UNzZ4MEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDBFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDJfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Njpjb25maWcgTVQ3NngyRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngyRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE4OmNvbmZpZyBNVDc2eDJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngyVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQyOQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHF1aWNrIHJ1bmRvd24gb2YgdGhvc2UgY2hpcHNldHMsIGtlZXBpbmcgaW4gbWluZCBteSBmaWVsZCBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBNZWRpYXRlayBMaW5ldXAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhlIE1lZGlhdGVrIFdpRmkgY2hpcHNldCBsYW5kc2NhcGUuIEkmIzM5O3ZlIGdvdCBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYW5kIGBNVDc2NjNVYCBmbGFnZ2VkLCBvYnZpb3VzbHkgZmFtaWxpYXIgdGVycml0b3J5LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHVwIHRvIHNwZWVkIG9uIHRoZSAqZW50aXJlKiByYW5nZS4gR2l2ZW4gcmVjZW50IGRldmVsb3BtZW50cywgaXQmIzM5O3Mgd29ydGggY3Jvc3MtcmVmZXJlbmNpbmcgdGhlc2UgYWdhaW5zdCB0aGUgbmV3ZXIgb2ZmZXJpbmdzLiBTbywgbGV0JiMzOTtzIGNpcmNsZSBiYWNrIHRvIGNvbnNpZGVyIGhvdyBgTVQ3OTIxVWAgYW5kIGBNVDc5MjVVYCBmaXQgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBXaGVyZSBkbyB0aGV5IHN0YW5kIGluIHRoZSBldm9sdXRpb24gYW5kIHdoYXQgY2FwYWJpbGl0aWVzIGRvIHRoZXkgYnJpbmcgdG8gdGhlIHRhYmxlIGNvbXBhcmVkIHRvIHRoZXNlIG9sZGVyIGNoaXBzPyBLZWVwaW5nIGFuIGV5ZSBvbiB0aGUgYmlnZ2VyIHBpY3R1cmUgaXMga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI4PWNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzI6Y29uZmlnIE1UNzkyeF9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM2OmNvbmZpZyBNVDc5MnhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWc6Mjpjb25maWcgTVQ3OTE1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTE1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnOjE3OmNvbmZpZyBNVDc5OFhfV01BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7TVQ3OTh4IChTb0MpIFdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyODpjb25maWcgTVQ3OTIxVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6Mjpjb25maWcgTVQ3OTk2RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTk2IChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWc6MTY6Y29uZmlnIE1UNzk5Nl9OUFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTctXHRib29sIFwmIzM0O01UNzk5NiAoUENJZSkgTlBVIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDcwCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMjk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBNVDc2IERyaXZlciBVU0IgVnVsbmVyYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2VzIGluIHRoaXMgTVQ3NiBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBVU0Igc2luY2UgU0RJTyBpcyBhIGhhcmRlciB0YXJnZXQgZm9yIGZ1enppbmcuICBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBVU0Itc3BlY2lmaWMgZnVuY3Rpb25zIGFyZSBtb3N0IGludGVyZXN0aW5nLiBJJiMzOTt2ZSBub3RlZCB0aGF0IHdlIGNhbiBlbmFibGUgc3VwcG9ydCBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgY2hpcHNldHM6IGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0OyBrbm93aW5nIHRoZSBzdXBwb3J0ZWQgaGFyZHdhcmUgZ2l2ZXMgbWUgYSB3aWRlIHJhbmdlIHRvIGV4cGxvcmUuCgpUaGVuLCBJIGlkZW50aWZpZWQgdGhhdCB0aGUgYG10NzZfc2tiX2FkanVzdF9wYWRgIGZ1bmN0aW9uIGlzIHVzZWQgYnkgc2V2ZXJhbCBjcml0aWNhbC1sb29raW5nIGZ1bmN0aW9ucyBhY3Jvc3MgbXVsdGlwbGUgZGV2aWNlLXNwZWNpZmljIHN1Ym1vZHVsZXMuIEkmIzM5O20gbm90aW5nIHRoZSBwbGFjZXMgd2hlcmUgaXQmIzM5O3MgdXNlZDogaW4gYG10NzY2M3VfbWN1X3NlbmRfbWVzc2FnZWAgKHRoYXQgY291bGQgYmUgaW50ZXJlc3RpbmcgZm9yIGNvbW1hbmQgaW5qZWN0aW9uLCBvciBtZXNzaW5nIHdpdGggbWVzc2FnZXMgYmV0d2VlbiB0aGUgaG9zdCBhbmQgZmlybXdhcmUpLCBgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYG10NzZ4MDJ1X3NrYl9kbWFfaW5mb2AsIGBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCAodGhhdCYjMzk7cyBnb2luZyB0byBiZSBhIGxvdCBvZiBjb2RlIHJldXNlKSBhbmQgYG10NzZzX3R4X3F1ZXVlX3NrYl9yYXdgIHdoaWNoIGNvdWxkIGJlIHVzZWZ1bCB0byBpbnZlc3RpZ2F0ZSwgdGhvdWdoIHRoaXMgaXMgdGhlIFNESU8gaW1wbGVtZW50YXRpb24uICBTaW5jZSBJJiMzOTttIHRhcmdldGluZyBVU0IsIEkgY2FuIHByb2JhYmx5IGlnbm9yZSB0aGF0LgoKTm93LCBteSBhdHRlbnRpb24gaXMgcGFydGljdWxhcmx5IGRyYXduIHRvIGBtdDc2eDAydV9za2JfZG1hX2luZm9gLCBiZWNhdXNlIHRoYXQmIzM5O3MgcmlnaHQgaW4gdGhlIFVTQiBwYXRoLCBhbmQgaXQmIzM5O3MgY2FsbGluZyBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAuIEkmIzM5O2xsIHdhbnQgdG8gc2VlIHdoZXJlIGBtdDc2eDAydV9za2JfZG1hX2luZm9gIGlzIGFjdHVhbGx5IGNhbGxlZCBhbmQgd2hhdCBkYXRhIGlzIGJlaW5nIHBhc3NlZCB0byBpdC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBpZiBJIGNhbiBmaW5kIHNvbWV0aGluZyBleHBsb2l0YWJsZSB0aGVyZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwMnVfc2tiX2RtYV9pbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYi5oPTE0PWludCBtdDc2eDAydV9tY3VfZndfc2VuZF9kYXRhKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaC0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaDoxNzppbnQgbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGludCBwb3J0LCB1MzIgZmxhZ3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYi5oLTE4LWludCBtdDc2eDAydV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM9NDQ9RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMnVfbWFjX3N0YXJ0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6NDY6aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jPTY0PWludCBtdDc2eDAydV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtMTA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6MTEwOlx0ZXJyID0gbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHR4X2luZm8tXHUwMDNlc2tiLCBXTEFOX1BPUlQsIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTExMS1cdGlmIChlcnIgXHUwMDI2XHUwMDI2IHdjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz03MD1fX210NzZ4MDJ1X21jdV9zZW5kX21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTkwLVx0ICAgICAgIE1UX01DVV9NU0dfVFlQRV9DTUQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jOjkxOlx0cmV0ID0gbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHNrYiwgQ1BVX1RYX1BPUlQsIGluZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy05Mi1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NzQKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGNvZGUgZW50cnkgcG9pbnRzLCB0aGlua2luZyB0aHJvdWdoIHRoaXMgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgZXhhbWluaW5nIHRoZSBjb2RlOgoKKipBbmFseXppbmcgUG90ZW50aWFsIEVudHJ5IFBvaW50cyBmb3IgVHJhbnNtaXNzaW9uIFBhdGgqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCBhbmQgYF9fbXQ3NngwMnVfbWN1X3NlbmRfbXNnYCBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcyB0byBraWNrIHRoaW5ncyBvZmYuIFRoZXkmIzM5O3JlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciBleGFtaW5pbmcgdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzLCBnaXZlbiB0aGVpciBuYW1pbmcgY29udmVudGlvbi4gTm93LCBsZXQmIzM5O3MgYnJvYWRlbiB0aGUgc2NvcGUgYSBiaXQuIEkgc2hvdWxkIGFsc28gY2hlY2sgYG10NzY2M3VfbWN1X3NlbmRfbWVzc2FnZWAgYW5kIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCB0byBzZWUgaWYgdGhleSBhcmUgc2ltaWxhciBhbmQvb3Igb2ZmZXIgYW55IGFkZGl0aW9uYWwgaW5zaWdodHMgaW50byB0aGUgZGF0YSBmbG93LiBUaGlzIG1pZ2h0IGhlbHAgaWRlbnRpZnkgYW55IGRldmlhdGlvbnMgaW4gdGhlIGNoaXBzZXQmIzM5O3MgdHJhbnNtaXNzaW9uIHByb2NlZHVyZXMsIGRlcGVuZGluZyBvbiBob3cgaXQmIzM5O3MgaW50ZXJmYWNpbmcgKGUuZy4sIFVTQiB2cy4gU0RJTykuIEV4cGFuZGluZyB0aGUgc2VhcmNoIGFsd2F5cyBoZWxwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9NTQwPXZvaWQgbXQ3NjIyX3RyaWdnZXJfaGlmX2ludChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCBib29sIGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDItLyogdXNiICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NDM6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTQ0LVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jPTc2PXN0YXRpYyBpbnQgbXQ3NjYzc19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYy04MS1cdFx0LmRydl9mbGFncyA9IE1UX0RSVl9SWF9ETUFfSERSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjgyOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtODMtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTExMj1zdGF0aWMgaW50IG10NzY2M3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTExNy1cdFx0LmRydl9mbGFncyA9IE1UX0RSVl9SWF9ETUFfSERSIHwgTVRfRFJWX0hXX01HTVRfVFhRLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6MTE4Olx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTktXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM9MTc5PUVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jOjE4MTppbnQgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTE4Mi1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMjI0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MjI1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2Jfc2Rpby5jLTIyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwMDcKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSB3ZXJlIHRoaW5raW5nIHRocm91Z2ggdGhlIHByb2JsZW06CgoqKkNoZWNraW5nIFRYIFByZXBhcmF0aW9uIGZvciBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIGlzIHVzZWQgaW4gYm90aCB0aGUgVVNCIChgbXQ3NjYzdV9wcm9iZWApIGFuZCBTRElPIChgbXQ3NjYzc19wcm9iZWApIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBUaGF0IG1ha2VzIGl0IGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgVVNCIGZ1enppbmcsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBHaXZlbiB0aGF0IGl0JiMzOTtzIGEgY29tbW9uIGZ1bmN0aW9uLCBpdCBpcyBwcm9iYWJseSBjYWxsZWQgZnJvbSBzb21lIGNlbnRyYWwgcG9pbnQgb2YgdGhlIFVTQiBkcml2ZXIuIEl0JiMzOTtzIHRpbWUgdG8gYnJhbmNoIG91dC4gTGV0JiMzOTtzIHNoaWZ0IG91ciBmb2N1cyB0byBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCB0byBjaGVjayBpZiBhIHNpbWlsYXIgcGF0dGVybiBleGlzdHMsIGFuZCBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgZGlmZmVyZW5jZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiB0aG9zZSAqc2tiKiBwcmVwYXJhdGlvbiByb3V0aW5lcy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2UgbGlrZWx5IGxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTc2ND1tdDc5MjFfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc3NjppbnQgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03NzctXHRcdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MjEtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODIyOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MjMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MzI2PWludCBtdDc5MjFfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oLTMyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oOjMyODppbnQgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMjktXHRcdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM9OTA9c3RhdGljIGludCBtdDc5MjFzX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTk4LVx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6OTk6XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0xMDAtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE1OS1cdFx0XHRcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTYwOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNjEtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjMwMAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBtdDc5MjEgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGBtdDc5MjFgIFVTQi9TRElPIGRyaXZlciBpcyBiZWluZyBpbml0aWFsaXplZC4gTXkgY3VycmVudCBsaW5lIG9mIHRoaW5raW5nIHJldm9sdmVzIGFyb3VuZCBob3cgdGhlIHRyYW5zbWl0IHBhdGggaXMgc2V0IHVwLiBJIHNlZSB0aGF0IHRoZSBmdW5jdGlvbiBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIHRoZSBgbXQ3OTIxdV9wcm9iZWAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdGhlIGtleSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgc28gSSYjMzk7bSBnZXR0aW5nIGEgc2Vuc2Ugb2Ygd2hlcmUgdGhpcyBmaXRzIGludG8gdGhlIG92ZXJhbGwgc2NoZW1lLgoKTm93LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIHJlbGF0ZWQgZnVuY3Rpb24gZm9yIHRoZSBgbXQ3OTI1YCBzZXJpZXMuIExldCBtZSBjb21wYXJlIHRoYXQgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIHNvIHRoYXQgSSBjYW4gc2VlIHRoZSBwb3RlbnRpYWwgc2ltaWxhcml0aWVzIGFuZCBkaWZmZXJlbmNlcyBpbiB0aGUgdHJhbnNtaXQgcHJlcGFyYXRpb24gbG9naWMgb2YgdGhlIHR3by4gVGhpcyBjb21wYXJpc29uIHNob3VsZCBwcm92aWRlIHNvbWUgdmFsdWFibGUgaW5zaWdodHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjE9bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMzppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjM0LVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY3Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjc4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM2OT1pbnQgbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNzE6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzcyLVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MTUwPXN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU5LVx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjA6XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2MS1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMzc4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIGNsZWFyIHRoZSBjaGFuZ2UgZnJvbSBgc2tiX3BhZGAgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAgaW4gYG10NzkyNXVfcHJvYmVgIGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IHNlZW1zIHRvIGJlIHByZXZlbnRpbmcgdGhlIGZyZWVpbmcgb2YgdGhlIFNLQiBvbiBlcnJvciwgd2hpY2ggY291bGQgaGF2ZSBpbXBsaWNhdGlvbnMgZG93biB0aGUgbGluZS4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGlzIGNoYW5nZSBsaWVzIHdpdGhpbiBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAsIGFuZCB0aGF0JiMzOTtzIGNhbGxlZCBpbiBzZXZlcmFsIG90aGVyIHBsYWNlcyBiZXNpZGVzIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uCgpJIHNlZSB0aGF0IGBtdDc2eDAydV9za2JfZG1hX2luZm9gLCBgbXQ3NjYzdV9tY3Vfc2VuZF9tZXNzYWdlYCwgYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBhbGwgY2FsbCB0aGF0IHNhbWUgYG10NzZfc2tiX2FkanVzdF9wYWRgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdywgYmVjYXVzZSB0aG9zZSBhcmUgYWxsIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmchIFRoaXMgY291bGQgY3JlYXRlIGEgYnJvYWRlciBhdHRhY2sgc3VyZmFjZSB0aGFuIGluaXRpYWxseSBhbnRpY2lwYXRlZC4KClRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcHBlYXIgdG8gYmUgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc2NjNVYCwgYE1UNzkyMVVgLCBgTVQ3OTI1VWAsIGFuZCBvZiBjb3Vyc2UgYE1UNzZfVVNCYC4gTm93LCBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlc2UgY29uZmlndXJhdGlvbnMgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcy4gV2UgbmVlZCB0byB0cmFjZSB0aGlzIGZ1cnRoZXIgdG8gc2VlIHdoYXQgZWxzZSBjb3VsZCBiZSBhZmZlY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzZ4MFUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnPTI9Y29uZmlnIE1UNzZ4MF9DT01NT05cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjY6Y29uZmlnIE1UNzZ4MFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MFUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDIwNAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBNVDc2eDBVIERlcGVuZGVuY2llcyoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBNVDc2eDBVLiBCZWZvcmUgSSBldmVuIGJlZ2luIHRvIGNvbnNpZGVyIHRoZSBtYWluIGZ1bmN0aW9uYWxpdHksIEkgbmVlZCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaXRzIGRlcGVuZGVuY2llcy4gSSYjMzk7bSB0aGlua2luZyBiZXlvbmQganVzdCB0aGUgb2J2aW91cyBkcml2ZXIgbW9kdWxlcy4gV2hlcmUgZG9lcyB0aGlzIGNoaXAgaW50ZXJmYWNlPyBBcmUgdGhlcmUgc3BlY2lmaWMga2VybmVsIHZlcnNpb25zIG9yIGZlYXR1cmVzIGl0IHJlbGllcyBvbj8gV2hhdCBhYm91dCBmaXJtd2FyZT8gQXJlIHRoZXJlIGFueSBoYXJkY29kZWQgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGhhcmR3YXJlIGVudmlyb25tZW50LCBsaWtlIHNwZWNpZmljIGNsb2NrIGZyZXF1ZW5jaWVzIG9yIG1lbW9yeSBtYXBwaW5nIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkPwoKTGV0JiMzOTtzIHNlZSwgd2hhdCB0b29scyBhcmUgYXZhaWxhYmxlIHRvIGhlbHAgaWRlbnRpZnkgdGhlc2UgZGVwZW5kZW5jaWVzPyBgbW9kaW5mb2AgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBvZiBjb3Vyc2UsIGJ1dCB0aGF0JiMzOTtsbCBvbmx5IGdpdmUgbWUgdGhlIGV4cGxpY2l0bHkgc3RhdGVkIG1vZHVsZSBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBkZWVwZXIuIENyb3NzLXJlZmVyZW5jaW5nIHRoZSBzb3VyY2UgY29kZSBmb3IgYW55IGBpbmNsdWRlYCBkaXJlY3RpdmVzIGFuZCBzeW1ib2wgdXNhZ2Ugd2l0aCBvdGhlciBtb2R1bGVzIGluIHRoZSBzeXN0ZW0gaXMgZXNzZW50aWFsLiBBbnl0aGluZyBub24tc3RhbmRhcmQ/IEFyZSB0aGVyZSBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyBsdXJraW5nIGluIGN1c3RvbSBidWlsZCBjb25maWd1cmF0aW9ucyBvciBwbGF0Zm9ybS1zcGVjaWZpYyBkZWZpbml0aW9ucz8KCkZ1cnRoZXJtb3JlLCBJIGhhdmUgdG8gY29uc2lkZXIgdGhlIHBvdGVudGlhbCBmb3IgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLiBBIHNlZW1pbmdseSBpbmRlcGVuZGVudCBtb2R1bGUgbWlnaHQgaW5kaXJlY3RseSBpbnRlcmFjdCB3aXRoIE1UNzZ4MFUgdGhyb3VnaCBzaGFyZWQgcmVzb3VyY2VzIG9yIEFQSXMuIFRoYXQgcmVxdWlyZXMgYSBicm9hZGVyIHN5c3RlbSB2aWV3LCBvciBwZXJoYXBzIGEgcnVudGltZSBhbmFseXNpcyB0byBpZGVudGlmeSBzdWNoIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gbWFwIG91dCB0aGUgY2FsbCBncmFwaCBhbmQgcmVzb3VyY2UgdXNhZ2UgdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLgoKVWx0aW1hdGVseSwgdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSBsYW5kc2NhcGUgaXMgY3JpdGljYWwuIE9ubHkgdGhlbiBjYW4gSSBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIG9yIGRlYnVnZ2luZyBzdGVwcyBJIG5lZWQgdG8gaW1wbGVtZW50LiBJdCB3aWxsIGFsc28gaGVscCBtZSBwcm9wZXJseSB0cm91Ymxlc2hvb3QgYW5kIHJlc29sdmUgYW55IGNvbXBhdGliaWxpdHkgaXNzdWVzLiBUaGlzIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMgaW4gZWl0aGVyIGludGVncmF0aW5nIG9yIGRlYnVnZ2luZyB0aGlzIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1UNzZ4MF9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3NngwMl9MSUJcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3NngwVVxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gICA4Olx0XHRzZWxlY3QgTVQ3NngwX0NPTU1PTlxuICAgOTpcdFx0c2VsZWN0IE1UNzZ4MDJfVVNCXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFVTQlxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjEwVS1iYXNlZCBVU0IgMi4wIHdpcmVsZXNzIGRvbmdsZXMsXG4gIDE0Olx0XHQgIHdoaWNoIGNvbXBseSB3aXRoIElFRUUgODAyLjExYWMgc3RhbmRhcmRzIGFuZCBzdXBwb3J0IDF4MVxuICAxNTpcdFx0ICA0MzNNYnBzIFBIWSByYXRlLlxuICAxNjpcdFxuICAxNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNVDc2eDBFXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2eDBFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTA2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYSBXaXJlbGVzcyBEZXZpY2UgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoaXMgd2lyZWxlc3MgZGV2aWNlLCBwcm9iYWJseSB0cnlpbmcgdG8gdHJvdWJsZXNob290IHNvbWV0aGluZyBvciBpbnRlZ3JhdGUgaXQgaW50byBhIG5ldyBzZXR1cC4gTXkgaW1tZWRpYXRlIGNvbmNlcm5zIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHM6IGBNQUM4MDIxMWAgYW5kIGBVU0JgLiBUaG9zZSBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyBJJiMzOTttIGV4cGVjdGluZyB0byBiZSBpbnZvbHZlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnJhbWV3b3JrIGlzIHByZXNlbnQsIGFuZCB0aGF0IHRoZSBVU0Igc3Vic3lzdGVtIGlzIGhhbmRsaW5nIHRoZSBkZXZpY2UgY29ycmVjdGx5LiAKCk5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMgYWJvdXQgdGhpcyBzcGVjaWZpYyBjaGlwc2V0OiBgTVQ3NngyVWAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGRpZyBpbiBhbmQgc2VlIGlmIHRoZSBkcml2ZXIgaXMgbG9hZGVkLCBpZiBpdCYjMzk7cyBiZWhhdmluZyBhcyBleHBlY3RlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkga25vd24gaXNzdWVzIHdpdGggaXQuIFRoaXMgaXMgdGhlIGNydWNpYWwgc3RlcCB0byBwaW5wb2ludGluZyB0aGUgcHJvYmxlbSBhbmQgd2hlcmUgdGhlIHJlYWwgaW52ZXN0aWdhdGlvbiBiZWdpbnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBtb2R1bGVzLCB0aGUgZGV2aWNlIHRyZWUgKGlmIGFwcGxpY2FibGUpLCBhbmQgYW55IHJlbGV2YW50IGRvY3VtZW50YXRpb24gZm9yIHRoaXMgcGFydGljdWxhciBkZXZpY2UuIEVzc2VudGlhbGx5LCBJJiMzOTttIHNldHRpbmcgdGhlIHN0YWdlIGZvciBzb21lIGluLWRlcHRoIGRlYnVnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzZ4Ml9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3NngwMl9MSUJcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3NngyRVxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngyRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuICAgODpcdFx0c2VsZWN0IE1UNzZ4Ml9DT01NT05cbiAgIDk6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTA6XHRcdGRlcGVuZHMgb24gUENJXG4gIDExOlx0XHRoZWxwXG4gIDEyOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2MTIvTVQ3NjAyL01UNzY2Mi1iYXNlZCBQQ0llIHdpcmVsZXNzXG4gIDEzOlx0XHQgIGRldmljZXMsIHdoaWNoIGNvbXBseSB3aXRoIElFRUUgODAyLjExYWMgc3RhbmRhcmRzIGFuZCBzdXBwb3J0XG4gIDE0Olx0XHQgIDJTUyB0byA4NjZNYml0L3MgUEhZIHJhdGUuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIE1UNzZ4MlVcbiAgMTk6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MlUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMDpcdFx0c2VsZWN0IE1UNzZ4Ml9DT01NT05cbiAgMjE6XHRcdHNlbGVjdCBNVDc2eDAyX1VTQlxuICAyMjpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAyMzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMlUtYmFzZWQgVVNCIDMuMCB3aXJlbGVzcyBkb25nbGVzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU3OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3NpbmcgYXMgYW4gZXhwZXJ0IGluIG15IGZpZWxkOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIFdpcmVsZXNzIERyaXZlciBMYW5kc2NhcGUqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIHNpdHVhdGlvbi4gRmlyc3QsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IGRlcGVuZGVuY2llcy4gUmlnaHQgYXdheSwgYE1BQzgwMjExYCBpcyBqdW1waW5nIG91dCBhdCBtZSBhcyBhIGNydWNpYWwgY29tcG9uZW50LiBUaGlzIGlzIHRoZSBjb3JlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3RhY2ssIHNvIGFueXRoaW5nIGludm9sdmluZyB3aXJlbGVzcyB3aWxsIGRlZmluaXRlbHkgcmVseSBvbiBpdC4gQW5kIGdpdmVuIHRoZSAmIzM0O1UmIzM0OyBkZXNpZ25hdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSBjaGlwc2V0IG5hbWUgSSYjMzk7bSBhbHNvIHN1c3BlY3Rpbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgVVNCIGJhc2VkLCBzbyBgVVNCYCBpcyBhbHNvIGluIHRoZSBtaXguIE5vdyB0aGF0IEkgaGF2ZSBteSBjb3JlIGRlcGVuZGVuY2llcyBpZGVudGlmaWVkLCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3M6IEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIGBNVDc2NjNVYCBjaGlwc2V0LiBUaW1lIHRvIGRpdmUgaW50byB3aGF0IHRoYXQgZW50YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdFx0ICAyLjQgR0h6IG9ubHkuXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XHRzZWxlY3QgTVQ3NjE1X0NPTU1PTlxuICAzNTpcdFxuICAzNjpcdGNvbmZpZyBNVDc2NjNVXG4gIDM3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2NjNVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMzg6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAzOTpcdFx0c2VsZWN0IE1UNzY2M19VU0JfU0RJT19DT01NT05cbiAgNDA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgNDE6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDQyOlx0XHRoZWxwXG4gIDQzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2NjNVIDgwMi4xMWFjIDJ4MjoyIHdpcmVsZXNzIGRldmljZXMuXG4gIDQ0Olx0XG4gIDQ1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDQ2Olx0XG4gIDQ3Olx0Y29uZmlnIE1UNzY2M1NcbiAgNDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzY2M1MgKFNESU8pIHN1cHBvcnRcJiMzNDtcbiAgNDk6XHRcdHNlbGVjdCBNVDc2X1NESU9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxMzEKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIE1UNzkyMVUgYW5kIGl0cyBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBNVDc5MjFVYOKApiBMZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBJIGFscmVhZHkga25vdyB0aGF0IEkgbmVlZCB0byBjb25zaWRlciBgTUFDODAyMTFgLCB0aGF0JiMzOTtzIGEgZ2l2ZW4gZm9yIGFueSB3aXJlbGVzcyBjaGlwc2V0LCBhbmQgYWxzbyB0aGF0IGl0IHdpbGwgbGlrZWx5IHJlbHkgb24gYFVTQmAgZm9yIGNvbW11bmljYXRpb24uIFRob3NlIHR3byBhcmUgZnVuZGFtZW50YWwuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhlIGBNVDc5MjFVYCBpdHNlbGYuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgdGhlIHNwZWNpZmljIGRyaXZlciB2ZXJzaW9uIGNvbXBhdGliaWxpdHksIGFueSBrbm93biBmaXJtd2FyZSBpc3N1ZXMsIGFuZCBwZXJmb3JtYW5jZSBiZW5jaG1hcmtzIGluIGNvbXBhcmlzb24gdG8gc2ltaWxhciBjaGlwc2V0cy4gSSBhbHNvIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIGBNQUM4MDIxMWAgZnJhbWV3b3JrIHZlcnNpb24gSSYjMzk7bSB0YXJnZXRpbmcgc3VwcG9ydHMgdGhpcyBwYXJ0aWN1bGFyIGRldmljZS4gSXMgdGhlcmUgYW55dGhpbmcgdW51c3VhbCBhYm91dCB0aGUgVVNCIGltcGxlbWVudGF0aW9uIG9yIHBvd2VyIG1hbmFnZW1lbnQgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgcmVwb3J0ZWQgcXVpcmtzIG9yIHdvcmthcm91bmRzIEkgc2hvdWxkIGludmVzdGlnYXRlPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgcXVpY2sgc2VhcmNoIG9mIHRoZSBtYWlsaW5nIGxpc3RzIGFuZCBidWcgdHJhY2tlcnMgcmVsYXRlZCB0byB0aG9zZSBjb21wb25lbnRzIHRvIHNlZSBpZiBhbnl0aGluZyBqdW1wcyBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDIxOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDIyOlx0XHRkZXBlbmRzIG9uIE1NQ1xuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxUyA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDI1Olx0XG4gIDI2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE1UNzkyMVVcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAzMDpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMzE6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDMyOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDMzOlx0XHRkZXBlbmRzIG9uIFVTQlxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDM2Olx0XG4gIDM3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NzI5CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gTVQ3OTI1VSoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgbmV3IHByb2plY3QsIGFuZCBpbW1lZGlhdGVseSwgdGhlIHVzdWFsIHN1c3BlY3RzIHBvcCBpbnRvIG1pbmQ6IGRlcGVuZGVuY2llcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBzdXJlIG15IGBNQUM4MDIxMWAgZHJpdmVyIGlzIHBsYXlpbmcgbmljZSwgYW5kIHRoYXQgdGhlIGBVU0JgIGludGVyZmFjZSBpcyByb2NrIHNvbGlkLiBUaGF0JiMzOTtzIGFsd2F5cyBteSBzdGFydGluZyBwb2ludCAtIEkgKm5lZWQqIHRvIGJlIGNvbmZpZGVudCBpbiB0aG9zZSBmb3VuZGF0aW9uYWwgbGF5ZXJzLiBJIGNhbiYjMzk7dCBzdGFydCBvcHRpbWl6aW5nIG9yIGV2ZW4gcmVhbGx5IGRlYnVnZ2luZyB1bnRpbCBJIGhhdmUgdGhvc2UgcGllY2VzIHNxdWFyZWQgYXdheS4KCkFuZCB0aGVuIHRoZSByZWFsIHRhcmdldDogYE1UNzkyNVVgLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIHNwZWNpZmljcyBvZiAqdGhhdCogZGV2aWNlLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGF0IG9uZSBmaXRzIGludG8gZXZlcnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAxNTpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIE1UNzkyNVVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMjI6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDI0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxuICAyNzpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMjg6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzI2NwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1UNzYgVVNCIERyaXZlciBNb2R1bGVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBNVDc2IFVTQiBkcml2ZXIgbW9kdWxlcy4gVGhlIGNvcmUgZGVwZW5kZW5jaWVzLCBhcyBJIHNlZSBpdCwgYXJlIG9uIGBNQUM4MDIxMWAgYW5kIHRoZSBgVVNCYCBzdWJzeXN0ZW0sIGFzIGV4cGVjdGVkLgoKUmlnaHQsIHNvIHRvIGdldCB0aGlzIHRoaW5nIGVuYWJsZWQsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZvbGxvd2luZyBjb25maWdzIGFyZSBzZXQ6IGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gVGhhdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLgoKTm93LCBmb3IgdGhlIHJlYWxseSBpbnRlcmVzdGluZyBiaXRzIOKAkyB0aGUgdHJhbnNtaXNzaW9uIChUWCkgcHJlcGFyYXRpb24gZnVuY3Rpb25zLiBMb29rcyBsaWtlIEkgc2hvdWxkIGZvY3VzIG9uIGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAsIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYW5kIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLiBUaGVzZSBhcmUgcHJvYmFibHkgdGhlIGtleSBhcmVhcyB3aGVyZSB0aGUgZGF0YSBwYWNrZXRzIGdldCBwcmVwcGVkIGZvciB0aGUgVVNCIGJ1cy4KCkhvbGQgb24gYSBzZWMuLi4gYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCBpcyB1c2VkIHdpdGhpbiBgbXQ3NngwMl91c2JfY29yZS5jYC4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgdGhpcyBmdW5jdGlvbiBpc24mIzM5O3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AgaW5zaWRlIHRoYXQgZmlsZS4gVGhhdCB3b3VsZCBoYXZlIGltcGxpY2F0aW9ucyBmb3IgaXRzIGV4dGVybmFsIHVzZS4gSSBzaG91bGQgY2hlY2sgdGhhdCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGxpbmtpbmcgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2eDAydV90eF9wcmVwYXJlX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTIxMz1zdGF0aWMgaW50IG10NzZ4MHVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyMS1cdFx0LnNldF9jaGFubmVsID0gbXQ3NngwX3NldF9jaGFubmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjIyOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2eDAydV90eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIyMy1cdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZ4MDJ1X3R4X2NvbXBsZXRlX3NrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmg9MTc9aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaDoxODppbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYi5oLTE5LVx0XHRcdCAgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYz00Nj1pbnQgbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGludCBwb3J0LCB1MzIgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzo2NDppbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjUtXHRcdFx0ICAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTExNi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzoxMTc6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwMnVfdHhfcHJlcGFyZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtMTE4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jPTMyPXN0YXRpYyBpbnQgbXQ3NngydV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy00MC1cdFx0LnNldF9jaGFubmVsID0gbXQ3NngydV9zZXRfY2hhbm5lbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jOjQxOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc2eDAydV90eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQyLVx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3NngwMnVfdHhfY29tcGxldGVfc2tiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc1MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBNVDc2IERyaXZlciBDb2RlKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXI6IGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgZXhwb3J0ZWQuIEkgc2VlIGl0IGJlaW5nIHVzZWQgZGlyZWN0bHkgd2l0aGluIHRoZSBgbXQ3NngwdV9wcm9iZWAgYW5kIGBtdDc2eDJ1X3Byb2JlYCByb3V0aW5lcyDigJMgd2hpY2ggYXJlLCBvZiBjb3Vyc2UsIHRoZSBwcm9iZSBmdW5jdGlvbnMgZm9yIHRoZSBkZXZpY2VzLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHRob3NlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemluZyB0aGUgaGFyZHdhcmUuIFRoZXnigJlkIGNlcnRhaW5seSBuZWVkIHRvIHByZXBhcmUgdGhlIFNLQiBmb3IgdHJhbnNtaXNzaW9uLCBzZXR0aW5nIHVwIHRoZSBuZWNlc3NhcnkgZGF0YSBzdHJ1Y3R1cmVzIGZvciB0cmFuc21pc3Npb24uCgpGdXJ0aGVyLCB0aGUgZGVwZW5kZW5jeSBjaGFpbiBjb250aW51ZXM7IGBtdDc2X3NrYl9hZGp1c3RfcGFkYCBpcyBjYWxsZWQgZnJvbSBgbXQ3NngwMnVfc2tiX2RtYV9pbmZvYC4gTm93LCBgbXQ3NngwMnVfc2tiX2RtYV9pbmZvYCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGBfX210NzZ4MDJ1X21jdV9zZW5kX21zZ2AuIFRoaXMgbWVhbnMgd2UmIzM5O3ZlIGdvdCBhIHNlcXVlbmNlOiB0aGUgU0tCIHByZXBhcmF0aW9uLCB0aGVuIHRoZSBETUEgaW5mb3JtYXRpb24gc2V0dXAsIGFuZCBmaW5hbGx5IHRoZSBhY3R1YWwgc2VuZGluZyBvZiB0aGUgbWVzc2FnZSB0byB0aGUgTUNVLiBUaGVzZSBmdW5jdGlvbnMgYWxsIHdvcmsgdG9nZXRoZXIgdG8gdHJhbnNtaXQgdGhlIGRhdGEuIE1ha2VzIGNvbXBsZXRlIHNlbnNlIHRvIG1lLiBUaGUgZnVuY3Rpb24gbmFtZXMgYXJlIHByZXR0eSBzZWxmLWV4cGxhbmF0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX210NzZ4MDJ1X21jdV9zZW5kX21zZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9Njk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzo3MDpfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtNzEtXHRcdFx0aW50IGNtZCwgYm9vbCB3YWl0X3Jlc3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz0xMTA9bXQ3NngwMnVfbWN1X3NlbmRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTIwLVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlbWN1Lm11dGV4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTIxOlx0ZXJyID0gX19tdDc2eDAydV9tY3Vfc2VuZF9tc2coZGV2LCBza2IsIGNtZCwgd2FpdF9yZXNwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTIyLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtY3UubXV0ZXgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MTMzPW10NzZ4MDJ1X21jdV93cl9ycChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGJhc2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xNTYtXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VtY3UubXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzoxNTc6XHRyZXQgPSBfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhkZXYsIHNrYiwgQ01EX1JBTkRPTV9XUklURSwgY250ID09IG4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xNTgtXHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZW1jdS5tdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz0xNjY9bXQ3NngwMnVfbWN1X3JkX3JwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYmFzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTk4Olx0cmV0ID0gX19tdDc2eDAydV9tY3Vfc2VuZF9tc2coZGV2LCBza2IsIENNRF9SQU5ET01fUkVBRCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE5OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5NTQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlOgoKKipJbnZlc3RpZ2F0aW5nIGBtdDc2eDAydV9tY3Vfc2VuZF9tc2dgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc2eDAydV9tY3Vfc2VuZF9tc2dgIGZ1bmN0aW9uLiAgVGhlIHF1ZXN0aW9uIGlzLCBpcyBpdCBleHBvcnRlZD8gIEkgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyB2aXNpYmlsaXR5LiBUaGlzIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciB0aGlzIGZ1bmN0aW9uIGlzIG1lYW50IGZvciBpbnRlcm5hbCB1c2Ugb25seSB3aXRoaW4gdGhlIG1vZHVsZSwgb3IgaWYgaXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCBvciBwb3RlbnRpYWxseSBmcm9tIHVzZXIgc3BhY2UgKHRob3VnaCB0aGF0JiMzOTtzIGxlc3MgbGlrZWx5IGluIHRoaXMgY29udGV4dCkuICBLbm93aW5nIGlmIGl0JiMzOTtzIGV4cG9ydGVkIHdpbGwgZGljdGF0ZSBob3cgaXQgbmVlZHMgdG8gYmUgdHJlYXRlZCBnb2luZyBmb3J3YXJkIGluIG15IGFuYWx5c2lzLiBJdCYjMzk7bGwgZGVmaW5pdGVseSBpbmZsdWVuY2UgbXkgYXNzdW1wdGlvbnMgYWJvdXQgc3RhYmlsaXR5LCBBUEkgZ3VhcmFudGVlcywgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIGFueSBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBzeXN0ZW1zLiBUaW1lIHRvIGNoZWNrIHRoZSBzeW1ib2wgdGFibGUgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZ4MDJ1X21jdV9zZW5kX21zZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9Njk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzo3MDpfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtNzEtXHRcdFx0aW50IGNtZCwgYm9vbCB3YWl0X3Jlc3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz0xMDk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzoxMTA6bXQ3NngwMnVfbWN1X3NlbmRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xMTEtXHRcdCAgICAgIGludCBsZW4sIGJvb2wgd2FpdF9yZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTIwLVx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlbWN1Lm11dGV4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTIxOlx0ZXJyID0gX19tdDc2eDAydV9tY3Vfc2VuZF9tc2coZGV2LCBza2IsIGNtZCwgd2FpdF9yZXNwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTIyLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtY3UubXV0ZXgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MTMzPW10NzZ4MDJ1X21jdV93cl9ycChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGJhc2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xNTYtXHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VtY3UubXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzoxNTc6XHRyZXQgPSBfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhkZXYsIHNrYiwgQ01EX1JBTkRPTV9XUklURSwgY250ID09IG4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xNTgtXHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZW1jdS5tdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz0xNjY9bXQ3NngwMnVfbWN1X3JkX3JwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYmFzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTk4Olx0cmV0ID0gX19tdDc2eDAydV9tY3Vfc2VuZF9tc2coZGV2LCBza2IsIENNRF9SQU5ET01fUkVBRCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jPTI4MD12b2lkIG10NzZ4MDJ1X2luaXRfbWN1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMjg0LVx0XHQudGFpbHJvb20gPSA4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzoyODU6XHRcdC5tY3Vfc2VuZF9tc2cgPSBtdDc2eDAydV9tY3Vfc2VuZF9tc2csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTI4Ni1cdFx0Lm1jdV9wYXJzZV9yZXNwb25zZSA9IG10NzZ4MDJfbWN1X3BhcnNlX3Jlc3BvbnNlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTI3OAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDE4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBNVDc2eDAydSBNQ1UgSW5pdGlhbGl6YXRpb24gYW5kIFRYIFBhdGgqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBtdDc2eDAydV9pbml0X21jdWAgYXNzaWducyB0aGUgYC5tY3Vfc2VuZF9tc2dgIGZ1bmN0aW9uIHBvaW50ZXIgdG8gYG10NzZ4MDJ1X21jdV9zZW5kX21zZ2AuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgaW5pdGlhbGl6YXRpb24sIGVuc3VyaW5nIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgTUNVLiBJIGFscmVhZHkga25ldyB0aGF0LCBidXQgaXQmIzM5O3MgZ29vZCB0byBjb25maXJtLiBJdOKAmXMgdHJpZ2dlcmVkIGVpdGhlciBieSB0aGUgbWFjODAyMTEgc3RhY2sgZGlyZWN0bHksIG9yIHBlcmhhcHMgdGhlIG10NzYgY29yZSBjb2RlIC0gdGhhdOKAmXMgdGhlIGZpcnN0IHF1ZXN0aW9uIHRvIGJlIGFuc3dlcmVkLgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0OiB0aGUgZW50cnkgcG9pbnRzLiBXZSBoYXZlIGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAsIGFuZCBhIGNvdXBsZSBvZiB0aG9zZSBVU0IvU0RJTyBzcGVjaWZpYyB2YXJpYW50cyBmb3IgZGlmZmVyZW50IGNoaXBzZXRzIOKAkyBgbXQ3NjYzYCwgYG10NzkyMWAsIGFuZCBgbXQ3OTI1YC4gQnV0IHdoYXQgY2F0Y2hlcyBteSBleWUgaXMgYG10NzZfc2tiX2FkanVzdF9wYWRgIC0gdGhhdCYjMzk7cyBhIHV0aWxpdHkgZnVuY3Rpb24gdG8gaGFuZGxlIHBhZGRpbmcgd2l0aGluIHRoZSBTS0IgKFNvY2tldCBCdWZmZXIpLiBJdCYjMzk7cyBhbHNvIGV4cG9ydGVkLCBtZWFuaW5nIGl0JiMzOTtzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIG90aGVyIG1vZHVsZXMuIFRoaXMgaW1wbGllcyBpdCYjMzk7cyBhIGNvbW1vbiBmdW5jdGlvbiwgcHJvYmFibHkgdXNlZCBieSBtdWx0aXBsZSBkcml2ZXJzLCB3aGljaCBJIGZpZ3VyZWQsIGJ1dCBJJiMzOTtsbCBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgdGhlIHNvdXJjZS4gSSYjMzk7bGwgbWFrZSBhIHF1aWNrIHNlYXJjaCB0byBlbnN1cmUgdGhhdCYjMzk7cyBpbmRlZWQgdGhlIGNhc2UuIExldCYjMzk7cyBzZWUgaWYgdGhhdCYjMzk7cyB0cnVseSBleHBvcnRlZC4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIHRvIG15c2VsZiB0byBjaGVjayB0aGUgY2FsbGluZyBjb250ZXh0cyBvZiB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MX0dQTFxcKG10NzZfc2tiX2FkanVzdF9wYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9ODY2PWludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg4OC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODg5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfc2tiX2FkanVzdF9wYWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg5MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5OTUKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAzMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgRm9jdXMgU3ltYm9scyBhbmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7dmUgcGlucG9pbnRlZCBhIHZhbHVhYmxlIGZvY3VzIHN5bWJvbDogYG10NzZfc2tiX2FkanVzdF9wYWRgLiBUaGF0JiMzOTtzIGRlZmluaXRlbHkgZ29pbmcgb24gdGhlIGxpc3QuIEFuZCwgb2YgY291cnNlLCB0aGUgYXNzb2NpYXRlZCBgdHhfcHJlcGFyZV9za2JgIGZhbWlseSBvZiBmdW5jdGlvbnMgYXJlIGNydWNpYWwgdG8gaW5jbHVkZS4gTm93LCBsZXQmIzM5O3MgZXhwYW5kIHRoaXMgdG8gZW5jb21wYXNzIG90aGVyIHJlbGV2YW50IFVTQi1zcGVjaWZpYyBwcmVwYXJlIGZ1bmN0aW9ucywgc28gSSYjMzk7bGwgYWRkIGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAsIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYW5kIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLgoKTm93LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBsb29rIGF0IHRoZSBiaWdnZXIgcGljdHVyZSB3aXRoIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnM6IEkgc2VlIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYE1UNzkyNVVgLCBhbmQgdGhlIGdlbmVyYWwgYE1UNzZfVVNCYC4gQWhhISBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgYE1UNzZfVVNCYCBpcyBjb3JyZWN0bHkgYWNjb3VudGVkIGZvciwgZXZlbiBpZiBpdCYjMzk7cyBpbXBsaWNpdGx5IHNlbGVjdGVkIGJ5IHRoZSBtb3JlIHNwZWNpZmljIGRyaXZlciBjaG9pY2VzIGxpa2UgYE1UNzY2M1VgIGFuZCBvdGhlcnMuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4KCk9rYXksIGNoZWNraW5nIGZvciBkZXBlbmRlbmNpZXMsIEkga25vdyBJIG5lZWQgYE1BQzgwMjExYCBhbmQgYFVTQmAuIEFuZCBsZXQmIzM5O3Mgbm90IGZvcmdldCBgTU1DYCDigJMgdGhvdWdoIEkgdGhpbmsgdGhhdCYjMzk7cyBvbmx5IGZvciB0aGUgU0RJTyB2YXJpYW50IG9mIGBNVDc5MjFgLCB3aGljaCBpcyBub3Qgd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aC4gSnVzdCB0byBiZSBzdXJlLCBJJiMzOTtsbCBkb3VibGUgY2hlY2sgdGhlIHNwZWNpZmljIGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyMVVgLiBJdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyODpcdGNvbmZpZyBNVDc5MjFVXG4gIDI5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMzA6XHRcdHNlbGVjdCBNVDc5MnhfVVNCXG4gIDMxOlx0XHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxuICAzMjpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAzMzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxuICAzNjpcdFxuICAzNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg5NQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkRlcGVuZGVuY2llcyBEZWVwIERpdmU6IEEgUXVpY2sgQ2hlY2sqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGRlcGVuZGVuY2llcy4gRnJvbSB3aGF0IEkgcmVjYWxsLCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBhdCBsZWFzdCBpbml0aWFsbHkuIE15IG1pbmQgaW1tZWRpYXRlbHkgZ29lcyB0byBgTUFDODAyMTFgIGFuZCB0aGUgYFVTQmAgc3RhY2suIFRob3NlIGFyZSB0aGUgYmlnIHBsYXllcnMsIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgdGhhdCBldmVyeXRoaW5nIGVsc2UsIGF0IGxlYXN0IGluIHRoaXMgY29udGV4dCwgbGVhbnMgb24uCgpCdXQgSSBuZWVkIHRvIGJlIHN1cmUuIExldCYjMzk7cyBkaWcgYSBiaXQgZGVlcGVyLiBTcGVjaWZpY2FsbHksIGxldCYjMzk7cyB0dXJuIG91ciBhdHRlbnRpb24gdG8gdGhlIGBNVDc5MjVVYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBhbmQgd2hlcmUgdGhlIG51YW5jZXMgYXJlLiBJIG5lZWQgdG8gZ2V0IGEgZmlybSBncmFzcCBvbiB0aGUgaW50cmljYWNpZXMgb2YgKml0cyogZGVwZW5kZW5jaWVzLCBhbnkgb3RoZXIgbGlicmFyaWVzLCBkcml2ZXJzLCBvciBmaXJtd2FyZSBjb21wb25lbnRzIHRoYXQgaXQgcmVsaWVzIG9uLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBpbnZlc3RpZ2F0aW9uIGZvciBtZSBhdCB0aGUgbW9tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE5Olx0Y29uZmlnIE1UNzkyNVVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMjI6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDI0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxuICAyNzpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMjg6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM1MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbmNlcm5zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgZGVwZW5kZW5jaWVzIGhlcmUuIEFzIGZhciBhcyBJIGNhbiBzZWUsIHRoaXMgd2hvbGUgdGhpbmcgYm9pbHMgZG93biB0byBgTUFDODAyMTFgIGFuZCBgVVNCYC4gRXZlcnl0aGluZyBlbHNlLCBsaWtlIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYCwgdGhleSYjMzk7cmUgdGhlIHRhcmdldHMsIHJpZ2h0PyBUaGVzZSBhcmUgdGhlIGFjdHVhbCBkcml2ZXJzIG9yIGRldmljZXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gVGhlIGJhc2UgY29uZmlnIGluY2x1ZGVzIGBNQUM4MDIxMWAgYW5kIGBVU0JgIHdoaWNoIHByb3ZpZGVzIHN1cHBvcnQgdG8gYSBsb3Qgb2YgdGhlIG90aGVyIGRyaXZlcnMuCgpIYW5nIG9uIGEgbWludXRlLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBgTVQ3NngwVWAgYW5kIGBNVDc2eDJVYCBleHBsaWNpdGx5IHJlcXVpcmUgYE1BQzgwMjExYCBhbmQgYFVTQmAsIHJpZ2h0PyBJJiMzOTtkIGhhdmUgdG8gY2hlY2sgdGhlIGNvZGUgYnV0IHRoYXQgc2VlbXMgY29ycmVjdC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJIGRpZG4mIzM5O3QgbWlzcyBhbnl0aGluZy4gQmVmb3JlIEkgbW92ZSBvbiwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNVDc2X0NPUkVgIOKAkyBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IG90aGVyIGNydWNpYWwgY29tcG9uZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgTVQ3Nl9DT1JFXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBNVDc2X0xFRFNcbiAgIDc6XHRcdGJvb2xcbiAgIDg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gICA5Olx0XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBNVDc2X0NPUkU9TEVEU19DTEFTU1xuICAxMDpcdFx0ZGVmYXVsdCB5XG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE1UNzZfVVNCXG4gIDEzOlx0XHR0cmlzdGF0ZVxuICAxNDpcdFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcbiAgMTU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM5NTAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIE1UNzYgRHJpdmVyIERlcGVuZGVuY3kgQ2hhaW4qKgoKT2theSwgc28gdGhlIGRyaXZlcnMgYXJlIGhhbmRsaW5nIHRoZSBgTVQ3Nl9DT1JFYCBzZWxlY3Rpb24uIEhtbSwgd2FpdCBhIHNlY29uZC4uLiBsb29raW5nIGNsb3NlciBhdCBgTVQ3NngwVWAsIEkgZG9uJiMzOTt0IHNlZSBgTVQ3Nl9DT1JFYCBiZWluZyBkaXJlY3RseSBjaG9zZW4uIFRoYXQmIzM5O3MgcGVjdWxpYXIuIExldCYjMzk7cyB0cmFjZSBpdCBiYWNrLiBBaCwgKnJpZ2h0KiAtIGl0JiMzOTtzIGxpa2VseSB0aGF0IGBNVDc2eDBfQ09NTU9OYCBkb2VzIHRoZSBoZWF2eSBsaWZ0aW5nLCBzaW5jZSBpdCBzZWxlY3RzIGBNVDc2eDAyX0xJQmAuIEFuZCAqdGhhdCogbGlicmFyeSAqbWlnaHQqIGJlIHRoZSBrZXkgdG8gcHVsbGluZyBpbiBgTVQ3Nl9DT1JFYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBzdXNwaWNpb24uIExldCYjMzk7cyBkaXZlIGludG8gYE1UNzZ4MDJfTElCYCBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE2Olx0Y29uZmlnIE1UNzZfU0RJT1xuICAxNzpcdFx0dHJpc3RhdGVcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1UNzZ4MDJfTElCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFx0c2VsZWN0IE1UNzZfQ09SRVxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNVDc2eDAyX1VTQlxuICAyNTpcdFx0dHJpc3RhdGVcbiAgMjY6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcbiAgMjk6XHRcdHRyaXN0YXRlXG4gIDMwOlx0XHRzZWxlY3QgTVQ3Nl9DT1JFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDEwCgkJCQkJCQlvdXRwdXQ6IDI1MwoJCQkJCQkJdGhvdWdodHM6IDg1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTVQ3NiBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgTWVkaWFUZWsgTVQ3NiBkcml2ZXIgcGF0Y2guIFRoZSBjb3JlIG9mIGl0IHJldm9sdmVzIGFyb3VuZCBhIGNoYW5nZSBpbiBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIHJlcGxhY2VzIGBza2JfcGFkKClgIHdpdGggYF9fc2tiX3BhZCguLi4sIGZhbHNlKWAuIFRoaXMgaXMga2V5OyBpdCBwcmV2ZW50cyB0aGUgYHNrYmAgKHNvY2tldCBidWZmZXIpIGZyb20gYmVpbmcgZnJlZWQgd2l0aGluIGBtdDc2X3NrYl9hZGp1c3RfcGFkYCB3aGVuIGFuIGVycm9yIG9jY3Vycy4gSSBzZWUgdGhhdCBgTVQ3NngwMl9MSUJgIHNlbGVjdHMgYE1UNzZfQ09SRWAsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KClRoaXMgbW9kaWZpY2F0aW9uIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LiBFc3NlbnRpYWxseSwgaXQgYWx0ZXJzIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZXJyb3JzIGR1cmluZyBgc2tiYCBwYWRkaW5nLCBwb3RlbnRpYWxseSBhdm9pZGluZyBkb3VibGUtZnJlZXMgb3IgbWVtb3J5IGxlYWtzLiBQcmV2aW91c2x5LCBpZiBgc2tiX3BhZGAgZnJlZWQgdGhlIGBza2JgIGFuZCBhbiBlcnJvciBwcm9wYWdhdGVkIHVwIHRoZSBjYWxsIGNoYWluIChsaWtlIHRocm91Z2ggYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCksIHRoZXJlJiMzOTtzIGEgcmlzayBvZiB0aGUgY2FsbGVyIGFsc28gYXR0ZW1wdGluZyB0byBmcmVlIHRoZSBidWZmZXIsIGxlYWRpbmcgdG8gYSBkb3VibGUgZnJlZS4gQ29udmVyc2VseSwgaWYgdGhlIGNhbGxlciAqZGlkbiYjMzk7dCogZnJlZSB0aGUgYnVmZmVyLCB0aGVyZSYjMzk7cyBhIG1lbW9yeSBsZWFrLiBOb3csIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZnJlZWluZyB0aGUgYHNrYmAgbGllcyB3aXRoIHRoZSBjYWxsZXIuCgpHaXZlbiB0aGUgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaW1wbGljYXRpb25zLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byBmdXp6IHRob3JvdWdobHkuIEJhc2VkIG9uIHRoZSBjb2RlLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYG10NzZfc2tiX2FkanVzdF9wYWRgLCBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYC4gVGhlc2UgZnVuY3Rpb25zIHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIG9yIHJlbGF0ZWQgZnVuY3Rpb25zIGluIHRoZSBjYWxsIGNoYWluLgoKVG8gZW5hYmxlIHRoZSBjb3JyZWN0IGVudmlyb25tZW50IGZvciBmdXp6aW5nLCBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwgbmVlZCBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzY2M1VgLCBgTVQ3OTIxVWAsIGFuZCBgTVQ3OTI1VWAgdG8gY292ZXIgdGhlIHJlbGV2YW50IGRyaXZlciBmYW1pbGllcy4gSSYjMzk7bGwgYWxzbyBhZGQgYE1BQzgwMjExYCBhbmQgYFVTQmAsIGV2ZW4gdGhvdWdoIHRoZXNlIGFyZSB1c3VhbGx5IGVuYWJsZWQsIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNvdmVyZWQuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBjaGFuZ2UgaW1wYWN0cyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdGhlIGZvY3VzIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGludGVyZmFjZSBvZiB0aGVzZSBNZWRpYVRlayBkcml2ZXJzLCBtYWtpbmcgVVNCIGZ1enppbmcgYSByZWxldmFudCBhbmQgdXNlZnVsIHRlY2huaXF1ZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzY2M1UmIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZfc2tiX2FkanVzdF9wYWQmIzM0OywKICAgICYjMzQ7bXQ3NngwMnVfdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBza2JfcGFkIHRvIF9fc2tiX3BhZCguLi4sIGZhbHNlKSBpbiBtdDc2X3NrYl9hZGp1c3RfcGFkLCBwcmV2ZW50aW5nIHRoZSBza2IgZnJvbSBiZWluZyBmcmVlZCBvbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBtZW1vcnkgbWFuYWdlbWVudCAoYXZvaWRpbmcgZG91YmxlLWZyZWUgb3IgbWVtb3J5IGxlYWtzKS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgb2YgdmFyaW91cyBNZWRpYVRlayBtdDc2IHdpcmVsZXNzIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc2NjNVJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X3NrYl9hZGp1c3RfcGFkJiMzNDssCiAgICAmIzM0O210NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgICAmIzM0O210NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7LAogICAgJiMzNDttdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OywKICAgICYjMzQ7bXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgc2tiX3BhZCB0byBfX3NrYl9wYWQoLi4uLCBmYWxzZSkgaW4gbXQ3Nl9za2JfYWRqdXN0X3BhZCwgcHJldmVudGluZyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgbWVtb3J5IG1hbmFnZW1lbnQgKGF2b2lkaW5nIGRvdWJsZS1mcmVlIG9yIG1lbW9yeSBsZWFrcykuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHZhcmlvdXMgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBza2JfcGFkKGxhc3QsIHBhZClgIHdpdGggYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAuIFRoZSBgc2tiX3BhZCgpYCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIGBfX3NrYl9wYWQoKWAgdGhhdCBwYXNzZXMgYHRydWVgIGZvciB0aGUgYGZyZWVfb25fZXJyb3JgIGFyZ3VtZW50LCBtZWFuaW5nIGl0IGZyZWVzIHRoZSBza2IgaWYgcGFkZGluZyBmYWlscy4gSWYgYHNrYl9wYWQoKWAgZmFpbHMgYW5kIGZyZWVzIHRoZSBza2IgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLCB0aGUgY2FsbGVyIG9mIGBtdDc2X3NrYl9hZGp1c3RfcGFkKClgIG1pZ2h0IGFsc28gYXR0ZW1wdCB0byBmcmVlIHRoZSBvcmlnaW5hbCBza2IgdXBvbiByZWNlaXZpbmcgdGhlIGAtRU5PTUVNYCBlcnJvciwgbGVhZGluZyB0byBhIGRvdWJsZSBmcmVlIG9yIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkuXG5cbkJ5IGNoYW5naW5nIHRoZSBjYWxsIHRvIGBfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSlgLCB0aGUgcGF0Y2ggcHJldmVudHMgdGhlIHNrYiBmcm9tIGJlaW5nIGZyZWVkIG9uIGVycm9yLCBhbGxvd2luZyB0aGUgY2FsbGVyIHRvIHNhZmVseSBoYW5kbGUgdGhlIGNsZWFudXAgd2l0aG91dCB0cmlnZ2VyaW5nIGEgZG91YmxlIGZyZWUuXG5cbkRvdWJsZSBmcmVlIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgdGhhdCBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMxZDRjYWI4ZWQyYmRkNTM0ZDQyNDE2N2Q1ZTM0ODFjNGZhMzgzODUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAwOToyNTowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYwppbmRleCAzNzA3ZWUxOWU0YWU3Li5lYzUwMzUyMWFlNjMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jCkBAIC04NzksNyAmIzQzOzg3OSw3IEBAIGludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpCiAJCX0KIAl9CiAKLQlpZiAoc2tiX3BhZChsYXN0LCBwYWQpKQomIzQzOwlpZiAoX19za2JfcGFkKGxhc3QsIHBhZCwgZmFsc2UpKQogCQlyZXR1cm4gLUVOT01FTTsKIAogCV9fc2tiX3B1dChsYXN0LCBwYWQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDQxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIFBvdGVudGlhbCBNZW1vcnkgU2FmZXR5IElzc3VlcyoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQmIzM5O3MgcnVubmluZyB0aHJvdWdoIG15IGhlYWQgYXMgSSByZXZpZXcgdGhpcyBwYXRjaC4gVGhlIGtleSBjaGFuZ2UgaXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguY2AsIHdoZXJlIHRoZXkmIzM5O3ZlIHN3YXBwZWQgYHNrYl9wYWQobGFzdCwgcGFkKWAgZm9yIGBfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSlgIHdpdGhpbiBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doeSB0aGUgY2hhbmdlPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0IGhlcmU/JiMzNDsKCkZpcnN0LCBJIG5lZWQgdG8gZGlnIGludG8gd2hhdCBgX19za2JfcGFkYCBhY3R1YWxseSBkb2VzLCBlc3BlY2lhbGx5IHRoZSBtZWFuaW5nIG9mIHRoYXQgdGhpcmQgYGZhbHNlYCBhcmd1bWVudC4gUXVpY2tseSBsb29raW5nIGF0IHRoZSBkZWZpbml0aW9ucywgSSBzZWUgYHNrYl9wYWRgIGlzIGp1c3QgYSB3cmFwcGVyIGZvciBgX19za2JfcGFkYCwgYW5kIHRoZSB0aGlyZCBwYXJhbWV0ZXIgaXMgcmVsYXRlZCB0byBlcnJvciBoYW5kbGluZyDigJMgc3BlY2lmaWNhbGx5LCB3aGV0aGVyIHRvIGBmcmVlX29uX2Vycm9yYC4gQS1oYSEgTm93IGl0JiMzOTtzIHN0YXJ0aW5nIHRvIGNsaWNrLgoKUmlnaHQsIGBza2JfcGFkYCAqaXRzZWxmKiBjYWxscyBgX19za2JfcGFkYCB3aXRoIGB0cnVlYCBmb3IgYGZyZWVfb25fZXJyb3JgLiBTbywgdGhlIG9sZCBjb2RlJiMzOTtzIGxvZ2ljIHdhczogaWYgYHNrYl9wYWRgIGZhaWxlZCAoZS5nLiwgYC1FTk9NRU1gKSwgaXQgZnJlZWQgdGhlIGBsYXN0YCBza2IuIFRoZSBjb2RlIHRoZW4gY2hlY2tlZCB0aGUgcmV0dXJuIHZhbHVlLCBhbmQgaWYgaXQgd2FzIGFuIGVycm9yLCByZXR1cm5lZCBgLUVOT01FTWAuCgpOb3csIHdhaXQgYSBzZWNvbmQuLi4gdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nIGFuZCBjb25jZXJuaW5nLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBjYWxsZXIgKmFsc28qIG1pZ2h0IGJlIGhhbmRsaW5nIGVycm9ycyBieSBmcmVlaW5nIHRoZSBgc2tiYCwgYGxhc3RgLCBvciB0aGUgZnJhZ19saXN0IHNrYi4gU28sIGlmIGBza2JfcGFkYCBmYWlscyBhbmQgZnJlZXMgdGhlIGBsYXN0YCBza2IsIGFuZCB0aGUgY2FsbGVyICphbHNvKiBmcmVlcywgdGhhdCYjMzk7cyBhIGNsYXNzaWMgZG91YmxlLWZyZWUgc2NlbmFyaW8sIGxlYWRpbmcgdG8gYSBjcmFzaCBvciB1bmRlZmluZWQgYmVoYXZpb3VyLiBUaGUgY2FsbGVyIGlzIHByb2JhYmx5IGFsc28gZnJlZWluZyB0aGUgc2tiIG9uIGVycm9yLCB3aGljaCBtZWFucyB3ZSBjYW4gYXZvaWQgdGhlIGRvdWJsZSBmcmVlIG9yIHVzZS1hZnRlci1mcmVlIGJ5IGNoYW5naW5nIHRoZSBgZnJlZV9vbl9lcnJvcmAgcGFyYW1ldGVyIG9mIHRoZSB1bmRlcmx5aW5nIG1ldGhvZC4KClNvLCB0aGlzIHBhdGNoIGNoYW5nZXMgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAgdG8gKnByZXZlbnQqIGBfX3NrYl9wYWRgIGZyb20gZnJlZWluZyBgbGFzdGAgb24gZXJyb3IuIFRoaXMgZ2l2ZXMgdGhlIGNhbGxlciBtb3JlIGNvbnRyb2wgYW5kIGVuc3VyZXMgb25seSBvbmUgZnJlZSBvY2N1cnMsIHRodXMgYXZvaWRpbmcgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb3IgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eS4gVGhhdCYjMzk7cyBhIGdvb2QgZmluZCEgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgd291bGQgaGF2ZSBsaWtlbHkgY2F1Z2h0IHRoaXMsIGV2ZW50dWFsbHkuCgpOb3csIG15IGV4cGVydCBtaW5kIGlzIGdvaW5nIG9uZSBzdGVwIGZ1cnRoZXIuIElzIHRoaXMgY2hhbmdlIGludHJvZHVjaW5nIGFueSAqbmV3KiByaXNrcz8gQ291bGQgdGhpcyBjcmVhdGUgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmU/IE5vLCBJIGRvbiYjMzk7dCB0aGluayBzby4gVGhlIHBhdGNoIG9ubHkgYWx0ZXJzIHRoZSBmcmVlaW5nIGJlaGF2aW9yIG9uIGVycm9yLCBub3QgdGhlIGNvbnRlbnQgb2YgdGhlIHNrYiBpdHNlbGYuCgpPa2F5LCB0aGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBmaXggZm9yIGEgbWVtb3J5IHNhZmV0eSBpc3N1ZS4gSSYjMzk7bGwgdmVyaWZ5IHRoZSBsb2dpYyBjYXJlZnVsbHksIGFuZCBydW4gYSBxdWljayBkaWZmIGNoZWNrLCBidXQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgbGVnaXRpbWF0ZSBkb3VibGUtZnJlZS91c2UtYWZ0ZXItZnJlZSBidWcuIEdvb2QgY2F0Y2ghCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfc2tiX2FkanVzdF9wYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTg2ND1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X2FjX3RvX2h3cSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtODY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjg2NjppbnQgbXQ3Nl9za2JfYWRqdXN0X3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg2Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg4OC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODg5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfc2tiX2FkanVzdF9wYWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg5MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxMQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYG10NzZfc2tiX2FkanVzdF9wYWRgKioKCk9rYXksIHRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBtdDc2X3NrYl9hZGp1c3RfcGFkYC4gV2UmIzM5O3ZlIGJlZW4gc2VlaW5nIHNvbWUgb2RkIGJlaGF2aW9yLCBhbmQgdGhpcyBmdW5jdGlvbiBpcyBhIGxpa2VseSBjYW5kaWRhdGUgZm9yIGNvbnRyaWJ1dGluZyB0byBpdC4gSSB3YW50IHRvIG1ha2UgKmFic29sdXRlbHkqIGNlcnRhaW4gSSB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGl0JiMzOTtzIGhhbmRsaW5nIHRoZSBTS0ImIzM5O3MgZGF0YSBidWZmZXIgYWRqdXN0bWVudHMsIGVzcGVjaWFsbHkgYXJvdW5kIHRoZSBwYWRkaW5nLiBNeSBndXQgZmVlbGluZyBpcyB3ZSBtaWdodCBiZSBtaXNzaW5nIHNvbWV0aGluZyBzdWJ0bGUgaW4gdGhlIGludGVyYWN0aW9uIHdpdGggaGFyZHdhcmUgRE1BIG9yIG1lbW9yeSBhbGlnbm1lbnQuIE5lZWQgdG8gdmVyaWZ5IGl0cyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgUlgvVFggcGF0aHMsIGVzcGVjaWFsbHkgdGhlIGltcGxpY2F0aW9ucyBvZiBwcmUtcGVuZGluZy9hcHBlbmRpbmcgZGF0YS4gQW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIGFyZSBteSBwcmltYXJ5IGNvbmNlcm4gaGVyZTsgZGF0YSBjb3JydXB0aW9uIGlzIHRoZSB3b3JzdC1jYXNlIHNjZW5hcmlvLiBJdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGUgZHJpdmVyLCBzbyBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBhc3N1bXB0aW9ucyBhcmUgYWxsIHN0aWxsIHZhbGlkLCBnaXZlbiBhbnkgcmVjZW50IGNoYW5nZXMgdG8gdGhlIHdpcmVsZXNzIGZpcm13YXJlIGFuZC9vciBoYXJkd2FyZS4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg2NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODY2Olx0aW50IG10NzZfc2tiX2FkanVzdF9wYWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHBhZClcbiA4Njc6XHR7XG4gODY4Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqaXRlciwgKmxhc3QgPSBza2I7XG4gODY5Olx0XG4gODcwOlx0XHQvKiBGaXJzdCBwYWNrZXQgb2YgYSBBLU1TRFUgYnVyc3Qga2VlcHMgdHJhY2sgb2YgdGhlIHdob2xlIGJ1cnN0XG4gODcxOlx0XHQgKiBsZW5ndGgsIG5lZWQgdG8gdXBkYXRlIGxlbmd0aCBvZiBpdCBhbmQgdGhlIGxhc3QgcGFja2V0LlxuIDg3MjpcdFx0ICovXG4gODczOlx0XHRza2Jfd2Fsa19mcmFncyhza2IsIGl0ZXIpIHtcbiA4NzQ6XHRcdFx0bGFzdCA9IGl0ZXI7XG4gODc1Olx0XHRcdGlmICghaXRlci1cdTAwM2VuZXh0KSB7XG4gODc2Olx0XHRcdFx0c2tiLVx1MDAzZWRhdGFfbGVuICYjNDM7PSBwYWQ7XG4gODc3Olx0XHRcdFx0c2tiLVx1MDAzZWxlbiAmIzQzOz0gcGFkO1xuIDg3ODpcdFx0XHRcdGJyZWFrO1xuIDg3OTpcdFx0XHR9XG4gODgwOlx0XHR9XG4gODgxOlx0XG4gODgyOlx0XHRpZiAoX19za2JfcGFkKGxhc3QsIHBhZCwgZmFsc2UpKVxuIDg4MzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA4ODQ6XHRcbiA4ODU6XHRcdF9fc2tiX3B1dChsYXN0LCBwYWQpO1xuIDg4NjpcdFxuIDg4NzpcdFx0cmV0dXJuIDA7XG4gODg4Olx0fVxuIDg4OTpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfc2tiX2FkanVzdF9wYWQpO1xuIDg5MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTQwCgkJCQkJCQlvdXRwdXQ6IDI3NgoJCQkJCQkJdGhvdWdodHM6IDE1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAgSXNzdWUqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgZGVhbC4gYG10NzZfc2tiX2FkanVzdF9wYWRgIGlzIGRlc2lnbmVkIHN1Y2ggdGhhdCBpdHMgY2FsbGVyIHRha2VzIHJlc3BvbnNpYmlsaXR5IGZvciBoYW5kbGluZyBhbnkgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuIElmIGBtdDc2X3NrYl9hZGp1c3RfcGFkYCB0aHJvd3MgYW4gYC1FTk9NRU1gIGVycm9yLCB0aGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIGNsZWFuIHVwLCB3aGljaCB1c3VhbGx5IG1lYW5zIGZyZWVpbmcgdGhlIGBza2JgLiBOb3csIGhlcmUmIzM5O3MgdGhlIHBvdGVudGlhbCBwaXRmYWxsOiBpZiBgc2tiX3BhZGAgaGFzICphbHJlYWR5KiBkZWFsbG9jYXRlZCBgbGFzdGAgKHRoYXQgY291bGQgYmUgdGhlIGBza2JgIGl0c2VsZiBvciBvbmUgb2YgaXRzIGZyYWdtZW50cyksIHRoZW4gdGhlIGNhbGxlciYjMzk7cyBzdWJzZXF1ZW50IGF0dGVtcHQgdG8gZnJlZSB0aGUgYHNrYmAgaXMgZ29pbmcgdG8gdHJpZ2dlciBlaXRoZXIgYSBkb3VibGUtZnJlZSBvciBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLiBDbGVhcmx5LCB0aGlzIHBvaW50cyB0byBhIG5hc3R5IG1lbW9yeSBjb3JydXB0aW9uIHZ1bG5lcmFiaWxpdHkuCgpUaGUgZ29vZCBuZXdzIGlzIHRoYXQgdGhpcyBpcyBhIHRleHRib29rIGNhc2UgZm9yIEtBU0FOLiBXZSBhcmUgbG9va2luZyBhdCBhbiBpc3N1ZSB3aGVyZSBtZW1vcnkgaXMgYmVpbmcgaW5jb3JyZWN0bHkgbWFuYWdlZCwgbGVhZGluZyB0byBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgc2FtZSBtZW1vcnkgaXMgYmVpbmcgZnJlZWQgbXVsdGlwbGUgdGltZXMgb3IgYWNjZXNzZWQgYWZ0ZXIgaXQmIzM5O3MgYmVlbiByZWxlYXNlZC4gVGhlIG5hdHVyZSBvZiB0aGUgYnVnIGRvZXNuJiMzOTt0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgYW55IHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcy4gVGhlcmVmb3JlLCB0aGVyZSYjMzk7cyBhYnNvbHV0ZWx5IG5vIHJlYXNvbiB0byBicmluZyBLTVNBTiBpbnRvIHRoZSBwaWN0dXJlIGhlcmUuCgpTbywgSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgd2UgY2FuIGNvbmZpZGVudGx5IHNldCBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBLQVNBTiBpcyBwZXJmZWN0bHkgc3VpdGVkIHRvIGRpYWdub3NlIHRoZSBkb3VibGUtZnJlZS9VQUYgdGhhdCB0aGlzIGJ1ZyBjcmVhdGVzLiBUaGVyZSBpcyBubyBuZWVkIGZvciBLTVNBTi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYHNrYl9wYWQobGFzdCwgcGFkKWAgd2l0aCBgX19za2JfcGFkKGxhc3QsIHBhZCwgZmFsc2UpYC4gVGhlIGBza2JfcGFkKClgIGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBhcm91bmQgYF9fc2tiX3BhZCgpYCB0aGF0IHBhc3NlcyBgdHJ1ZWAgZm9yIHRoZSBgZnJlZV9vbl9lcnJvcmAgYXJndW1lbnQsIG1lYW5pbmcgaXQgZnJlZXMgdGhlIHNrYiBpZiBwYWRkaW5nIGZhaWxzLiBJZiBgc2tiX3BhZCgpYCBmYWlscyBhbmQgZnJlZXMgdGhlIHNrYiAob3IgYSBmcmFnbWVudCBvZiBpdCksIHRoZSBjYWxsZXIgb2YgYG10NzZfc2tiX2FkanVzdF9wYWQoKWAgbWlnaHQgYWxzbyBhdHRlbXB0IHRvIGZyZWUgdGhlIG9yaWdpbmFsIHNrYiB1cG9uIHJlY2VpdmluZyB0aGUgYC1FTk9NRU1gIGVycm9yLCBsZWFkaW5nIHRvIGEgZG91YmxlIGZyZWUgb3IgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eS5cblxuQnkgY2hhbmdpbmcgdGhlIGNhbGwgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAsIHRoZSBwYXRjaCBwcmV2ZW50cyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IsIGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gc2FmZWx5IGhhbmRsZSB0aGUgY2xlYW51cCB3aXRob3V0IHRyaWdnZXJpbmcgYSBkb3VibGUgZnJlZS5cblxuRG91YmxlIGZyZWUgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MgYXJlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB0aGF0IGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBza2JfcGFkKGxhc3QsIHBhZClgIHdpdGggYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAuIFRoZSBgc2tiX3BhZCgpYCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIGBfX3NrYl9wYWQoKWAgdGhhdCBwYXNzZXMgYHRydWVgIGZvciB0aGUgYGZyZWVfb25fZXJyb3JgIGFyZ3VtZW50LCBtZWFuaW5nIGl0IGZyZWVzIHRoZSBza2IgaWYgcGFkZGluZyBmYWlscy4gSWYgYHNrYl9wYWQoKWAgZmFpbHMgYW5kIGZyZWVzIHRoZSBza2IgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLCB0aGUgY2FsbGVyIG9mIGBtdDc2X3NrYl9hZGp1c3RfcGFkKClgIG1pZ2h0IGFsc28gYXR0ZW1wdCB0byBmcmVlIHRoZSBvcmlnaW5hbCBza2IgdXBvbiByZWNlaXZpbmcgdGhlIGAtRU5PTUVNYCBlcnJvciwgbGVhZGluZyB0byBhIGRvdWJsZSBmcmVlIG9yIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkuXG5cbkJ5IGNoYW5naW5nIHRoZSBjYWxsIHRvIGBfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSlgLCB0aGUgcGF0Y2ggcHJldmVudHMgdGhlIHNrYiBmcm9tIGJlaW5nIGZyZWVkIG9uIGVycm9yLCBhbGxvd2luZyB0aGUgY2FsbGVyIHRvIHNhZmVseSBoYW5kbGUgdGhlIGNsZWFudXAgd2l0aG91dCB0cmlnZ2VyaW5nIGEgZG91YmxlIGZyZWUuXG5cbkRvdWJsZSBmcmVlIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgdGhhdCBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjAyLjA3NzkwODg2MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTU5NDczMDI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc2NjNVXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl9za2JfYWRqdXN0X3BhZFwiLFxuICAgIFwibXQ3NngwMnVfdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGBza2JfcGFkKGxhc3QsIHBhZClgIHdpdGggYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAuIFRoZSBgc2tiX3BhZCgpYCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIGBfX3NrYl9wYWQoKWAgdGhhdCBwYXNzZXMgYHRydWVgIGZvciB0aGUgYGZyZWVfb25fZXJyb3JgIGFyZ3VtZW50LCBtZWFuaW5nIGl0IGZyZWVzIHRoZSBza2IgaWYgcGFkZGluZyBmYWlscy4gSWYgYHNrYl9wYWQoKWAgZmFpbHMgYW5kIGZyZWVzIHRoZSBza2IgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLCB0aGUgY2FsbGVyIG9mIGBtdDc2X3NrYl9hZGp1c3RfcGFkKClgIG1pZ2h0IGFsc28gYXR0ZW1wdCB0byBmcmVlIHRoZSBvcmlnaW5hbCBza2IgdXBvbiByZWNlaXZpbmcgdGhlIGAtRU5PTUVNYCBlcnJvciwgbGVhZGluZyB0byBhIGRvdWJsZSBmcmVlIG9yIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkuXFxuXFxuQnkgY2hhbmdpbmcgdGhlIGNhbGwgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAsIHRoZSBwYXRjaCBwcmV2ZW50cyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IsIGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gc2FmZWx5IGhhbmRsZSB0aGUgY2xlYW51cCB3aXRob3V0IHRyaWdnZXJpbmcgYSBkb3VibGUgZnJlZS5cXG5cXG5Eb3VibGUgZnJlZSBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncyBhcmUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHRoYXQgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgc2tiX3BhZCB0byBfX3NrYl9wYWQoLi4uLCBmYWxzZSkgaW4gbXQ3Nl9za2JfYWRqdXN0X3BhZCwgcHJldmVudGluZyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgbWVtb3J5IG1hbmFnZW1lbnQgKGF2b2lkaW5nIGRvdWJsZS1mcmVlIG9yIG1lbW9yeSBsZWFrcykuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHZhcmlvdXMgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNTowMi4wNzc5MTU0NzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzAxMjI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMxZDRjYWI4ZWQyYmRkNTM0ZDQyNDE2N2Q1ZTM0ODFjNGZhMzgzODVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDk6MjU6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jXFxuaW5kZXggMzcwN2VlMTllNGFlNy4uZWM1MDM1MjFhZTYzMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcXG5AQCAtODc5LDcgKzg3OSw3IEBAIGludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHNrYl9wYWQobGFzdCwgcGFkKSlcXG4rXFx0aWYgKF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRfX3NrYl9wdXQobGFzdCwgcGFkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MDIuNTg1NjI0MDU5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQ5MDY2MDY3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIixcbiAgICBcIk1UNzY2M1VcIixcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2X3NrYl9hZGp1c3RfcGFkXCIsXG4gICAgXCJtdDc2eDAydV90eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgc2tiX3BhZCB0byBfX3NrYl9wYWQoLi4uLCBmYWxzZSkgaW4gbXQ3Nl9za2JfYWRqdXN0X3BhZCwgcHJldmVudGluZyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgbWVtb3J5IG1hbmFnZW1lbnQgKGF2b2lkaW5nIGRvdWJsZS1mcmVlIG9yIG1lbW9yeSBsZWFrcykuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHZhcmlvdXMgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMWQ0Y2FiOGVkMmJkZDUzNGQ0MjQxNjdkNWUzNDgxYzRmYTM4Mzg1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDk6MjU6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbmluZGV4IDM3MDdlZTE5ZTRhZTcuLmVjNTAzNTIxYWU2MzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguY1xuQEAgLTg3OSw3ICs4NzksNyBAQCBpbnQgbXQ3Nl9za2JfYWRqdXN0X3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoc2tiX3BhZChsYXN0LCBwYWQpKVxuK1x0aWYgKF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRfX3NrYl9wdXQobGFzdCwgcGFkKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjAyLjU4NTYyNTI3OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1Mzk4NDE3NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVkaWF0ZWsgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGFsdGVycyBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHN3aXRjaGluZyBmcm9tIGBza2JfcGFkKGxhc3QsIHBhZClgIHRvIGBfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSlgLiBSaWdodCwgYHNrYl9wYWRgIGlzIGp1c3QgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBgX19za2JfcGFkYCB3aXRoIHRoYXQgdGhpcmQgYXJndW1lbnQsIGBmcmVlX29uX2Vycm9yYCwgc2V0IHRvIGB0cnVlYC4gU28sIGVmZmVjdGl2ZWx5LCB0aGUgb3JpZ2luYWwgY29kZSBmcmVlZCB0aGUgU0tCIG9uIGVycm9yLCBhbmQgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGl0IHRvICpub3QqIGZyZWUgaXQgb24gZXJyb3IuIFRoaXMgaXMgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYSBzdWJ0bGUgZGlmZmVyZW5jZSBpbiBob3cgbWVtb3J5IGlzIG1hbmFnZWQgZHVyaW5nIHBhY2tldCBwYWRkaW5nLlxuXG5UaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSwgZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBpcyB0aGUgaW1wYWN0IG9mIHRoaXMuIE10NzYgaXMgYSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXIuLi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHVzZSBjYXNlIHRvIGRldGVybWluZSB0aGUgaW1wYWN0LiBXYWl0LCBpcyB0aGlzIGRyaXZlciBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElzIGl0IGVtdWxhdGVkIGhhcmR3YXJlLCBvciBpcyBpdCBhIFVTQiBkcml2ZXI/IFRoZSBhbnN3ZXIgd2lsbCBoZWF2aWx5IGluZmx1ZW5jZSB0aGUgaW1wYWN0LiBPa2F5LCBsZXQncyBjaGVjay4gQWgsIHJpZ2h0LCBgbXQ3NmAgZG9lcyBoYXZlIFVTQiBkcml2ZXJzOiBgbXQ3NngwMl91c2JgLCBgbXQ3NngydWAsIGBtdDc5MjF1YCwgYW5kIGEgZmV3IG90aGVycy4gXG5cbkknbGwgY2hlY2sgdGhlIEtjb25maWcgbm93IHRvIHNlZSB3aGljaCBkcml2ZXJzIGFyZSBlbmFibGVkIGluIHdoaWNoIHNjZW5hcmlvcyBhbmQgaG93IHRoaXMgY2hhbmdlIG1pZ2h0IHJpcHBsZSB0aHJvdWdoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gYSBjb21tb25seSB1c2VkIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gb3Igbm90LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTkzLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MDguMTI1NDgzODk4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MDc1MTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfc2tiX2FkanVzdF9wYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTg2Mz12b2lkIG10NzZfZXRodG9vbF93b3JrZXIoc3RydWN0IG10NzZfZXRodG9vbF93b3JrZXJfaW5mbyAqd2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg2NC1cXHRcXHRcXHQgc3RydWN0IG10NzZfc3RhX3N0YXRzICpzdGF0cywgYm9vbCBlaHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4NjU6aW50IG10NzZfc2tiX2FkanVzdF9wYWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHBhZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg2Ni1pbnQgX19tdDc2dV92ZW5kb3JfcmVxdWVzdChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTggcmVxLCB1OCByZXFfdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9tY3UuYz0xNz1tdDc2NjN1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jLTMxLVxcdHBhZCA9IHJvdW5kX3VwKHNrYi1cXHUwMDNlbGVuLCA0KSArIDQgLSBza2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2JfbWN1LmM6MzI6XFx0cmV0ID0gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jLTMzLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0xODE9aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoyMTg6XFx0ZXJyID0gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMTktXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jPTQ2PWludCBtdDc2eDAydV9za2JfZG1hX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHBvcnQsIHUzMiBmbGFncylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTYwLVxcdHBhZCA9IHJvdW5kX3VwKHNrYi1cXHUwMDNlbGVuLCA0KSArIDQgLSBza2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzo2MTpcXHRyZXR1cm4gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNjItfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9Nzc2PWludCBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MTU6XFx0ZXJyID0gbXQ3Nl9za2JfYWRqdXN0X3BhZChza2IsIHBhZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODE2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjMzPWludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY3MTpcXHRlcnIgPSBtdDc2X3NrYl9hZGp1c3RfcGFkKHNrYiwgcGFkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjcyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYz01NTk9bXQ3NnNfdHhfcXVldWVfc2tiX3JhdyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3NkaW8uYy01NjQtXFx0cGFkID0gcm91bmRfdXAoc2tiLVxcdTAwM2VsZW4sIDQpIC0gc2tiLVxcdTAwM2VsZW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9zZGlvLmM6NTY1OlxcdHJldCA9IG10NzZfc2tiX2FkanVzdF9wYWQoc2tiLCBwYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvc2Rpby5jLTU2Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTg2ND1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X2FjX3RvX2h3cSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODY2OmludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtODg4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODg5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfc2tiX2FkanVzdF9wYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04OTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjA4LjIwMDU2MzMzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYxODQ4MjQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIG10NzZfc2tiX2FkanVzdF9wYWQqKlxuXG5Pa2F5LCBzbyBgbXQ3Nl9za2JfYWRqdXN0X3BhZGDigKYgdGhhdCByaW5ncyBhIGJlbGwuIEl04oCZcyB1c2VkIHdpdGhpbiB0aGUgbXQ3NiBmcmFtZXdvcmssIHNwZWNpZmljYWxseSB3aXRoaW4gaXRzIFVTQiBhbmQgU0RJTyBkcml2ZXJzLiBJbnRlcmVzdGluZy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBmdXp6aW5nIHBvc3NpYmlsaXRpZXMuIFNpbmNlIGl0J3MgaW4gdGhlIFVTQiBkcml2ZXIsIEkgc2hvdWxkIGJlIGFibGUgdG8gbGV2ZXJhZ2UgZHVtbXlfaGNkIG9yIHN5emthbGxlcuKAmXMgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBUaGF0J3MgYSBncmVhdCBzdGFydGluZyBwb2ludCBmb3IgZmluZGluZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBCdXQgYmVmb3JlIGRpdmluZyB0b28gZGVlcCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIG10NzYgVVNCIGRyaXZlcnMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gVW5kZXJzdGFuZGluZyB3aGF0J3MgZW5hYmxlZCBhbmQgZGlzYWJsZWQgd2lsbCBoZWxwIGRldGVybWluZSB0aGUgYXR0YWNrIHN1cmZhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNzMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNToxMS44MTkwNTYwNDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc4ODE0OTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyOmNvbmZpZyBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjY6Y29uZmlnIE1UNzZfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy03LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTI6Y29uZmlnIE1UNzZfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc2X1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MjA6Y29uZmlnIE1UNzZ4MDJfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI0OmNvbmZpZyBNVDc2eDAyX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyODpjb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9MzY9Y29uZmlnIE1UNzkyeF9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZzoyOmNvbmZpZyBNVDc2MDNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2MDNFIChQQ0llKSBhbmQgTVQ3Nng4IFdMQU4gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjM6Y29uZmlnIE1UNzYxNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjg6Y29uZmlnIE1UNzYxNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzYxNUUgYW5kIE1UNzY2M0UgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6MjE6Y29uZmlnIE1UNzYyMl9XTUFDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yMi1cXHRib29sIFxcXCJNVDc2MjIgKFNvQykgV01BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjMyOmNvbmZpZyBNVDc2NjNfVVNCX1NESU9fQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjM2OmNvbmZpZyBNVDc2NjNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zNy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjYzVSAoVVNCKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjQ3OmNvbmZpZyBNVDc2NjNTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00OC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjYzUyAoU0RJTykgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjI6Y29uZmlnIE1UNzZ4MF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjY6Y29uZmlnIE1UNzZ4MFVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MFUgKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzoxOTpjb25maWcgTVQ3NngwRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MEUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDJFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE4OmNvbmZpZyBNVDc2eDJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngyVSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNToxMi4wOTc4NzYzMjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM2OTY5MTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgcXVpY2sgcnVuZG93biBvZiB0aG9zZSBjaGlwc2V0cywga2VlcGluZyBpbiBtaW5kIG15IGZpZWxkIGV4cGVydGlzZTpcblxuKipDaGVja2luZyB0aGUgTWVkaWF0ZWsgTGluZXVwKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoZSBNZWRpYXRlayBXaUZpIGNoaXBzZXQgbGFuZHNjYXBlLiBJJ3ZlIGdvdCBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYW5kIGBNVDc2NjNVYCBmbGFnZ2VkLCBvYnZpb3VzbHkgZmFtaWxpYXIgdGVycml0b3J5LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gdXAgdG8gc3BlZWQgb24gdGhlICplbnRpcmUqIHJhbmdlLiBHaXZlbiByZWNlbnQgZGV2ZWxvcG1lbnRzLCBpdCdzIHdvcnRoIGNyb3NzLXJlZmVyZW5jaW5nIHRoZXNlIGFnYWluc3QgdGhlIG5ld2VyIG9mZmVyaW5ncy4gU28sIGxldCdzIGNpcmNsZSBiYWNrIHRvIGNvbnNpZGVyIGhvdyBgTVQ3OTIxVWAgYW5kIGBNVDc5MjVVYCBmaXQgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBXaGVyZSBkbyB0aGV5IHN0YW5kIGluIHRoZSBldm9sdXRpb24gYW5kIHdoYXQgY2FwYWJpbGl0aWVzIGRvIHRoZXkgYnJpbmcgdG8gdGhlIHRhYmxlIGNvbXBhcmVkIHRvIHRoZXNlIG9sZGVyIGNoaXBzPyBLZWVwaW5nIGFuIGV5ZSBvbiB0aGUgYmlnZ2VyIHBpY3R1cmUgaXMga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDI5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MTUuNDM0ODQ4Nzk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NTgzNzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz0yOD1jb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjMyOmNvbmZpZyBNVDc5MnhfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM2OmNvbmZpZyBNVDc5MnhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM3LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MTVFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MTVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnOjE3OmNvbmZpZyBNVDc5OFhfV01BQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWctMTgtXFx0Ym9vbCBcXFwiTVQ3OTh4IChTb0MpIFdNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyMV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MTc6Y29uZmlnIE1UNzkyMVNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFTIChTRElPKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Nzpjb25maWcgTVQ3OTI1RVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnOjI6Y29uZmlnIE1UNzk5NkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzk5NiAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZzoxNjpjb25maWcgTVQ3OTk2X05QVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWctMTctXFx0Ym9vbCBcXFwiTVQ3OTk2IChQQ0llKSBOUFUgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MTUuNTAwNDM2NDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Njc5NTM3MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBNVDc2IERyaXZlciBVU0IgVnVsbmVyYWJpbGl0aWVzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlcyBpbiB0aGlzIE1UNzYgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gVVNCIHNpbmNlIFNESU8gaXMgYSBoYXJkZXIgdGFyZ2V0IGZvciBmdXp6aW5nLiAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggVVNCLXNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgbW9zdCBpbnRlcmVzdGluZy4gSSd2ZSBub3RlZCB0aGF0IHdlIGNhbiBlbmFibGUgc3VwcG9ydCBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgY2hpcHNldHM6IGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gIFRoYXQncyBhIGdvb2Qgc3RhcnQ7IGtub3dpbmcgdGhlIHN1cHBvcnRlZCBoYXJkd2FyZSBnaXZlcyBtZSBhIHdpZGUgcmFuZ2UgdG8gZXhwbG9yZS5cblxuVGhlbiwgSSBpZGVudGlmaWVkIHRoYXQgdGhlIGBtdDc2X3NrYl9hZGp1c3RfcGFkYCBmdW5jdGlvbiBpcyB1c2VkIGJ5IHNldmVyYWwgY3JpdGljYWwtbG9va2luZyBmdW5jdGlvbnMgYWNyb3NzIG11bHRpcGxlIGRldmljZS1zcGVjaWZpYyBzdWJtb2R1bGVzLiBJJ20gbm90aW5nIHRoZSBwbGFjZXMgd2hlcmUgaXQncyB1c2VkOiBpbiBgbXQ3NjYzdV9tY3Vfc2VuZF9tZXNzYWdlYCAodGhhdCBjb3VsZCBiZSBpbnRlcmVzdGluZyBmb3IgY29tbWFuZCBpbmplY3Rpb24sIG9yIG1lc3Npbmcgd2l0aCBtZXNzYWdlcyBiZXR3ZWVuIHRoZSBob3N0IGFuZCBmaXJtd2FyZSksIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBgbXQ3NngwMnVfc2tiX2RtYV9pbmZvYCwgYG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgICh0aGF0J3MgZ29pbmcgdG8gYmUgYSBsb3Qgb2YgY29kZSByZXVzZSkgYW5kIGBtdDc2c190eF9xdWV1ZV9za2JfcmF3YCB3aGljaCBjb3VsZCBiZSB1c2VmdWwgdG8gaW52ZXN0aWdhdGUsIHRob3VnaCB0aGlzIGlzIHRoZSBTRElPIGltcGxlbWVudGF0aW9uLiAgU2luY2UgSSdtIHRhcmdldGluZyBVU0IsIEkgY2FuIHByb2JhYmx5IGlnbm9yZSB0aGF0LlxuXG5Ob3csIG15IGF0dGVudGlvbiBpcyBwYXJ0aWN1bGFybHkgZHJhd24gdG8gYG10NzZ4MDJ1X3NrYl9kbWFfaW5mb2AsIGJlY2F1c2UgdGhhdCdzIHJpZ2h0IGluIHRoZSBVU0IgcGF0aCwgYW5kIGl0J3MgY2FsbGluZyBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAuIEknbGwgd2FudCB0byBzZWUgd2hlcmUgYG10NzZ4MDJ1X3NrYl9kbWFfaW5mb2AgaXMgYWN0dWFsbHkgY2FsbGVkIGFuZCB3aGF0IGRhdGEgaXMgYmVpbmcgcGFzc2VkIHRvIGl0LiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgc29tZXRoaW5nIGV4cGxvaXRhYmxlIHRoZXJlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDcwLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjIzLjE3OTk3NjU0N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY5MDYzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMnVfc2tiX2RtYV9pbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaD0xND1pbnQgbXQ3NngwMnVfbWN1X2Z3X3NlbmRfZGF0YShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaC0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmg6MTc6aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiLmgtMTgtaW50IG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jPTQ0PUVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJ1X21hY19zdGFydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmMtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6NDY6aW50IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCwgdTMyIGZsYWdzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jPTY0PWludCBtdDc2eDAydV90eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy0xMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6MTEwOlxcdGVyciA9IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyh0eF9pbmZvLVxcdTAwM2Vza2IsIFdMQU5fUE9SVCwgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTExMS1cXHRpZiAoZXJyIFxcdTAwMjZcXHUwMDI2IHdjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jPTcwPV9fbXQ3NngwMnVfbWN1X3NlbmRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy05MC1cXHQgICAgICAgTVRfTUNVX01TR19UWVBFX0NNRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jOjkxOlxcdHJldCA9IG10NzZ4MDJ1X3NrYl9kbWFfaW5mbyhza2IsIENQVV9UWF9QT1JULCBpbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTkyLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjIzLjI3Njg4ODc3N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQyMDk2ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb2RlIGVudHJ5IHBvaW50cywgdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGFzIGlmIEkgd2VyZSB0aGUgb25lIGV4YW1pbmluZyB0aGUgY29kZTpcblxuKipBbmFseXppbmcgUG90ZW50aWFsIEVudHJ5IFBvaW50cyBmb3IgVHJhbnNtaXNzaW9uIFBhdGgqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAgYW5kIGBfX210NzZ4MDJ1X21jdV9zZW5kX21zZ2Agc2VlbSBsaWtlIHByaW1lIGNhbmRpZGF0ZXMgdG8ga2ljayB0aGluZ3Mgb2ZmLiBUaGV5J3JlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciBleGFtaW5pbmcgdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzLCBnaXZlbiB0aGVpciBuYW1pbmcgY29udmVudGlvbi4gTm93LCBsZXQncyBicm9hZGVuIHRoZSBzY29wZSBhIGJpdC4gSSBzaG91bGQgYWxzbyBjaGVjayBgbXQ3NjYzdV9tY3Vfc2VuZF9tZXNzYWdlYCBhbmQgYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIHRvIHNlZSBpZiB0aGV5IGFyZSBzaW1pbGFyIGFuZC9vciBvZmZlciBhbnkgYWRkaXRpb25hbCBpbnNpZ2h0cyBpbnRvIHRoZSBkYXRhIGZsb3cuIFRoaXMgbWlnaHQgaGVscCBpZGVudGlmeSBhbnkgZGV2aWF0aW9ucyBpbiB0aGUgY2hpcHNldCdzIHRyYW5zbWlzc2lvbiBwcm9jZWR1cmVzLCBkZXBlbmRpbmcgb24gaG93IGl0J3MgaW50ZXJmYWNpbmcgKGUuZy4sIFVTQiB2cy4gU0RJTykuIEV4cGFuZGluZyB0aGUgc2VhcmNoIGFsd2F5cyBoZWxwcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY3NCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjI3LjIxODk4ODY4MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI1MjYzNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTU0MD12b2lkIG10NzYyMl90cmlnZ2VyX2hpZl9pbnQoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgYm9vbCBlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDItLyogdXNiICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6NTQzOmludCBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NDQtXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmM9NzY9c3RhdGljIGludCBtdDc2NjNzX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtODEtXFx0XFx0LmRydl9mbGFncyA9IE1UX0RSVl9SWF9ETUFfSERSLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzo4MjpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTgzLVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MTEyPXN0YXRpYyBpbnQgbXQ3NjYzdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMTctXFx0XFx0LmRydl9mbGFncyA9IE1UX0RSVl9SWF9ETUFfSERSIHwgTVRfRFJWX0hXX01HTVRfVFhRLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjExODpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTE5LVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2NjNfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYz0xNzk9RVhQT1JUX1NZTUJPTF9HUEwobXQ3NjYzX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0xODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYzoxODE6aW50IG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmMtMTgyLVxcdFxcdFxcdFxcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMjQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9zZGlvLmM6MjI1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX3NkaW8uYy0yMjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjI3LjMwMTUyMTc0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjMxMjg3OTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBwcm9ibGVtOlxuXG4qKkNoZWNraW5nIFRYIFByZXBhcmF0aW9uIGZvciBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAgaXMgdXNlZCBpbiBib3RoIHRoZSBVU0IgKGBtdDc2NjN1X3Byb2JlYCkgYW5kIFNESU8gKGBtdDc2NjNzX3Byb2JlYCkgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIFRoYXQgbWFrZXMgaXQgYSBsaWtlbHkgY2FuZGlkYXRlIGZvciBVU0IgZnV6emluZywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEdpdmVuIHRoYXQgaXQncyBhIGNvbW1vbiBmdW5jdGlvbiwgaXQgaXMgcHJvYmFibHkgY2FsbGVkIGZyb20gc29tZSBjZW50cmFsIHBvaW50IG9mIHRoZSBVU0IgZHJpdmVyLiBJdCdzIHRpbWUgdG8gYnJhbmNoIG91dC4gTGV0J3Mgc2hpZnQgb3VyIGZvY3VzIHRvIGBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIHRvIGNoZWNrIGlmIGEgc2ltaWxhciBwYXR0ZXJuIGV4aXN0cywgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBkaWZmZXJlbmNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gdGhvc2UgKnNrYiogcHJlcGFyYXRpb24gcm91dGluZXMuIFRoYXQncyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2UgbGlrZWx5IGxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMDA3LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MzEuNTMyODEyNTg4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTUzODcxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NzY0PW10NzkyMV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6Nzc2OmludCBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03NzctXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MjEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjgyMjpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTMyNj1pbnQgbXQ3OTIxX21jdV9nZXRfdGVtcGVyYXR1cmUoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oOjMyODppbnQgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzI5LVxcdFxcdFxcdFxcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jPTkwPXN0YXRpYyBpbnQgbXQ3OTIxc19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTk4LVxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYzo5OTpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTEwMC1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTIxX3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTU5LVxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE2MDpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTYxLVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNTozMS42MDQzNTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE2Nzk3MDM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIG10NzkyMSBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGBtdDc5MjFgIFVTQi9TRElPIGRyaXZlciBpcyBiZWluZyBpbml0aWFsaXplZC4gTXkgY3VycmVudCBsaW5lIG9mIHRoaW5raW5nIHJldm9sdmVzIGFyb3VuZCBob3cgdGhlIHRyYW5zbWl0IHBhdGggaXMgc2V0IHVwLiBJIHNlZSB0aGF0IHRoZSBmdW5jdGlvbiBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIHRoZSBgbXQ3OTIxdV9wcm9iZWAgZnVuY3Rpb24uIFRoYXQncyB0aGUga2V5IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCBzbyBJJ20gZ2V0dGluZyBhIHNlbnNlIG9mIHdoZXJlIHRoaXMgZml0cyBpbnRvIHRoZSBvdmVyYWxsIHNjaGVtZS5cblxuTm93LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIHJlbGF0ZWQgZnVuY3Rpb24gZm9yIHRoZSBgbXQ3OTI1YCBzZXJpZXMuIExldCBtZSBjb21wYXJlIHRoYXQgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIHNvIHRoYXQgSSBjYW4gc2VlIHRoZSBwb3RlbnRpYWwgc2ltaWxhcml0aWVzIGFuZCBkaWZmZXJlbmNlcyBpbiB0aGUgdHJhbnNtaXQgcHJlcGFyYXRpb24gbG9naWMgb2YgdGhlIHR3by4gVGhpcyBjb21wYXJpc29uIHNob3VsZCBwcm92aWRlIHNvbWUgdmFsdWFibGUgaW5zaWdodHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzAwLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MzcuNzcyMzI4Mzk2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAyNzIwMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjE9bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMzppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzNC1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2Nzg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzY5PWludCBtdDc5MjVfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzcxOmludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzItXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1OS1cXHRcXHRcXHRcXHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjA6XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2MS1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6MzcuODgyNjA0Mzg1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MTU3Mzk1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgY2xlYXIgdGhlIGNoYW5nZSBmcm9tIGBza2JfcGFkYCB0byBgX19za2JfcGFkKGxhc3QsIHBhZCwgZmFsc2UpYCBpbiBgbXQ3OTI1dV9wcm9iZWAgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgc2VlbXMgdG8gYmUgcHJldmVudGluZyB0aGUgZnJlZWluZyBvZiB0aGUgU0tCIG9uIGVycm9yLCB3aGljaCBjb3VsZCBoYXZlIGltcGxpY2F0aW9ucyBkb3duIHRoZSBsaW5lLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIGxpZXMgd2l0aGluIGBtdDc2X3NrYl9hZGp1c3RfcGFkYCwgYW5kIHRoYXQncyBjYWxsZWQgaW4gc2V2ZXJhbCBvdGhlciBwbGFjZXMgYmVzaWRlcyB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uLlxuXG5JIHNlZSB0aGF0IGBtdDc2eDAydV9za2JfZG1hX2luZm9gLCBgbXQ3NjYzdV9tY3Vfc2VuZF9tZXNzYWdlYCwgYG10NzY2M191c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCBhbGwgY2FsbCB0aGF0IHNhbWUgYG10NzZfc2tiX2FkanVzdF9wYWRgIGZ1bmN0aW9uLiBUaGF0J3MgZ29vZCB0byBrbm93LCBiZWNhdXNlIHRob3NlIGFyZSBhbGwgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZyEgVGhpcyBjb3VsZCBjcmVhdGUgYSBicm9hZGVyIGF0dGFjayBzdXJmYWNlIHRoYW4gaW5pdGlhbGx5IGFudGljaXBhdGVkLlxuXG5UaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXBwZWFyIHRvIGJlIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYE1UNzkyNVVgLCBhbmQgb2YgY291cnNlIGBNVDc2X1VTQmAuIE5vdywgSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZXNlIGNvbmZpZ3VyYXRpb25zIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMuIFdlIG5lZWQgdG8gdHJhY2UgdGhpcyBmdXJ0aGVyIHRvIHNlZSB3aGF0IGVsc2UgY291bGQgYmUgYWZmZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzc4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjQ0LjI5ODM0NjI2NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg5MDEwOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzZ4MFVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZz0yPWNvbmZpZyBNVDc2eDBfQ09NTU9OXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjQ0LjM4NzI1NDA3NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODc4NTk1NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgTVQ3NngwVSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBNVDc2eDBVLiBCZWZvcmUgSSBldmVuIGJlZ2luIHRvIGNvbnNpZGVyIHRoZSBtYWluIGZ1bmN0aW9uYWxpdHksIEkgbmVlZCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaXRzIGRlcGVuZGVuY2llcy4gSSdtIHRoaW5raW5nIGJleW9uZCBqdXN0IHRoZSBvYnZpb3VzIGRyaXZlciBtb2R1bGVzLiBXaGVyZSBkb2VzIHRoaXMgY2hpcCBpbnRlcmZhY2U/IEFyZSB0aGVyZSBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbnMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIG9uPyBXaGF0IGFib3V0IGZpcm13YXJlPyBBcmUgdGhlcmUgYW55IGhhcmRjb2RlZCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgaGFyZHdhcmUgZW52aXJvbm1lbnQsIGxpa2Ugc3BlY2lmaWMgY2xvY2sgZnJlcXVlbmNpZXMgb3IgbWVtb3J5IG1hcHBpbmcgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQ/XG5cbkxldCdzIHNlZSwgd2hhdCB0b29scyBhcmUgYXZhaWxhYmxlIHRvIGhlbHAgaWRlbnRpZnkgdGhlc2UgZGVwZW5kZW5jaWVzPyBgbW9kaW5mb2AgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBvZiBjb3Vyc2UsIGJ1dCB0aGF0J2xsIG9ubHkgZ2l2ZSBtZSB0aGUgZXhwbGljaXRseSBzdGF0ZWQgbW9kdWxlIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIGxvb2sgZGVlcGVyLiBDcm9zcy1yZWZlcmVuY2luZyB0aGUgc291cmNlIGNvZGUgZm9yIGFueSBgaW5jbHVkZWAgZGlyZWN0aXZlcyBhbmQgc3ltYm9sIHVzYWdlIHdpdGggb3RoZXIgbW9kdWxlcyBpbiB0aGUgc3lzdGVtIGlzIGVzc2VudGlhbC4gQW55dGhpbmcgbm9uLXN0YW5kYXJkPyBBcmUgdGhlcmUgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgbHVya2luZyBpbiBjdXN0b20gYnVpbGQgY29uZmlndXJhdGlvbnMgb3IgcGxhdGZvcm0tc3BlY2lmaWMgZGVmaW5pdGlvbnM/XG5cbkZ1cnRoZXJtb3JlLCBJIGhhdmUgdG8gY29uc2lkZXIgdGhlIHBvdGVudGlhbCBmb3IgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLiBBIHNlZW1pbmdseSBpbmRlcGVuZGVudCBtb2R1bGUgbWlnaHQgaW5kaXJlY3RseSBpbnRlcmFjdCB3aXRoIE1UNzZ4MFUgdGhyb3VnaCBzaGFyZWQgcmVzb3VyY2VzIG9yIEFQSXMuIFRoYXQgcmVxdWlyZXMgYSBicm9hZGVyIHN5c3RlbSB2aWV3LCBvciBwZXJoYXBzIGEgcnVudGltZSBhbmFseXNpcyB0byBpZGVudGlmeSBzdWNoIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMuIEknbGwgbmVlZCB0byBtYXAgb3V0IHRoZSBjYWxsIGdyYXBoIGFuZCByZXNvdXJjZSB1c2FnZSB0byBnZXQgYSBmdWxsIHBpY3R1cmUuXG5cblVsdGltYXRlbHksIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kgbGFuZHNjYXBlIGlzIGNyaXRpY2FsLiBPbmx5IHRoZW4gY2FuIEkgYWNjdXJhdGVseSBhc3Nlc3MgdGhlIGltcGFjdCBvZiBhbnkgY2hhbmdlcyBvciBkZWJ1Z2dpbmcgc3RlcHMgSSBuZWVkIHRvIGltcGxlbWVudC4gSXQgd2lsbCBhbHNvIGhlbHAgbWUgcHJvcGVybHkgdHJvdWJsZXNob290IGFuZCByZXNvbHZlIGFueSBjb21wYXRpYmlsaXR5IGlzc3Vlcy4gVGhpcyB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIGVpdGhlciBpbnRlZ3JhdGluZyBvciBkZWJ1Z2dpbmcgdGhpcyBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MjA0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjU6NDkuMjY1ODUzNzkzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5NTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNVDc2eDBfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzZ4MDJfTElCXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNVDc2eDBVXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE1UNzZ4MF9DT01NT05cXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc2eDAyX1VTQlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMFUtYmFzZWQgVVNCIDIuMCB3aXJlbGVzcyBkb25nbGVzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydCAxeDFcXG4gIDE1OlxcdFxcdCAgNDMzTWJwcyBQSFkgcmF0ZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVQ3NngwRVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MEUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjQ5LjI2NTk1NjE0M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAwMjY2Mjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBhIFdpcmVsZXNzIERldmljZSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoaXMgd2lyZWxlc3MgZGV2aWNlLCBwcm9iYWJseSB0cnlpbmcgdG8gdHJvdWJsZXNob290IHNvbWV0aGluZyBvciBpbnRlZ3JhdGUgaXQgaW50byBhIG5ldyBzZXR1cC4gTXkgaW1tZWRpYXRlIGNvbmNlcm5zIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHM6IGBNQUM4MDIxMWAgYW5kIGBVU0JgLiBUaG9zZSBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyBJJ20gZXhwZWN0aW5nIHRvIGJlIGludm9sdmVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmcmFtZXdvcmsgaXMgcHJlc2VudCwgYW5kIHRoYXQgdGhlIFVTQiBzdWJzeXN0ZW0gaXMgaGFuZGxpbmcgdGhlIGRldmljZSBjb3JyZWN0bHkuIFxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIGFib3V0IHRoaXMgc3BlY2lmaWMgY2hpcHNldDogYE1UNzZ4MlVgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGRpZyBpbiBhbmQgc2VlIGlmIHRoZSBkcml2ZXIgaXMgbG9hZGVkLCBpZiBpdCdzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBrbm93biBpc3N1ZXMgd2l0aCBpdC4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBzdGVwIHRvIHBpbnBvaW50aW5nIHRoZSBwcm9ibGVtIGFuZCB3aGVyZSB0aGUgcmVhbCBpbnZlc3RpZ2F0aW9uIGJlZ2lucy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgbW9kdWxlcywgdGhlIGRldmljZSB0cmVlIChpZiBhcHBsaWNhYmxlKSwgYW5kIGFueSByZWxldmFudCBkb2N1bWVudGF0aW9uIGZvciB0aGlzIHBhcnRpY3VsYXIgZGV2aWNlLiBFc3NlbnRpYWxseSwgSSdtIHNldHRpbmcgdGhlIHN0YWdlIGZvciBzb21lIGluLWRlcHRoIGRlYnVnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5MDYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjUzLjA2NjIyNTA4MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzZ4Ml9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3NngwMl9MSUJcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE1UNzZ4MkVcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDJFIChQQ0llKSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE1UNzZ4Ml9DT01NT05cXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2MTIvTVQ3NjAyL01UNzY2Mi1iYXNlZCBQQ0llIHdpcmVsZXNzXFxuICAxMzpcXHRcXHQgIGRldmljZXMsIHdoaWNoIGNvbXBseSB3aXRoIElFRUUgODAyLjExYWMgc3RhbmRhcmRzIGFuZCBzdXBwb3J0XFxuICAxNDpcXHRcXHQgIDJTUyB0byA4NjZNYml0L3MgUEhZIHJhdGUuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0Y29uZmlnIE1UNzZ4MlVcXG4gIDE5OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDJVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAyMDpcXHRcXHRzZWxlY3QgTVQ3NngyX0NPTU1PTlxcbiAgMjE6XFx0XFx0c2VsZWN0IE1UNzZ4MDJfVVNCXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjEyVS1iYXNlZCBVU0IgMy4wIHdpcmVsZXNzIGRvbmdsZXMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjUzLjA2NjMzNjc4MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjk3Mzg1NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQgaW4gbXkgZmllbGQ6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBOYXZpZ2F0aW5nIHRoZSBXaXJlbGVzcyBEcml2ZXIgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgc2l0dWF0aW9uLiBGaXJzdCwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGtleSBkZXBlbmRlbmNpZXMuIFJpZ2h0IGF3YXksIGBNQUM4MDIxMWAgaXMganVtcGluZyBvdXQgYXQgbWUgYXMgYSBjcnVjaWFsIGNvbXBvbmVudC4gVGhpcyBpcyB0aGUgY29yZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN0YWNrLCBzbyBhbnl0aGluZyBpbnZvbHZpbmcgd2lyZWxlc3Mgd2lsbCBkZWZpbml0ZWx5IHJlbHkgb24gaXQuIEFuZCBnaXZlbiB0aGUgXCJVXCIgZGVzaWduYXRpb24gYXQgdGhlIGVuZCBvZiB0aGUgY2hpcHNldCBuYW1lIEknbSBhbHNvIHN1c3BlY3Rpbmcgd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBVU0IgYmFzZWQsIHNvIGBVU0JgIGlzIGFsc28gaW4gdGhlIG1peC4gTm93IHRoYXQgSSBoYXZlIG15IGNvcmUgZGVwZW5kZW5jaWVzIGlkZW50aWZpZWQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzOiBJdCBsb29rcyBsaWtlIHdlJ3JlIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIGBNVDc2NjNVYCBjaGlwc2V0LiBUaW1lIHRvIGRpdmUgaW50byB3aGF0IHRoYXQgZW50YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NzksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI1OjU4LjM2MzcyNjM4M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMDpcXHRcXHQgIDIuNCBHSHogb25seS5cXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIE1UNzY2M19VU0JfU0RJT19DT01NT05cXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXHRzZWxlY3QgTVQ3NjE1X0NPTU1PTlxcbiAgMzU6XFx0XFxuICAzNjpcXHRjb25maWcgTVQ3NjYzVVxcbiAgMzc6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzY2M1UgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDM4OlxcdFxcdHNlbGVjdCBNVDc2X1VTQlxcbiAgMzk6XFx0XFx0c2VsZWN0IE1UNzY2M19VU0JfU0RJT19DT01NT05cXG4gIDQwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDQxOlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2NjNVIDgwMi4xMWFjIDJ4MjoyIHdpcmVsZXNzIGRldmljZXMuXFxuICA0NDpcXHRcXG4gIDQ1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0Y29uZmlnIE1UNzY2M1NcXG4gIDQ4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2NjNTIChTRElPKSBzdXBwb3J0XFxcIlxcbiAgNDk6XFx0XFx0c2VsZWN0IE1UNzZfU0RJT1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNTo1OC4zNjM4MzA1ODNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUwNzgxNTc1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBNVDc5MjFVIGFuZCBpdHMgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgYE1UNzkyMVVg4oCmIExldCdzIHNlZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gSSBhbHJlYWR5IGtub3cgdGhhdCBJIG5lZWQgdG8gY29uc2lkZXIgYE1BQzgwMjExYCwgdGhhdCdzIGEgZ2l2ZW4gZm9yIGFueSB3aXJlbGVzcyBjaGlwc2V0LCBhbmQgYWxzbyB0aGF0IGl0IHdpbGwgbGlrZWx5IHJlbHkgb24gYFVTQmAgZm9yIGNvbW11bmljYXRpb24uIFRob3NlIHR3byBhcmUgZnVuZGFtZW50YWwuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRoZSBgTVQ3OTIxVWAgaXRzZWxmLiBJJ20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgdGhlIHNwZWNpZmljIGRyaXZlciB2ZXJzaW9uIGNvbXBhdGliaWxpdHksIGFueSBrbm93biBmaXJtd2FyZSBpc3N1ZXMsIGFuZCBwZXJmb3JtYW5jZSBiZW5jaG1hcmtzIGluIGNvbXBhcmlzb24gdG8gc2ltaWxhciBjaGlwc2V0cy4gSSBhbHNvIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIGBNQUM4MDIxMWAgZnJhbWV3b3JrIHZlcnNpb24gSSdtIHRhcmdldGluZyBzdXBwb3J0cyB0aGlzIHBhcnRpY3VsYXIgZGV2aWNlLiBJcyB0aGVyZSBhbnl0aGluZyB1bnVzdWFsIGFib3V0IHRoZSBVU0IgaW1wbGVtZW50YXRpb24gb3IgcG93ZXIgbWFuYWdlbWVudCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGFueSByZXBvcnRlZCBxdWlya3Mgb3Igd29ya2Fyb3VuZHMgSSBzaG91bGQgaW52ZXN0aWdhdGU/IEknbGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIHF1aWNrIHNlYXJjaCBvZiB0aGUgbWFpbGluZyBsaXN0cyBhbmQgYnVnIHRyYWNrZXJzIHJlbGF0ZWQgdG8gdGhvc2UgY29tcG9uZW50cyB0byBzZWUgaWYgYW55dGhpbmcganVtcHMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjEzMSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjY6MDUuODcxNjUwODg5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdFxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuICAyMTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIE1NQ1xcbiAgMjM6XFx0XFx0aGVscFxcbiAgMjQ6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxUyA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuICAyNTpcXHRcXG4gIDI2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDI3OlxcdFxcbiAgMjg6XFx0Y29uZmlnIE1UNzkyMVVcXG4gIDI5OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAzMDpcXHRcXHRzZWxlY3QgTVQ3OTJ4X1VTQlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1UNzkyMV9DT01NT05cXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDMzOlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAzNDpcXHRcXHRoZWxwXFxuICAzNTpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFVIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNjowNS44NzE3NzAxODlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA3NjE3NzM2MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIE1UNzkyNVUqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSB0aGlua2luZyBhYm91dCB0aGlzIG5ldyBwcm9qZWN0LCBhbmQgaW1tZWRpYXRlbHksIHRoZSB1c3VhbCBzdXNwZWN0cyBwb3AgaW50byBtaW5kOiBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBzdXJlIG15IGBNQUM4MDIxMWAgZHJpdmVyIGlzIHBsYXlpbmcgbmljZSwgYW5kIHRoYXQgdGhlIGBVU0JgIGludGVyZmFjZSBpcyByb2NrIHNvbGlkLiBUaGF0J3MgYWx3YXlzIG15IHN0YXJ0aW5nIHBvaW50IC0gSSAqbmVlZCogdG8gYmUgY29uZmlkZW50IGluIHRob3NlIGZvdW5kYXRpb25hbCBsYXllcnMuIEkgY2FuJ3Qgc3RhcnQgb3B0aW1pemluZyBvciBldmVuIHJlYWxseSBkZWJ1Z2dpbmcgdW50aWwgSSBoYXZlIHRob3NlIHBpZWNlcyBzcXVhcmVkIGF3YXkuXG5cbkFuZCB0aGVuIHRoZSByZWFsIHRhcmdldDogYE1UNzkyNVVgLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIHNwZWNpZmljcyBvZiAqdGhhdCogZGV2aWNlLiBMZXQncyBzZWUgaG93IHRoYXQgb25lIGZpdHMgaW50byBldmVyeXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjcyOSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjY6MTYuNjMzNTQ3MDAzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE1OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBNVDc5MjVVXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxcbiAgMjc6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDI4OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI2OjE2LjYzMzY1MzY2M1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTg0OTEwODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTVQ3NiBVU0IgRHJpdmVyIE1vZHVsZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBNVDc2IFVTQiBkcml2ZXIgbW9kdWxlcy4gVGhlIGNvcmUgZGVwZW5kZW5jaWVzLCBhcyBJIHNlZSBpdCwgYXJlIG9uIGBNQUM4MDIxMWAgYW5kIHRoZSBgVVNCYCBzdWJzeXN0ZW0sIGFzIGV4cGVjdGVkLlxuXG5SaWdodCwgc28gdG8gZ2V0IHRoaXMgdGhpbmcgZW5hYmxlZCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3MgYXJlIHNldDogYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc2NjNVYCwgYE1UNzkyMVVgLCBhbmQgYE1UNzkyNVVgLiBUaGF0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuXG5cbk5vdywgZm9yIHRoZSByZWFsbHkgaW50ZXJlc3RpbmcgYml0cyDigJMgdGhlIHRyYW5zbWlzc2lvbiAoVFgpIHByZXBhcmF0aW9uIGZ1bmN0aW9ucy4gTG9va3MgbGlrZSBJIHNob3VsZCBmb2N1cyBvbiBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgLCBgbXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYC4gVGhlc2UgYXJlIHByb2JhYmx5IHRoZSBrZXkgYXJlYXMgd2hlcmUgdGhlIGRhdGEgcGFja2V0cyBnZXQgcHJlcHBlZCBmb3IgdGhlIFVTQiBidXMuXG5cbkhvbGQgb24gYSBzZWMuLi4gYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCBpcyB1c2VkIHdpdGhpbiBgbXQ3NngwMl91c2JfY29yZS5jYC4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgdGhpcyBmdW5jdGlvbiBpc24ndCBkZWNsYXJlZCBhcyBgc3RhdGljYCBpbnNpZGUgdGhhdCBmaWxlLiBUaGF0IHdvdWxkIGhhdmUgaW1wbGljYXRpb25zIGZvciBpdHMgZXh0ZXJuYWwgdXNlLiBJIHNob3VsZCBjaGVjayB0aGF0IHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gbGlua2luZyBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MjY3LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjY6MjIuMjE4NTY3NTY5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzAyMzE5MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMnVfdHhfcHJlcGFyZV9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MjEzPXN0YXRpYyBpbnQgbXQ3NngwdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjEtXFx0XFx0LnNldF9jaGFubmVsID0gbXQ3NngwX3NldF9jaGFubmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIyMjpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc2eDAydV90eF9wcmVwYXJlX3NrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMjMtXFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzZ4MDJ1X3R4X2NvbXBsZXRlX3NrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaD0xNz1pbnQgbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGludCBwb3J0LCB1MzIgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaDoxODppbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2IuaC0xOS1cXHRcXHRcXHQgICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYz00Nj1pbnQgbXQ3NngwMnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGludCBwb3J0LCB1MzIgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYzo2NDppbnQgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTY1LVxcdFxcdFxcdCAgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfY29yZS5jLTExNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9jb3JlLmM6MTE3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX2NvcmUuYy0xMTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYz0zMj1zdGF0aWMgaW50IG10NzZ4MnVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy00MC1cXHRcXHQuc2V0X2NoYW5uZWwgPSBtdDc2eDJ1X3NldF9jaGFubmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jOjQxOlxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTQyLVxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc2eDAydV90eF9jb21wbGV0ZV9za2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI2OjIyLjY4ODgwNzk5MVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDQ4NzIzNDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBNVDc2IERyaXZlciBDb2RlKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0J3MgcHJldHR5IGNsZWFyOiBgbXQ3NngwMnVfdHhfcHJlcGFyZV9za2JgIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24sIGFuZCBpdCdzIGRlZmluaXRlbHkgZXhwb3J0ZWQuIEkgc2VlIGl0IGJlaW5nIHVzZWQgZGlyZWN0bHkgd2l0aGluIHRoZSBgbXQ3NngwdV9wcm9iZWAgYW5kIGBtdDc2eDJ1X3Byb2JlYCByb3V0aW5lcyDigJMgd2hpY2ggYXJlLCBvZiBjb3Vyc2UsIHRoZSBwcm9iZSBmdW5jdGlvbnMgZm9yIHRoZSBkZXZpY2VzLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHRob3NlIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemluZyB0aGUgaGFyZHdhcmUuIFRoZXnigJlkIGNlcnRhaW5seSBuZWVkIHRvIHByZXBhcmUgdGhlIFNLQiBmb3IgdHJhbnNtaXNzaW9uLCBzZXR0aW5nIHVwIHRoZSBuZWNlc3NhcnkgZGF0YSBzdHJ1Y3R1cmVzIGZvciB0cmFuc21pc3Npb24uXG5cbkZ1cnRoZXIsIHRoZSBkZXBlbmRlbmN5IGNoYWluIGNvbnRpbnVlczsgYG10NzZfc2tiX2FkanVzdF9wYWRgIGlzIGNhbGxlZCBmcm9tIGBtdDc2eDAydV9za2JfZG1hX2luZm9gLiBOb3csIGBtdDc2eDAydV9za2JfZG1hX2luZm9gIGl0c2VsZiBpcyBjYWxsZWQgYnkgYF9fbXQ3NngwMnVfbWN1X3NlbmRfbXNnYC4gVGhpcyBtZWFucyB3ZSd2ZSBnb3QgYSBzZXF1ZW5jZTogdGhlIFNLQiBwcmVwYXJhdGlvbiwgdGhlbiB0aGUgRE1BIGluZm9ybWF0aW9uIHNldHVwLCBhbmQgZmluYWxseSB0aGUgYWN0dWFsIHNlbmRpbmcgb2YgdGhlIG1lc3NhZ2UgdG8gdGhlIE1DVS4gVGhlc2UgZnVuY3Rpb25zIGFsbCB3b3JrIHRvZ2V0aGVyIHRvIHRyYW5zbWl0IHRoZSBkYXRhLiBNYWtlcyBjb21wbGV0ZSBzZW5zZSB0byBtZS4gVGhlIGZ1bmN0aW9uIG5hbWVzIGFyZSBwcmV0dHkgc2VsZi1leHBsYW5hdG9yeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3NTMsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNjoyOC4xMzc1MzY1MzJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MzA3MjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fbXQ3NngwMnVfbWN1X3NlbmRfbXNnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9Njk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6NzA6X19tdDc2eDAydV9tY3Vfc2VuZF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy03MS1cXHRcXHRcXHRpbnQgY21kLCBib29sIHdhaXRfcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MTEwPW10NzZ4MDJ1X21jdV9zZW5kX21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgaW50IGNtZCwgY29uc3Qgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTIwLVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlbWN1Lm11dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jOjEyMTpcXHRlcnIgPSBfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhkZXYsIHNrYiwgY21kLCB3YWl0X3Jlc3ApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTIyLVxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtY3UubXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz0xMzM9bXQ3NngwMnVfbWN1X3dyX3JwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYmFzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTU2LVxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlbWN1Lm11dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jOjE1NzpcXHRyZXQgPSBfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhkZXYsIHNrYiwgQ01EX1JBTkRPTV9XUklURSwgY250ID09IG4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTU4LVxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtY3UubXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYz0xNjY9bXQ3NngwMnVfbWN1X3JkX3JwKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYmFzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6MTk4OlxcdHJldCA9IF9fbXQ3NngwMnVfbWN1X3NlbmRfbXNnKGRldiwgc2tiLCBDTURfUkFORE9NX1JFQUQsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmMtMTk5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNjoyOC4yMDM4NDgwNTVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4Nzg1NzY4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2U6XG5cbioqSW52ZXN0aWdhdGluZyBgbXQ3NngwMnVfbWN1X3NlbmRfbXNnYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG10NzZ4MDJ1X21jdV9zZW5kX21zZ2AgZnVuY3Rpb24uICBUaGUgcXVlc3Rpb24gaXMsIGlzIGl0IGV4cG9ydGVkPyAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXRzIHZpc2liaWxpdHkuIFRoaXMgaXMgYSBjcml0aWNhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgZm9yIGludGVybmFsIHVzZSBvbmx5IHdpdGhpbiB0aGUgbW9kdWxlLCBvciBpZiBpdCdzIGRlc2lnbmVkIHRvIGJlIGNhbGxlZCBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwgb3IgcG90ZW50aWFsbHkgZnJvbSB1c2VyIHNwYWNlICh0aG91Z2ggdGhhdCdzIGxlc3MgbGlrZWx5IGluIHRoaXMgY29udGV4dCkuICBLbm93aW5nIGlmIGl0J3MgZXhwb3J0ZWQgd2lsbCBkaWN0YXRlIGhvdyBpdCBuZWVkcyB0byBiZSB0cmVhdGVkIGdvaW5nIGZvcndhcmQgaW4gbXkgYW5hbHlzaXMuIEl0J2xsIGRlZmluaXRlbHkgaW5mbHVlbmNlIG15IGFzc3VtcHRpb25zIGFib3V0IHN0YWJpbGl0eSwgQVBJIGd1YXJhbnRlZXMsIGFuZCB0aGUgcG90ZW50aWFsIGZvciBhbnkgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgc3lzdGVtcy4gVGltZSB0byBjaGVjayB0aGUgc3ltYm9sIHRhYmxlIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTU0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MjY6MzMuMjkxNzA4OTEyWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg2MDc4MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwMnVfbWN1X3NlbmRfbXNnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9Njk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6NzA6X19tdDc2eDAydV9tY3Vfc2VuZF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy03MS1cXHRcXHRcXHRpbnQgY21kLCBib29sIHdhaXRfcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MTA5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jOjExMDptdDc2eDAydV9tY3Vfc2VuZF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBjbWQsIGNvbnN0IHZvaWQgKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0xMTEtXFx0XFx0ICAgICAgaW50IGxlbiwgYm9vbCB3YWl0X3Jlc3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTEyMC1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW1jdS5tdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzoxMjE6XFx0ZXJyID0gX19tdDc2eDAydV9tY3Vfc2VuZF9tc2coZGV2LCBza2IsIGNtZCwgd2FpdF9yZXNwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTEyMi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlbWN1Lm11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MTMzPW10NzZ4MDJ1X21jdV93cl9ycChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGJhc2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE1Ni1cXHRtdXRleF9sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW1jdS5tdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYzoxNTc6XFx0cmV0ID0gX19tdDc2eDAydV9tY3Vfc2VuZF9tc2coZGV2LCBza2IsIENNRF9SQU5ET01fV1JJVEUsIGNudCA9PSBuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE1OC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlbWN1Lm11dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MTY2PW10NzZ4MDJ1X21jdV9yZF9ycChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGJhc2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jOjE5ODpcXHRyZXQgPSBfX210NzZ4MDJ1X21jdV9zZW5kX21zZyhkZXYsIHNrYiwgQ01EX1JBTkRPTV9SRUFELCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTE5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM9MjgwPXZvaWQgbXQ3NngwMnVfaW5pdF9tY3Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfdXNiX21jdS5jLTI4NC1cXHRcXHQudGFpbHJvb20gPSA4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl91c2JfbWN1LmM6Mjg1OlxcdFxcdC5tY3Vfc2VuZF9tc2cgPSBtdDc2eDAydV9tY3Vfc2VuZF9tc2csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX3VzYl9tY3UuYy0yODYtXFx0XFx0Lm1jdV9wYXJzZV9yZXNwb25zZSA9IG10NzZ4MDJfbWN1X3BhcnNlX3Jlc3BvbnNlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNjozMy40MDAzMjY5NzJaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTg5NDgwOTU4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgTVQ3NngwMnUgTUNVIEluaXRpYWxpemF0aW9uIGFuZCBUWCBQYXRoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYG10NzZ4MDJ1X2luaXRfbWN1YCBhc3NpZ25zIHRoZSBgLm1jdV9zZW5kX21zZ2AgZnVuY3Rpb24gcG9pbnRlciB0byBgbXQ3NngwMnVfbWN1X3NlbmRfbXNnYC4gVGhhdCdzIHN0YW5kYXJkIGluaXRpYWxpemF0aW9uLCBlbnN1cmluZyB0aGUgY29ycmVjdCBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIE1DVS4gSSBhbHJlYWR5IGtuZXcgdGhhdCwgYnV0IGl0J3MgZ29vZCB0byBjb25maXJtLiBJdOKAmXMgdHJpZ2dlcmVkIGVpdGhlciBieSB0aGUgbWFjODAyMTEgc3RhY2sgZGlyZWN0bHksIG9yIHBlcmhhcHMgdGhlIG10NzYgY29yZSBjb2RlIC0gdGhhdOKAmXMgdGhlIGZpcnN0IHF1ZXN0aW9uIHRvIGJlIGFuc3dlcmVkLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBiaXQ6IHRoZSBlbnRyeSBwb2ludHMuIFdlIGhhdmUgYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCwgYW5kIGEgY291cGxlIG9mIHRob3NlIFVTQi9TRElPIHNwZWNpZmljIHZhcmlhbnRzIGZvciBkaWZmZXJlbnQgY2hpcHNldHMg4oCTIGBtdDc2NjNgLCBgbXQ3OTIxYCwgYW5kIGBtdDc5MjVgLiBCdXQgd2hhdCBjYXRjaGVzIG15IGV5ZSBpcyBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAgLSB0aGF0J3MgYSB1dGlsaXR5IGZ1bmN0aW9uIHRvIGhhbmRsZSBwYWRkaW5nIHdpdGhpbiB0aGUgU0tCIChTb2NrZXQgQnVmZmVyKS4gSXQncyBhbHNvIGV4cG9ydGVkLCBtZWFuaW5nIGl0J3MgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGZyb20gb3RoZXIgbW9kdWxlcy4gVGhpcyBpbXBsaWVzIGl0J3MgYSBjb21tb24gZnVuY3Rpb24sIHByb2JhYmx5IHVzZWQgYnkgbXVsdGlwbGUgZHJpdmVycywgd2hpY2ggSSBmaWd1cmVkLCBidXQgSSdsbCBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgdGhlIHNvdXJjZS4gSSdsbCBtYWtlIGEgcXVpY2sgc2VhcmNoIHRvIGVuc3VyZSB0aGF0J3MgaW5kZWVkIHRoZSBjYXNlLiBMZXQncyBzZWUgaWYgdGhhdCdzIHRydWx5IGV4cG9ydGVkLiBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgdG8gbXlzZWxmIHRvIGNoZWNrIHRoZSBjYWxsaW5nIGNvbnRleHRzIG9mIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjc4LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI2OjUyLjM0ODQyNTk2NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxOTEzMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTF9HUExcXFxcKG10NzZfc2tiX2FkanVzdF9wYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTg2Nj1pbnQgbXQ3Nl9za2JfYWRqdXN0X3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg4OC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjg4OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3NrYl9hZGp1c3RfcGFkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtODkwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNjo1Mi40Mjc2MjI4MDZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTg1MzY2NTI0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBGb2N1cyBTeW1ib2xzIGFuZCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkndmUgcGlucG9pbnRlZCBhIHZhbHVhYmxlIGZvY3VzIHN5bWJvbDogYG10NzZfc2tiX2FkanVzdF9wYWRgLiBUaGF0J3MgZGVmaW5pdGVseSBnb2luZyBvbiB0aGUgbGlzdC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBhc3NvY2lhdGVkIGB0eF9wcmVwYXJlX3NrYmAgZmFtaWx5IG9mIGZ1bmN0aW9ucyBhcmUgY3J1Y2lhbCB0byBpbmNsdWRlLiBOb3csIGxldCdzIGV4cGFuZCB0aGlzIHRvIGVuY29tcGFzcyBvdGhlciByZWxldmFudCBVU0Itc3BlY2lmaWMgcHJlcGFyZSBmdW5jdGlvbnMsIHNvIEknbGwgYWRkIGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAsIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYW5kIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLlxuXG5Ob3csIGxldCdzIHN0ZXAgYmFjayBhbmQgbG9vayBhdCB0aGUgYmlnZ2VyIHBpY3R1cmUgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zOiBJIHNlZSBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzY2M1VgLCBgTVQ3OTIxVWAsIGBNVDc5MjVVYCwgYW5kIHRoZSBnZW5lcmFsIGBNVDc2X1VTQmAuIEFoYSEgSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGBNVDc2X1VTQmAgaXMgY29ycmVjdGx5IGFjY291bnRlZCBmb3IsIGV2ZW4gaWYgaXQncyBpbXBsaWNpdGx5IHNlbGVjdGVkIGJ5IHRoZSBtb3JlIHNwZWNpZmljIGRyaXZlciBjaG9pY2VzIGxpa2UgYE1UNzY2M1VgIGFuZCBvdGhlcnMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0LlxuXG5Pa2F5LCBjaGVja2luZyBmb3IgZGVwZW5kZW5jaWVzLCBJIGtub3cgSSBuZWVkIGBNQUM4MDIxMWAgYW5kIGBVU0JgLiBBbmQgbGV0J3Mgbm90IGZvcmdldCBgTU1DYCDigJMgdGhvdWdoIEkgdGhpbmsgdGhhdCdzIG9ubHkgZm9yIHRoZSBTRElPIHZhcmlhbnQgb2YgYE1UNzkyMWAsIHdoaWNoIGlzIG5vdCB3aGF0IEknbSBkZWFsaW5nIHdpdGguIEp1c3QgdG8gYmUgc3VyZSwgSSdsbCBkb3VibGUgY2hlY2sgdGhlIHNwZWNpZmljIGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyMVVgLiBJdCdzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTk5NSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzowMi4yODEyOTEyODVaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA3MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyODpcXHRjb25maWcgTVQ3OTIxVVxcbiAgMjk6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDMwOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAzMTpcXHRcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMzM6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI3OjAyLjI4MTM2NDEwNVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkzMjkzNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipEZXBlbmRlbmNpZXMgRGVlcCBEaXZlOiBBIFF1aWNrIENoZWNrKipcblxuUmlnaHQsIHNvIHdlJ3JlIHRhbGtpbmcgZGVwZW5kZW5jaWVzLiBGcm9tIHdoYXQgSSByZWNhbGwsIGl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYXQgbGVhc3QgaW5pdGlhbGx5LiBNeSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gYE1BQzgwMjExYCBhbmQgdGhlIGBVU0JgIHN0YWNrLiBUaG9zZSBhcmUgdGhlIGJpZyBwbGF5ZXJzLCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIHRoYXQgZXZlcnl0aGluZyBlbHNlLCBhdCBsZWFzdCBpbiB0aGlzIGNvbnRleHQsIGxlYW5zIG9uLlxuXG5CdXQgSSBuZWVkIHRvIGJlIHN1cmUuIExldCdzIGRpZyBhIGJpdCBkZWVwZXIuIFNwZWNpZmljYWxseSwgbGV0J3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIHRoZSBgTVQ3OTI1VWAuIFRoYXQncyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBhbmQgd2hlcmUgdGhlIG51YW5jZXMgYXJlLiBJIG5lZWQgdG8gZ2V0IGEgZmlybSBncmFzcCBvbiB0aGUgaW50cmljYWNpZXMgb2YgKml0cyogZGVwZW5kZW5jaWVzLCBhbnkgb3RoZXIgbGlicmFyaWVzLCBkcml2ZXJzLCBvciBmaXJtd2FyZSBjb21wb25lbnRzIHRoYXQgaXQgcmVsaWVzIG9uLiBUaGF0J3MgdGhlIGNvcmUgb2YgdGhlIGludmVzdGlnYXRpb24gZm9yIG1lIGF0IHRoZSBtb21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODk1LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzowNi41NzQ2NjA4MTNaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTksXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTk6XFx0Y29uZmlnIE1UNzkyNVVcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTVQ3OTJ4X1VTQlxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXFxuICAyNzpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMjg6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI3OjA2LjU3NDc3MTAyM1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTg2NTE2MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29uY2VybnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgZGVwZW5kZW5jaWVzIGhlcmUuIEFzIGZhciBhcyBJIGNhbiBzZWUsIHRoaXMgd2hvbGUgdGhpbmcgYm9pbHMgZG93biB0byBgTUFDODAyMTFgIGFuZCBgVVNCYC4gRXZlcnl0aGluZyBlbHNlLCBsaWtlIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYCwgdGhleSdyZSB0aGUgdGFyZ2V0cywgcmlnaHQ/IFRoZXNlIGFyZSB0aGUgYWN0dWFsIGRyaXZlcnMgb3IgZGV2aWNlcyB3ZSdyZSBkZWFsaW5nIHdpdGguIFRoZSBiYXNlIGNvbmZpZyBpbmNsdWRlcyBgTUFDODAyMTFgIGFuZCBgVVNCYCB3aGljaCBwcm92aWRlcyBzdXBwb3J0IHRvIGEgbG90IG9mIHRoZSBvdGhlciBkcml2ZXJzLlxuXG5IYW5nIG9uIGEgbWludXRlLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBgTVQ3NngwVWAgYW5kIGBNVDc2eDJVYCBleHBsaWNpdGx5IHJlcXVpcmUgYE1BQzgwMjExYCBhbmQgYFVTQmAsIHJpZ2h0PyBJJ2QgaGF2ZSB0byBjaGVjayB0aGUgY29kZSBidXQgdGhhdCBzZWVtcyBjb3JyZWN0LiBMZXQncyBtYWtlIHN1cmUgSSBkaWRuJ3QgbWlzcyBhbnl0aGluZy4gQmVmb3JlIEkgbW92ZSBvbiwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNVDc2X0NPUkVgIOKAkyBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJ3Qgb3Zlcmxvb2tlZCBhbnkgb3RoZXIgY3J1Y2lhbCBjb21wb25lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzM1MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI3OjEyLjc2MTI5MTY3OFoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3Nl9DT1JFXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTVQ3Nl9MRURTXFxuICAgNzpcXHRcXHRib29sXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcXG4gIDEwOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTVQ3Nl9VU0JcXG4gIDEzOlxcdFxcdHRyaXN0YXRlXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgMTU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI3OjEyLjc2MTQxMjQ4OFoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQ1NTg5MDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgTVQ3NiBEcml2ZXIgRGVwZW5kZW5jeSBDaGFpbioqXG5cbk9rYXksIHNvIHRoZSBkcml2ZXJzIGFyZSBoYW5kbGluZyB0aGUgYE1UNzZfQ09SRWAgc2VsZWN0aW9uLiBIbW0sIHdhaXQgYSBzZWNvbmQuLi4gbG9va2luZyBjbG9zZXIgYXQgYE1UNzZ4MFVgLCBJIGRvbid0IHNlZSBgTVQ3Nl9DT1JFYCBiZWluZyBkaXJlY3RseSBjaG9zZW4uIFRoYXQncyBwZWN1bGlhci4gTGV0J3MgdHJhY2UgaXQgYmFjay4gQWgsICpyaWdodCogLSBpdCdzIGxpa2VseSB0aGF0IGBNVDc2eDBfQ09NTU9OYCBkb2VzIHRoZSBoZWF2eSBsaWZ0aW5nLCBzaW5jZSBpdCBzZWxlY3RzIGBNVDc2eDAyX0xJQmAuIEFuZCAqdGhhdCogbGlicmFyeSAqbWlnaHQqIGJlIHRoZSBrZXkgdG8gcHVsbGluZyBpbiBgTVQ3Nl9DT1JFYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBzdXNwaWNpb24uIExldCdzIGRpdmUgaW50byBgTVQ3NngwMl9MSUJgIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTUwLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzoxNy4zMDcwMDM3MzFaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE2OlxcdGNvbmZpZyBNVDc2X1NESU9cXG4gIDE3OlxcdFxcdHRyaXN0YXRlXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgTVQ3NngwMl9MSUJcXG4gIDIxOlxcdFxcdHRyaXN0YXRlXFxuICAyMjpcXHRcXHRzZWxlY3QgTVQ3Nl9DT1JFXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBNVDc2eDAyX1VTQlxcbiAgMjU6XFx0XFx0dHJpc3RhdGVcXG4gIDI2OlxcdFxcdHNlbGVjdCBNVDc2X1VTQlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuICAyOTpcXHRcXHR0cmlzdGF0ZVxcbiAgMzA6XFx0XFx0c2VsZWN0IE1UNzZfQ09SRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzoxNy4zMDcwNjM1OTFaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQxODk0NTgxOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIE1UNzYgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBNZWRpYVRlayBNVDc2IGRyaXZlciBwYXRjaC4gVGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIGEgY2hhbmdlIGluIGBtdDc2X3NrYl9hZGp1c3RfcGFkYC4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggcmVwbGFjZXMgYHNrYl9wYWQoKWAgd2l0aCBgX19za2JfcGFkKC4uLiwgZmFsc2UpYC4gVGhpcyBpcyBrZXk7IGl0IHByZXZlbnRzIHRoZSBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgZnJvbSBiZWluZyBmcmVlZCB3aXRoaW4gYG10NzZfc2tiX2FkanVzdF9wYWRgIHdoZW4gYW4gZXJyb3Igb2NjdXJzLiBJIHNlZSB0aGF0IGBNVDc2eDAyX0xJQmAgc2VsZWN0cyBgTVQ3Nl9DT1JFYCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5UaGlzIG1vZGlmaWNhdGlvbiBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LiBFc3NlbnRpYWxseSwgaXQgYWx0ZXJzIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZXJyb3JzIGR1cmluZyBgc2tiYCBwYWRkaW5nLCBwb3RlbnRpYWxseSBhdm9pZGluZyBkb3VibGUtZnJlZXMgb3IgbWVtb3J5IGxlYWtzLiBQcmV2aW91c2x5LCBpZiBgc2tiX3BhZGAgZnJlZWQgdGhlIGBza2JgIGFuZCBhbiBlcnJvciBwcm9wYWdhdGVkIHVwIHRoZSBjYWxsIGNoYWluIChsaWtlIHRocm91Z2ggYG10NzZ4MDJ1X3R4X3ByZXBhcmVfc2tiYCksIHRoZXJlJ3MgYSByaXNrIG9mIHRoZSBjYWxsZXIgYWxzbyBhdHRlbXB0aW5nIHRvIGZyZWUgdGhlIGJ1ZmZlciwgbGVhZGluZyB0byBhIGRvdWJsZSBmcmVlLiBDb252ZXJzZWx5LCBpZiB0aGUgY2FsbGVyICpkaWRuJ3QqIGZyZWUgdGhlIGJ1ZmZlciwgdGhlcmUncyBhIG1lbW9yeSBsZWFrLiBOb3csIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZnJlZWluZyB0aGUgYHNrYmAgbGllcyB3aXRoIHRoZSBjYWxsZXIuXG5cbkdpdmVuIHRoZSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpbXBsaWNhdGlvbnMsIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSB3YW50IHRvIGZ1enogdGhvcm91Z2hseS4gQmFzZWQgb24gdGhlIGNvZGUsIEkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAsIGBtdDc2eDAydV90eF9wcmVwYXJlX3NrYmAsIGBtdDc2NjNfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCwgYW5kIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLiBUaGVzZSBmdW5jdGlvbnMgc2VlbSB0byBiZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgb3IgcmVsYXRlZCBmdW5jdGlvbnMgaW4gdGhlIGNhbGwgY2hhaW4uXG5cblRvIGVuYWJsZSB0aGUgY29ycmVjdCBlbnZpcm9ubWVudCBmb3IgZnV6emluZywgSSdsbCBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9ucy4gSSdsbCBuZWVkIGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3NjYzVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYCB0byBjb3ZlciB0aGUgcmVsZXZhbnQgZHJpdmVyIGZhbWlsaWVzLiBJJ2xsIGFsc28gYWRkIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBldmVuIHRob3VnaCB0aGVzZSBhcmUgdXN1YWxseSBlbmFibGVkLCB0byBtYWtlIHN1cmUgSSdtIGNvdmVyZWQuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBjaGFuZ2UgaW1wYWN0cyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdGhlIGZvY3VzIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGludGVyZmFjZSBvZiB0aGVzZSBNZWRpYVRlayBkcml2ZXJzLCBtYWtpbmcgVVNCIGZ1enppbmcgYSByZWxldmFudCBhbmQgdXNlZnVsIHRlY2huaXF1ZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDQxMCwiT3V0cHV0VG9rZW5zIjoyNTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzozMS40OTY1MjQzNDVaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUxNjEyNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIixcbiAgICBcIk1UNzY2M1VcIixcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2X3NrYl9hZGp1c3RfcGFkXCIsXG4gICAgXCJtdDc2eDAydV90eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgc2tiX3BhZCB0byBfX3NrYl9wYWQoLi4uLCBmYWxzZSkgaW4gbXQ3Nl9za2JfYWRqdXN0X3BhZCwgcHJldmVudGluZyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgbWVtb3J5IG1hbmFnZW1lbnQgKGF2b2lkaW5nIGRvdWJsZS1mcmVlIG9yIG1lbW9yeSBsZWFrcykuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHZhcmlvdXMgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIixcbiAgICBcIk1UNzY2M1VcIixcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2X3NrYl9hZGp1c3RfcGFkXCIsXG4gICAgXCJtdDc2eDAydV90eF9wcmVwYXJlX3NrYlwiLFxuICAgIFwibXQ3NjYzX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCIsXG4gICAgXCJtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIixcbiAgICBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgc2tiX3BhZCB0byBfX3NrYl9wYWQoLi4uLCBmYWxzZSkgaW4gbXQ3Nl9za2JfYWRqdXN0X3BhZCwgcHJldmVudGluZyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgbWVtb3J5IG1hbmFnZW1lbnQgKGF2b2lkaW5nIGRvdWJsZS1mcmVlIG9yIG1lbW9yeSBsZWFrcykuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIG9mIHZhcmlvdXMgTWVkaWFUZWsgbXQ3NiB3aXJlbGVzcyBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzozMS42NTE2OTY2NTlaIiwiU2VxIjo0NywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDIwOTI1NDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6Mjc6MzEuNjUyNTUxNzI5WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIyMDIwMDY0Nzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgc2tiX3BhZChsYXN0LCBwYWQpYCB3aXRoIGBfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSlgLiBUaGUgYHNrYl9wYWQoKWAgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCBgX19za2JfcGFkKClgIHRoYXQgcGFzc2VzIGB0cnVlYCBmb3IgdGhlIGBmcmVlX29uX2Vycm9yYCBhcmd1bWVudCwgbWVhbmluZyBpdCBmcmVlcyB0aGUgc2tiIGlmIHBhZGRpbmcgZmFpbHMuIElmIGBza2JfcGFkKClgIGZhaWxzIGFuZCBmcmVlcyB0aGUgc2tiIChvciBhIGZyYWdtZW50IG9mIGl0KSwgdGhlIGNhbGxlciBvZiBgbXQ3Nl9za2JfYWRqdXN0X3BhZCgpYCBtaWdodCBhbHNvIGF0dGVtcHQgdG8gZnJlZSB0aGUgb3JpZ2luYWwgc2tiIHVwb24gcmVjZWl2aW5nIHRoZSBgLUVOT01FTWAgZXJyb3IsIGxlYWRpbmcgdG8gYSBkb3VibGUgZnJlZSBvciB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5LlxcblxcbkJ5IGNoYW5naW5nIHRoZSBjYWxsIHRvIGBfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSlgLCB0aGUgcGF0Y2ggcHJldmVudHMgdGhlIHNrYiBmcm9tIGJlaW5nIGZyZWVkIG9uIGVycm9yLCBhbGxvd2luZyB0aGUgY2FsbGVyIHRvIHNhZmVseSBoYW5kbGUgdGhlIGNsZWFudXAgd2l0aG91dCB0cmlnZ2VyaW5nIGEgZG91YmxlIGZyZWUuXFxuXFxuRG91YmxlIGZyZWUgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MgYXJlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB0aGF0IGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMWQ0Y2FiOGVkMmJkZDUzNGQ0MjQxNjdkNWUzNDgxYzRmYTM4Mzg1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDk6MjU6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbmluZGV4IDM3MDdlZTE5ZTRhZTcuLmVjNTAzNTIxYWU2MzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguY1xuQEAgLTg3OSw3ICs4NzksNyBAQCBpbnQgbXQ3Nl9za2JfYWRqdXN0X3BhZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcGFkKVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoc2tiX3BhZChsYXN0LCBwYWQpKVxuK1x0aWYgKF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRfX3NrYl9wdXQobGFzdCwgcGFkKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI3OjMxLjY1MjU1MzIzOVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM4MzgxNDIxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIFBvdGVudGlhbCBNZW1vcnkgU2FmZXR5IElzc3VlcyoqXG5cbk9rYXksIGhlcmUncyB3aGF0J3MgcnVubmluZyB0aHJvdWdoIG15IGhlYWQgYXMgSSByZXZpZXcgdGhpcyBwYXRjaC4gVGhlIGtleSBjaGFuZ2UgaXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguY2AsIHdoZXJlIHRoZXkndmUgc3dhcHBlZCBgc2tiX3BhZChsYXN0LCBwYWQpYCBmb3IgYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAgd2l0aGluIGBtdDc2X3NrYl9hZGp1c3RfcGFkYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2h5IHRoZSBjaGFuZ2U/IFdoYXQncyB0aGUgY29udGV4dCBoZXJlP1wiXG5cbkZpcnN0LCBJIG5lZWQgdG8gZGlnIGludG8gd2hhdCBgX19za2JfcGFkYCBhY3R1YWxseSBkb2VzLCBlc3BlY2lhbGx5IHRoZSBtZWFuaW5nIG9mIHRoYXQgdGhpcmQgYGZhbHNlYCBhcmd1bWVudC4gUXVpY2tseSBsb29raW5nIGF0IHRoZSBkZWZpbml0aW9ucywgSSBzZWUgYHNrYl9wYWRgIGlzIGp1c3QgYSB3cmFwcGVyIGZvciBgX19za2JfcGFkYCwgYW5kIHRoZSB0aGlyZCBwYXJhbWV0ZXIgaXMgcmVsYXRlZCB0byBlcnJvciBoYW5kbGluZyDigJMgc3BlY2lmaWNhbGx5LCB3aGV0aGVyIHRvIGBmcmVlX29uX2Vycm9yYC4gQS1oYSEgTm93IGl0J3Mgc3RhcnRpbmcgdG8gY2xpY2suXG5cblJpZ2h0LCBgc2tiX3BhZGAgKml0c2VsZiogY2FsbHMgYF9fc2tiX3BhZGAgd2l0aCBgdHJ1ZWAgZm9yIGBmcmVlX29uX2Vycm9yYC4gU28sIHRoZSBvbGQgY29kZSdzIGxvZ2ljIHdhczogaWYgYHNrYl9wYWRgIGZhaWxlZCAoZS5nLiwgYC1FTk9NRU1gKSwgaXQgZnJlZWQgdGhlIGBsYXN0YCBza2IuIFRoZSBjb2RlIHRoZW4gY2hlY2tlZCB0aGUgcmV0dXJuIHZhbHVlLCBhbmQgaWYgaXQgd2FzIGFuIGVycm9yLCByZXR1cm5lZCBgLUVOT01FTWAuXG5cbk5vdywgd2FpdCBhIHNlY29uZC4uLiB0aGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcgYW5kIGNvbmNlcm5pbmcuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIGNhbGxlciAqYWxzbyogbWlnaHQgYmUgaGFuZGxpbmcgZXJyb3JzIGJ5IGZyZWVpbmcgdGhlIGBza2JgLCBgbGFzdGAsIG9yIHRoZSBmcmFnX2xpc3Qgc2tiLiBTbywgaWYgYHNrYl9wYWRgIGZhaWxzIGFuZCBmcmVlcyB0aGUgYGxhc3RgIHNrYiwgYW5kIHRoZSBjYWxsZXIgKmFsc28qIGZyZWVzLCB0aGF0J3MgYSBjbGFzc2ljIGRvdWJsZS1mcmVlIHNjZW5hcmlvLCBsZWFkaW5nIHRvIGEgY3Jhc2ggb3IgdW5kZWZpbmVkIGJlaGF2aW91ci4gVGhlIGNhbGxlciBpcyBwcm9iYWJseSBhbHNvIGZyZWVpbmcgdGhlIHNrYiBvbiBlcnJvciwgd2hpY2ggbWVhbnMgd2UgY2FuIGF2b2lkIHRoZSBkb3VibGUgZnJlZSBvciB1c2UtYWZ0ZXItZnJlZSBieSBjaGFuZ2luZyB0aGUgYGZyZWVfb25fZXJyb3JgIHBhcmFtZXRlciBvZiB0aGUgdW5kZXJseWluZyBtZXRob2QuXG5cblNvLCB0aGlzIHBhdGNoIGNoYW5nZXMgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAgdG8gKnByZXZlbnQqIGBfX3NrYl9wYWRgIGZyb20gZnJlZWluZyBgbGFzdGAgb24gZXJyb3IuIFRoaXMgZ2l2ZXMgdGhlIGNhbGxlciBtb3JlIGNvbnRyb2wgYW5kIGVuc3VyZXMgb25seSBvbmUgZnJlZSBvY2N1cnMsIHRodXMgYXZvaWRpbmcgYSBwb3RlbnRpYWwgZG91YmxlLWZyZWUgb3IgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eS4gVGhhdCdzIGEgZ29vZCBmaW5kISBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSB3b3VsZCBoYXZlIGxpa2VseSBjYXVnaHQgdGhpcywgZXZlbnR1YWxseS5cblxuTm93LCBteSBleHBlcnQgbWluZCBpcyBnb2luZyBvbmUgc3RlcCBmdXJ0aGVyLiBJcyB0aGlzIGNoYW5nZSBpbnRyb2R1Y2luZyBhbnkgKm5ldyogcmlza3M/IENvdWxkIHRoaXMgY3JlYXRlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlPyBObywgSSBkb24ndCB0aGluayBzby4gVGhlIHBhdGNoIG9ubHkgYWx0ZXJzIHRoZSBmcmVlaW5nIGJlaGF2aW9yIG9uIGVycm9yLCBub3QgdGhlIGNvbnRlbnQgb2YgdGhlIHNrYiBpdHNlbGYuXG5cbk9rYXksIHRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGZpeCBmb3IgYSBtZW1vcnkgc2FmZXR5IGlzc3VlLiBJJ2xsIHZlcmlmeSB0aGUgbG9naWMgY2FyZWZ1bGx5LCBhbmQgcnVuIGEgcXVpY2sgZGlmZiBjaGVjaywgYnV0IG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGxlZ2l0aW1hdGUgZG91YmxlLWZyZWUvdXNlLWFmdGVyLWZyZWUgYnVnLiBHb29kIGNhdGNoIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTkwLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6Mjc6NDIuMDM2MzcyMzY2WiIsIlNlcSI6NTAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDM3MTI5NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9za2JfYWRqdXN0X3BhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTg2ND1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X2FjX3RvX2h3cSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODY2OmludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTg2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtODg4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6ODg5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfc2tiX2FkanVzdF9wYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy04OTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjI3OjQyLjU4MDA4OTk1WiIsIlNlcSI6NTEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNjMxMTU4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYG10NzZfc2tiX2FkanVzdF9wYWRgKipcblxuT2theSwgdGltZSB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYG10NzZfc2tiX2FkanVzdF9wYWRgLiBXZSd2ZSBiZWVuIHNlZWluZyBzb21lIG9kZCBiZWhhdmlvciwgYW5kIHRoaXMgZnVuY3Rpb24gaXMgYSBsaWtlbHkgY2FuZGlkYXRlIGZvciBjb250cmlidXRpbmcgdG8gaXQuIEkgd2FudCB0byBtYWtlICphYnNvbHV0ZWx5KiBjZXJ0YWluIEkgdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdCdzIGhhbmRsaW5nIHRoZSBTS0IncyBkYXRhIGJ1ZmZlciBhZGp1c3RtZW50cywgZXNwZWNpYWxseSBhcm91bmQgdGhlIHBhZGRpbmcuIE15IGd1dCBmZWVsaW5nIGlzIHdlIG1pZ2h0IGJlIG1pc3Npbmcgc29tZXRoaW5nIHN1YnRsZSBpbiB0aGUgaW50ZXJhY3Rpb24gd2l0aCBoYXJkd2FyZSBETUEgb3IgbWVtb3J5IGFsaWdubWVudC4gTmVlZCB0byB2ZXJpZnkgaXRzIGludGVyYWN0aW9ucyB3aXRoIHRoZSBSWC9UWCBwYXRocywgZXNwZWNpYWxseSB0aGUgaW1wbGljYXRpb25zIG9mIHByZS1wZW5kaW5nL2FwcGVuZGluZyBkYXRhLiBBbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgYXJlIG15IHByaW1hcnkgY29uY2VybiBoZXJlOyBkYXRhIGNvcnJ1cHRpb24gaXMgdGhlIHdvcnN0LWNhc2Ugc2NlbmFyaW8uIEl0J3MgYSBrZXkgcGllY2Ugb2YgdGhlIGRyaXZlciwgc28gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgYXNzdW1wdGlvbnMgYXJlIGFsbCBzdGlsbCB2YWxpZCwgZ2l2ZW4gYW55IHJlY2VudCBjaGFuZ2VzIHRvIHRoZSB3aXJlbGVzcyBmaXJtd2FyZSBhbmQvb3IgaGFyZHdhcmUuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzExLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6Mjc6NDUuNzQzMjA5MjQzWiIsIlNlcSI6NTIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogODY2LFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODY2OlxcdGludCBtdDc2X3NrYl9hZGp1c3RfcGFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBwYWQpXFxuIDg2NzpcXHR7XFxuIDg2ODpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqaXRlciwgKmxhc3QgPSBza2I7XFxuIDg2OTpcXHRcXG4gODcwOlxcdFxcdC8qIEZpcnN0IHBhY2tldCBvZiBhIEEtTVNEVSBidXJzdCBrZWVwcyB0cmFjayBvZiB0aGUgd2hvbGUgYnVyc3RcXG4gODcxOlxcdFxcdCAqIGxlbmd0aCwgbmVlZCB0byB1cGRhdGUgbGVuZ3RoIG9mIGl0IGFuZCB0aGUgbGFzdCBwYWNrZXQuXFxuIDg3MjpcXHRcXHQgKi9cXG4gODczOlxcdFxcdHNrYl93YWxrX2ZyYWdzKHNrYiwgaXRlcikge1xcbiA4NzQ6XFx0XFx0XFx0bGFzdCA9IGl0ZXI7XFxuIDg3NTpcXHRcXHRcXHRpZiAoIWl0ZXItXFx1MDAzZW5leHQpIHtcXG4gODc2OlxcdFxcdFxcdFxcdHNrYi1cXHUwMDNlZGF0YV9sZW4gKz0gcGFkO1xcbiA4Nzc6XFx0XFx0XFx0XFx0c2tiLVxcdTAwM2VsZW4gKz0gcGFkO1xcbiA4Nzg6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDg3OTpcXHRcXHRcXHR9XFxuIDg4MDpcXHRcXHR9XFxuIDg4MTpcXHRcXG4gODgyOlxcdFxcdGlmIChfX3NrYl9wYWQobGFzdCwgcGFkLCBmYWxzZSkpXFxuIDg4MzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gODg0OlxcdFxcbiA4ODU6XFx0XFx0X19za2JfcHV0KGxhc3QsIHBhZCk7XFxuIDg4NjpcXHRcXG4gODg3OlxcdFxcdHJldHVybiAwO1xcbiA4ODg6XFx0fVxcbiA4ODk6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9za2JfYWRqdXN0X3BhZCk7XFxuIDg5MDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6Mjc6NDUuNzQzMzY5NTMzWiIsIlNlcSI6NTMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5MjkyMTc1NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYG10NzZfc2tiX2FkanVzdF9wYWRgIElzc3VlKipcblxuT2theSwgc28gaGVyZSdzIHRoZSBkZWFsLiBgbXQ3Nl9za2JfYWRqdXN0X3BhZGAgaXMgZGVzaWduZWQgc3VjaCB0aGF0IGl0cyBjYWxsZXIgdGFrZXMgcmVzcG9uc2liaWxpdHkgZm9yIGhhbmRsaW5nIGFueSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy4gSWYgYG10NzZfc2tiX2FkanVzdF9wYWRgIHRocm93cyBhbiBgLUVOT01FTWAgZXJyb3IsIHRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gY2xlYW4gdXAsIHdoaWNoIHVzdWFsbHkgbWVhbnMgZnJlZWluZyB0aGUgYHNrYmAuIE5vdywgaGVyZSdzIHRoZSBwb3RlbnRpYWwgcGl0ZmFsbDogaWYgYHNrYl9wYWRgIGhhcyAqYWxyZWFkeSogZGVhbGxvY2F0ZWQgYGxhc3RgICh0aGF0IGNvdWxkIGJlIHRoZSBgc2tiYCBpdHNlbGYgb3Igb25lIG9mIGl0cyBmcmFnbWVudHMpLCB0aGVuIHRoZSBjYWxsZXIncyBzdWJzZXF1ZW50IGF0dGVtcHQgdG8gZnJlZSB0aGUgYHNrYmAgaXMgZ29pbmcgdG8gdHJpZ2dlciBlaXRoZXIgYSBkb3VibGUtZnJlZSBvciBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLiBDbGVhcmx5LCB0aGlzIHBvaW50cyB0byBhIG5hc3R5IG1lbW9yeSBjb3JydXB0aW9uIHZ1bG5lcmFiaWxpdHkuXG5cblRoZSBnb29kIG5ld3MgaXMgdGhhdCB0aGlzIGlzIGEgdGV4dGJvb2sgY2FzZSBmb3IgS0FTQU4uIFdlIGFyZSBsb29raW5nIGF0IGFuIGlzc3VlIHdoZXJlIG1lbW9yeSBpcyBiZWluZyBpbmNvcnJlY3RseSBtYW5hZ2VkLCBsZWFkaW5nIHRvIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBzYW1lIG1lbW9yeSBpcyBiZWluZyBmcmVlZCBtdWx0aXBsZSB0aW1lcyBvciBhY2Nlc3NlZCBhZnRlciBpdCdzIGJlZW4gcmVsZWFzZWQuIFRoZSBuYXR1cmUgb2YgdGhlIGJ1ZyBkb2Vzbid0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgYW55IHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcy4gVGhlcmVmb3JlLCB0aGVyZSdzIGFic29sdXRlbHkgbm8gcmVhc29uIHRvIGJyaW5nIEtNU0FOIGludG8gdGhlIHBpY3R1cmUgaGVyZS5cblxuU28sIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgd2UgY2FuIGNvbmZpZGVudGx5IHNldCBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBLQVNBTiBpcyBwZXJmZWN0bHkgc3VpdGVkIHRvIGRpYWdub3NlIHRoZSBkb3VibGUtZnJlZS9VQUYgdGhhdCB0aGlzIGJ1ZyBjcmVhdGVzLiBUaGVyZSBpcyBubyBuZWVkIGZvciBLTVNBTi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk0MCwiT3V0cHV0VG9rZW5zIjoyNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOToyNzo1My42NzI1OTA0NjRaIiwiU2VxIjo1NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGBza2JfcGFkKGxhc3QsIHBhZClgIHdpdGggYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAuIFRoZSBgc2tiX3BhZCgpYCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIGBfX3NrYl9wYWQoKWAgdGhhdCBwYXNzZXMgYHRydWVgIGZvciB0aGUgYGZyZWVfb25fZXJyb3JgIGFyZ3VtZW50LCBtZWFuaW5nIGl0IGZyZWVzIHRoZSBza2IgaWYgcGFkZGluZyBmYWlscy4gSWYgYHNrYl9wYWQoKWAgZmFpbHMgYW5kIGZyZWVzIHRoZSBza2IgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLCB0aGUgY2FsbGVyIG9mIGBtdDc2X3NrYl9hZGp1c3RfcGFkKClgIG1pZ2h0IGFsc28gYXR0ZW1wdCB0byBmcmVlIHRoZSBvcmlnaW5hbCBza2IgdXBvbiByZWNlaXZpbmcgdGhlIGAtRU5PTUVNYCBlcnJvciwgbGVhZGluZyB0byBhIGRvdWJsZSBmcmVlIG9yIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkuXFxuXFxuQnkgY2hhbmdpbmcgdGhlIGNhbGwgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAsIHRoZSBwYXRjaCBwcmV2ZW50cyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IsIGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gc2FmZWx5IGhhbmRsZSB0aGUgY2xlYW51cCB3aXRob3V0IHRyaWdnZXJpbmcgYSBkb3VibGUgZnJlZS5cXG5cXG5Eb3VibGUgZnJlZSBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncyBhcmUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHRoYXQgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGBza2JfcGFkKGxhc3QsIHBhZClgIHdpdGggYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAuIFRoZSBgc2tiX3BhZCgpYCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIGBfX3NrYl9wYWQoKWAgdGhhdCBwYXNzZXMgYHRydWVgIGZvciB0aGUgYGZyZWVfb25fZXJyb3JgIGFyZ3VtZW50LCBtZWFuaW5nIGl0IGZyZWVzIHRoZSBza2IgaWYgcGFkZGluZyBmYWlscy4gSWYgYHNrYl9wYWQoKWAgZmFpbHMgYW5kIGZyZWVzIHRoZSBza2IgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLCB0aGUgY2FsbGVyIG9mIGBtdDc2X3NrYl9hZGp1c3RfcGFkKClgIG1pZ2h0IGFsc28gYXR0ZW1wdCB0byBmcmVlIHRoZSBvcmlnaW5hbCBza2IgdXBvbiByZWNlaXZpbmcgdGhlIGAtRU5PTUVNYCBlcnJvciwgbGVhZGluZyB0byBhIGRvdWJsZSBmcmVlIG9yIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkuXFxuXFxuQnkgY2hhbmdpbmcgdGhlIGNhbGwgdG8gYF9fc2tiX3BhZChsYXN0LCBwYWQsIGZhbHNlKWAsIHRoZSBwYXRjaCBwcmV2ZW50cyB0aGUgc2tiIGZyb20gYmVpbmcgZnJlZWQgb24gZXJyb3IsIGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gc2FmZWx5IGhhbmRsZSB0aGUgY2xlYW51cCB3aXRob3V0IHRyaWdnZXJpbmcgYSBkb3VibGUgZnJlZS5cXG5cXG5Eb3VibGUgZnJlZSBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncyBhcmUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHRoYXQgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow9v8nz[1] Phase: Succeeded StartedAt: 2026-08-17 09:28:04 +0000 UTC FinishedAt: 2026-08-17 09:28:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-17 09:28:04 +0000 UTC FinishedAt: 2026-08-17 09:28:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2] Phase: Succeeded StartedAt: 2026-08-17 09:28:04 +0000 UTC FinishedAt: 2026-08-17 10:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-17 09:28:04 +0000 UTC FinishedAt: 2026-08-17 10:11:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-17 09:28:04 +0000 UTC FinishedAt: 2026-08-17 09:28:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-17 09:28:04 +0000 UTC FinishedAt: 2026-08-17 09:28:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow9v8nz/series-workflow9v8nz-convert-artifact-4070937291/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-17 09:28:15 +0000 UTC FinishedAt: 2026-08-17 09:46:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-17 09:28:15 +0000 UTC FinishedAt: 2026-08-17 09:46:46 +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:*036a8262-ce36-4b94-a5a2-b18e4b11bff9,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-workflow9v8nz/series-workflow9v8nz-convert-artifact-4070937291/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": "5619ff0a-a088-43c5-9739-928ac9a991bf", "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-workflow9v8nz/series-workflow9v8nz-build-action-3546876361/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-17 09:28:15 +0000 UTC FinishedAt: 2026-08-17 09:46:36 +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:*036a8262-ce36-4b94-a5a2-b18e4b11bff9,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-workflow9v8nz/series-workflow9v8nz-convert-artifact-4070937291/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": "5619ff0a-a088-43c5-9739-928ac9a991bf", "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-workflow9v8nz/series-workflow9v8nz-build-action-3546876361/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-17 09:46:46 +0000 UTC FinishedAt: 2026-08-17 09:46:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-17 09:46:46 +0000 UTC FinishedAt: 2026-08-17 09:46:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-17 09:46:46 +0000 UTC FinishedAt: 2026-08-17 09:46:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-17 09:46:46 +0000 UTC FinishedAt: 2026-08-17 09:46:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow9v8nz/series-workflow9v8nz-convert-artifact-1951021346/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-17 09:46:56 +0000 UTC FinishedAt: 2026-08-17 09:48:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-17 09:46:56 +0000 UTC FinishedAt: 2026-08-17 09:48:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5619ff0a-a088-43c5-9739-928ac9a991bf,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-workflow9v8nz/series-workflow9v8nz-build-action-3546876361/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-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-17 09:48:59 +0000 UTC FinishedAt: 2026-08-17 09:48:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-17 09:48:59 +0000 UTC FinishedAt: 2026-08-17 09:48:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-17 09:48:59 +0000 UTC FinishedAt: 2026-08-17 10:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-17 09:48:59 +0000 UTC FinishedAt: 2026-08-17 10:05:28 +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:*036a8262-ce36-4b94-a5a2-b18e4b11bff9,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-workflow9v8nz/series-workflow9v8nz-convert-artifact-1951021346/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": "bfc49195-552c-46d1-a7b1-1473ba41d594", "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-workflow9v8nz/series-workflow9v8nz-build-action-35879286/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-17 09:48:59 +0000 UTC FinishedAt: 2026-08-17 10:05:18 +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:*036a8262-ce36-4b94-a5a2-b18e4b11bff9,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-workflow9v8nz/series-workflow9v8nz-convert-artifact-1951021346/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": "bfc49195-552c-46d1-a7b1-1473ba41d594", "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-workflow9v8nz/series-workflow9v8nz-build-action-35879286/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-17 10:05:28 +0000 UTC FinishedAt: 2026-08-17 10:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-17 10:05:28 +0000 UTC FinishedAt: 2026-08-17 10:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-17 10:05:28 +0000 UTC FinishedAt: 2026-08-17 10:07:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-17 10:05:28 +0000 UTC FinishedAt: 2026-08-17 10:07:27 +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:*bfc49195-552c-46d1-a7b1-1473ba41d594,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-workflow9v8nz/series-workflow9v8nz-build-action-35879286/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-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-17 10:07:37 +0000 UTC FinishedAt: 2026-08-17 10:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-17 10:07:37 +0000 UTC FinishedAt: 2026-08-17 10:11:10 +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_skb_adjust_pad","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:*5619ff0a-a088-43c5-9739-928ac9a991bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bfc49195-552c-46d1-a7b1-1473ba41d594,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-workflow9v8nz/series-workflow9v8nz-build-action-3546876361/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-workflow9v8nz/series-workflow9v8nz-build-action-35879286/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-17 10:07:37 +0000 UTC FinishedAt: 2026-08-17 10:07:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-17 10:07:37 +0000 UTC FinishedAt: 2026-08-17 10:07:42 +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_skb_adjust_pad","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-workflow9v8nz/series-workflow9v8nz-convert-artifact-2900281175/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-17 10:07:37 +0000 UTC FinishedAt: 2026-08-17 10:07:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-17 10:07:37 +0000 UTC FinishedAt: 2026-08-17 10:07:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-17 10:07:37 +0000 UTC FinishedAt: 2026-08-17 10:07:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-17 10:07:47 +0000 UTC FinishedAt: 2026-08-17 10:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9v8nz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_skb_adjust_pad","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":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76x0U","MT76x2U","MT7663U","MT7921U","MT7925U","MAC80211","USB"],"series_id":"fc8b3785-e67f-4321-a939-ab629582199a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-17 10:07:47 +0000 UTC FinishedAt: 2026-08-17 10:10:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5619ff0a-a088-43c5-9739-928ac9a991bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bfc49195-552c-46d1-a7b1-1473ba41d594,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-workflow9v8nz/series-workflow9v8nz-build-action-3546876361/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-workflow9v8nz/series-workflow9v8nz-build-action-35879286/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-workflow9v8nz/series-workflow9v8nz-convert-artifact-2900281175/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,}