Name: series-workflowf5xb8 Phase: Succeeded StartedAt: 2026-08-07 02:54:39 +0000 UTC FinishedAt: 2026-08-07 07:40:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[0] Phase: Succeeded StartedAt: 2026-08-07 02:54:39 +0000 UTC FinishedAt: 2026-08-07 03:57:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 02:54:39 +0000 UTC FinishedAt: 2026-08-07 03:57:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SET", "IP_SET_HASH_NET", "IP_SET_HASH_NETIFACE", "IP_SET_HASH_NETPORTNET", "IP_SET_HASH_NETNET", "IP_SET_HASH_NETPORT", "IP_SET_HASH_IPPORTNET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SET", "IP_SET_HASH_NET", "IP_SET_HASH_NETIFACE", "IP_SET_HASH_NETPORTNET", "IP_SET_HASH_NETNET", "IP_SET_HASH_NETPORT", "IP_SET_HASH_IPPORTNET" ], "series_id": "0570b22f-ac94-41ed-bd49-cab380e53be1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_set_uadd", "ip_set_udel", "ip_set_utest", "ip_set_flush", "hash_netiface4_add", "hash_netiface4_del", "hash_netiface4_test", "hash_netiface4_flush", "hash_netportnet4_add", "hash_netportnet4_del", "hash_netportnet4_test", "hash_netportnet4_flush", "hash_net4_add", "hash_net4_del", "hash_net4_test", "hash_net4_flush" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MzBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVElGQUNFJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfSVBQT1JUTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X3VhZGQmIzM0OywKICAgICYjMzQ7aXBfc2V0X3VkZWwmIzM0OywKICAgICYjMzQ7aXBfc2V0X3V0ZXN0JiMzNDssCiAgICAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldGlmYWNlNF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U0X3Rlc3QmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9kZWwmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydG5ldDRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXQ0X2FkZCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldDRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBDSURSIG5ldHdvcmsgcHJlZml4ZXMgYXJlIHRyYWNrZWQgaW4gaXBzZXQgaGFzaCB0eXBlcy4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0cyBhcnJheSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIFJDVSByZWFsbG9jYXRpb24gb24gZXZlcnkgZGVsZXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGRlNmZlYWQ2ZmQ0MDYxMDJkMjQ3ZGVjNDU0YzhlYWQ4MGMxNDZkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDM6Mjc6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaCBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcbmluZGV4IGYwMGM4MmFjZDdmMDUuLjgwY2E1MjNmMzA0YmIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXG5AQCAtOCw2ICYjNDM7OCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGVfd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvamhhc2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2VxbG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mbmV0bGluay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oXHUwMDNlXG4gXG5AQCAtOTgsMTQgJiM0Mzs5OSwzNCBAQCBzdHJ1Y3QgaHRhYmxlIHtcbiAjZGVmaW5lIElQU0VUX05FVF9DT1VOVFx0XHQxXG4gI2VuZGlmXG4gXG4tLyogQm9vay1rZWVwaW5nIG9mIHRoZSBwcmVmaXhlcyBhZGRlZCB0byB0aGUgc2V0ICovXG4mIzQzOy8qKlxuJiM0MzsgKiBzdHJ1Y3QgbmV0X3ByZWZpeCAtIFJlcHJlc2VudGF0aW9uIG9mIGEgbmV0d29yayBwcmVmaXguXG4mIzQzOyAqIEBjaWRyOiBUaGUgQ0lEUiBwcmVmaXggbGVuZ3RoLlxuJiM0MzsgKiBAY291bnQ6IE51bWJlciBvZiBvY2N1cnJlbmNlcy5cbiYjNDM7ICovXG4gc3RydWN0IG5ldF9wcmVmaXgge1xuLVx0dTggY2lkcjtcdFx0XHQvKiB0aGUgY2lkciB2YWx1ZSAqL1xuLVx0dTMyIGNvdW50O1x0XHRcdC8qIG51bWJlciBvZiBlbGVtZW50cyBvZiB0aGlzIGNpZHIgKi9cbiYjNDM7XHR1MzIgY2lkcjo4O1xuJiM0MztcdHUzMiBjb3VudDoyNDtcbiB9O1xuIFxuJiM0MzsjZGVmaW5lIENJRFJfTUFYX0NPVU5UICgoMSBcdTAwM2NcdTAwM2MgMjQpIC0gMSlcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIC0gQSBjb2xsZWN0aW9uIG9mIG5ldHdvcmsgcHJlZml4ZXMuXG4mIzQzOyAqIEByY3U6IFJDVSBoZWFkXG4mIzQzOyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0c1xuJiM0MzsgKiBAbGVuOiBOdW1iZXIgb2YgZW50cmllcyBpbiB0aGUgYXJyYXkuXG4mIzQzOyAqIEBuZXRzOiBBcnJheSBvZiBuZXRfcHJlZml4IHN0cnVjdHVyZXMgKHNvcnRlZCBieSBDSURSIGRlc2NlbmRpbmcpLlxuJiM0MzsgKlxuJiM0MzsgKiBAbmV0cyBlbnRyaWVzIGFyZSB1cGRhdGVkIGluIHBsYWNlIHVuZGVyIEBzZXQmIzM5O3MgbG9jay4gQSBzaW5nbGUgZW50cnkmIzM5O3NcbiYjNDM7ICogY2lkci9jb3VudCBwYWlyIGlzIGFsd2F5cyB1cGRhdGVkIGF0b21pY2FsbHkgdmlhIFJFQURfT05DRSgpL1dSSVRFX09OQ0UoKSxcbiYjNDM7ICogYnV0IHJlbW92aW5nIGFuIGVudHJ5IGFsc28gc2hpZnRzIGV2ZXJ5IGZvbGxvd2luZyBlbnRyeSBkb3duIGJ5IG9uZSBzbG90LlxuJiM0MzsgKiBMb2NrbGVzcyByZWFkZXJzIHRoYXQgc2NhbiB0aGUgd2hvbGUgYXJyYXkgKGkuZS4gbW9yZSB0aGFuIGEgc2luZ2xlXG4mIzQzOyAqIGluZGV4ZWQgc2xvdCkgbXVzdCB1c2UgQHNlcSB0byBkZXRlY3QgYW5kIHJldHJ5IGFjcm9zcyBzdWNoIGEgc2hpZnQuXG4mIzQzOyAqL1xuIHN0cnVjdCBuZXRfcHJlZml4ZXMge1xuIFx0c3RydWN0IHJjdV9oZWFkIHJjdTtcbiYjNDM7XHRzZXFjb3VudF9zcGlubG9ja190IHNlcTtcbiBcdHU4IGxlbjtcbiBcdHN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTtcbiB9O1xuQEAgLTE0Myw4ICYjNDM7MTY0LDExIEBAIGh0YWJsZV9zaXplKHU4IGhiaXRzKVxuICNlbmRpZlxuIFxuICNkZWZpbmUgSU5JVF9DSURSKG4sIGhvc3RfbWFzaykgKHtcdFx0XHRcdFxcXG4tXHRjb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7XHRcdFxcXG4tXHREQ0lEUl9QVVQoKF9fbiktXHUwMDNlbGVuID8gKF9fbiktXHUwMDNlbmV0c1swXS5jaWRyIDogaG9zdF9tYXNrKTtcXFxuJiM0MztcdGNvbnN0IHN0cnVjdCBuZXRfcHJlZml4ZXMgKl9fbiA9IHJjdV9kZXJlZmVyZW5jZShuKTtcdFxcXG4mIzQzO1x0c3RydWN0IG5ldF9wcmVmaXggX19wID1cdFx0XHRcdFx0XFxcbiYjNDM7XHRcdF9fbi1cdTAwM2VsZW4gPyBSRUFEX09OQ0UoX19uLVx1MDAzZW5ldHNbMF0pXHRcdFxcXG4mIzQzO1x0XHRcdCA6IChzdHJ1Y3QgbmV0X3ByZWZpeCl7fTtcdFx0XFxcbiYjNDM7XHREQ0lEUl9QVVQoX19wLmNvdW50ID8gX19wLmNpZHIgOiBob3N0X21hc2spO1x0XHRcXFxuIH0pXG4gXG4gI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqL1xuQEAgLTMxOCwyNyAmIzQzOzM0Miw0MyBAQCBzdHJ1Y3QgbXR5cGVfcmVzaXplX2FkIHtcbiB9O1xuIFxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbi0vKiBOZXR3b3JrIGNpZHIgc2l6ZSBib29rIGtlZXBpbmcgd2hlbiB0aGUgaGFzaCBzdG9yZXMgZGlmZmVyZW50XG4tICogc2l6ZWQgbmV0d29ya3MuIGNpZHIgPT0gcmVhbCBjaWRyICYjNDM7IDEgdG8gc3VwcG9ydCAvMC5cbiYjNDM7LyoqXG4mIzQzOyAqIG10eXBlX2FkZF9jaWRyIC0gQWRkIGEgQ0lEUiBlbnRyeSB0byBoYXNoIHRhYmxlIGJvb2trZWVwaW5nXG4mIzQzOyAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldFxuJiM0MzsgKiBAaDogUG9pbnRlciB0byB0aGUgaHR5cGVcbiYjNDM7ICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGhcbiYjNDM7ICogQG46IFRoZSBpbmRleCBvZiB0aGUgbmV0X3ByZWZpeCBhcnJheSB0byBhZGQgQGNpZHIgdG9cbiYjNDM7ICpcbiYjNDM7ICogUGVyZm9ybXMgYW4gdXBkYXRlIGlmIEBjaWRyIGlzIGZvdW5kLCBvdGhlcndpc2UgcGVyZm9ybXMgQ09XLXN0eWxlXG4mIzQzOyAqIGFsbG9jYXRpb24gYW5kIHJlcGxhY2VtZW50IHZpYSBSQ1UuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXG4gICovXG4gc3RhdGljIGludFxuIG10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxuIHtcbi1cdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XG4gXHRpbnQgaSwgaiwgZm91bmQsIGxlbiA9IDAsIHJldCA9IDA7XG4mIzQzO1x0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcbiYjNDM7XHRzdHJ1Y3QgbmV0X3ByZWZpeCBucDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdC8qIEFkZCBpbiBpbmNyZWFzaW5nIHByZWZpeCBvcmRlciwgc28gbGFyZ2VyIGNpZHIgZmlyc3QgKi9cbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAobmV0cy1cdTAwM2VuZXRzW2ldLmNvdW50KVxuJiM0MztcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbiYjNDM7XHRcdGlmIChucC5jb3VudClcbiBcdFx0XHRsZW4mIzQzOyYjNDM7O1xuIFx0XHRpZiAoZm91bmQgIT0gLTEpIHtcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0fSBlbHNlIGlmIChuZXRzLVx1MDAzZW5ldHNbaV0uY2lkciBcdTAwM2MgY2lkcikge1xuJiM0MztcdFx0fSBlbHNlIGlmIChucC5jaWRyIFx1MDAzYyBjaWRyKSB7XG4gXHRcdFx0Zm91bmQgPSBpO1xuLVx0XHR9IGVsc2UgaWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpIHtcbi1cdFx0XHRuZXRzLVx1MDAzZW5ldHNbaV0uY291bnQmIzQzOyYjNDM7O1xuJiM0MztcdFx0fSBlbHNlIGlmIChucC5jaWRyID09IGNpZHIpIHtcbiYjNDM7XHRcdFx0aWYgKG5wLmNvdW50IFx1MDAzYyBDSURSX01BWF9DT1VOVCkge1xuJiM0MztcdFx0XHRcdG5wLmNvdW50JiM0MzsmIzQzOztcbiYjNDM7XHRcdFx0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tpXSwgbnApO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdHJldCA9IC1FT1ZFUkZMT1c7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRnb3RvIHVubG9jaztcbiBcdFx0fVxuIFx0fVxuQEAgLTM1MCw2ICYjNDM7MzkwLDcgQEAgbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG4gXHR9XG4gXG4gXHR0bXAtXHUwMDNlbGVuID0gbGVuO1xuJiM0MztcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXHUwMDI2dG1wLVx1MDAzZXNlcSwgXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuIFx0Zm9yIChpID0gMCwgaiA9IDA7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpJiM0MzsmIzQzOykge1xuIFx0XHRpZiAoaSA9PSBmb3VuZCkge1xuIFx0XHRcdHRtcC1cdTAwM2VuZXRzW2pdLmNpZHIgPSBjaWRyO1xuQEAgLTM3MSw0MiAmIzQzOzQxMiw2MCBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuJiM0MzsvKipcbiYjNDM7ICogbXR5cGVfZGVsX2NpZHIgLSBSZW1vdmUgQ0lEUiBlbnRyeSBhbmQgbWFpbnRhaW4gYXJyYXkgaW50ZWdyaXR5LlxuJiM0MzsgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXQuXG4mIzQzOyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS5cbiYjNDM7ICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGguXG4mIzQzOyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gcmVtb3ZlIEBjaWRyIGZyb21cbiYjNDM7ICpcbiYjNDM7ICogSWYgQ0lEUiBlbnRyeSBjb3VudCBmYWxscyB0byAwLCB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgXCYjMzQ7c2hpZnQtbGVmdFwmIzM0O1xuJiM0MzsgKiBvcGVyYXRpb24gb24gYWxsIGZvbGxvd2luZyBlbGVtZW50cy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGFycmF5IHJlbWFpbnNcbiYjNDM7ICogY29udGlndW91cyBhbmQgbWFpbnRhaW5zIGl0cyBkZXNjZW5kaW5nIG9yZGVyIGJ5IENJRFIuIFRoZSB2YWNhdGVkIHNsb3RcbiYjNDM7ICogYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkgaXMgemVyb2VkIG91dCAoY2lkcj0wLCBjb3VudD0wKS5cbiYjNDM7ICovXG4gc3RhdGljIHZvaWRcbiBtdHlwZV9kZWxfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcbiB7XG4tXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wO1xuLVx0dTggaSwgaiwgbGVuID0gMDtcbiYjNDM7XHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzO1xuJiM0MztcdHN0cnVjdCBuZXRfcHJlZml4IG5wO1xuIFx0aW50IGZvdW5kO1xuJiM0MztcdHU4IGksIGo7XG4mIzQzO1xuJiM0MztcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IG5ldF9wcmVmaXgpICE9IHNpemVvZih1MzIpKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAobmV0cy1cdTAwM2VuZXRzW2ldLmNvdW50KVxuLVx0XHRcdGxlbiYjNDM7JiM0Mzs7XG4tXHRcdGlmIChuZXRzLVx1MDAzZW5ldHNbaV0uY2lkciA9PSBjaWRyKVxuJiM0MztcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbiYjNDM7XHRcdGlmIChucC5jb3VudCBcdTAwMjZcdTAwMjYgbnAuY2lkciA9PSBjaWRyKSB7XG4mIzQzO1x0XHRcdG5wLmNvdW50LS07XG4gXHRcdFx0Zm91bmQgPSBpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdH1cbiBcdGlmICh1bmxpa2VseShmb3VuZCA9PSAtMSkpXG4gXHRcdGdvdG8gdW5sb2NrO1xuIFxuLVx0bmV0cy1cdTAwM2VuZXRzW2ZvdW5kXS5jb3VudC0tO1xuLVx0aWYgKG5ldHMtXHUwMDNlbmV0c1tmb3VuZF0uY291bnQpXG4tXHRcdGdvdG8gdW5sb2NrO1xuLVx0bGVuLS07XG4tXHR0bXAgPSBremFsbG9jX2ZsZXgoKnRtcCwgbmV0cywgbGVuLCBHRlBfQVRPTUlDKTtcbi1cdGlmICghdG1wKVxuLVx0XHQvKiBMZWF2ZSBhIGhvbGUgKi9cbiYjNDM7XHRpZiAobnAuY291bnQpIHtcbiYjNDM7XHRcdFdSSVRFX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ZvdW5kXSwgbnApO1xuIFx0XHRnb3RvIHVubG9jaztcbiYjNDM7XHR9XG4gXG4tXHR0bXAtXHUwMDNlbGVuID0gbGVuO1xuJiM0MztcdHdyaXRlX3NlcWNvdW50X2JlZ2luKFx1MDAyNm5ldHMtXHUwMDNlc2VxKTtcbiBcdGZvciAoaSA9IDAsIGogPSAwOyBpIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaSYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKCFuZXRzLVx1MDAzZW5ldHNbaV0uY291bnQgfHwgaSA9PSBmb3VuZClcbiYjNDM7XHRcdGlmIChpID09IGZvdW5kKVxuIFx0XHRcdGNvbnRpbnVlO1xuLVx0XHR0bXAtXHUwMDNlbmV0c1tqXS5jaWRyID0gbmV0cy1cdTAwM2VuZXRzW2ldLmNpZHI7XG4tXHRcdHRtcC1cdTAwM2VuZXRzW2omIzQzOyYjNDM7XS5jb3VudCA9IG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudDtcbiYjNDM7XG4mIzQzO1x0XHRucCA9IFJFQURfT05DRShuZXRzLVx1MDAzZW5ldHNbaV0pO1xuJiM0MztcdFx0aWYgKGkgIT0gailcbiYjNDM7XHRcdFx0V1JJVEVfT05DRShuZXRzLVx1MDAzZW5ldHNbal0sIG5wKTtcbiYjNDM7XHRcdGomIzQzOyYjNDM7O1xuIFx0fVxuLVx0cmN1X2Fzc2lnbl9wb2ludGVyKGgtXHUwMDNlcm5ldHNbbl0sIHRtcCk7XG4tXHRrZnJlZV9yY3UobmV0cywgcmN1KTtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuKVxuJiM0MztcdFx0V1JJVEVfT05DRShuZXRzLVx1MDAzZW5ldHNbaiYjNDM7JiM0MztdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xuJiM0MztcdHdyaXRlX3NlcWNvdW50X2VuZChcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4gdW5sb2NrOlxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuIH1cbkBAIC00NTEsNyAmIzQzOzUxMCw3IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbiB7XG4gXHRzdHJ1Y3QgaHR5cGUgKmggPSBzZXQtXHUwMDNlZGF0YTtcbiAjaWZkZWYgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4tXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wO1xuJiM0MztcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHM7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgaHRhYmxlICp0O1xuIFx0c3RydWN0IGhidWNrZXQgKm47XG5AQCAtNDc3LDE3ICYjNDM7NTM2LDE1IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbiBcdH1cbiAjaWZkZWYgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBJUFNFVF9ORVRfQ09VTlQ7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdG5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtXHUwMDNlcm5ldHNbaV0pO1xuLVx0XHR0bXAgPSBremFsbG9jX29iaigqdG1wLCBHRlBfQVRPTUlDKTtcbi1cdFx0aWYgKCF0bXApIHtcbi1cdFx0XHR1OCBqO1xuJiM0MztcdFx0dTggajtcbiBcbi1cdFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaiYjNDM7JiM0MzspXG4tXHRcdFx0XHRuZXRzLVx1MDAzZW5ldHNbal0uY291bnQgPSAwO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihoLVx1MDAzZXJuZXRzW2ldLCB0bXApO1xuLVx0XHRcdGtmcmVlX3JjdShuZXRzLCByY3UpO1xuLVx0XHR9XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuJiM0MztcdFx0bmV0cyA9IGlwc2V0X2RlcmVmZXJlbmNlX25mbmwoaC1cdTAwM2VybmV0c1tpXSk7XG4mIzQzO1x0XHR3cml0ZV9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4mIzQzO1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaiYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdFdSSVRFX09OQ0UobmV0cy1cdTAwM2VuZXRzW2pdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xuJiM0MztcdFx0d3JpdGVfc2VxY291bnRfZW5kKFx1MDAyNm5ldHMtXHUwMDNlc2VxKTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnNldC1cdTAwM2Vsb2NrKTtcbiBcdH1cbiAjZW5kaWZcbiB9XG5AQCAtMTI1MywzMSAmIzQzOzEzMTAsNDEgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLFxuICNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMlxuIFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0czE7XG4gXHRzdHJ1Y3QgbXR5cGVfZWxlbSBvcmlnID0gKmQ7XG4mIzQzO1x0dW5zaWduZWQgaW50IHNlcTE7XG4gXHRpbnQgcmV0LCBpLCBqLCBrO1xuICNlbHNlXG4gXHRpbnQgcmV0LCBpLCBqO1xuICNlbmRpZlxuLVx0dTMyIGtleSwgbXVsdGkgPSAwO1xuJiM0MztcdHVuc2lnbmVkIGludCBzZXEwO1xuJiM0MztcdHUzMiBrZXksIG11bHRpO1xuIFx0dTggcG9zO1xuIFxuIFx0cHJfZGVidWcoXCYjMzQ7dGVzdCBieSBuZXRzXFxuXCYjMzQ7KTtcbiBcdHJjdV9yZWFkX2xvY2tfYmgoKTtcbiYjNDM7cmV0cnk6XG4mIzQzO1x0bXVsdGkgPSAwO1xuIFx0bmV0czAgPSByY3VfZGVyZWZlcmVuY2VfYmgoaC1cdTAwM2VybmV0c1swXSk7XG4mIzQzO1x0c2VxMCA9IHJlYWRfc2VxY291bnRfYmVnaW4oXHUwMDI2bmV0czAtXHUwMDNlc2VxKTtcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcbiBcdG5ldHMxID0gcmN1X2RlcmVmZXJlbmNlX2JoKGgtXHUwMDNlcm5ldHNbMV0pO1xuJiM0MztcdHNlcTEgPSByZWFkX3NlcWNvdW50X2JlZ2luKFx1MDAyNm5ldHMxLVx1MDAzZXNlcSk7XG4gI2VuZGlmXG4gXHRmb3IgKGogPSAwOyBqIFx1MDAzYyBuZXRzMC1cdTAwM2VsZW4gXHUwMDI2XHUwMDI2ICFtdWx0aTsgaiYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKCFuZXRzMC1cdTAwM2VuZXRzW2pdLmNvdW50KVxuJiM0MztcdFx0c3RydWN0IG5ldF9wcmVmaXggcDAgPSBSRUFEX09OQ0UobmV0czAtXHUwMDNlbmV0c1tqXSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCFwMC5jb3VudClcbiBcdFx0XHRjb250aW51ZTtcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcbiBcdFx0bXR5cGVfZGF0YV9yZXNldF9lbGVtKGQsIFx1MDAyNm9yaWcpO1xuLVx0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czAtXHUwMDNlbmV0c1tqXS5jaWRyLCBmYWxzZSk7XG4mIzQzO1x0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgcDAuY2lkciwgZmFsc2UpO1xuIFx0XHRmb3IgKGsgPSAwOyBrIFx1MDAzYyBuZXRzMS1cdTAwM2VsZW4gXHUwMDI2XHUwMDI2ICFtdWx0aTsgayYjNDM7JiM0MzspIHtcbi1cdFx0XHRpZiAoIW5ldHMxLVx1MDAzZW5ldHNba10uY291bnQpXG4mIzQzO1x0XHRcdHN0cnVjdCBuZXRfcHJlZml4IHAxID0gUkVBRF9PTkNFKG5ldHMxLVx1MDAzZW5ldHNba10pO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKCFwMS5jb3VudClcbiBcdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMS1cdTAwM2VuZXRzW2tdLmNpZHIsIHRydWUpO1xuJiM0MztcdFx0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgcDEuY2lkciwgdHJ1ZSk7XG4gI2Vsc2Vcbi1cdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMwLVx1MDAzZW5ldHNbal0uY2lkcik7XG4mIzQzO1x0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgcDAuY2lkcik7XG4gI2VuZGlmXG4gXHRcdGtleSA9IEhLRVkoZCwgaC1cdTAwM2Vpbml0dmFsLCB0LVx1MDAzZWh0YWJsZV9iaXRzKTtcbiBcdFx0biA9IHJjdV9kZXJlZmVyZW5jZV9iaChoYnVja2V0KHQsIGtleSkpO1xuQEAgLTEzMDQsNiAmIzQzOzEzNzEsMTIgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLFxuIFx0fVxuIFx0cmV0ID0gMDtcbiB1bmxvY2s6XG4mIzQzO1x0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXHUwMDI2bmV0czAtXHUwMDNlc2VxLCBzZXEwKSlcbiYjNDM7XHRcdGdvdG8gcmV0cnk7XG4mIzQzOyNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMlxuJiM0MztcdGlmIChyZWFkX3NlcWNvdW50X3JldHJ5KFx1MDAyNm5ldHMxLVx1MDAzZXNlcSwgc2VxMSkpXG4mIzQzO1x0XHRnb3RvIHJldHJ5O1xuJiM0MzsjZW5kaWZcbiBcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTcwNyw2ICYjNDM7MTc4MCw3IEBAIElQU0VUX1RPS0VOKEhUWVBFLCBfY3JlYXRlKShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpcF9zZXQgKnNldCxcbiBcdFx0XHRcdGtmcmVlKHJjdV9kZXJlZmVyZW5jZV9yYXcoaC1cdTAwM2VybmV0c1stLWldKSk7XG4gXHRcdFx0Z290byBmcmVlX2hyZWdpb247XG4gXHRcdH1cbiYjNDM7XHRcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXHUwMDI2bmV0cy1cdTAwM2VzZXEsIFx1MDAyNnNldC1cdTAwM2Vsb2NrKTtcbiBcdFx0UkNVX0lOSVRfUE9JTlRFUihoLVx1MDAzZXJuZXRzW2ldLCBuZXRzKTtcbiBcdH1cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcbmluZGV4IGI0NGI5NWY3NjZiN2EuLmI2MDJjYzQzNTY1ZGQgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xuQEAgLTM4LDcgJiM0MzszOCw2IEBAIE1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfaGFzaDpuZXQsaWZhY2VcJiMzNDspO1xuICNkZWZpbmUgSFRZUEVcdFx0aGFzaF9uZXRpZmFjZVxuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX01VTFRJXG4tI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVDBcbiBcbiAjZGVmaW5lIFNUUlNDUFkoYSwgYilcdHN0cnNjcHkoYSwgYiwgSUZOQU1TSVopXG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xuaW5kZXggNjI5MTUzMmJlN2E1YS4uNjFhZjFjZTI3MTI3OSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xuQEAgLTM2LDcgJiM0MzszNiw2IEBAIE1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfaGFzaDpuZXQscG9ydCxuZXRcJiMzNDspO1xuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4gI2RlZmluZSBJUFNFVF9ORVRfQ09VTlQgMlxuLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVQwXG4gXG4gLyogSVB2NCB2YXJpYW50ICovXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MzBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVElGQUNFJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfSVBQT1JUTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X3VhZGQmIzM0OywKICAgICYjMzQ7aXBfc2V0X3VkZWwmIzM0OywKICAgICYjMzQ7aXBfc2V0X3V0ZXN0JiMzNDssCiAgICAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldGlmYWNlNF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U0X3Rlc3QmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9kZWwmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydG5ldDRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXQ0X2FkZCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldDRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBDSURSIG5ldHdvcmsgcHJlZml4ZXMgYXJlIHRyYWNrZWQgaW4gaXBzZXQgaGFzaCB0eXBlcy4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0cyBhcnJheSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIFJDVSByZWFsbG9jYXRpb24gb24gZXZlcnkgZGVsZXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGRlNmZlYWQ2ZmQ0MDYxMDJkMjQ3ZGVjNDU0YzhlYWQ4MGMxNDZkNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMDM6Mjc6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaAppbmRleCBmMDBjODJhY2Q3ZjA1Li44MGNhNTIzZjMwNGJiIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3JjdXBkYXRlX3dhaXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9qaGFzaC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3R5cGVzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NlcWxvY2suaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oJmd0OwogCkBAIC05OCwxNCAmIzQzOzk5LDM0IEBAIHN0cnVjdCBodGFibGUgewogI2RlZmluZSBJUFNFVF9ORVRfQ09VTlQJCTEKICNlbmRpZgogCi0vKiBCb29rLWtlZXBpbmcgb2YgdGhlIHByZWZpeGVzIGFkZGVkIHRvIHRoZSBzZXQgKi8KJiM0MzsvKioKJiM0MzsgKiBzdHJ1Y3QgbmV0X3ByZWZpeCAtIFJlcHJlc2VudGF0aW9uIG9mIGEgbmV0d29yayBwcmVmaXguCiYjNDM7ICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGguCiYjNDM7ICogQGNvdW50OiBOdW1iZXIgb2Ygb2NjdXJyZW5jZXMuCiYjNDM7ICovCiBzdHJ1Y3QgbmV0X3ByZWZpeCB7Ci0JdTggY2lkcjsJCQkvKiB0aGUgY2lkciB2YWx1ZSAqLwotCXUzMiBjb3VudDsJCQkvKiBudW1iZXIgb2YgZWxlbWVudHMgb2YgdGhpcyBjaWRyICovCiYjNDM7CXUzMiBjaWRyOjg7CiYjNDM7CXUzMiBjb3VudDoyNDsKIH07CiAKJiM0MzsjZGVmaW5lIENJRFJfTUFYX0NPVU5UICgoMSAmbHQ7Jmx0OyAyNCkgLSAxKQomIzQzOwomIzQzOy8qKgomIzQzOyAqIHN0cnVjdCBuZXRfcHJlZml4ZXMgLSBBIGNvbGxlY3Rpb24gb2YgbmV0d29yayBwcmVmaXhlcy4KJiM0MzsgKiBAcmN1OiBSQ1UgaGVhZAomIzQzOyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0cwomIzQzOyAqIEBsZW46IE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBhcnJheS4KJiM0MzsgKiBAbmV0czogQXJyYXkgb2YgbmV0X3ByZWZpeCBzdHJ1Y3R1cmVzIChzb3J0ZWQgYnkgQ0lEUiBkZXNjZW5kaW5nKS4KJiM0MzsgKgomIzQzOyAqIEBuZXRzIGVudHJpZXMgYXJlIHVwZGF0ZWQgaW4gcGxhY2UgdW5kZXIgQHNldCYjMzk7cyBsb2NrLiBBIHNpbmdsZSBlbnRyeSYjMzk7cwomIzQzOyAqIGNpZHIvY291bnQgcGFpciBpcyBhbHdheXMgdXBkYXRlZCBhdG9taWNhbGx5IHZpYSBSRUFEX09OQ0UoKS9XUklURV9PTkNFKCksCiYjNDM7ICogYnV0IHJlbW92aW5nIGFuIGVudHJ5IGFsc28gc2hpZnRzIGV2ZXJ5IGZvbGxvd2luZyBlbnRyeSBkb3duIGJ5IG9uZSBzbG90LgomIzQzOyAqIExvY2tsZXNzIHJlYWRlcnMgdGhhdCBzY2FuIHRoZSB3aG9sZSBhcnJheSAoaS5lLiBtb3JlIHRoYW4gYSBzaW5nbGUKJiM0MzsgKiBpbmRleGVkIHNsb3QpIG11c3QgdXNlIEBzZXEgdG8gZGV0ZWN0IGFuZCByZXRyeSBhY3Jvc3Mgc3VjaCBhIHNoaWZ0LgomIzQzOyAqLwogc3RydWN0IG5ldF9wcmVmaXhlcyB7CiAJc3RydWN0IHJjdV9oZWFkIHJjdTsKJiM0MzsJc2VxY291bnRfc3BpbmxvY2tfdCBzZXE7CiAJdTggbGVuOwogCXN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTsKIH07CkBAIC0xNDMsOCAmIzQzOzE2NCwxMSBAQCBodGFibGVfc2l6ZSh1OCBoYml0cykKICNlbmRpZgogCiAjZGVmaW5lIElOSVRfQ0lEUihuLCBob3N0X21hc2spICh7CQkJCVwKLQljb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7CQlcCi0JRENJRFJfUFVUKChfX24pLSZndDtsZW4gPyAoX19uKS0mZ3Q7bmV0c1swXS5jaWRyIDogaG9zdF9tYXNrKTtcCiYjNDM7CWNvbnN0IHN0cnVjdCBuZXRfcHJlZml4ZXMgKl9fbiA9IHJjdV9kZXJlZmVyZW5jZShuKTsJXAomIzQzOwlzdHJ1Y3QgbmV0X3ByZWZpeCBfX3AgPQkJCQkJXAomIzQzOwkJX19uLSZndDtsZW4gPyBSRUFEX09OQ0UoX19uLSZndDtuZXRzWzBdKQkJXAomIzQzOwkJCSA6IChzdHJ1Y3QgbmV0X3ByZWZpeCl7fTsJCVwKJiM0MzsJRENJRFJfUFVUKF9fcC5jb3VudCA/IF9fcC5jaWRyIDogaG9zdF9tYXNrKTsJCVwKIH0pCiAKICNlbmRpZiAvKiBJUF9TRVRfSEFTSF9XSVRIX05FVFMgKi8KQEAgLTMxOCwyNyAmIzQzOzM0Miw0MyBAQCBzdHJ1Y3QgbXR5cGVfcmVzaXplX2FkIHsKIH07CiAKICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFMKLS8qIE5ldHdvcmsgY2lkciBzaXplIGJvb2sga2VlcGluZyB3aGVuIHRoZSBoYXNoIHN0b3JlcyBkaWZmZXJlbnQKLSAqIHNpemVkIG5ldHdvcmtzLiBjaWRyID09IHJlYWwgY2lkciAmIzQzOyAxIHRvIHN1cHBvcnQgLzAuCiYjNDM7LyoqCiYjNDM7ICogbXR5cGVfYWRkX2NpZHIgLSBBZGQgYSBDSURSIGVudHJ5IHRvIGhhc2ggdGFibGUgYm9va2tlZXBpbmcKJiM0MzsgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXQKJiM0MzsgKiBAaDogUG9pbnRlciB0byB0aGUgaHR5cGUKJiM0MzsgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aAomIzQzOyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gYWRkIEBjaWRyIHRvCiYjNDM7ICoKJiM0MzsgKiBQZXJmb3JtcyBhbiB1cGRhdGUgaWYgQGNpZHIgaXMgZm91bmQsIG90aGVyd2lzZSBwZXJmb3JtcyBDT1ctc3R5bGUKJiM0MzsgKiBhbGxvY2F0aW9uIGFuZCByZXBsYWNlbWVudCB2aWEgUkNVLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KICAqLwogc3RhdGljIGludAogbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pCiB7Ci0Jc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDsKIAlpbnQgaSwgaiwgZm91bmQsIGxlbiA9IDAsIHJldCA9IDA7CiYjNDM7CXN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7CiYjNDM7CXN0cnVjdCBuZXRfcHJlZml4IG5wOwogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7c2V0LSZndDtsb2NrKTsKIAluZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLSZndDtybmV0c1tuXSk7CiAJLyogQWRkIGluIGluY3JlYXNpbmcgcHJlZml4IG9yZGVyLCBzbyBsYXJnZXIgY2lkciBmaXJzdCAqLwogCWZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgJmx0OyBuZXRzLSZndDtsZW47IGkmIzQzOyYjNDM7KSB7Ci0JCWlmIChuZXRzLSZndDtuZXRzW2ldLmNvdW50KQomIzQzOwkJbnAgPSBSRUFEX09OQ0UobmV0cy0mZ3Q7bmV0c1tpXSk7CiYjNDM7CQlpZiAobnAuY291bnQpCiAJCQlsZW4mIzQzOyYjNDM7OwogCQlpZiAoZm91bmQgIT0gLTEpIHsKIAkJCWNvbnRpbnVlOwotCQl9IGVsc2UgaWYgKG5ldHMtJmd0O25ldHNbaV0uY2lkciAmbHQ7IGNpZHIpIHsKJiM0MzsJCX0gZWxzZSBpZiAobnAuY2lkciAmbHQ7IGNpZHIpIHsKIAkJCWZvdW5kID0gaTsKLQkJfSBlbHNlIGlmIChuZXRzLSZndDtuZXRzW2ldLmNpZHIgPT0gY2lkcikgewotCQkJbmV0cy0mZ3Q7bmV0c1tpXS5jb3VudCYjNDM7JiM0Mzs7CiYjNDM7CQl9IGVsc2UgaWYgKG5wLmNpZHIgPT0gY2lkcikgewomIzQzOwkJCWlmIChucC5jb3VudCAmbHQ7IENJRFJfTUFYX0NPVU5UKSB7CiYjNDM7CQkJCW5wLmNvdW50JiM0MzsmIzQzOzsKJiM0MzsJCQkJV1JJVEVfT05DRShuZXRzLSZndDtuZXRzW2ldLCBucCk7CiYjNDM7CQkJfSBlbHNlIHsKJiM0MzsJCQkJcmV0ID0gLUVPVkVSRkxPVzsKJiM0MzsJCQl9CiAJCQlnb3RvIHVubG9jazsKIAkJfQogCX0KQEAgLTM1MCw2ICYjNDM7MzkwLDcgQEAgbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pCiAJfQogCiAJdG1wLSZndDtsZW4gPSBsZW47CiYjNDM7CXNlcWNvdW50X3NwaW5sb2NrX2luaXQoJmFtcDt0bXAtJmd0O3NlcSwgJmFtcDtzZXQtJmd0O2xvY2spOwogCWZvciAoaSA9IDAsIGogPSAwOyBpICZsdDsgbmV0cy0mZ3Q7bGVuOyBpJiM0MzsmIzQzOykgewogCQlpZiAoaSA9PSBmb3VuZCkgewogCQkJdG1wLSZndDtuZXRzW2pdLmNpZHIgPSBjaWRyOwpAQCAtMzcxLDQyICYjNDM7NDEyLDYwIEBAIG10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKQogCXJldHVybiByZXQ7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiBtdHlwZV9kZWxfY2lkciAtIFJlbW92ZSBDSURSIGVudHJ5IGFuZCBtYWludGFpbiBhcnJheSBpbnRlZ3JpdHkuCiYjNDM7ICogQHNldDogUG9pbnRlciB0byB0aGUgaXBfc2V0LgomIzQzOyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS4KJiM0MzsgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC4KJiM0MzsgKiBAbjogVGhlIGluZGV4IG9mIHRoZSBuZXRfcHJlZml4IGFycmF5IHRvIHJlbW92ZSBAY2lkciBmcm9tCiYjNDM7ICoKJiM0MzsgKiBJZiBDSURSIGVudHJ5IGNvdW50IGZhbGxzIHRvIDAsIHRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSAmIzM0O3NoaWZ0LWxlZnQmIzM0OwomIzQzOyAqIG9wZXJhdGlvbiBvbiBhbGwgZm9sbG93aW5nIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJyYXkgcmVtYWlucwomIzQzOyAqIGNvbnRpZ3VvdXMgYW5kIG1haW50YWlucyBpdHMgZGVzY2VuZGluZyBvcmRlciBieSBDSURSLiBUaGUgdmFjYXRlZCBzbG90CiYjNDM7ICogYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkgaXMgemVyb2VkIG91dCAoY2lkcj0wLCBjb3VudD0wKS4KJiM0MzsgKi8KIHN0YXRpYyB2b2lkCiBtdHlwZV9kZWxfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbikKIHsKLQlzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wOwotCXU4IGksIGosIGxlbiA9IDA7CiYjNDM7CXN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHM7CiYjNDM7CXN0cnVjdCBuZXRfcHJlZml4IG5wOwogCWludCBmb3VuZDsKJiM0MzsJdTggaSwgajsKJiM0MzsKJiM0MzsJQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgbmV0X3ByZWZpeCkgIT0gc2l6ZW9mKHUzMikpOwogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7c2V0LSZndDtsb2NrKTsKIAluZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLSZndDtybmV0c1tuXSk7CiAJZm9yIChpID0gMCwgZm91bmQgPSAtMTsgaSAmbHQ7IG5ldHMtJmd0O2xlbjsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKG5ldHMtJmd0O25ldHNbaV0uY291bnQpCi0JCQlsZW4mIzQzOyYjNDM7OwotCQlpZiAobmV0cy0mZ3Q7bmV0c1tpXS5jaWRyID09IGNpZHIpCiYjNDM7CQlucCA9IFJFQURfT05DRShuZXRzLSZndDtuZXRzW2ldKTsKJiM0MzsJCWlmIChucC5jb3VudCAmYW1wOyZhbXA7IG5wLmNpZHIgPT0gY2lkcikgewomIzQzOwkJCW5wLmNvdW50LS07CiAJCQlmb3VuZCA9IGk7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiAJfQogCWlmICh1bmxpa2VseShmb3VuZCA9PSAtMSkpCiAJCWdvdG8gdW5sb2NrOwogCi0JbmV0cy0mZ3Q7bmV0c1tmb3VuZF0uY291bnQtLTsKLQlpZiAobmV0cy0mZ3Q7bmV0c1tmb3VuZF0uY291bnQpCi0JCWdvdG8gdW5sb2NrOwotCWxlbi0tOwotCXRtcCA9IGt6YWxsb2NfZmxleCgqdG1wLCBuZXRzLCBsZW4sIEdGUF9BVE9NSUMpOwotCWlmICghdG1wKQotCQkvKiBMZWF2ZSBhIGhvbGUgKi8KJiM0MzsJaWYgKG5wLmNvdW50KSB7CiYjNDM7CQlXUklURV9PTkNFKG5ldHMtJmd0O25ldHNbZm91bmRdLCBucCk7CiAJCWdvdG8gdW5sb2NrOwomIzQzOwl9CiAKLQl0bXAtJmd0O2xlbiA9IGxlbjsKJiM0MzsJd3JpdGVfc2VxY291bnRfYmVnaW4oJmFtcDtuZXRzLSZndDtzZXEpOwogCWZvciAoaSA9IDAsIGogPSAwOyBpICZsdDsgbmV0cy0mZ3Q7bGVuOyBpJiM0MzsmIzQzOykgewotCQlpZiAoIW5ldHMtJmd0O25ldHNbaV0uY291bnQgfHwgaSA9PSBmb3VuZCkKJiM0MzsJCWlmIChpID09IGZvdW5kKQogCQkJY29udGludWU7Ci0JCXRtcC0mZ3Q7bmV0c1tqXS5jaWRyID0gbmV0cy0mZ3Q7bmV0c1tpXS5jaWRyOwotCQl0bXAtJmd0O25ldHNbaiYjNDM7JiM0MztdLmNvdW50ID0gbmV0cy0mZ3Q7bmV0c1tpXS5jb3VudDsKJiM0MzsKJiM0MzsJCW5wID0gUkVBRF9PTkNFKG5ldHMtJmd0O25ldHNbaV0pOwomIzQzOwkJaWYgKGkgIT0gaikKJiM0MzsJCQlXUklURV9PTkNFKG5ldHMtJmd0O25ldHNbal0sIG5wKTsKJiM0MzsJCWomIzQzOyYjNDM7OwogCX0KLQlyY3VfYXNzaWduX3BvaW50ZXIoaC0mZ3Q7cm5ldHNbbl0sIHRtcCk7Ci0Ja2ZyZWVfcmN1KG5ldHMsIHJjdSk7CiYjNDM7CiYjNDM7CXdoaWxlIChqICZsdDsgbmV0cy0mZ3Q7bGVuKQomIzQzOwkJV1JJVEVfT05DRShuZXRzLSZndDtuZXRzW2omIzQzOyYjNDM7XSwgKHN0cnVjdCBuZXRfcHJlZml4KXt9KTsKJiM0MzsJd3JpdGVfc2VxY291bnRfZW5kKCZhbXA7bmV0cy0mZ3Q7c2VxKTsKIHVubG9jazoKIAlzcGluX3VubG9ja19iaCgmYW1wO3NldC0mZ3Q7bG9jayk7CiB9CkBAIC00NTEsNyAmIzQzOzUxMCw3IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldCkKIHsKIAlzdHJ1Y3QgaHR5cGUgKmggPSBzZXQtJmd0O2RhdGE7CiAjaWZkZWYgSVBfU0VUX0hBU0hfV0lUSF9ORVRTCi0Jc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDsKJiM0MzsJc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0czsKICNlbmRpZgogCXN0cnVjdCBodGFibGUgKnQ7CiAJc3RydWN0IGhidWNrZXQgKm47CkBAIC00NzcsMTcgJiM0Mzs1MzYsMTUgQEAgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KQogCX0KICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFMKIAlmb3IgKGkgPSAwOyBpICZsdDsgSVBTRVRfTkVUX0NPVU5UOyBpJiM0MzsmIzQzOykgewotCQluZXRzID0gaXBzZXRfZGVyZWZlcmVuY2VfbmZubChoLSZndDtybmV0c1tpXSk7Ci0JCXRtcCA9IGt6YWxsb2Nfb2JqKCp0bXAsIEdGUF9BVE9NSUMpOwotCQlpZiAoIXRtcCkgewotCQkJdTggajsKJiM0MzsJCXU4IGo7CiAKLQkJCWZvciAoaiA9IDA7IGogJmx0OyBuZXRzLSZndDtsZW47IGomIzQzOyYjNDM7KQotCQkJCW5ldHMtJmd0O25ldHNbal0uY291bnQgPSAwOwotCQl9IGVsc2UgewotCQkJcmN1X2Fzc2lnbl9wb2ludGVyKGgtJmd0O3JuZXRzW2ldLCB0bXApOwotCQkJa2ZyZWVfcmN1KG5ldHMsIHJjdSk7Ci0JCX0KJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO3NldC0mZ3Q7bG9jayk7CiYjNDM7CQluZXRzID0gaXBzZXRfZGVyZWZlcmVuY2VfbmZubChoLSZndDtybmV0c1tpXSk7CiYjNDM7CQl3cml0ZV9zZXFjb3VudF9iZWdpbigmYW1wO25ldHMtJmd0O3NlcSk7CiYjNDM7CQlmb3IgKGogPSAwOyBqICZsdDsgbmV0cy0mZ3Q7bGVuOyBqJiM0MzsmIzQzOykKJiM0MzsJCQlXUklURV9PTkNFKG5ldHMtJmd0O25ldHNbal0sIChzdHJ1Y3QgbmV0X3ByZWZpeCl7fSk7CiYjNDM7CQl3cml0ZV9zZXFjb3VudF9lbmQoJmFtcDtuZXRzLSZndDtzZXEpOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDtzZXQtJmd0O2xvY2spOwogCX0KICNlbmRpZgogfQpAQCAtMTI1MywzMSAmIzQzOzEzMTAsNDEgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLAogI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyCiAJc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0czE7CiAJc3RydWN0IG10eXBlX2VsZW0gb3JpZyA9ICpkOwomIzQzOwl1bnNpZ25lZCBpbnQgc2VxMTsKIAlpbnQgcmV0LCBpLCBqLCBrOwogI2Vsc2UKIAlpbnQgcmV0LCBpLCBqOwogI2VuZGlmCi0JdTMyIGtleSwgbXVsdGkgPSAwOwomIzQzOwl1bnNpZ25lZCBpbnQgc2VxMDsKJiM0MzsJdTMyIGtleSwgbXVsdGk7CiAJdTggcG9zOwogCiAJcHJfZGVidWcoJiMzNDt0ZXN0IGJ5IG5ldHNcbiYjMzQ7KTsKIAlyY3VfcmVhZF9sb2NrX2JoKCk7CiYjNDM7cmV0cnk6CiYjNDM7CW11bHRpID0gMDsKIAluZXRzMCA9IHJjdV9kZXJlZmVyZW5jZV9iaChoLSZndDtybmV0c1swXSk7CiYjNDM7CXNlcTAgPSByZWFkX3NlcWNvdW50X2JlZ2luKCZhbXA7bmV0czAtJmd0O3NlcSk7CiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDIKIAluZXRzMSA9IHJjdV9kZXJlZmVyZW5jZV9iaChoLSZndDtybmV0c1sxXSk7CiYjNDM7CXNlcTEgPSByZWFkX3NlcWNvdW50X2JlZ2luKCZhbXA7bmV0czEtJmd0O3NlcSk7CiAjZW5kaWYKIAlmb3IgKGogPSAwOyBqICZsdDsgbmV0czAtJmd0O2xlbiAmYW1wOyZhbXA7ICFtdWx0aTsgaiYjNDM7JiM0MzspIHsKLQkJaWYgKCFuZXRzMC0mZ3Q7bmV0c1tqXS5jb3VudCkKJiM0MzsJCXN0cnVjdCBuZXRfcHJlZml4IHAwID0gUkVBRF9PTkNFKG5ldHMwLSZndDtuZXRzW2pdKTsKJiM0MzsKJiM0MzsJCWlmICghcDAuY291bnQpCiAJCQljb250aW51ZTsKICNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMgogCQltdHlwZV9kYXRhX3Jlc2V0X2VsZW0oZCwgJmFtcDtvcmlnKTsKLQkJbXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMwLSZndDtuZXRzW2pdLmNpZHIsIGZhbHNlKTsKJiM0MzsJCW10eXBlX2RhdGFfbmV0bWFzayhkLCBwMC5jaWRyLCBmYWxzZSk7CiAJCWZvciAoayA9IDA7IGsgJmx0OyBuZXRzMS0mZ3Q7bGVuICZhbXA7JmFtcDsgIW11bHRpOyBrJiM0MzsmIzQzOykgewotCQkJaWYgKCFuZXRzMS0mZ3Q7bmV0c1trXS5jb3VudCkKJiM0MzsJCQlzdHJ1Y3QgbmV0X3ByZWZpeCBwMSA9IFJFQURfT05DRShuZXRzMS0mZ3Q7bmV0c1trXSk7CiYjNDM7CiYjNDM7CQkJaWYgKCFwMS5jb3VudCkKIAkJCQljb250aW51ZTsKLQkJCW10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMS0mZ3Q7bmV0c1trXS5jaWRyLCB0cnVlKTsKJiM0MzsJCQltdHlwZV9kYXRhX25ldG1hc2soZCwgcDEuY2lkciwgdHJ1ZSk7CiAjZWxzZQotCQltdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czAtJmd0O25ldHNbal0uY2lkcik7CiYjNDM7CQltdHlwZV9kYXRhX25ldG1hc2soZCwgcDAuY2lkcik7CiAjZW5kaWYKIAkJa2V5ID0gSEtFWShkLCBoLSZndDtpbml0dmFsLCB0LSZndDtodGFibGVfYml0cyk7CiAJCW4gPSByY3VfZGVyZWZlcmVuY2VfYmgoaGJ1Y2tldCh0LCBrZXkpKTsKQEAgLTEzMDQsNiAmIzQzOzEzNzEsMTIgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLAogCX0KIAlyZXQgPSAwOwogdW5sb2NrOgomIzQzOwlpZiAocmVhZF9zZXFjb3VudF9yZXRyeSgmYW1wO25ldHMwLSZndDtzZXEsIHNlcTApKQomIzQzOwkJZ290byByZXRyeTsKJiM0MzsjaWYgSVBTRVRfTkVUX0NPVU5UID09IDIKJiM0MzsJaWYgKHJlYWRfc2VxY291bnRfcmV0cnkoJmFtcDtuZXRzMS0mZ3Q7c2VxLCBzZXExKSkKJiM0MzsJCWdvdG8gcmV0cnk7CiYjNDM7I2VuZGlmCiAJcmN1X3JlYWRfdW5sb2NrX2JoKCk7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTE3MDcsNiAmIzQzOzE3ODAsNyBAQCBJUFNFVF9UT0tFTihIVFlQRSwgX2NyZWF0ZSkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaXBfc2V0ICpzZXQsCiAJCQkJa2ZyZWUocmN1X2RlcmVmZXJlbmNlX3JhdyhoLSZndDtybmV0c1stLWldKSk7CiAJCQlnb3RvIGZyZWVfaHJlZ2lvbjsKIAkJfQomIzQzOwkJc2VxY291bnRfc3BpbmxvY2tfaW5pdCgmYW1wO25ldHMtJmd0O3NlcSwgJmFtcDtzZXQtJmd0O2xvY2spOwogCQlSQ1VfSU5JVF9QT0lOVEVSKGgtJmd0O3JuZXRzW2ldLCBuZXRzKTsKIAl9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYwppbmRleCBiNDRiOTVmNzY2YjdhLi5iNjAyY2M0MzU2NWRkIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jCkBAIC0zOCw3ICYjNDM7MzgsNiBAQCBNT0RVTEVfQUxJQVMoJiMzNDtpcF9zZXRfaGFzaDpuZXQsaWZhY2UmIzM0Oyk7CiAjZGVmaW5lIEhUWVBFCQloYXNoX25ldGlmYWNlCiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUUwogI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX01VTFRJCi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMAogCiAjZGVmaW5lIFNUUlNDUFkoYSwgYikJc3Ryc2NweShhLCBiLCBJRk5BTVNJWikKIApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYwppbmRleCA2MjkxNTMyYmU3YTVhLi42MWFmMWNlMjcxMjc5IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYwpAQCAtMzYsNyAmIzQzOzM2LDYgQEAgTU9EVUxFX0FMSUFTKCYjMzQ7aXBfc2V0X2hhc2g6bmV0LHBvcnQsbmV0JiMzNDspOwogI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX1BST1RPCiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUUwogI2RlZmluZSBJUFNFVF9ORVRfQ09VTlQgMgotI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVDAKIAogLyogSVB2NCB2YXJpYW50ICovCiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjltPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAzNAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGlwc2V0IEhhc2ggQ0lEUiBUcmFja2luZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGlwc2V0YC4gSXQmIzM5O3MgdG91Y2hpbmcgYGlwX3NldF9oYXNoX2dlbi5oYCwgYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgLCBhbmQgYGlwX3NldF9oYXNoX25ldHBvcnRuZXQuY2AuIEJhc2ljYWxseSwgdGhlIGNvcmUgb2YgaG93IGlwc2V0IGhhc2ggdHlwZXMgaGFuZGxlIENJRFIgcHJlZml4ZXMgaXMgYmVpbmcgdXBkYXRlZC4gVGhlIGJpZyBkZWFsIGhlcmUgaXMgdGhlIHVzZSBvZiBgc2VxY291bnRfc3BpbmxvY2tfdGAgdG8gbWFuYWdlIHJlb3JkZXJpbmcgb2YgdGhlIGBuZXRzYCBhcnJheSBpbi1wbGFjZS4gVGhpcyBpcyBncmVhdDsgaXQgbWVhbnMgd2UgY2FuIGF2b2lkIHJlYWxsb2NhdGluZyBldmVyeXRoaW5nIHdpdGggUkNVIG9uIGV2ZXJ5IGRlbGV0ZSwgd2hpY2ggaXMgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSB3aW4uCgpUaGlzIGFmZmVjdHMgYG10eXBlX2FkZF9jaWRyYCwgYG10eXBlX2RlbF9jaWRyYCwgYG10eXBlX2ZsdXNoYCwgYW5kIGBtdHlwZV90ZXN0X2NpZHJzYC4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm8gcXVlc3Rpb24uIFRoaXMgKm5lZWRzKiB0byBiZSBmdXp6ZWQsIGltbWVkaWF0ZWx5LiBHb3R0YSBmaW5kIGFueSBoaWRkZW4gaXNzdWVzIGhlcmUgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IuCgpOb3csIGxldCYjMzk7cyBwaW5wb2ludCB0aGUgY3J1Y2lhbCBmdW5jdGlvbnMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG1hY3JvcyBvciB0ZW1wbGF0ZXMgd2l0aGluIGBpcF9zZXRfaGFzaF9nZW4uaGAsIHdoaWNoIGFyZSB0aGVuIGluc3RhbnRpYXRlZCBhbmQgdXNlZCBieSB0aGUgQyBmaWxlcyBmb3IgZGlmZmVyZW50IGhhc2ggdHlwZXMuIGBtdHlwZV9hZGRfY2lkcmAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gaW4gdGhlIGhlYWRlciwgYW5kIGl0IGxvb2tzIGxpa2UgaXQgZ2V0cyBpbmNsdWRlZCBhbmQgcmVuYW1lZC91c2VkIGJ5IHRoZSBDIGZpbGVzLiBJdCYjMzk7cyBub3QgZGlyZWN0bHkgZXhwb3J0ZWQsIGJ1dCBpdCYjMzk7cyBmdW5kYW1lbnRhbGx5IHBhcnQgb2YgdGhlc2UgYGhhc2hfKmAgbW9kdWxlcy4KCkFoLCByaWdodC4gU2luY2UgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24gaW4gdGhlIGhlYWRlciwgSSBzaG91bGQgY2hlY2sgd2hlcmUgYG10eXBlX2FkZF9jaWRyYCBpcyBhY3R1YWxseSAqdXNlZCouIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGJ5IGBtdHlwZV9hZGRgLCB3aGljaCBpcyBhbHNvIGEgdGVtcGxhdGUuIFNvLCBhIGdyZXAgZm9yIGBtdHlwZV9hZGRgIG9yIGV2ZW4gYG10eXBlX2FkZF9jaWRyYCBzaG91bGQgYmUgdGhlIGJlc3Qgd2F5IHRvIHVuY292ZXIgdGhlIGNhbGwgY2hhaW4uIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50cyB0byByZWFsbHkgZm9jdXMgb24gZm9yIGZ1enppbmcgYW5kIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXR5cGVfYWRkX2NpZHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yMTktI3VuZGVmIG10eXBlX2V4dF9jbGVhbnVwXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIyMDojdW5kZWYgbXR5cGVfYWRkX2NpZHJcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjIxLSN1bmRlZiBtdHlwZV9kZWxfY2lkclxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY3LSNkZWZpbmUgbXR5cGVfZXh0X2NsZWFudXBcdElQU0VUX1RPS0VOKE1UWVBFLCBfZXh0X2NsZWFudXApXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI2ODojZGVmaW5lIG10eXBlX2FkZF9jaWRyXHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkX2NpZHIpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI2OS0jZGVmaW5lIG10eXBlX2RlbF9jaWRyXHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVsX2NpZHIpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0zMzU9c3RydWN0IG10eXBlX3Jlc2l6ZV9hZCB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0zNDUtLyoqXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjM0NjogKiBtdHlwZV9hZGRfY2lkciAtIEFkZCBhIENJRFIgZW50cnkgdG8gaGFzaCB0YWJsZSBib29ra2VlcGluZ1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0zNDctICogQHNldDogUG9pbnRlciB0byB0aGUgaXBfc2V0XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0zNTc9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDozNTg6bXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTM1OS17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD05ODg9bXR5cGVfYWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xMTEzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSVBTRVRfTkVUX0NPVU5UOyBpJiM0MzsmIzQzOylcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTExNDpcdFx0bXR5cGVfYWRkX2NpZHIoc2V0LCBoLCBEQ0lEUl9HRVQoZC1cdTAwM2VjaWRyLCBpKSwgaSk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTExMTUtI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjEwbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0OTQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIElQIFNldCBIYXNoIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIElQIHNldCBmdW5jdGlvbnMgYXJlIGdlbmVyYXRlZCwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBpcyB0aGlzIGBJUFNFVF9UT0tFTihNVFlQRSwgX2FkZClgIG1hY3JvLiBNeSBpbW1lZGlhdGUgdGFzayBpcyB0byBmaWd1cmUgb3V0IHdoYXQgYE1UWVBFYCByZXByZXNlbnRzIGluIGEgY291cGxlIG9mIHNwZWNpZmljIGZpbGVzOiBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgYW5kIGBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNgLgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGZpcnN0LiBBaGEhIEhlcmUgd2Ugc2VlIHRoZSBkZWZpbml0aW9uOiBgI2RlZmluZSBNVFlQRSBoYXNoX25ldGlmYWNlNGAgYW5kLCBJJiMzOTtkIGJldCwgYGhhc2hfbmV0aWZhY2U2YCBhcyB3ZWxsLiBUaGF0IGdpdmVzIG1lIGEgY2xlYXIgaWRlYSBvZiB3aGF0IHRvIGV4cGVjdCB3aGVuIGluc3BlY3RpbmcgdGhlIGNvbnRlbnRzIG9mIGBpcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCBuZXh0LiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgTVRZUEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTEyOD1oYXNoX25ldGlmYWNlNF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTEzMy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxMzQ6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldGlmYWNlNFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTEzNS0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzYyPWhhc2hfbmV0aWZhY2U2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRpZmFjZTZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzY5LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM3MDojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0aWZhY2U2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzcxLSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTM0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgTmV0d29yayBJbnRlcmZhY2UgSGFzaGluZyBGdW5jdGlvbnMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IG5ldHdvcmsgaW50ZXJmYWNlIGhhc2hpbmcsIGFuZCB0aGUga2V5IGZ1bmN0aW9ucyBzZWVtIHRvIGJlIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBgaGFzaF9uZXRpZmFjZTRfZGVsYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCB0aGVuIHRoZSBJUHY2IHZlcnNpb25zOiBgaGFzaF9uZXRpZmFjZTZfYWRkYCwgYW5kIHNvIG9uLiBQcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG5hbWluZyBjb252ZW50aW9uLCBJIGFwcHJlY2lhdGUgdGhhdC4gTm93LCB3aGVyZSBhcmUgdGhlc2UgYWN0dWFsbHkgaW1wbGVtZW50ZWQgYW5kIGhvdyBhcmUgdGhleSB1c2VkPyBNeSBndXQgc2F5cyB0aGUgY29yZSBsb2dpYyB3aWxsIGJlIGluIGBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNgLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBpbnRlcmZhY2UtYmFzZWQgc2V0cyBhcmUgYnVpbHQgYW5kIG1hbmFnZWQuIExldCYjMzk7cyBkaXZlIGluIHRoZXJlIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgTVRZUEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYz0xMzE9aGFzaF9uZXRwb3J0bmV0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydG5ldDRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzoxMzg6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldHBvcnRuZXQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzktI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9NDI1PWhhc2hfbmV0cG9ydG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnRuZXQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDMzLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM6NDM0OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRwb3J0bmV0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDM1LSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Njk4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkludmVzdGlnYXRpbmcgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AgVXNhZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AgY29uY2VwdCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogd2hlcmUgZWxzZSBpcyB0aGlzIGJlaW5nIHVzZWQ/IElzIHRoaXMgaXNvbGF0ZWQgdG8gdGhlIGN1cnJlbnQgY29udGV4dCwgb3IgaXMgdGhpcyBhIGJ1aWxkaW5nIGJsb2NrIGZvciBzb21ldGhpbmcgbGFyZ2VyPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaXRzIGltcGxlbWVudGF0aW9uIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIGFueSBjaGFuZ2VzIG9yIG1vZGlmaWNhdGlvbnMuIEFyZSB0aGVyZSBvdGhlciBmaWxlcyBpbiB0aGlzIHByb2plY3QsIG9yIGV2ZW4gaW4gcmVsYXRlZCBwcm9qZWN0cywgdGhhdCByZWx5IG9uIHRoaXMgcGFydGljdWxhciBoYXNoIGltcGxlbWVudGF0aW9uPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGltcGFjdCByYWRpdXMuIEtub3dpbmcgd2hpY2ggb3RoZXIgYXJlYXMgdXNlIHRoaXMgd2lsbCBkZXRlcm1pbmUgaG93IHRob3JvdWdobHkgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMuIFRoaXMgZmVlbHMgbGlrZSB0aGUga2luZCBvZiBmdW5jdGlvbiB0aGF0IGNvdWxkIGJlIGVpdGhlciBpc29sYXRlZCBhbmQgc3BlY2lmaWMsIG9yIGEgbW9yZSBnZW5lcmFsaXplZCwgY29yZSBmdW5jdGlvbi4gVGltZSB0byBmaW5kIG91dCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTM2PU1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfaGFzaDppcCxwb3J0LG5ldFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy00NC0gKi9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6NDU6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNfUEFDS0VEXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTQ2LSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYzo0NzojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy00OC1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTMzPU1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfaGFzaDpuZXRcJiMzNDspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMzYtI2RlZmluZSBIVFlQRVx0XHRoYXNoX25ldFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYzozNzojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0zOC1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzU9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOm5ldCxpZmFjZVwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTM4LSNkZWZpbmUgSFRZUEVcdFx0aGFzaF9uZXRpZmFjZVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM5OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNDAtI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX01VTFRJXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0zMj1NT0RVTEVfQUxJQVMoXCYjMzQ7aXBfc2V0X2hhc2g6bmV0LG5ldFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0zNS0jZGVmaW5lIEhUWVBFXHRcdGhhc2hfbmV0bmV0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jOjM2OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3LSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRNQVNLXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM9MzU9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOm5ldCxwb3J0XCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zOS0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjQwOiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy00MS1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy00NS0gKi9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjQ2OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTX1BBQ0tFRFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtNDctXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9MzI9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOm5ldCxwb3J0LG5ldFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtMzYtI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX1BST1RPXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzozNzojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtMzgtI2RlZmluZSBJUFNFVF9ORVRfQ09VTlQgMlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODg3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBJUCBTZXQgSGFzaGluZyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaGFzaF9uZXRgLCBgaGFzaF9uZXRpZmFjZWAsIGBoYXNoX25ldG5ldGAsIGBoYXNoX25ldHBvcnRgLCBgaGFzaF9uZXRwb3J0bmV0YCwgYW5kIGBoYXNoX2lwcG9ydG5ldGAgYWxsIHJlbHkgb24gYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AuIFRoZSBrZXkgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBpcF9zZXRfaGFzaF9nZW4uaGAsIHdoaWNoIGlzIGEgY29tbW9uIGluY2x1ZGUsIHNvIHRoaXMgY291bGQgaGF2ZSB3aWRlc3ByZWFkIGltcGxpY2F0aW9ucyBhY3Jvc3MgYWxsIG9mIHRob3NlIGhhc2ggdHlwZXMuCgpCdXQgd2FpdCwgdGhpcyBpc24mIzM5O3QganVzdCBhIGdlbmVyaWMgaGVhZGVyIG1vZGlmaWNhdGlvbi4gVGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgYW5kIGBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNgLiBBaGEsIGl0JiMzOTtzIHJlbW92aW5nIGAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMGAgaW4gdGhvc2Ugc3BlY2lmaWMgZmlsZXMuIFRoYXQmIzM5O3MgdGhlIHJlYWwgY3J1eCBvZiB0aGlzLiBOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgSVBfU0VUX0hBU0hfV0lUSF9ORVQwYCBhY3R1YWxseSAqZGlkKi4gV2hhdCBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIGFsdGVyZWQgb3IgcmVtb3ZlZCBieSB0aGlzIHJlZmFjdG9yaW5nPyBJdCYjMzk7cyBnb2luZyB0byBiZSBlc3NlbnRpYWwgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGRpZmZlcmVudCBhcyBhIHJlc3VsdCBvZiB0aGUgY2hhbmdlcyB0byB0aGUgZmlsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVBfU0VUX0hBU0hfV0lUSF9ORVQwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMzOAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIFJlbW92YWwgb2YgSVAgU2V0IEZ1bmN0aW9uYWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgdGhpcyBjb2RlIHdhcyByZW1vdmVkIGZyb20gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gVGhhdCYjMzk7cyBhIGtleSBkZXRhaWwuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doeT8gV2hhdCBjaGFuZ2VkPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgd2FzIGEgZGVsaWJlcmF0ZSBkZXNpZ24gZGVjaXNpb24sIGEgcmVmYWN0b3JpbmcsIG9yIGEgYnVnIGZpeC4KCk15IG5leHQgc3RlcCBpcyB0byBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGUgZXhwZWN0ZWQgZmxhZ3Mg4oCTIHNwZWNpZmljYWxseSBgSVBfU0VUYCwgYElQX1NFVF9IQVNIX05FVGAsIGBJUF9TRVRfSEFTSF9ORVRJRkFDRWAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUYCwgYW5kIHBvdGVudGlhbGx5IG90aGVycyDigJMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhbmQgZW5hYmxlZC4gVGhpcyB3aWxsIHRlbGwgbWUgaWYgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgc2ltcGx5IGRpc2FibGVkLCBvciBpZiB0aGUgKm9wdGlvbiogaXRzZWxmIGlzIGdvbmUuCgpUbyBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZSwgSSYjMzk7bGwgbmVlZCB0byBkaXZlIGludG8gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBjYW4gY29uZmlybSB0aGUgc3RhdHVzIG9mIHRob3NlIG9wdGlvbnMgYW5kIHVuZGVyc3RhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBJJiMzOTttIGxvb2tpbmcgZm9yIGFueSBjbHVlcyBhYm91dCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGUgcmVtb3ZhbCBvciBtb2RpZmljYXRpb24uIElzIGl0IG5vdyB1bmRlciBhIGRpZmZlcmVudCBuYW1lPyBQYXJ0IG9mIGEgYnJvYWRlciBmZWF0dXJlPyBPciwgaXMgaXQgcGVyaGFwcyBkZXByZWNhdGVkIGVudGlyZWx5PyBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVF9IQVNIXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NDY9Y29uZmlnIElQX1NFVF9CSVRNQVBfUE9SVFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo1NTpjb25maWcgSVBfU0VUX0hBU0hfSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NjU6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTczLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjc0OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04Mi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo4Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxpcCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05Mi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwMi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMDM6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxtYWMgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTExLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjExMjpjb25maWcgSVBfU0VUX0hBU0hfTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDptYWMgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIwLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzA6Y29uZmlnIElQX1NFVF9IQVNIX05FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzOC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzk6Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTU4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTk2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgSVAgU2V0cyBhbmQgVGhlaXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIHdlJiMzOTtyZSBnb2luZyB0byBlbmFibGUgYSBzdWl0ZSBvZiBgSVBfU0VUYCBmZWF0dXJlcyDigJMgc3BlY2lmaWNhbGx5IGBJUF9TRVRgLCBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUTkVUYCwgYElQX1NFVF9IQVNIX05FVFBPUlRgLCBhbmQgYElQX1NFVF9IQVNIX0lQUE9SVE5FVGAuIEJlZm9yZSB3ZSBjb21taXQgdG8gdGhpcywgdGhvdWdoLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzLiBHb3R0YSBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBjcml0aWNhbCBpbiB0aGUga2VybmVsIGNvbmZpZy4gTGV0JiMzOTtzIHNlZSB3aGF0IGBJUF9TRVRgIHJlbGllcyBvbi4gVGhhdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0VUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4NzUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipMb2NhdGluZyB0aGUgSVBfU0VUIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHdoZXJlIHRoZSBgSVBfU0VUYCBjb25maWd1cmF0aW9uIG9wdGlvbiBsaXZlcyB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gaXRzIGZ1bmN0aW9uLCBpcyB0aGF0IGl0IHdvdWxkIGJlIHJlbGF0ZWQgdG8gbmV0d29ya2luZyBvciBuZXRmaWx0ZXIuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2hlcmUgd291bGQgdGhpcyBzb3J0IG9mIGZlYXR1cmUgYmUgZGVmaW5lZD8mIzM0OyBMZXQgbWUgdHJ5IGFuZCBzZWFyY2ggd2l0aGluIHRoZSBrZXJuZWwgc291cmNlLiBBaCBoYSEgSSBiZWxpZXZlIEkgc2VlIGl0IG5vdy4gSSYjMzk7dmUgZm91bmQgaXQ6IGBuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyByaWdodCB3aGVyZSBJJiMzOTtkIGV4cGVjdCBpdCwgZ2l2ZW4gdGhhdCBJUCBzZXRzIGFyZSBkZWVwbHkgaW50ZXJ0d2luZWQgd2l0aCBuZXRmaWx0ZXIgZnVuY3Rpb25hbGl0eS4gVGhpcyBjb25maXJtcyBteSBpbml0aWFsIGludHVpdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyOm1lbnVjb25maWcgSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0lQIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0PWlmIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2OmNvbmZpZyBJUF9TRVRfTUFYXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTctXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgSVAgc2V0c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yNy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyODpjb25maWcgSVBfU0VUX0JJVE1BUF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOmlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM2LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM3OmNvbmZpZyBJUF9TRVRfQklUTUFQX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6aXAsbWFjIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ1LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjQ2OmNvbmZpZyBJUF9TRVRfQklUTUFQX1BPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDpwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU0LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo2NTpjb25maWcgSVBfU0VUX0hBU0hfSVBNQVJLXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hcmsgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzMtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzQ6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTgyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjkzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTAyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEwMzpjb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTEtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIxOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTI5LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMDpjb25maWcgSVBfU0VUX0hBU0hfTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTM4LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDg6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTg6Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY3LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY5LVx0dHJpc3RhdGUgXCYjMzQ7bGlzdDpzZXQgc2V0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzMTMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBpdCB3ZXJlIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFdoZXJlIGRvZXMgYElQX1NFVGAgY29tZSBpbnRvIHBsYXkgaW4gdGhlIE5ldGZpbHRlciBmcmFtZXdvcms/IEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgc291cmNlIG9mIHRoaXMgb3B0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayB3aXRoaW4gdGhlIE5ldGZpbHRlciBjb25maWd1cmF0aW9uIGZpbGVzLCBzcGVjaWZpY2FsbHkgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFRoaXMgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIGRpZ2dpbmcsIGdpdmVuIHRoZSBjb250ZXh0LiBJJiMzOTttIGFzc3VtaW5nIHRoYXQmIzM5O3Mgd2hlcmUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zIHJlbGF0ZWQgdG8gSVAgU2V0cyB3aWxsIGJlIGRlZmluZWQgYW5kLCBpZGVhbGx5LCBzb3VyY2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHRvIGRldGVybWluZSBob3cgaXQgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgcmV2ZWFscy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UgXCYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXCYjMzQ7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xNjYwPWVuZG1lbnVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE2NjI6c291cmNlIFwmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wmIzM0O1xubmV0L25ldGZpbHRlci9LY29uZmlnLTE2NjMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNjMwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSYjMzk7bSB0aGUgb25lIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzLCBhbmQga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipEZWx2aW5nIGludG8gdGhlIEZvdW5kYXRpb25zIG9mIGBJUF9TRVRgKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYElQX1NFVGAuIFdlIGtub3cgaXQmIzM5O3MgYSBwb3dlcmZ1bCB0b29sLCBidXQgbGlrZSBhbnkgc3Ryb25nIHN5c3RlbSwgdW5kZXJzdGFuZGluZyBpdHMgdW5kZXJseWluZyBkZXBlbmRlbmNpZXMgaXMga2V5IHRvIHVzaW5nIGl0IGVmZmVjdGl2ZWx5IGFuZCB0cm91Ymxlc2hvb3RpbmcgYW55IGlzc3Vlcy4gVGhlIHJlYWwgcXVlc3Rpb24gSSYjMzk7bSBncmFwcGxpbmcgd2l0aCByaWdodCBub3cgaXM6ICp3aGF0KiBwcmVjaXNlbHkgZG9lcyBgSVBfU0VUYCByZWx5IG9uPyBCZXlvbmQgdGhlIG9idmlvdXMga2VybmVsIG1vZHVsZXMgYW5kIHRoZSB1c2VyLXNwYWNlIHV0aWxpdGllcywgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIGV4YW1pbmUgdGhlIGRlZXBlciBwbHVtYmluZy4gQXJlIHRoZXJlIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9ucyB0aGF0IGFyZSBzdXBwb3J0ZWQgb3IgcmVxdWlyZWQ/IFdoYXQgYWJvdXQgbGlicmFyaWVzPyBBcmUgdGhlcmUgYW55IGxvd2VyLWxldmVsIG5ldHdvcmsgc3RhY2sgY29tcG9uZW50cyB0aGF0IGBJUF9TRVRgIGludGVyZmFjZXMgd2l0aCB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQ/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHNwZWNpZmljIG5ldGZpbHRlciBob29rcyBpdCYjMzk7cyBsZXZlcmFnaW5nPyBUaGlzIGtpbmQgb2YgZ3JhbnVsYXIgdW5kZXJzdGFuZGluZyBpcyBlc3NlbnRpYWwgZm9yIG9wdGltaXphdGlvbiwgZGVidWdnaW5nLCBhbmQsIG9mIGNvdXJzZSwgYXJjaGl0ZWN0aW5nIHNlY3VyZSBhbmQgcGVyZm9ybWFudCBuZXR3b3JrIHNvbHV0aW9ucy4gVGhpcyBpcyB3aGVyZSBJIHdhbnQgdG8gZm9jdXMsIEkgd2FudCB0byBtYXAgdGhlIGBJUF9TRVRgIGxhbmRzY2FwZSBmcm9tIHRoZSBncm91bmQgdXAgdG8gcmVhbGx5IHVuZGVyc3RhbmQgaXQsIGFuZCBtYWtlIHN1cmUgdGhhdCBpdCBwbGF5cyBuaWNlIHdpdGggYWxsIHRoZSBvdGhlciB0b29scyBJJiMzOTttIHVzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0yPW1lbnVjb25maWcgSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0lQIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDpcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNS1cdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNj1jb25maWcgSVBfU0VUX01BWFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xOS1cdHJhbmdlIDIgNjU1MzRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyMDpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjEtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTI4PWNvbmZpZyBJUF9TRVRfQklUTUFQX0lQXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjktXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6aXAgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozMDpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzEtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTM3PWNvbmZpZyBJUF9TRVRfQklUTUFQX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6aXAsbWFjIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Mzk6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQwLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz00Nj1jb25maWcgSVBfU0VUX0JJVE1BUF9QT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDctXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6cG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjQ4Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00OS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NTU9Y29uZmlnIElQX1NFVF9IQVNIX0lQXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTYtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NTc6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU4LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz02NT1jb25maWcgSVBfU0VUX0hBU0hfSVBNQVJLXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hcmsgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo2NzpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjgtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTc0PWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjc2Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03Ny1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9ODM9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVElQXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQsaXAgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo4NTpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODYtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTkzPWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5NTpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTYtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEwMz1jb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEwNTpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA2LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMTI9Y29uZmlnIElQX1NFVF9IQVNIX01BQ1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bWFjIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTE0Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTUtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEyMT1jb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIzOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjQtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzMD1jb25maWcgSVBfU0VUX0hBU0hfTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzI6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMy1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTM5PWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDAtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDE6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Mi1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTQ4PWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1MDpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTUxLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNTg9Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNjA6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2MS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTY4PWNvbmZpZyBJUF9TRVRfTElTVF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjktXHR0cmlzdGF0ZSBcJiMzNDtsaXN0OnNldCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE3MDpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTcxLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNzg9Y29uZmlnIEdDT1ZfUFJPRklMRV9JUFNFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3OS1cdGJvb2wgXCYjMzQ7RW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBpcHNldFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE4MDpcdGRlcGVuZHMgb24gR0NPVl9LRVJORUxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xODEtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NjM2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gSVAgU2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGNvbmZpZ3VyaW5nIGBJUF9TRVRgLiBOYXR1cmFsbHksIGl0IHJlbGllcyBvbiBib3RoIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAsIHRoYXQmIzM5O3MgYSBnaXZlbi4gV2UmIzM5O2xsIGRlZmluaXRlbHkgd2FudCB0byBlbmFibGUgYElQX1NFVGAgaXRzZWxmLCBhbmQgdGhlbiwgZm9yIGEgcm9idXN0IGltcGxlbWVudGF0aW9uLCBJJiMzOTttIHRoaW5raW5nIHdlIHNob3VsZCBhbHNvIGVuYWJsZSBhIGZldyBoYXNoIHR5cGVzOiBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUTkVUYCwgYElQX1NFVF9IQVNIX05FVFBPUlRgLCBhbmQgYElQX1NFVF9IQVNIX0lQUE9SVE5FVGAuIFRob3NlIHNlZW0gbGlrZSB0aGUgbW9zdCBjb21tb24gYW5kIHZlcnNhdGlsZSBvcHRpb25zIHRvIHN0YXJ0IHdpdGguCgpIb2xkIG9uIGEgc2Vjb25kLCB0aGF0IGBtdHlwZV9hZGRfY2lkcmAgZnVuY3Rpb24gaXMgbWFya2VkIGFzIHN0YXRpYy4gVGhhdCBtZWFucyBpdCYjMzk7cyBub3QgZXhwb3J0ZWQsIHNvIGl0JiMzOTtzIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSBpdHMgY29tcGlsYXRpb24gdW5pdC4gSG1tLCB0aGF0IGNvbXBsaWNhdGVzIHRoaW5ncy4gV2UgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyAqYXJlKiBleHBvcnRlZCwgb3IgYXQgbGVhc3Qgd2hpY2ggb25lcyB3ZSAqY2FuKiBsZXZlcmFnZS4KCkxldCYjMzk7cyB0cmFjZSBiYWNrIGhvdyBgbXR5cGVfYWRkX2NpZHJgIGlzIGJlaW5nIHVzZWQuIEFoLCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgbXR5cGVfYWRkYC4gRGFtbWl0LCBgbXR5cGVfYWRkYCBpcyBhbHNvIHN0YXRpYy4gT2theSwgdGhpcyBpc24mIzM5O3QgZ2V0dGluZyB1cyBhbnl3aGVyZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBpcyBzb21ldGhpbmcgbW9yZSBhcHByb2FjaGFibGUgaW4gYGlwX3NldF9oYXNoX2dlbi5oYCB0byBzZWUgaG93IGBtdHlwZV9hZGRgIGlzIHVzZWQuIFRoaXMgc2VlbXMgbGlrZSB0aGUga2V5IHBsYWNlIGZvciBob3cgdGhlIHNldHMgYXJlIGdlbmVyYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXR5cGVfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yMTktI3VuZGVmIG10eXBlX2V4dF9jbGVhbnVwXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIyMDojdW5kZWYgbXR5cGVfYWRkX2NpZHJcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjIxLSN1bmRlZiBtdHlwZV9kZWxfY2lkclxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjMxLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyMzI6I3VuZGVmIG10eXBlX2FkZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yMzMtI3VuZGVmIG10eXBlX2RlbFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY3LSNkZWZpbmUgbXR5cGVfZXh0X2NsZWFudXBcdElQU0VUX1RPS0VOKE1UWVBFLCBfZXh0X2NsZWFudXApXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI2ODojZGVmaW5lIG10eXBlX2FkZF9jaWRyXHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkX2NpZHIpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI2OS0jZGVmaW5lIG10eXBlX2RlbF9jaWRyXHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVsX2NpZHIpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzktXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI4MDojZGVmaW5lIG10eXBlX2FkZFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjgxLSNkZWZpbmUgbXR5cGVfZGVsXHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVsKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MzM1PXN0cnVjdCBtdHlwZV9yZXNpemVfYWQge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzQ1LS8qKlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDozNDY6ICogbXR5cGVfYWRkX2NpZHIgLSBBZGQgYSBDSURSIGVudHJ5IHRvIGhhc2ggdGFibGUgYm9va2tlZXBpbmdcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzQ3LSAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MzU3PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MzU4Om10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0zNTkte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NzQwPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NzQxOm10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC03NDItXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NzUyPW10eXBlX3Jlc2l6ZShzdHJ1Y3QgaXBfc2V0ICpzZXQsIGJvb2wgcmV0cmllZClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNC1cdFx0aWYgKHgtXHUwMDNlYWQgPT0gSVBTRVRfQUREKSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjkwNTpcdFx0XHRtdHlwZV9hZGQoc2V0LCBcdTAwMjZ4LVx1MDAzZWQsIFx1MDAyNngtXHUwMDNlZXh0LCBcdTAwMjZ4LVx1MDAzZW1leHQsIHgtXHUwMDNlZmxhZ3MpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC05MDYtXHRcdH0gZWxzZSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD05ODc9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo5ODg6bXR5cGVfYWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTk4OS1cdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTExMTMtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBJUFNFVF9ORVRfQ09VTlQ7IGkmIzQzOyYjNDM7KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoxMTE0Olx0XHRtdHlwZV9hZGRfY2lkcihzZXQsIGgsIERDSURSX0dFVChkLVx1MDAzZWNpZHIsIGkpLCBpKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTExNS0jZW5kaWZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE2MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50IG10eXBlX3ZhcmlhbnQgPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNjM0LVx0LmFkdFx0PSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjE2MzU6XHRcdFtJUFNFVF9BRERdID0gbXR5cGVfYWRkLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNjM2LVx0XHRbSVBTRVRfREVMXSA9IG10eXBlX2RlbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0OTgKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbXR5cGVfYWRkYCBBc3NpZ25tZW50KioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYG10eXBlX2FkZGAgaXMgbGlua2VkIHRvIGBtdHlwZV92YXJpYW50LmFkdFtJUFNFVF9BRERdYC4gUmlnaHQsIGBtdHlwZV92YXJpYW50YCBpcyBkZWZpbmVkIGFzIGEgYHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50YC4gUHJldHR5IHN0YW5kYXJkIHNvIGZhci4KCk5vdyBJIHNlZSB0aGVzZSBmdW5jdGlvbnMg4oCTIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBgaGFzaF9uZXRpZmFjZTRfZGVsYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCB0aGUgdXN1YWwgc3VzcGVjdHMgZm9yIHRoaXMga2luZCBvZiBoYXNoIGltcGxlbWVudGF0aW9uLiBJdCYjMzk7cyBnb29kIHRvIHNlZSBhbGwgdGhlIHN0YW5kYXJkIG9wZXJhdGlvbnMgYXJlIGRlZmluZWQsIEkgY2FuIGluZmVyIHRoYXQgdGhvc2UgYXJlIHRoZSBjb3JlIG1ldGhvZHMgZm9yIHRoaXMgSVAgc2V0IHR5cGUuCgpIYW5nIG9u4oCmIGFyZSB0aGVzZSBmdW5jdGlvbnMgYWN0dWFsbHkgZXhwb3J0ZWQgZm9yIHVzZSBvdXRzaWRlIG9mIHRoaXMgbW9kdWxlPyBObywgdGhleSYjMzk7cmUgc3RhdGljLiBUaGF0JiMzOTtzIGEgZ29vZCBkZXNpZ24gY2hvaWNlLCB0byBrZWVwIHRoZSBpbnRlcm5hbCBkZXRhaWxzIGVuY2Fwc3VsYXRlZC4gVGhhdCBtZWFucyB0aGUgZW50cnkgcG9pbnRzIEkmIzM5O20gZXhwZWN0aW5nIGFyZSBsaWtlbHkgZGVmaW5lZCBlbHNld2hlcmUsIHByb2JhYmx5IHVzaW5nIHRoZSBgbXR5cGVfdmFyaWFudGAgc3RydWN0IHNvbWVob3csIGFuZCB0aGV5JiMzOTtsbCBjYWxsIHRoZXNlIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLgoKSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSBieSBsb29raW5nIGRpcmVjdGx5IGF0IHRoZSBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgZmlsZSBpdHNlbGYuIExldCBtZSBjaGVjayB0aGUgc291cmNlIGNvZGUgZm9yIGBoYXNoX25ldGlmYWNlNF9hZGRgIG5vdyB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBlbnN1cmUgdGhlIGZ1bGwgY29udGV4dCBpcyBjbGVhci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoYXNoX25ldGlmYWNlNF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk1NgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXNzZWN0aW5nIHRoZSBNYWNyby1HZW5lcmF0ZWQgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSB0ZWxsdGFsZSBzaWducyBvZiBtYWNybyBnZW5lcmF0aW9uLiBTcGVjaWZpY2FsbHksIHRoaXMgYCNkZWZpbmUgbXR5cGVfYWRkIElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAuIE15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHBhcnNpbmcgdGhlIGltcGxpY2F0aW9ucy4gVGhpcyBgaGFzaF9uZXRpZmFjZTRfYWRkYCBmdW5jdGlvbiBJJiMzOTttIGxvb2tpbmcgYXTigKYgdGhhdCYjMzk7cyB0aGUgcmVzdWx0IG9mIG9uZSBvZiB0aG9zZSBtYWNyb3MsIHJpZ2h0PyBJIGNhbiB0ZWxsIGJlY2F1c2Ugb2YgaG93IGl0JiMzOTtzIGRlZmluZWQuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIGJlY2F1c2UgaXQmIzM5O3MgKnN0YXRpYyosIGl0IG1pZ2h0IG5vdCBiZSBpbiB0aGUgc3ltYm9sIHRhYmxlLCB1bmxlc3MgdGhlIGNvbXBpbGVyIGlzIGJlaW5nIGxhenkgYW5kICpkb2VzbiYjMzk7dCogaW5saW5lIGl0LiBCdXQgdGhlbiBJIHF1aWNrbHkgcmVtZW1iZXLigKYgd2FpdCwgdGhpcyBgbXR5cGVfYWRkYCBpc24mIzM5O3QgKmp1c3QqIGEgZnVuY3Rpb24uIEl0JiMzOTtzIGFjdHVhbGx5IGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciBpbnNpZGUgdGhlIGBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudGAuIFRoYXQgKmhhcyogdG8gbWVhbiBpdCBjYW4mIzM5O3QgYmUgKmZ1bGx5KiBpbmxpbmVkLCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLgoKSG93ZXZlciwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgbmV4dCBxdWVzdGlvbiAtIGFyZSAqcGFydHMqIG9mIGl0IGlubGluZWQ/IEZvciBleGFtcGxlLCBgbXR5cGVfYWRkX2NpZHJgIGlzIGNhbGxlZCBmcm9tIGBtdHlwZV9hZGRgLiBJdCAqY291bGQqIGJlIGlubGluZWQuIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIEkgYW5hbHl6ZSB0aGUgYXNzZW1ibHkgbGF0ZXIsIHRvIGNoZWNrIGZvciB0aGF0IHBvc3NpYmlsaXR5LgoKRmluYWxseSwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBob3cgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgYXJlIGhhbmRsZWQsIGxpa2UgYG10eXBlX3VhZHRgLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0IG9uZSBvdXQgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdHlwZV91YWR0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yMjctI3VuZGVmIG10eXBlX2thZHRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjI4OiN1bmRlZiBtdHlwZV91YWR0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyOS0jdW5kZWYgbXR5cGVfYnVja2V0X3NpemVcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI3NS0jZGVmaW5lIG10eXBlX2thZHRcdFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9rYWR0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNzY6I2RlZmluZSBtdHlwZV91YWR0XHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfdWFkdClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjc3LSNkZWZpbmUgbXR5cGVfYnVja2V0X3NpemVcdElQU0VUX1RPS0VOKE1UWVBFLCBfYnVja2V0X3NpemUpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xNjMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZV92YXJpYW50ID0ge1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNjMyLVx0LmthZHRcdD0gbXR5cGVfa2FkdCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTYzMzpcdC51YWR0XHQ9IG10eXBlX3VhZHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2MzQtXHQuYWR0XHQ9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4NjMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyB3aGF0IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGNvZGU6CgoqKkFuYWx5emluZyBQb3RlbnRpYWwgRW50cnkgUG9pbnRzIGluIGBpcF9zZXRgKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBtYWluIGZ1bmN0aW9ucyBhcmUgZm9yIHRoZSBgaXBfc2V0YCBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGZvY3VzaW5nIG9uIGZ1bmN0aW9ucyB0aGF0IGFyZSAqZXhwb3J0ZWQqIOKAkyB0aG9zZSBhcmUgdGhlIG1vc3QgbGlrZWx5IGVudHJ5IHBvaW50cywgb3IgYXQgbGVhc3Qgbm90IHN0YXRpYyBmdW5jdGlvbnMuIFRoZXkmIzM5O3JlIGRlc2lnbmVkIHRvIGJlIHVzZWQgZXh0ZXJuYWxseSwgYWZ0ZXIgYWxsLgoKSG1tLCBidXQgaGFuZyBvbiBhIHNlY29uZC4uLiBpc24mIzM5O3QgYGhhc2hfbmV0aWZhY2U0X3VhZHRgIGRlY2xhcmVkIGFzIGBzdGF0aWNgIHRvbz8gVGhhdCBtZWFucyBJIGNhbiYjMzk7dCBqdXN0IGxpbWl0IG15c2VsZiB0byBub24tc3RhdGljIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHdpZGVuIG15IHNjb3BlIGEgYml0LgoKT2theSwgbGV0JiMzOTtzIHJlZm9jdXMuIE15IGJlc3QgYmV0IGlzIHRvIGNoZWNrIHRoZSBgaXBfc2V0X2NvcmUuY2AgZmlsZS4gVGhpcyBpcyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHJlc2lkZXMuIEkgc2hvdWxkIGJlIGFibGUgdG8gZmluZCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBJIG5lZWQgdG8gbG9vayBhdCBpbiB0aGVyZSwgc3BlY2lmaWNhbGx5LCB0aGUgb25lcyB1c2VkIHRvIGFkZCwgZGVsZXRlLCBhbmQgdGVzdCBJUCBzZXQgZW50cmllczogYGlwX3NldF9hZGRgLCBgaXBfc2V0X2RlbGAsIGFuZCBgaXBfc2V0X3Rlc3RgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz02MDc9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2MDg6aXBfc2V0X2FkZF9ieXRlcyh1NjQgYnl0ZXMsIHN0cnVjdCBpcF9zZXRfY291bnRlciAqY291bnRlcilcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy02MDkte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz02MTM9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2MTQ6aXBfc2V0X2FkZF9wYWNrZXRzKHU2NCBwYWNrZXRzLCBzdHJ1Y3QgaXBfc2V0X2NvdW50ZXIgKmNvdW50ZXIpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNjE1LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9NjIwPWlwX3NldF91cGRhdGVfY291bnRlcihzdHJ1Y3QgaXBfc2V0X2NvdW50ZXIgKmNvdW50ZXIsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTYyNC1cdCAgICAhKGZsYWdzIFx1MDAyNiBJUFNFVF9GTEFHX1NLSVBfQ09VTlRFUl9VUERBVEUpKSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6NjI1Olx0XHRpcF9zZXRfYWRkX2J5dGVzKGV4dC1cdTAwM2VieXRlcywgY291bnRlcik7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6NjI2Olx0XHRpcF9zZXRfYWRkX3BhY2tldHMoZXh0LVx1MDAzZXBhY2tldHMsIGNvdW50ZXIpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTYyNy1cdH1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9Nzc2PWludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjc3NzppcF9zZXRfYWRkKGlwX3NldF9pZF90IGluZGV4LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTc3OC1cdCAgIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhciwgc3RydWN0IGlwX3NldF9hZHRfb3B0ICpvcHQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTc5NS19XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6Nzk2OkVYUE9SVF9TWU1CT0xfR1BMKGlwX3NldF9hZGQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTc5Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3ODEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IE1lbnRhbCBMYW5kc2NhcGU6IGlwX3NldCBDb3JlIEV4cG9ydHMgYW5kIE5ldGxpbmsgSW50ZXJmYWNlKioKClJpZ2h0LCBzbywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGhlcmUuIGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YCDigJMgdGhvc2UgYXJlIHRoZSAqZXhwb3J0ZWQqIGZ1bmN0aW9ucy4gVGhleSYjMzk7cmUgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyBpbnRvIHRoZSBgaXBfc2V0YCBmdW5jdGlvbmFsaXR5IHRoYXQgdGhlIGtlcm5lbCAob3Igb3RoZXIgbW9kdWxlcykgd2lsbCBhY3R1YWxseSB1c2UuIFRoZXkgZGVmaW5lIHRoZSBwdWJsaWMgQVBJLgoKQW5kIHRoZW4sIGFsb25nc2lkZSB0aG9zZSwgSSYjMzk7bSBmb2N1c2luZyBvbiBgY2FsbF9hZGAgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmV0bGluayBpbnRlcmZhY2Ugd2l0aGluIGBpcF9zZXRfY29yZS5jYC4gVGhpcyBpcyBrZXkuIGBjYWxsX2FkYCBpbmRpY2F0ZXMgYSB2ZXJ5IHNwZWNpZmljIHdheSB0aGF0IHVzZXJzcGFjZSBwcm9ncmFtcyB3aWxsICppbnRlcmFjdCogd2l0aCB0aGUgaXBfc2V0IGtlcm5lbCBtb2R1bGVzLiBUaGUgYG5ldGxpbmtgIGludGVyZmFjZSBnaXZlcyBhbiBvcmdhbml6ZWQgYW5kIGZsZXhpYmxlIHdheSBvZiBtYW5hZ2luZyB0aGVzZSBzZXRzIGZyb20gb3V0c2lkZSB0aGUga2VybmVsLCB0aHJvdWdoIHVzZXJzcGFjZSB0b29scy4gVGhpcyBwYXJ0IHdpbGwgYmUgdGhlIHBsYWNlIHRvIGNoZWNrIHRoZSBkaWZmZXJlbnQgdHlwZSBvZiBjb21tYW5kcyB0aGF0IHdlIGNhbiBjcmVhdGUuCgpFc3NlbnRpYWxseSwgSSBzZWUgdGhlc2UgdHdvIGNvbXBvbmVudHMg4oCTIHRoZSBleHBvcnRlZCBmdW5jdGlvbnMgZm9yIGludGVybmFsIGtlcm5lbCBpbnRlcmFjdGlvbnMgYW5kIHRoZSBuZXRsaW5rIGludGVyZmFjZSBmb3IgZXh0ZXJuYWwgY29udHJvbCDigJMgYXMgY29tcGxlbWVudGFyeS4gVGhleSB3b3JrIHRvZ2V0aGVyLiBBbnkgZnV0dXJlIGRldmVsb3BtZW50cyBzaG91bGQgY29uc2lkZXIgdGhlc2UgYXMgdGhlIGNvcmUgZm9yIHRoZSBvdmVyYWxsIGZyYW1ld29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2FsbF9hZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTc0NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTc0NjpjYWxsX2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTc0Ny1cdHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSwgZW51bSBpcHNldF9hZHQgYWR0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xODE4PXN0YXRpYyBpbnQgaXBfc2V0X2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4NTMtXHRcdFx0cmV0dXJuIC1JUFNFVF9FUlJfUFJPVE9DT0w7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg1NDpcdFx0cmV0ID0gY2FsbF9hZChuZXQsIGN0bmwsIHNrYiwgc2V0LCB0YiwgYWR0LCBmbGFncyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODU1LVx0XHRcdCAgICAgIHVzZV9saW5lbm8pO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODY0LVx0XHRcdFx0cmV0dXJuIC1JUFNFVF9FUlJfUFJPVE9DT0w7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg2NTpcdFx0XHRyZXQgPSBjYWxsX2FkKG5ldCwgY3RubCwgc2tiLCBzZXQsIHRiLCBhZHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg2Ni1cdFx0XHRcdCAgICAgIGZsYWdzLCB1c2VfbGluZW5vKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1MTcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBhcyBpZiBJIHdlcmUgcHJvY2Vzc2luZyB0aGlzIGluZm9ybWF0aW9uOgoKKipBbmFseXppbmcgTmV0bGluayBFbnRyeSBQb2ludHMgaW4gUmVsYXRpb24gdG8gYSBTdGF0aWMgQ2FsbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoaXMgYGNhbGxfYWRgIGZ1bmN0aW9uIHJlbGF0ZXMgdG8gdGhlIE5ldGxpbmsgaW50ZXJmYWNlLiBJdCYjMzk7cyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nIGluIGl0c2VsZi4gVXN1YWxseSwgd2l0aCBOZXRsaW5rLCB5b3UmIzM5O3JlIGRlYWxpbmcgd2l0aCBkeW5hbWljIHJlZ2lzdHJhdGlvbiBhbmQgaGFuZGxlcnMsIHNvIGEgc3RhdGljIGVudHJ5IHBvaW50IGltcGxpZXMgc29tZXRoaW5nIG1vcmUuLi4gdGFyZ2V0ZWQsIHBlcmhhcHMgYSBzcGVjaWZpYyBmdW5jdGlvbiwgbWF5YmUgYSBoZWxwZXIuCgpUaGUgY3JpdGljYWwgTmV0bGluayBlbnRyeSBwb2ludHMgYXJlIHRoZSBgaXBfc2V0X2FkYCwgYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYW5kIGBpcF9zZXRfdXRlc3RgIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHRoZSBleHBlY3RlZCBpbnRlcmFjdGlvbiBwb2ludHMgd2l0aCB0aGUga2VybmVsLXNwYWNlIGZ1bmN0aW9uYWxpdHkgdmlhIHRoZSBOZXRsaW5rIGludGVyZmFjZS4gQmFzZWQgb24gdGhpcywgSSB3b3VsZCBhc3N1bWUgdGhhdCBgY2FsbF9hZGAgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiBvbmUgb2YgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zLCBvciBjYWxsZWQgYnkgYSByZWxhdGVkIHByb2Nlc3MuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB3aGVyZSBgY2FsbF9hZGAgaXMgdXNlZCB0byBjb25maXJtLiBJIHdvdWxkIGFzc3VtZSB0aGF0IHRoZSBgYWRgIHJlbGF0ZXMgdG8gYWRkcmVzcyBvciBhZGQvZGVsZXRlIGZ1bmN0aW9ucy4gTm93IEkgbmVlZCB0byBjb25zaWRlciB3aGljaCBvZiB0aGUgc3RhbmRhcmQgTmV0bGluayBjYWxscyB1c2UgYGNhbGxfYWRgLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBjb3JlIHNldCBtYW5pcHVsYXRpb24gd29ya3MuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIHRvIHNlZSBob3cgdGhlc2UgZWxlbWVudHMgYWxsIHRpZSB0b2dldGhlciBhbmQgZmlndXJlIG91dCBpZiB0aGVyZSBpcyBhbnkgdW51c3VhbCBiZWhhdmlvciBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfdWFkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTgxOD1zdGF0aWMgaW50IGlwX3NldF9hZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpjdG5sLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODczLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE4NzQ6c3RhdGljIGludCBpcF9zZXRfdWFkZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4NzUtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxOTUtXHRbSVBTRVRfQ01EX0FERF1cdD0ge1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxOTY6XHRcdC5jYWxsXHRcdD0gaXBfc2V0X3VhZGQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE5Ny1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX01VVEVYLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE5MgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTmV0bGluayBDYWxsYmFja3MgYW5kIEluc3RhbnRpYXRlZCBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIE5ldGxpbmsgY2FsbGJhY2tzOiBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBgaXBfc2V0X3V0ZXN0YC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuIEJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICphY3R1YWxseSogaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgYG10eXBlX2FkZF9jaWRyYCwgYG10eXBlX2RlbF9jaWRyYCwgYG10eXBlX2ZsdXNoYCwgYW5kIGBtdHlwZV90ZXN0X2NpZHJzYC4gIEFoLCB0aG9zZSBhcmUgYWxsIGRlZmluZWQgaW4gYGlwX3NldF9oYXNoX2dlbi5oYC4gVGhhdCBtYWtlcyBzZW5zZS4gVGhlc2UgYXJlIGdlbmVyaWMsIGFuZCB0aGVuIGluc3RhbnRpYXRlZCBmb3IgZWFjaCBoYXNoIHR5cGUuCgpTbywgaW4gdGhlIGJpbmFyeSwgdGhlIGFjdHVhbCBmdW5jdGlvbnMgd2lsbCBiZSB0aGluZ3MgbGlrZSBgaGFzaF9uZXRpZmFjZTRfYWRkYCwgYGhhc2hfbmV0aWZhY2U0X2RlbGAsIGBoYXNoX25ldGlmYWNlNF90ZXN0YCwgYGhhc2hfbmV0cG9ydG5ldDRfYWRkYCwgYW5kIHNvIG9uLiBHb29kLCBnb29kLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gSSBsZXZlcmFnZSB0aGVzZSBpbnN0YW50aWF0ZWQgbmFtZXMsIGxpa2UgYGhhc2hfbmV0aWZhY2U0X2FkZGAsIHdpdGhpbiB0aGUgYEZvY3VzU3ltYm9sc2AgY29uZmlndXJhdGlvbj8gWWVzLCBvZiBjb3Vyc2UuIFN5emthbGxlciBjYW4gcmVzb2x2ZSB0aGVtLCBhcyBsb25nIGFzIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIHN5bWJvbCB0YWJsZS4KCkFscmlnaHQsIGxldCYjMzk7cyBzZWUgaWYgdGhleSYjMzk7cmUgdGhlcmUuIFRoZXkmIzM5O3JlIHN0YXRpYywgYnV0IHRoZXkmIzM5O3JlICphbHNvKiBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycywgc28gdGhleSAqc2hvdWxkbiYjMzk7dCogYmUgZnVsbHkgaW5saW5lZC4gRXhjZWxsZW50LiBXYWl0IGEgbWludXRlLi4uIGBtdHlwZV9hZGRfY2lkcmAgaXMgY2FsbGVkIGZyb20gYG10eXBlX2FkZGAsIGFuZCBgbXR5cGVfYWRkYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoZXJlZm9yZSwgYGhhc2hfbmV0aWZhY2U0X2FkZGAgd2lsbCBiZSBpbiB0aGUgc3ltYm9sIHRhYmxlLiBQZXJmZWN0LiBOb3csIEkgbmVlZCB0byBjaGVjayBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgYE1UWVBFYCBpcywgc28gSSBjYW4gc2VlIHdoYXQgSSYjMzk7bSBsb29raW5nIGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIE1UWVBFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0xMjg9aGFzaF9uZXRpZmFjZTRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldGlmYWNlNF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xMzMtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6MTM0OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRpZmFjZTRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xMzUtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTM2Mj1oYXNoX25ldGlmYWNlNl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTM2OS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzozNzA6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldGlmYWNlNlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTM3MS0jZGVmaW5lIEhPU1RfTUFTS1x0MTI4XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMjIzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSGFzaGluZyBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIHRoZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBoYXNoaW5nIGludGVyZmFjZXMgYW5kIG5ldHdvcmtzLiBJIHNlZSBhIGNsZWFyIHBhdHRlcm4gaGVyZTogYGhhc2hfbmV0aWZhY2U0X2FkZGAsIGBoYXNoX25ldGlmYWNlNF9kZWxgLCBgaGFzaF9uZXRpZmFjZTRfdGVzdGAsIGFuZCB0aGVpciBJUHY2IGNvdW50ZXJwYXJ0czogYGhhc2hfbmV0aWZhY2U2X2FkZGAsIGBoYXNoX25ldGlmYWNlNl9kZWxgLCBgaGFzaF9uZXRpZmFjZTZfdGVzdGAuIFRoZW4sIHdlIGhhdmUgdGhlIHBvcnQvbmV0d29yayBjb21iaW5hdGlvbnM6IGBoYXNoX25ldHBvcnRuZXQ0X2FkZGAsIGBoYXNoX25ldHBvcnRuZXQ0X2RlbGAsIGBoYXNoX25ldHBvcnRuZXQ0X3Rlc3RgLCBhbmQgYWdhaW4sIHRoZSBJUHY2IHZhcmlhbnRzOiBgaGFzaF9uZXRwb3J0bmV0Nl9hZGRgLCBgaGFzaF9uZXRwb3J0bmV0Nl9kZWxgLCBgaGFzaF9uZXRwb3J0bmV0Nl90ZXN0YC4gRmluYWxseSwgdGhlcmUgYXJlIHRoZSBtb3JlIGdlbmVyYWwgbmV0d29yay1sZXZlbCBmdW5jdGlvbnM6IGBoYXNoX25ldDRfYWRkYCwgYGhhc2hfbmV0NF9kZWxgLCBgaGFzaF9uZXQ0X3Rlc3RgLCBhbG9uZ3NpZGUgdGhlaXIgSVB2NiBlcXVpdmFsZW50czogYGhhc2hfbmV0Nl9hZGRgLCBgaGFzaF9uZXQ2X2RlbGAsIGBoYXNoX25ldDZfdGVzdGAuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBkaWZmZXJlbnQgbGV2ZWxzIG9mIGdyYW51bGFyaXR5IGZvciB0aGUgc2FtZSB1bmRlcmx5aW5nIGhhc2hpbmcgbWVjaGFuaXNtLgoKTXkgbmV4dCBtb3ZlIGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbi4gSXQmIzM5O3MgdGltZSB0byBleGFtaW5lIGBpcF9zZXRfaGFzaF9uZXQuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBkaWZmZXJlbnQgdHlwZXMgb2YgbmV0d29yayBlbGVtZW50cyBhcmUgYWN0dWFsbHkgYmVpbmcgaGFzaGVkIGFuZCBtYW5hZ2VkIGF0IGEgbG93IGxldmVsIHRvIHNlZSBpZiBJIGNhbiB1bmRlcnN0YW5kIGhvdyB0aGlzIHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIE1UWVBFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTEwMj1oYXNoX25ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldDRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTEwNy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM6MTA4OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTEwOS0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTI3Mz1oYXNoX25ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldDZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTI4MC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM6MjgxOiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXQ2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTI4Mi0jZGVmaW5lIEhPU1RfTUFTS1x0MTI4XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDQ2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIGBpcF9zZXRfaGFzaF9uZXRuZXQuY2AqKgoKT2theSwgdGltZSB0byBkaWcgaW50byBgaXBfc2V0X2hhc2hfbmV0bmV0LmNgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludHJpY2FjaWVzIG9mIHRoZSBoYXNoIGltcGxlbWVudGF0aW9uIGZvciBuZXR3b3JrL25ldG1hc2sgc2V0cy4gR2l2ZW4gdGhlIG5hbWUsIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgaXMgdGhlIGNvcmUgZmlsZSBoYW5kbGluZyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBhc3NvY2lhdGVkIG9wZXJhdGlvbnMgZm9yIHN0b3JpbmcgYW5kIG1hbmlwdWxhdGluZyBJUCBhZGRyZXNzIHJhbmdlcyBpbiBhIGhhc2ggdGFibGUgZm9ybWF0LiBJdCYjMzk7cyBsaWtlbHkgb3B0aW1pemVkIGZvciBmYXN0IGxvb2t1cHMsIHdoaWNoIGlzIGNydWNpYWwgZm9yIGZpcmV3YWxsIHJ1bGVzIGFuZCBvdGhlciBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgYXBwbGljYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBoYW5kbGUgY29sbGlzaW9ucywgdGhlIGhhc2hpbmcgYWxnb3JpdGhtIGl0c2VsZiAobGlrZWx5IGJhc2VkIG9uIHRoZSBJUCBhZGRyZXNzIGFuZCBuZXRtYXNrKSwgYW5kIGhvdyB0aGV5IG1hbmFnZSB0aGUgcmVzaXppbmcgb2YgdGhlIGhhc2ggdGFibGUgYXMgdGhlIHNldCBncm93cy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Uga2V5IGRhdGEgc3RydWN0dXJlcywgY29yZSBmdW5jdGlvbnMgZm9yIGluc2VydGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCBhbnkgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gb3IgdnVsbmVyYWJpbGl0aWVzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMgYWxsIHRoYXQgaXQgaGFzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIE1UWVBFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTEyNT1oYXNoX25ldG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldG5ldDRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTEzMC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MTMxOiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRuZXQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTEzMi0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTM2Mz1oYXNoX25ldG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldG5ldDZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3MC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MzcxOiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRuZXQ2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3Mi0jZGVmaW5lIEhPU1RfTUFTS1x0MTI4XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTg5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBgaXBfc2V0X2hhc2hfbmV0cG9ydC5jYCBDb2RlKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGlwX3NldF9oYXNoX25ldHBvcnQuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGhhc2ggaW1wbGVtZW50YXRpb24gZm9yIG5ldHdvcmsvcG9ydCBzZXRzIHJlc2lkZXMsIGFuZCBpdCYjMzk7cyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgc2V0IGxvZ2ljIGhhbmRsZXMgdGhpcyBzcGVjaWZpYyB0eXBlIG9mIGRhdGEuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlIGhhc2hpbmcsIGNvbGxpc2lvbiByZXNvbHV0aW9uLCBhbmQgbG9va3VwIG9wZXJhdGlvbnMgYXJlIGltcGxlbWVudGVkIGhlcmUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHVzdWFsIHN1c3BlY3RzOiBtZW1vcnkgbWFuYWdlbWVudCwgaGFzaCBmdW5jdGlvbiBzcGVjaWZpY3MsIGFueSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zLCBhbmQsIG9mIGNvdXJzZSwgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIGZvciBpbXByb3ZlbWVudC4gSSYjMzk7bGwgYmUgZm9jdXNlZCBvbiBob3cgaXQgaGFuZGxlcyB0aGUgY29tYmluYXRpb24gb2YgSVAgYWRkcmVzc2VzIGFuZCBwb3J0cy4gQW55IHVudXN1YWwgYXBwcm9hY2hlcyBvciBjbGV2ZXIgdGVjaG5pcXVlcyBhcmUgd29ydGggbm90aW5nLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBNVFlQRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jPTExNz1oYXNoX25ldHBvcnQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTEyMy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjEyNDojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0cG9ydDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTEyNS0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0zMzQ9aGFzaF9uZXRwb3J0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydDZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zNDItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYzozNDM6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldHBvcnQ2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zNDQtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDEwMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgSVAgU2V0IEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIElQIHNldCBmdW5jdGlvbiB3b3Jrcy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBgaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmNgIGZpbGUuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZvciB0aGUgaGFzaC1iYXNlZCBJUCBzZXQgdGhhdCBkZWFscyB3aXRoIElQIGFkZHJlc3NlcywgcG9ydHMsIGFuZCBuZXR3b3JrIGluZm9ybWF0aW9uLiBJdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGRhdGEgc3RydWN0dXJlcywgaGFzaGluZyBhbGdvcml0aG1zLCBhbmQgbG9va3VwL2luc2VydGlvbiByb3V0aW5lcy4gSSYjMzk7bSBhc3N1bWluZyB0aGlzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gaXMgZmFpcmx5IG9wdGltaXplZCwgZ2l2ZW4gdGhlIHBlcmZvcm1hbmNlIGRlbWFuZHMgb2YgSVAgc2V0IGZ1bmN0aW9uYWxpdHkgd2l0aGluIGEga2VybmVsIGNvbnRleHQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGV0YWlscyBvZiBob3cgY29sbGlzaW9ucyBhcmUgaGFuZGxlZCBhbmQgdGhlIG92ZXJhbGwgZWZmaWNpZW5jeSBvZiB0aGUgaGFzaCB0YWJsZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIE1UWVBFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTEyMT1oYXNoX2lwcG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTEyOC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6MTI5OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcHBvcnRuZXQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTEzMC0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTM3OT1oYXNoX2lwcG9ydG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTM4Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6Mzg4OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcHBvcnRuZXQ2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTM4OS0jZGVmaW5lIEhPU1RfTUFTS1x0MTI4XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjI0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29yZSBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCB0aGlzIG1vZHVsZSYjMzk7cyBidWlsdCBhcm91bmQgYSBzZXQgb2YgaGFzaCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3ZlIGdvdCBhIGNvbXByZWhlbnNpdmUgc3VpdGUgZm9yIElQdjQgYW5kIElQdjYsIGFkZHJlc3Npbmcgc2V2ZXJhbCBkaWZmZXJlbnQgbmV0d29yayBvYmplY3QgdHlwZXMuIFdlIGhhdmUgZnVuY3Rpb25zIHRvICphZGQqLCAqZGVsZXRlKiwgYW5kICp0ZXN0KiBlbnRyaWVzLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIG1hbmFnaW5nIGEgaGFzaCB0YWJsZS4gSSYjMzk7bSBub3RpbmcgdGhlIGNsZWFyIHN0cnVjdHVyZTogYGhhc2hfbmV0NF8qYCwgYGhhc2hfbmV0Nl8qYCwgYGhhc2hfbmV0aWZhY2U0XypgLCBgaGFzaF9uZXRpZmFjZTZfKmAsIGBoYXNoX25ldG5ldDRfKmAsIGBoYXNoX25ldG5ldDZfKmAsIGBoYXNoX25ldHBvcnQ0XypgLCBgaGFzaF9uZXRwb3J0Nl8qYCwgYGhhc2hfbmV0cG9ydG5ldDRfKmAsIGBoYXNoX25ldHBvcnRuZXQ2XypgLCBgaGFzaF9pcHBvcnRuZXQ0XypgLCBhbmQgYGhhc2hfaXBwb3J0bmV0Nl8qYC4gVGhlIG5hbWluZyBjb252ZW50aW9uIGlzIHZlcnkgZXhwbGljaXQgYWJvdXQgdGhlIGRhdGEgYmVpbmcgc3RvcmVkOiBuZXQsIG5ldGlmYWNlLCBuZXRuZXQsIG5ldHBvcnQsIGlwcG9ydG5ldCAtIGJvdGggdjQgYW5kIHY2IHZhcmlhbnRzLgoKVGhhdCYjMzk7cyBhIGxvdCBvZiBmdW5jdGlvbnMsIGJ1dCBpdCBsb29rcyBsaWtlIGEgd2VsbC1zdHJ1Y3R1cmVkIGFwcHJvYWNoLiBJIHN1cHBvc2UgaXQgcmVmbGVjdHMgdGhlIG5lZWQgdG8gZWZmaWNpZW50bHkgbWFuYWdlIGRpZmZlcmVudCBuZXR3b3JrIGNvbnRleHRzIHdpdGhpbiBhIGhhc2ggdGFibGUgc3RydWN0dXJlLgoKTm93LCBhIG1vZGlmaWNhdGlvbiB0byBgbXR5cGVfZmx1c2hgIGlzIGludHJpZ3VpbmcuIEl0JiMzOTtzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzIGhvdyB0aGF0IHRpZXMgaW50byB0aGUgaGFzaCB0YWJsZSwgc28gbGV0JiMzOTtzIGNoZWNrIG91dCB3aGF0IHRoZSBjaGFuZ2VzIHRvIGBtdHlwZV9mbHVzaGAgYXJlIGFsbCBhYm91dCwgYXMgdGhhdCBjb3VsZCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgbW9kdWxlJiMzOTtzIG92ZXJhbGwgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdHlwZV9mbHVzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xODg9c3RhdGljIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciB6ZXJvbWFzayA9IHt9O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjIzLSN1bmRlZiBtdHlwZV9haGFzaF9tZW1zaXplXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIyNDojdW5kZWYgbXR5cGVfZmx1c2hcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjI1LSN1bmRlZiBtdHlwZV9kZXN0cm95XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzEtI2RlZmluZSBtdHlwZV9haGFzaF9tZW1zaXplXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FoYXNoX21lbXNpemUpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI3MjojZGVmaW5lIG10eXBlX2ZsdXNoXHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfZmx1c2gpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI3My0jZGVmaW5lIG10eXBlX2Rlc3Ryb3lcdFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9kZXN0cm95KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NTA4PXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjUwOTptdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTUxMC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xNjMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZV92YXJpYW50ID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTYzOS1cdC5kZXN0cm95ID0gbXR5cGVfZGVzdHJveSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTY0MDpcdC5mbHVzaFx0PSBtdHlwZV9mbHVzaCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTY0MS1cdC5oZWFkXHQ9IG10eXBlX2hlYWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODUzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6CgoqKkFuYWx5emluZyBOZXR3b3JrIEZsdXNoaW5nIGFuZCBDSURSIE1vZGlmaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYGhhc2hfbmV0NF9mbHVzaGAsIGBoYXNoX25ldDZfZmx1c2hgLCBhbmQgcG90ZW50aWFsbHkgb3RoZXJzIGluIHRoYXQgZmFtaWx5LiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3Ryb25nbHkgc3VnZ2VzdHMgdGhleSYjMzk7cmUgaW52b2x2ZWQgaW4gZmx1c2hpbmcgbmV0d29yay1yZWxhdGVkIGNhY2hlcywgc3BlY2lmaWNhbGx5IGZvciBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcywgcmVzcGVjdGl2ZWx5LiBUaGUgdXNlIG9mICYjMzQ7aGFzaCYjMzQ7IGluIHRoZSBuYW1lIHByb2JhYmx5IHJlZmVycyB0byB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZSDigJMgbW9zdCBsaWtlbHkgYSBoYXNoIHRhYmxlIG9yIHNpbWlsYXIgbWVjaGFuaXNtIHVzZWQgZm9yIGZhc3QgbG9va3Vwcy4KCkkgYWxzbyBzZWUgdGhhdCBgbXR5cGVfdGVzdF9jaWRyc2AgaXMgYmVpbmcgbW9kaWZpZWQuIEFoLCByaWdodCwgdGhhdCYjMzk7cyBjYWxsZWQgZnJvbSBgbXR5cGVfdGVzdGAuIFRoaXMgc3VnZ2VzdHMgdGhhdCB0aGUgQ0lEUiAoQ2xhc3NsZXNzIEludGVyLURvbWFpbiBSb3V0aW5nKSBlbnRyaWVzIGFyZSBwcm9iYWJseSB1c2VkIHRvIGRlZmluZSBzb21lIGtpbmQgb2YgbmV0d29yayAmIzM0O3R5cGUmIzM0OyBmaWx0ZXJpbmcgb3IgdGVzdGluZy4gVGhlIG1vZGlmaWNhdGlvbiBtaWdodCBpbnZvbHZlIHVwZGF0aW5nLCBhZGRpbmcsIG9yIGRlbGV0aW5nIENJRFIgYmxvY2tzIHVzZWQgZm9yIHRoaXMgJiMzNDttdHlwZSYjMzQ7IHRlc3RpbmcgcHJvY2Vzcy4gVGhlIGludGVycGxheSBiZXR3ZWVuIGZsdXNoaW5nIGNhY2hlcyBhbmQgbW9kaWZ5aW5nIENJRFIgbGlzdHMgaXMgaW50ZXJlc3RpbmcsIGl0IGltcGxpZXMgdGhhdCB0aGUgQ0lEUiBkYXRhIGlzIHVzZWQgZm9yIHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIHN0YXkgdXAgdG8gZGF0ZS4gSSBhbSBiZXR0aW5nIHRoYXQgdGhlIG5ldHdvcmsgZmx1c2ggaXMgaW4gc29tZSB3YXkgdGllZCB0byB0aGUgYG10eXBlX3Rlc3RgIHJvdXRpbmUsIHBlcmhhcHMgaXQgbmVlZHMgdG8gdXBkYXRlIHNvbWUgY2FjaGVkIG5ldHdvcmsgcm91dGVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIENJRFJzLiBJIHdvdWxkIG5lZWQgdG8gZGl2ZSBkZWVwZXIgdG8gc2VlIGhvdyBgbXR5cGVfdGVzdGAgdXNlcyBDSURScyBhbmQgd2hldGhlciB0aGUgZmx1c2hpbmcgb3BlcmF0aW9ucyBhcmUgZGlyZWN0bHkgdHJpZ2dlcmVkIGJ5IENJRFIgY2hhbmdlcywgb3IgcGVyaGFwcyBhcmUgcGFydCBvZiBhIGJyb2FkZXIgbmV0d29yayBtYW5hZ2VtZW50IHJvdXRpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210eXBlX3Rlc3RfY2lkcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIzMy0jdW5kZWYgbXR5cGVfZGVsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIzNDojdW5kZWYgbXR5cGVfdGVzdF9jaWRyc1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yMzUtI3VuZGVmIG10eXBlX3Rlc3Rcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI4MS0jZGVmaW5lIG10eXBlX2RlbFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjgyOiNkZWZpbmUgbXR5cGVfdGVzdF9jaWRyc1x0SVBTRVRfVE9LRU4oTVRZUEUsIF90ZXN0X2NpZHJzKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yODMtI2RlZmluZSBtdHlwZV90ZXN0XHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfdGVzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTEzMDA9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoxMzAxOm10eXBlX3Rlc3RfY2lkcnMoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbXR5cGVfZWxlbSAqZCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTMwMi1cdFx0IGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xMzg3PW10eXBlX3Rlc3Qoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE0MDgtXHRpZiAoaSA9PSBJUFNFVF9ORVRfQ09VTlQpIHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTQwOTpcdFx0cmV0ID0gbXR5cGVfdGVzdF9jaWRycyhzZXQsIGQsIGV4dCwgbWV4dCwgZmxhZ3MpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNDEwLVx0XHRnb3RvIG91dDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3ODQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSWRlbnRpZnlpbmcgS2V5IEZ1bmN0aW9ucyBmb3IgRXhhbWluYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgYSBwYXR0ZXJuOiBgaGFzaF9uZXQ0X3Rlc3RgLCBgaGFzaF9uZXQ2X3Rlc3RgLCBldGMuIFRoYXQmIzM5O3MgYSBjbGVhciBzaWduYWwgdG8gc3RhcnQgbWFwcGluZyBvdXQgdGhlIGZ1bmN0aW9ucyB0aGF0IG5lZWQgY2xvc2VyIGluc3BlY3Rpb24uIExldCYjMzk7cyBtYWtlIGEgcHJlY2lzZSBsaXN0IG9mIHRoZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBoYXNoIHRhYmxlcywgc2luY2UgdGhvc2UgYXJlIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLgoKSSYjMzk7bGwgc3BlY2lmaWNhbGx5IGZvY3VzIG9uIHRoZSBhZGQsIGRlbCwgdGVzdCwgYW5kIGZsdXNoIG9wZXJhdGlvbnMgZm9yIGVhY2ggdHlwZS4gSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIGVhY2ggdHlwZSAtIElQdjQgYW5kIElQdjYsIG5ldHdvcmssIGludGVyZmFjZSwgcG9ydCwgYW5kIGNvbWJpbmVkIG5ldC9wb3J0IGNvbmZpZ3VyYXRpb25zIC0gc28gdGhhdCYjMzk7cyBhbGwgdGhlIGBoYXNoX25ldCpgLCBgaGFzaF9uZXRpZmFjZSpgLCBgaGFzaF9uZXRuZXQqYCwgYGhhc2hfbmV0cG9ydCpgLCBhbmQgYGhhc2hfaXBwb3J0bmV0KmAgZnVuY3Rpb25zLiBJIGtub3cgdGhlcmUgYXJlIGEgbG90IG9mIHRoZW0sIGJ1dCB0aGlzIGlzIHRoZSBtb3N0IHN5c3RlbWF0aWMgd2F5IHRvIGVuc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nIGNydWNpYWwgaW4gdGhlIGNvcmUgbG9naWMuCgpCZXlvbmQgdGhlIHNwZWNpZmljIGhhc2ggZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGVudHJ5IHBvaW50cyBpbiBgaXBfc2V0X2NvcmUuY2AsIHNwZWNpZmljYWxseSBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBgaXBfc2V0X3V0ZXN0YCwgYW5kIGBpcF9zZXRfdWZsdXNoYC4gVGhlc2UgYXJlIHRoZSB1c2VyLWxldmVsIGludGVyZmFjZXMsIHNvIEkmIzM5O2xsIGFsc28gaGF2ZSB0byBzZWUgaWYgdGhlIHVzZXItbGV2ZWwgZmx1c2ggZnVuY3Rpb24sIGBpcF9zZXRfdWZsdXNoYCBleGlzdHMuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBmdW5jdGlvbiBmb3IgY29tcGxldGVuZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3NldF91Zmx1c2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzcwMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIGBpcF9zZXRfZmx1c2hgIEZ1bmN0aW9uYWxpdHkqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0aG91Z2h0LCBvZiBjb3Vyc2UsIGNlbnRlcnMgb24gYSBjb21tYW5kIG9yIHByb2NlZHVyZSBjYWxsZWQgYGlwX3NldF9mbHVzaGAuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRpb25zIEkmIzM5O20gZmFtaWxpYXIgd2l0aCDigJMgYXJlIHdlIHRhbGtpbmcgYWJvdXQgdGhlIHN0YW5kYXJkIGBpcHNldGAgdXRpbGl0eSwgYSBjdXN0b20gc2NyaXB0LCBvciBzb21ldGhpbmcgZW1iZWRkZWQgd2l0aGluIGEgbmV0d29yayBhcHBsaWFuY2U/IFRoZSBjb250ZXh0IGlzIGtleSBoZXJlLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gKndoYXQqIGV4YWN0bHkgaXMgZmx1c2hpbmcsIGFuZCAqaG93KiBpdCYjMzk7cyBkb2luZyBpdC4gSXMgdGhpcyBhIHRhYmxlLXdpZGUgb3BlcmF0aW9uLCBvciBpcyB0aGVyZSBtb3JlIGdyYW51bGFyIGNvbnRyb2wgaW52b2x2ZWQ/IE15IGZpcnN0IHRob3VnaHRzIGhlcmUgaW5jbHVkZSBjb25zaWRlcmF0aW9ucyByZWdhcmRpbmcgYXRvbWljaXR5LCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGFuZCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEFuZCBJIG11c3Qga2VlcCBpbiBtaW5kIGhvdyB0aGUgc3BlY2lmaWMgZmx1c2ggb3BlcmF0aW9uIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgZGF0YSBzdHJ1Y3R1cmVzLCBmb3IgZXhhbXBsZSB3aXRoIGEgaGFzaCBzZXQgSSBuZWVkIHRvIGNvbnNpZGVyIHdoaWNoIG9wZXJhdGlvbnMgYXJlIHZhbGlkIGFmdGVyIGBmbHVzaGAuIE15IGFzc3VtcHRpb25zIGFib3V0IGJlaGF2aW9yIHdpbGwgZGVwZW5kIG9uIHRoZXNlIGRldGFpbHMuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgaWYgSSBhbSBhbHNvIGFibGUgdG8gY29udHJvbCB0aGUgZmx1c2gsIGFuZCB0byB3aGF0IGxldmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfZmx1c2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTEzMDI9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzAzOmlwX3NldF9mbHVzaF9zZXQoc3RydWN0IGlwX3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMDQte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzExLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMTI6c3RhdGljIGludCBpcF9zZXRfZmx1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzEzLVx0XHRcdGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBhdHRyW10pXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMjUtXHRcdFx0aWYgKHMpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMyNjpcdFx0XHRcdGlwX3NldF9mbHVzaF9zZXQocyk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNy1cdFx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzMyLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMzM6XHRcdGlwX3NldF9mbHVzaF9zZXQocyk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMzNC1cdH1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTY1LVx0W0lQU0VUX0NNRF9GTFVTSF1cdD0ge1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxNjY6XHRcdC5jYWxsXHRcdD0gaXBfc2V0X2ZsdXNoLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjctXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9NVVRFWCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0OTQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGlmIHRoZXkgYXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgTmV0bGluayBDYWxsYmFjayoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGBpcF9zZXRfZmx1c2hgIGFuZCByZWFsaXppbmcgdGhhdCBpdCYjMzk7cyB0aGUgbmV0bGluayBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1YnN5c3RlbS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3c7IGl0IHByb3ZpZGVzIHRoZSBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHRyaWdnZXJlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBrZXJuZWwuIE5vdywgbGV0JiMzOTtzIHBpdm90IHRvIHRoZSBjbGVhbnVwIGFuZCB0ZXN0aW5nIHByb2NlZHVyZXMgdG8gZ2V0IGEgbW9yZSB3ZWxsLXJvdW5kZWQgdmlldy4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIGBpcF9zZXRfdWRlbGAgYW5kIGBpcF9zZXRfdXRlc3RgIOKAkyB0aGVzZSBzaG91bGQgcmV2ZWFsIHRoZSB1bmxpbmtpbmcgKGRlbGV0aW9uKSBhbmQgdGVzdGluZyBtZWNoYW5pc21zLCByZXNwZWN0aXZlbHksIGFuZCBhcmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgbGlmZWN5Y2xlIHdpdGhpbiB0aGUgYGlwX3NldGAgY29udGV4dCwgc28gSSBjYW4gc2VlIHdoYXQgcmVzb3VyY2VzIGFyZSBjbGVhbmVkIHVwIGFuZCBob3cgdGhlIHNldOKAmXMgaW50ZXJuYWwgc3RhdGUgaXMgdmFsaWRhdGVkLiBLbm93aW5nIHRob3NlIHR3byBpcyBrZXkgdG8gcmVhbGx5IHVuZGVyc3RhbmRpbmcgZmx1c2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3NldF91ZGVsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xODc0PXN0YXRpYyBpbnQgaXBfc2V0X3VhZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg4MC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxODgxOnN0YXRpYyBpbnQgaXBfc2V0X3VkZWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODgyLVx0XHQgICAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMjAxLVx0W0lQU0VUX0NNRF9ERUxdXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMjAyOlx0XHQuY2FsbFx0XHQ9IGlwX3NldF91ZGVsLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIyMDMtXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9NVVRFWCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwNzcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfdXRlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE4ODE9c3RhdGljIGludCBpcF9zZXRfdWRlbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODg3LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE4ODg6c3RhdGljIGludCBpcF9zZXRfdXRlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODg5LVx0XHRcdGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBhdHRyW10pXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjIwNy1cdFtJUFNFVF9DTURfVEVTVF1cdD0ge1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIyMDg6XHRcdC5jYWxsXHRcdD0gaXBfc2V0X3V0ZXN0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIyMDktXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9NVVRFWCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk0MzAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QgZm9yIElQIFNldCBGdW5jdGlvbmFsaXR5KioKCk9rYXksIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlc2UgSVAgc2V0IGVudHJ5IHBvaW50cyBhbmQgdGhlaXIgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZm9jdXNpbmcgb24gdXNlci1zcGFjZSBpbnRlcmFjdGlvbiBwcmltYXJpbHksIHdoaWNoIG1lYW5zIHRoZSBmdW5jdGlvbnMgYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGFuZCBgaXBfc2V0X2ZsdXNoYCBhcmUga2V5LiBOYXR1cmFsbHksIHRoZSBjb3JyZXNwb25kaW5nIGtlcm5lbC1zaWRlIGVudHJ5IHBvaW50cywgYGlwX3NldF9hZGRgLCBgaXBfc2V0X2RlbGAsIGFuZCBgaXBfc2V0X3Rlc3RgLCBuZWVkIHRvIGJlIHByZXNlbnQgYW5kIGZ1bmN0aW9uYWwgYXMgd2VsbC4KCk5vdywgZm9yIHRoZSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY29yZSBgSVBfU0VUYCBmZWF0dXJlIGlzIGVuYWJsZWQsIG9mIGNvdXJzZS4gVGhlbiwgSSBuZWVkIHRvIGxvb2sgYXQgZWFjaCBvZiB0aGUgaGFzaCB0eXBlcy4gU3BlY2lmaWNhbGx5OiBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUTkVUYCwgYElQX1NFVF9IQVNIX05FVFBPUlRgLCBhbmQgYElQX1NFVF9IQVNIX0lQUE9SVE5FVGAuCgpBaCwgYnV0IHdhaXQhIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgYElQX1NFVGAgaXRzZWxmIGRlcGVuZHMgb24gYElORVRgIGFuZCBgTkVURklMVEVSYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEFsdGhvdWdoIFN5emthbGxlciBvZnRlbiBoYW5kbGVzIHRoZXNlLCBpdCYjMzk7cyBhbHdheXMgZ29vZCBwcmFjdGljZSB0byBleHBsaWNpdGx5IGxpc3QgdGhlbSB0byBwcmV2ZW50IGZ1dHVyZSBjb25mdXNpb24uIEFjdHVhbGx5LCB0aG9zZSBhcmUgcHJldHR5IGNvbW1vbi4gSSYjMzk7bGwganVzdCBrZWVwIHRoZSBgSVBfU0VUYCBvcHRpb25zIGluIG15IGNoZWNrbGlzdC4KCk5vdywgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBiZSBzdXJlIHRoYXQgdGhvc2UgYElQX1NFVF9IQVNIXypgIHR5cGVzIHRoYXQgaGF2ZSBgSVBfU0VUX0hBU0hfV0lUSF9ORVRTYCBhcmUgcHJvcGVybHkgaGFuZGxlZC4gSSBoYXZlIGEgbGlzdCBoZXJlOiBgaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmNgLCBgaXBfc2V0X2hhc2hfbmV0LmNgLCBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AsIGBpcF9zZXRfaGFzaF9uZXRuZXQuY2AsIGBpcF9zZXRfaGFzaF9uZXRwb3J0LmNgLCBhbmQgYGlwX3NldF9oYXNoX25ldHBvcnRuZXQuY2AuCgpPa2F5LCBzbyB0byBiZSBleHBsaWNpdCwgbXkgY29uZmlndXJhdGlvbiBjaGVja2xpc3QgaXM6CgoqICAgYElQX1NFVGAKKiAgIGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgCiogICBgSVBfU0VUX0hBU0hfTkVUYAoqICAgYElQX1NFVF9IQVNIX05FVElGQUNFYAoqICAgYElQX1NFVF9IQVNIX05FVE5FVGAKKiAgIGBJUF9TRVRfSEFTSF9ORVRQT1JUYAoqICAgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgCgpKdXN0IHRvIGJlIHNhZmUsIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoZSBjb25maWcgbmFtZSBmb3IgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgIGlzIGNvcnJlY3QuIFlvdSBjYW4gbmV2ZXIgYmUgdG9vIGNhcmVmdWwgd2hlbiBkZWFsaW5nIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb24hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMTI9Y29uZmlnIElQX1NFVF9IQVNIX01BQ1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIxOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA1OTYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgdGhhdCBjb25maXJtYXRpb24gaXMgZXhhY3RseSB3aGF0IEkgZXhwZWN0ZWQuIENvbmZpZGVudCB0aGF0IHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29ycmVjdCwgdGhlIG5leHQgdGhvdWdodCBpcyBhIHF1ZXN0aW9uIHRoYXQgcmVxdWlyZXMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBUaGUga2V5IGlzIHRvIGRlbHZlIGRlZXBlciBhbmQgYXNrIGFib3V0IGBJUF9TRVRfSEFTSF9ORVRQT1JUYC4gVGhpcyBwcm9iZXMgd2hldGhlciBhIHNwZWNpZmljIG1lY2hhbmlzbSB3aWxsIGJlIGltcGxlbWVudGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIwLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzOT1jb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDg6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTQxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgYElQX1NFVF9IQVNIX05FVE5FVGAgZm9yIGEgc29sdXRpb24qKgoKWWVzLiBJJiMzOTttIGltbWVkaWF0ZWx5IGxlYW5pbmcgdG93YXJkcyB0aGF0IGRpcmVjdGlvbiwgYnV0IEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIGFuZ2xlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHBvc2l0aXZlLCBhIHNpbXBsZSBhZmZpcm1hdGlvbiB0aGF0IGl0JiMzOTtzIG9uIHRoZSByaWdodCB0cmFjay4KCkJ1dCwgSSBuZWVkIHRvIHRha2UgYSBiZWF0IGFuZCBkcmlsbCBkb3duIGEgYml0IGRlZXBlci4gV2hhdCBhYm91dCBgSVBfU0VUX0hBU0hfTkVUTkVUYD8gSXQmIzM5O3MgdGhlIG1vc3QgcmVsZXZhbnQgbWV0aG9kIGZvciB0aGUgdGFzayBhdCBoYW5kLiBJIGNhbiB1c2UgaXQgdG8gc3RvcmUgbmV0d29yayBwcmVmaXhlcyBhbmQgaXQgYWxsb3dzIG1lIHRvIGVmZmljaWVudGx5IGxvb2sgdXAgaWYgYSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIElQIGFyZSBpbiBzcGVjaWZpYyBuZXR3b3Jrcywgc28gdGhhdCBJIGNhbiB1c2UgaXQgdG8gY3JlYXRlIG15IHJ1bGVzLiBJIHRoaW5rIGl0cyBzdWl0YWJpbGl0eSBoaW5nZXMgb24gdGhlIHNwZWNpZmljIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgZGF0YXNldCBJJiMzOTttIGRlYWxpbmcgd2l0aC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBvdmVybG9vayBhbnkgcG90ZW50aWFsIGRyYXdiYWNrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTMwPWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTM4LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjg4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgZXhwcmVzc2VkIGFzIHRob3VnaCB0aGVzZSB3ZXJlIG15IG93biB0aG91Z2h0czoKCioqQ29uc2lkZXJpbmcgdGhlIE5ldHdvcmsgSW50ZXJmYWNlIEhhc2hpbmcgT3B0aW9uKioKClllcywgdGhhdCBmZWVscyBsaWtlIHRoZSByaWdodCBkaXJlY3Rpb24uIFRoZSBwcm9ibGVtIEkmIzM5O20gdHJ5aW5nIHRvIHNvbHZlIGRlZmluaXRlbHkgbGVhbnMgdG93YXJkcyB0aGlzIGFwcHJvYWNoLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24gdGhhdCBwb3BzIHVwIGluIG15IG1pbmQgaXMuLi4gd2hhdCBhYm91dCBgSVBfU0VUX0hBU0hfTkVUSUZBQ0VgPyBJIHNob3VsZCBleHBsb3JlIHdoZXRoZXIgdGhhdCYjMzk7cyB0aGUgbW9yZSBhcHByb3ByaWF0ZSBvcHRpb24sIGNvbnNpZGVyaW5nIHRoZSBzcGVjaWZpYyBkZXRhaWxzIG9mIHRoaXMgc2l0dWF0aW9uLiBJIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGltcGxpY2F0aW9ucyBvZiB1c2luZyB0aGF0IHBhcnRpY3VsYXIgaGFzaCB0eXBlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTU4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNTY0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgTmV0d29yayBIYXNoaW5nIGZvciBJUCBTZXRzKioKClJpZ2h0LCB0aGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEJ1dCBob2xkIG9uLi4uIHdoYXQgYWJvdXQgdGhlIG9wdGlvbiBmb3IgYSBoYXNoLWJhc2VkIHNldCBzcGVjaWZpY2FsbHkgZm9yIG5ldHdvcmtzPyBTaG91bGRuJiMzOTt0IHdlIGJlIGdpdmluZyBzb21lIHNlcmlvdXMgY29uc2lkZXJhdGlvbiB0byBgSVBfU0VUX0hBU0hfTkVUYCBmb3IgdGhpcyB1c2UgY2FzZT8gSXQgb2ZmZXJzIGVmZmljaWVuY3kgYmVuZWZpdHMgd2hlbiBkZWFsaW5nIHdpdGggcmFuZ2VzLiBJIG5lZWQgdG8gd2VpZ2ggdGhlIHByb3MgYW5kIGNvbnMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVF9IQVNIX05FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIwLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzA6Y29uZmlnIElQX1NFVF9IQVNIX05FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzOC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzk6Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTU4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDk2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgZXhwcmVzc2VkIGFzIHRob3VnaCB0aGVzZSB3ZXJlIG15IG93biB0aG91Z2h0cywgZGVsaXZlcmVkIHRvIGFuIGV4cGVydDoKCioqQ29uc2lkZXJpbmcgSVAgU2V0IEhhc2hpbmcgT3B0aW9ucyoqCgpZZXMuIFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24sIGlzbiYjMzk7dCBpdD8gV2UmIzM5O3JlIG9uIHRoZSByaWdodCB0cmFjay4gQnV0LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRvIHVzZSBhIGhhc2gtYmFzZWQgc2V0LiBBbmQsIGlmIHNvLCB3aGljaCBvbmU/IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFib3V0IGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgPyBHaXZlbiB0aGUgbGlrZWx5IHVzZSBjYXNlLCB0aGUgbmV0d29yayBhZGRyZXNzIGFuZCBwb3J0IHR1cGxlIGlzIHZlcnkgcG9zc2libHkgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBnbywgZm9yIHRoZSBsZXZlbCBvZiBzcGVjaWZpY2l0eSB3ZSBuZWVkLiBXZSBjYW4mIzM5O3QgaW1tZWRpYXRlbHkgbGVhcCB0byBhIGNvbmNsdXNpb24sIGJ1dCB0aGlzIGRlZmluaXRlbHkgYmVhcnMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz04Mz1jb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUSVBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6OTM6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQwMQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDk1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIEZvY3VzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBwYXRjaCBkb2VzIGluZGVlZCBpbnRyb2R1Y2Ugc29tZSBtb2RpZmljYXRpb25zLCBzcGVjaWZpY2FsbHkgdG8gZnVuY3Rpb25zIGxpa2UgYG10eXBlX2FkZF9jaWRyYCwgYG10eXBlX2RlbF9jaWRyYCwgYG10eXBlX2ZsdXNoYCwgYW5kIGBtdHlwZV90ZXN0X2NpZHJzYC4gVGhlc2UgYXJlIGluc3RhbnRpYXRlZCBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIGFuZCBwb3J0IHR5cGVzIGFzIGEgbXVsdGl0dWRlIG9mIGZ1bmN0aW9ucy4gSSBzZWUgYSBsb3Qgb2YgZnVuY3Rpb25zIGhlcmUuIGBoYXNoX25ldDRfYWRkYCwgYGhhc2hfbmV0NF9kZWxgLCBgaGFzaF9uZXQ0X3Rlc3RgLCBgaGFzaF9uZXQ0X2ZsdXNoYCBhbmQgc28gb24uIFRoZXJlIGFyZSBhIHRvdGFsIG9mIDQ4IGZ1bmN0aW9ucyBoZXJlLCB3aGljaCBpcyBxdWl0ZSBhIGZldyB0byBrZWVwIHRyYWNrIG9mLgoKTm93LCB0aGVzZSBhcmUgc3RhdGljIGZ1bmN0aW9ucywgYnV0IHRoZWlyIGFkZHJlc3NlcyBhcmUgYmVpbmcgdGFrZW4gYW5kIHBsYWNlZCBpbnRvIHN0cnVjdHVyZXMgbGlrZSBgbXR5cGVfdmFyaWFudC5hZHRbSVBTRVRfQUREXWAsIG1lYW5pbmcgdGhlIGNvbXBpbGVyIGNhbiYjMzk7dCBjb21wbGV0ZWx5IGlubGluZSB0aGVtLiBUaGlzIGlzIGdvb2QgYmVjYXVzZSBTeXprYWxsZXIgY2FuIGlkZW50aWZ5IHRoZW0gYXMgZm9jdXMgc3ltYm9scy4gSG93ZXZlciwgSSBuZWVkIHRvIGJlIHN0cmF0ZWdpYy4gTGlzdGluZyBhbGwgNDggZnVuY3Rpb25zIGlzIHByb2JhYmx5IG92ZXJraWxsIGZvciBndWlkaW5nIHRoZSBmdXp6ZXIuCgpJJiMzOTttIHRoaW5raW5nLCBwZXJoYXBzIGl0JiMzOTtzIG1vcmUgZWZmZWN0aXZlIHRvIGZvY3VzIG9uIHRoZSBrZXkgbmV0bGluayBlbnRyeSBwb2ludHMsIGxpa2UgYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGBpcF9zZXRfZmx1c2hgLCBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYW5kIGBpcF9zZXRfdGVzdGAuIEFuZCB0aGVuIG1heWJlIGEgZmV3IG9mIHRoZSBtb3JlIHNwZWNpZmljIGluc3RhbnRpYXRlZCBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgbW9kaWZpZWQgZmlsZXMgd291bGQgYmUgdGhlIHNtYXJ0ZXN0IG1vdmUuIEkmIzM5O20gbGVhbmluZyB0b3dhcmQgaW5jbHVkaW5nIHRoZSBoYXNoIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBjaGFuZ2VkIGZpbGVzOiBgaGFzaF9uZXQ0X2FkZGAsIGBoYXNoX25ldDRfZGVsYCwgYGhhc2hfbmV0NF90ZXN0YCwgYGhhc2hfbmV0NF9mbHVzaGAsIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBgaGFzaF9uZXRpZmFjZTRfZGVsYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCBgaGFzaF9uZXRpZmFjZTRfZmx1c2hgLCBhbmQgYGhhc2hfbmV0cG9ydG5ldDRfYWRkYCwgYGhhc2hfbmV0cG9ydG5ldDRfZGVsYCwgYGhhc2hfbmV0cG9ydG5ldDRfdGVzdGAsIGBoYXNoX25ldHBvcnRuZXQ0X2ZsdXNoYC4gVGhpcyBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIHBhdGNoJiMzOTtzIHNwZWNpZmljIG1vZGlmaWNhdGlvbnMgdG8gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gRm9jdXNpbmcgb24gdGhvc2UgZnVuY3Rpb25zIHNob3VsZCBiZSB0aGUgbW9zdCBwcm9kdWN0aXZlLgoKSnVzdCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgaGFzaF9uZXRpZmFjZTRfYWRkYCBpcyB0aGUgY29ycmVjdCBuYW1lLi4uIGxvb2tpbmcgYXQgYGlwX3NldF9oYXNoX2dlbi5oYCwgdXNpbmcgdGhlIG1hY3JvIGRlZmluaXRpb25zIGBtdHlwZV9hZGQgSVBTRVRfVE9LRU4oTVRZUEUsIF9hZGQpYCBhbmQgYElQU0VUX1RPS0VOKGEsIGIpIGEjI2JgLCBJIGNhbiBzZWUgdGhhdCYjMzk7cyBhYnNvbHV0ZWx5IGNvcnJlY3QsIGl0JiMzOTtzIGp1c3QgYSBjb25jYXRlbmF0aW9uIGJhc2VkIG9uIHRob3NlIG1hY3Jvcywgc28gYGhhc2hfbmV0aWZhY2U0X2FkZGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IG5hbWUuIEFsbCBnb29kLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgaXBfc2V0X2hhc2hfZ2VuLmhgIGZpbGUgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXR5cGVfYWRkXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc0MD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjc0MTptdHlwZV9hZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtNzQyLVx0ICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc1Mj1tdHlwZV9yZXNpemUoc3RydWN0IGlwX3NldCAqc2V0LCBib29sIHJldHJpZWQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC05MDQtXHRcdGlmICh4LVx1MDAzZWFkID09IElQU0VUX0FERCkge1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo5MDU6XHRcdFx0bXR5cGVfYWRkKHNldCwgXHUwMDI2eC1cdTAwM2VkLCBcdTAwMjZ4LVx1MDAzZWV4dCwgXHUwMDI2eC1cdTAwM2VtZXh0LCB4LVx1MDAzZWZsYWdzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTA2LVx0XHR9IGVsc2Uge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg3PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6OTg4Om10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC05ODktXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NDIzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIGBtdHlwZWAgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1bmN0aW9uIG5hbWUuLi4geWVzLCBkZWZpbml0ZWx5IGBtdHlwZV9hZGRgLiBUaGF0JiMzOTtzIHRoZSBvbmUgd2UmIzM5O3JlIGZvY3VzZWQgb24gcmlnaHQgbm93LiBOb3csIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNvbnNpZGVyaW5nIGFsbCB0aGUgcmVsYXRlZCBhc3BlY3RzLCBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYG10eXBlX2RlbGAgYXMgd2VsbC4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IGFuZCB3aGV0aGVyIHRoZSBsb2dpYyBiZXR3ZWVuIHRoZW0gaXMgY29uc2lzdGVudC4gQSBxdWljayBjb21wYXJpc29uIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGRlc2lnbiBhbmQgc3BvdCBhbnkgcG90ZW50aWFsIGluY29uc2lzdGVuY2llcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLiBKdXN0IG1ha2luZyBzdXJlIEkmIzM5O20gc2VlaW5nIHRoZSB3aG9sZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdHlwZV9kZWxcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NzQzPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NzQ0Om10eXBlX2RlbChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC03NDUtXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NzUyPW10eXBlX3Jlc2l6ZShzdHJ1Y3QgaXBfc2V0ICpzZXQsIGJvb2wgcmV0cmllZClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNi1cdFx0fSBlbHNlIHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6OTA3Olx0XHRcdG10eXBlX2RlbChzZXQsIFx1MDAyNngtXHUwMDNlZCwgTlVMTCwgTlVMTCwgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwOC1cdFx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTE3OD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjExNzk6bXR5cGVfZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTExODAtXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0OTk5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBTaXR1YXRpb24qKgoKWWVzLiBJIGFja25vd2xlZGdlIHRoZSBwcm9tcHQuCgpOb3csIGxldCYjMzk7cyB0dXJuIG91ciBhdHRlbnRpb24gdG8gYG10eXBlX3Rlc3RgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHJlc2lkZXMsIGFuZCBpdCYjMzk7cyBpbXBlcmF0aXZlIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHRlc3QuIEkmIzM5O2xsIG5lZWQgdG8gZGlzc2VjdCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGltcGFjdHMgdGhlIG90aGVyIGFyZWFzLCBlc3BlY2lhbGx5IHRoZSBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXR5cGVfdGVzdFxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xMzg2PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTM4NzptdHlwZV90ZXN0KHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTEzODgtXHQgICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTI2OAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgYW5kIE5leHQgU3RlcCoqCgpZZXMuICpUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgY29uZmlybWluZyBhIGNlcnRhaW4gZm91bmRhdGlvbmFsIGFzc3VtcHRpb24gb3IgcmVjb2duaXppbmcgYW4gYWZmaXJtYXRpdmUgYW5zd2VyKi4gTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3MuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBgbXR5cGVfZmx1c2hgLiAqR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBtZW1vcnkgbWFuYWdlbWVudCwgSSYjMzk7bSBhc3N1bWluZyB0aGlzIHJlZmVycyB0byBhIGZsdXNoIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gbWVtb3J5IHR5cGVzIG9yIGRhdGEgc3RydWN0dXJlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCBpbXBhY3QuKiBJIHdpbGwgYW5hbHl6ZSB0aGlzIGNvbW1hbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210eXBlX2ZsdXNoXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTUwOD1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo1MDk6bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC01MTAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTUyNQoJCQkJCQkJb3V0cHV0OiAzMzMKCQkJCQkJCXRob3VnaHRzOiAzMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaXBzZXQgUGF0Y2gqKgoKUmlnaHQsIEkmIzM5O3ZlIGdvdCBpdC4gU28sIHdlJiMzOTtyZSBsb29raW5nIGF0IGNoYW5nZXMgdG8gdGhlIGNvcmUgb2YgaG93IENJRFIgcHJlZml4ZXMgYXJlIG1hbmFnZWQgd2l0aGluIGlwc2V0JiMzOTtzIGhhc2ggdHlwZXMuIEkgc2VlIHRoZSBtYWluIGZ1bmN0aW9ucyBoZXJlOgoKYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGBpcF9zZXRfZmx1c2hgIGFuZCB0aGVuIHRoZSBuZXQtc3BlY2lmaWMgb3BlcmF0aW9uczogYGhhc2hfbmV0aWZhY2U0X2FkZGAsIGBoYXNoX25ldGlmYWNlNF9kZWxgLCBgaGFzaF9uZXRpZmFjZTRfdGVzdGAsIGBoYXNoX25ldGlmYWNlNF9mbHVzaGAsIGBoYXNoX25ldHBvcnRuZXQ0X2FkZGAsIGBoYXNoX25ldHBvcnRuZXQ0X2RlbGAsIGBoYXNoX25ldHBvcnRuZXQ0X3Rlc3RgLCBgaGFzaF9uZXRwb3J0bmV0NF9mbHVzaGAsIGBoYXNoX25ldDRfYWRkYCwgYGhhc2hfbmV0NF9kZWxgLCBgaGFzaF9uZXQ0X3Rlc3RgLCBgaGFzaF9uZXQ0X2ZsdXNoYC4KClRoZSBpbXBvcnRhbnQgY29uZmlndXJhdGlvbnMgYXJlIHRob3NlIGhhc2ggdHlwZXM6IGBJUF9TRVRgLCBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUTkVUYCwgYElQX1NFVF9IQVNIX05FVFBPUlRgLCBhbmQgYElQX1NFVF9IQVNIX0lQUE9SVE5FVGAuCgpUaGUgY3JpdGljYWwgcG9pbnQgaXMgdGhpczogdGhlIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy4gSW5zdGVhZCBvZiByZWx5aW5nIG9uIFJDVSByZWFsbG9jYXRpb25zIHdoZW4gZGVsZXRpbmcgQ0lEUiBlbnRyaWVzLCBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhIGBzZXFjb3VudF9zcGlubG9ja190YCB0byBwcm90ZWN0IGluLXBsYWNlIHJlb3JkZXJpbmcgb2YgdGhlIGBuZXRzYCBhcnJheS4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBpcHNldCBsb2dpYy4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhpcyBhcyBhIGNhbmRpZGF0ZSBmb3IgdGhvcm91Z2ggZnV6emluZy4gV2UgbmVlZCB0byBleHBvc2UgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3Igb3RoZXIgdnVsbmVyYWJpbGl0aWVzLiBMZXQmIzM5O3MgY2FsbCB0aGlzIHRoZSBgc2V0LXJlc3VsdHNgIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVElGQUNFJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfSVBQT1JUTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X3VhZGQmIzM0OywKICAgICYjMzQ7aXBfc2V0X3VkZWwmIzM0OywKICAgICYjMzQ7aXBfc2V0X3V0ZXN0JiMzNDssCiAgICAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldGlmYWNlNF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U0X3Rlc3QmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9kZWwmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydG5ldDRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXQ0X2FkZCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldDRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBDSURSIG5ldHdvcmsgcHJlZml4ZXMgYXJlIHRyYWNrZWQgaW4gaXBzZXQgaGFzaCB0eXBlcy4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0cyBhcnJheSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIFJDVSByZWFsbG9jYXRpb24gb24gZXZlcnkgZGVsZXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVElGQUNFJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfSVBQT1JUTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X3VhZGQmIzM0OywKICAgICYjMzQ7aXBfc2V0X3VkZWwmIzM0OywKICAgICYjMzQ7aXBfc2V0X3V0ZXN0JiMzNDssCiAgICAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldGlmYWNlNF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U0X3Rlc3QmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9kZWwmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydG5ldDRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXQ0X2FkZCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldDRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBDSURSIG5ldHdvcmsgcHJlZml4ZXMgYXJlIHRyYWNrZWQgaW4gaXBzZXQgaGFzaCB0eXBlcy4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0cyBhcnJheSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIFJDVSByZWFsbG9jYXRpb24gb24gZXZlcnkgZGVsZXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6Mjc6MTIuNTY2NjA5OTQ0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxMjU0NzI3NDI0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUSUZBQ0VcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFBPUlRORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVE5FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUUE9SVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfSVBQT1JUTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfc2V0X3VhZGRcIixcbiAgICBcImlwX3NldF91ZGVsXCIsXG4gICAgXCJpcF9zZXRfdXRlc3RcIixcbiAgICBcImlwX3NldF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXRpZmFjZTRfYWRkXCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF9kZWxcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X3Rlc3RcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X2ZsdXNoXCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ0X2FkZFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF9kZWxcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfdGVzdFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXQ0X2FkZFwiLFxuICAgIFwiaGFzaF9uZXQ0X2RlbFwiLFxuICAgIFwiaGFzaF9uZXQ0X3Rlc3RcIixcbiAgICBcImhhc2hfbmV0NF9mbHVzaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGNvcmUgbG9naWMgb2YgaG93IENJRFIgbmV0d29yayBwcmVmaXhlcyBhcmUgdHJhY2tlZCBpbiBpcHNldCBoYXNoIHR5cGVzLiBJdCBpbnRyb2R1Y2VzIGEgc2VxY291bnRfc3BpbmxvY2tfdCB0byBndWFyZCBpbi1wbGFjZSByZW9yZGVyaW5nIG9mIHRoZSBuZXRzIGFycmF5LCByZW1vdmluZyB0aGUgbmVlZCBmb3IgUkNVIHJlYWxsb2NhdGlvbiBvbiBldmVyeSBkZWxldGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgaXBzZXQgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjI3OjEyLjU2NjYxNjI4NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwOTc3Njk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGRlNmZlYWQ2ZmQ0MDYxMDJkMjQ3ZGVjNDU0YzhlYWQ4MGMxNDZkNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyA3IDAzOjI3OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmggYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXFxuaW5kZXggZjAwYzgyYWNkN2YwNS4uODBjYTUyM2YzMDRiYiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFxcbkBAIC04LDYgKzgsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmN1cGRhdGVfd2FpdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvamhhc2guaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZXFsb2NrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmhcXHUwMDNlXFxuIFxcbkBAIC05OCwxNCArOTksMzQgQEAgc3RydWN0IGh0YWJsZSB7XFxuICNkZWZpbmUgSVBTRVRfTkVUX0NPVU5UXFx0XFx0MVxcbiAjZW5kaWZcXG4gXFxuLS8qIEJvb2sta2VlcGluZyBvZiB0aGUgcHJlZml4ZXMgYWRkZWQgdG8gdGhlIHNldCAqL1xcbisvKipcXG4rICogc3RydWN0IG5ldF9wcmVmaXggLSBSZXByZXNlbnRhdGlvbiBvZiBhIG5ldHdvcmsgcHJlZml4LlxcbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC5cXG4rICogQGNvdW50OiBOdW1iZXIgb2Ygb2NjdXJyZW5jZXMuXFxuKyAqL1xcbiBzdHJ1Y3QgbmV0X3ByZWZpeCB7XFxuLVxcdHU4IGNpZHI7XFx0XFx0XFx0LyogdGhlIGNpZHIgdmFsdWUgKi9cXG4tXFx0dTMyIGNvdW50O1xcdFxcdFxcdC8qIG51bWJlciBvZiBlbGVtZW50cyBvZiB0aGlzIGNpZHIgKi9cXG4rXFx0dTMyIGNpZHI6ODtcXG4rXFx0dTMyIGNvdW50OjI0O1xcbiB9O1xcbiBcXG4rI2RlZmluZSBDSURSX01BWF9DT1VOVCAoKDEgXFx1MDAzY1xcdTAwM2MgMjQpIC0gMSlcXG4rXFxuKy8qKlxcbisgKiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIC0gQSBjb2xsZWN0aW9uIG9mIG5ldHdvcmsgcHJlZml4ZXMuXFxuKyAqIEByY3U6IFJDVSBoZWFkXFxuKyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0c1xcbisgKiBAbGVuOiBOdW1iZXIgb2YgZW50cmllcyBpbiB0aGUgYXJyYXkuXFxuKyAqIEBuZXRzOiBBcnJheSBvZiBuZXRfcHJlZml4IHN0cnVjdHVyZXMgKHNvcnRlZCBieSBDSURSIGRlc2NlbmRpbmcpLlxcbisgKlxcbisgKiBAbmV0cyBlbnRyaWVzIGFyZSB1cGRhdGVkIGluIHBsYWNlIHVuZGVyIEBzZXQncyBsb2NrLiBBIHNpbmdsZSBlbnRyeSdzXFxuKyAqIGNpZHIvY291bnQgcGFpciBpcyBhbHdheXMgdXBkYXRlZCBhdG9taWNhbGx5IHZpYSBSRUFEX09OQ0UoKS9XUklURV9PTkNFKCksXFxuKyAqIGJ1dCByZW1vdmluZyBhbiBlbnRyeSBhbHNvIHNoaWZ0cyBldmVyeSBmb2xsb3dpbmcgZW50cnkgZG93biBieSBvbmUgc2xvdC5cXG4rICogTG9ja2xlc3MgcmVhZGVycyB0aGF0IHNjYW4gdGhlIHdob2xlIGFycmF5IChpLmUuIG1vcmUgdGhhbiBhIHNpbmdsZVxcbisgKiBpbmRleGVkIHNsb3QpIG11c3QgdXNlIEBzZXEgdG8gZGV0ZWN0IGFuZCByZXRyeSBhY3Jvc3Mgc3VjaCBhIHNoaWZ0LlxcbisgKi9cXG4gc3RydWN0IG5ldF9wcmVmaXhlcyB7XFxuIFxcdHN0cnVjdCByY3VfaGVhZCByY3U7XFxuK1xcdHNlcWNvdW50X3NwaW5sb2NrX3Qgc2VxO1xcbiBcXHR1OCBsZW47XFxuIFxcdHN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTtcXG4gfTtcXG5AQCAtMTQzLDggKzE2NCwxMSBAQCBodGFibGVfc2l6ZSh1OCBoYml0cylcXG4gI2VuZGlmXFxuIFxcbiAjZGVmaW5lIElOSVRfQ0lEUihuLCBob3N0X21hc2spICh7XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRjb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7XFx0XFx0XFxcXFxcbi1cXHREQ0lEUl9QVVQoKF9fbiktXFx1MDAzZWxlbiA/IChfX24pLVxcdTAwM2VuZXRzWzBdLmNpZHIgOiBob3N0X21hc2spO1xcXFxcXG4rXFx0Y29uc3Qgc3RydWN0IG5ldF9wcmVmaXhlcyAqX19uID0gcmN1X2RlcmVmZXJlbmNlKG4pO1xcdFxcXFxcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXggX19wID1cXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdF9fbi1cXHUwMDNlbGVuID8gUkVBRF9PTkNFKF9fbi1cXHUwMDNlbmV0c1swXSlcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdCA6IChzdHJ1Y3QgbmV0X3ByZWZpeCl7fTtcXHRcXHRcXFxcXFxuK1xcdERDSURSX1BVVChfX3AuY291bnQgPyBfX3AuY2lkciA6IGhvc3RfbWFzayk7XFx0XFx0XFxcXFxcbiB9KVxcbiBcXG4gI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqL1xcbkBAIC0zMTgsMjcgKzM0Miw0MyBAQCBzdHJ1Y3QgbXR5cGVfcmVzaXplX2FkIHtcXG4gfTtcXG4gXFxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG4tLyogTmV0d29yayBjaWRyIHNpemUgYm9vayBrZWVwaW5nIHdoZW4gdGhlIGhhc2ggc3RvcmVzIGRpZmZlcmVudFxcbi0gKiBzaXplZCBuZXR3b3Jrcy4gY2lkciA9PSByZWFsIGNpZHIgKyAxIHRvIHN1cHBvcnQgLzAuXFxuKy8qKlxcbisgKiBtdHlwZV9hZGRfY2lkciAtIEFkZCBhIENJRFIgZW50cnkgdG8gaGFzaCB0YWJsZSBib29ra2VlcGluZ1xcbisgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXRcXG4rICogQGg6IFBvaW50ZXIgdG8gdGhlIGh0eXBlXFxuKyAqIEBjaWRyOiBUaGUgQ0lEUiBwcmVmaXggbGVuZ3RoXFxuKyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gYWRkIEBjaWRyIHRvXFxuKyAqXFxuKyAqIFBlcmZvcm1zIGFuIHVwZGF0ZSBpZiBAY2lkciBpcyBmb3VuZCwgb3RoZXJ3aXNlIHBlcmZvcm1zIENPVy1zdHlsZVxcbisgKiBhbGxvY2F0aW9uIGFuZCByZXBsYWNlbWVudCB2aWEgUkNVLlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxcbiAgKi9cXG4gc3RhdGljIGludFxcbiBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcXG4ge1xcbi1cXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wO1xcbiBcXHRpbnQgaSwgaiwgZm91bmQsIGxlbiA9IDAsIHJldCA9IDA7XFxuK1xcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XFxuK1xcdHN0cnVjdCBuZXRfcHJlZml4IG5wO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZzZXQtXFx1MDAzZWxvY2spO1xcbiBcXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVxcdTAwM2VybmV0c1tuXSk7XFxuIFxcdC8qIEFkZCBpbiBpbmNyZWFzaW5nIHByZWZpeCBvcmRlciwgc28gbGFyZ2VyIGNpZHIgZmlyc3QgKi9cXG4gXFx0Zm9yIChpID0gMCwgZm91bmQgPSAtMTsgaSBcXHUwMDNjIG5ldHMtXFx1MDAzZWxlbjsgaSsrKSB7XFxuLVxcdFxcdGlmIChuZXRzLVxcdTAwM2VuZXRzW2ldLmNvdW50KVxcbitcXHRcXHRucCA9IFJFQURfT05DRShuZXRzLVxcdTAwM2VuZXRzW2ldKTtcXG4rXFx0XFx0aWYgKG5wLmNvdW50KVxcbiBcXHRcXHRcXHRsZW4rKztcXG4gXFx0XFx0aWYgKGZvdW5kICE9IC0xKSB7XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHR9IGVsc2UgaWYgKG5ldHMtXFx1MDAzZW5ldHNbaV0uY2lkciBcXHUwMDNjIGNpZHIpIHtcXG4rXFx0XFx0fSBlbHNlIGlmIChucC5jaWRyIFxcdTAwM2MgY2lkcikge1xcbiBcXHRcXHRcXHRmb3VuZCA9IGk7XFxuLVxcdFxcdH0gZWxzZSBpZiAobmV0cy1cXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpIHtcXG4tXFx0XFx0XFx0bmV0cy1cXHUwMDNlbmV0c1tpXS5jb3VudCsrO1xcbitcXHRcXHR9IGVsc2UgaWYgKG5wLmNpZHIgPT0gY2lkcikge1xcbitcXHRcXHRcXHRpZiAobnAuY291bnQgXFx1MDAzYyBDSURSX01BWF9DT1VOVCkge1xcbitcXHRcXHRcXHRcXHRucC5jb3VudCsrO1xcbitcXHRcXHRcXHRcXHRXUklURV9PTkNFKG5ldHMtXFx1MDAzZW5ldHNbaV0sIG5wKTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0cmV0ID0gLUVPVkVSRkxPVztcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4gXFx0XFx0fVxcbiBcXHR9XFxuQEAgLTM1MCw2ICszOTAsNyBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcXG4gXFx0fVxcbiBcXG4gXFx0dG1wLVxcdTAwM2VsZW4gPSBsZW47XFxuK1xcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXFx1MDAyNnRtcC1cXHUwMDNlc2VxLCBcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0Zm9yIChpID0gMCwgaiA9IDA7IGkgXFx1MDAzYyBuZXRzLVxcdTAwM2VsZW47IGkrKykge1xcbiBcXHRcXHRpZiAoaSA9PSBmb3VuZCkge1xcbiBcXHRcXHRcXHR0bXAtXFx1MDAzZW5ldHNbal0uY2lkciA9IGNpZHI7XFxuQEAgLTM3MSw0MiArNDEyLDYwIEBAIG10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbisvKipcXG4rICogbXR5cGVfZGVsX2NpZHIgLSBSZW1vdmUgQ0lEUiBlbnRyeSBhbmQgbWFpbnRhaW4gYXJyYXkgaW50ZWdyaXR5LlxcbisgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXQuXFxuKyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS5cXG4rICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGguXFxuKyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gcmVtb3ZlIEBjaWRyIGZyb21cXG4rICpcXG4rICogSWYgQ0lEUiBlbnRyeSBjb3VudCBmYWxscyB0byAwLCB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgXFxcInNoaWZ0LWxlZnRcXFwiXFxuKyAqIG9wZXJhdGlvbiBvbiBhbGwgZm9sbG93aW5nIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJyYXkgcmVtYWluc1xcbisgKiBjb250aWd1b3VzIGFuZCBtYWludGFpbnMgaXRzIGRlc2NlbmRpbmcgb3JkZXIgYnkgQ0lEUi4gVGhlIHZhY2F0ZWQgc2xvdFxcbisgKiBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheSBpcyB6ZXJvZWQgb3V0IChjaWRyPTAsIGNvdW50PTApLlxcbisgKi9cXG4gc3RhdGljIHZvaWRcXG4gbXR5cGVfZGVsX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXFxuIHtcXG4tXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcXG4tXFx0dTggaSwgaiwgbGVuID0gMDtcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cztcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXggbnA7XFxuIFxcdGludCBmb3VuZDtcXG4rXFx0dTggaSwgajtcXG4rXFxuK1xcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IG5ldF9wcmVmaXgpICE9IHNpemVvZih1MzIpKTtcXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0bmV0cyA9IF9faXBzZXRfZGVyZWZlcmVuY2UoaC1cXHUwMDNlcm5ldHNbbl0pO1xcbiBcXHRmb3IgKGkgPSAwLCBmb3VuZCA9IC0xOyBpIFxcdTAwM2MgbmV0cy1cXHUwMDNlbGVuOyBpKyspIHtcXG4tXFx0XFx0aWYgKG5ldHMtXFx1MDAzZW5ldHNbaV0uY291bnQpXFxuLVxcdFxcdFxcdGxlbisrO1xcbi1cXHRcXHRpZiAobmV0cy1cXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpXFxuK1xcdFxcdG5wID0gUkVBRF9PTkNFKG5ldHMtXFx1MDAzZW5ldHNbaV0pO1xcbitcXHRcXHRpZiAobnAuY291bnQgXFx1MDAyNlxcdTAwMjYgbnAuY2lkciA9PSBjaWRyKSB7XFxuK1xcdFxcdFxcdG5wLmNvdW50LS07XFxuIFxcdFxcdFxcdGZvdW5kID0gaTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXHRpZiAodW5saWtlbHkoZm91bmQgPT0gLTEpKVxcbiBcXHRcXHRnb3RvIHVubG9jaztcXG4gXFxuLVxcdG5ldHMtXFx1MDAzZW5ldHNbZm91bmRdLmNvdW50LS07XFxuLVxcdGlmIChuZXRzLVxcdTAwM2VuZXRzW2ZvdW5kXS5jb3VudClcXG4tXFx0XFx0Z290byB1bmxvY2s7XFxuLVxcdGxlbi0tO1xcbi1cXHR0bXAgPSBremFsbG9jX2ZsZXgoKnRtcCwgbmV0cywgbGVuLCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCF0bXApXFxuLVxcdFxcdC8qIExlYXZlIGEgaG9sZSAqL1xcbitcXHRpZiAobnAuY291bnQpIHtcXG4rXFx0XFx0V1JJVEVfT05DRShuZXRzLVxcdTAwM2VuZXRzW2ZvdW5kXSwgbnApO1xcbiBcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0fVxcbiBcXG4tXFx0dG1wLVxcdTAwM2VsZW4gPSBsZW47XFxuK1xcdHdyaXRlX3NlcWNvdW50X2JlZ2luKFxcdTAwMjZuZXRzLVxcdTAwM2VzZXEpO1xcbiBcXHRmb3IgKGkgPSAwLCBqID0gMDsgaSBcXHUwMDNjIG5ldHMtXFx1MDAzZWxlbjsgaSsrKSB7XFxuLVxcdFxcdGlmICghbmV0cy1cXHUwMDNlbmV0c1tpXS5jb3VudCB8fCBpID09IGZvdW5kKVxcbitcXHRcXHRpZiAoaSA9PSBmb3VuZClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdHRtcC1cXHUwMDNlbmV0c1tqXS5jaWRyID0gbmV0cy1cXHUwMDNlbmV0c1tpXS5jaWRyO1xcbi1cXHRcXHR0bXAtXFx1MDAzZW5ldHNbaisrXS5jb3VudCA9IG5ldHMtXFx1MDAzZW5ldHNbaV0uY291bnQ7XFxuK1xcbitcXHRcXHRucCA9IFJFQURfT05DRShuZXRzLVxcdTAwM2VuZXRzW2ldKTtcXG4rXFx0XFx0aWYgKGkgIT0gailcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShuZXRzLVxcdTAwM2VuZXRzW2pdLCBucCk7XFxuK1xcdFxcdGorKztcXG4gXFx0fVxcbi1cXHRyY3VfYXNzaWduX3BvaW50ZXIoaC1cXHUwMDNlcm5ldHNbbl0sIHRtcCk7XFxuLVxcdGtmcmVlX3JjdShuZXRzLCByY3UpO1xcbitcXG4rXFx0d2hpbGUgKGogXFx1MDAzYyBuZXRzLVxcdTAwM2VsZW4pXFxuK1xcdFxcdFdSSVRFX09OQ0UobmV0cy1cXHUwMDNlbmV0c1tqKytdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xcbitcXHR3cml0ZV9zZXFjb3VudF9lbmQoXFx1MDAyNm5ldHMtXFx1MDAzZXNlcSk7XFxuIHVubG9jazpcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnNldC1cXHUwMDNlbG9jayk7XFxuIH1cXG5AQCAtNDUxLDcgKzUxMCw3IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG4ge1xcbiBcXHRzdHJ1Y3QgaHR5cGUgKmggPSBzZXQtXFx1MDAzZWRhdGE7XFxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG4tXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cztcXG4gI2VuZGlmXFxuIFxcdHN0cnVjdCBodGFibGUgKnQ7XFxuIFxcdHN0cnVjdCBoYnVja2V0ICpuO1xcbkBAIC00NzcsMTcgKzUzNiwxNSBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxuIFxcdH1cXG4gI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSVBTRVRfTkVUX0NPVU5UOyBpKyspIHtcXG4tXFx0XFx0bmV0cyA9IGlwc2V0X2RlcmVmZXJlbmNlX25mbmwoaC1cXHUwMDNlcm5ldHNbaV0pO1xcbi1cXHRcXHR0bXAgPSBremFsbG9jX29iaigqdG1wLCBHRlBfQVRPTUlDKTtcXG4tXFx0XFx0aWYgKCF0bXApIHtcXG4tXFx0XFx0XFx0dTggajtcXG4rXFx0XFx0dTggajtcXG4gXFxuLVxcdFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBuZXRzLVxcdTAwM2VsZW47IGorKylcXG4tXFx0XFx0XFx0XFx0bmV0cy1cXHUwMDNlbmV0c1tqXS5jb3VudCA9IDA7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihoLVxcdTAwM2VybmV0c1tpXSwgdG1wKTtcXG4tXFx0XFx0XFx0a2ZyZWVfcmN1KG5ldHMsIHJjdSk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZzZXQtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRuZXRzID0gaXBzZXRfZGVyZWZlcmVuY2VfbmZubChoLVxcdTAwM2VybmV0c1tpXSk7XFxuK1xcdFxcdHdyaXRlX3NlcWNvdW50X2JlZ2luKFxcdTAwMjZuZXRzLVxcdTAwM2VzZXEpO1xcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgbmV0cy1cXHUwMDNlbGVuOyBqKyspXFxuK1xcdFxcdFxcdFdSSVRFX09OQ0UobmV0cy1cXHUwMDNlbmV0c1tqXSwgKHN0cnVjdCBuZXRfcHJlZml4KXt9KTtcXG4rXFx0XFx0d3JpdGVfc2VxY291bnRfZW5kKFxcdTAwMjZuZXRzLVxcdTAwM2VzZXEpO1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0fVxcbiAjZW5kaWZcXG4gfVxcbkBAIC0xMjUzLDMxICsxMzEwLDQxIEBAIG10eXBlX3Rlc3RfY2lkcnMoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbXR5cGVfZWxlbSAqZCxcXG4gI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXFxuIFxcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMxO1xcbiBcXHRzdHJ1Y3QgbXR5cGVfZWxlbSBvcmlnID0gKmQ7XFxuK1xcdHVuc2lnbmVkIGludCBzZXExO1xcbiBcXHRpbnQgcmV0LCBpLCBqLCBrO1xcbiAjZWxzZVxcbiBcXHRpbnQgcmV0LCBpLCBqO1xcbiAjZW5kaWZcXG4tXFx0dTMyIGtleSwgbXVsdGkgPSAwO1xcbitcXHR1bnNpZ25lZCBpbnQgc2VxMDtcXG4rXFx0dTMyIGtleSwgbXVsdGk7XFxuIFxcdHU4IHBvcztcXG4gXFxuIFxcdHByX2RlYnVnKFxcXCJ0ZXN0IGJ5IG5ldHNcXFxcblxcXCIpO1xcbiBcXHRyY3VfcmVhZF9sb2NrX2JoKCk7XFxuK3JldHJ5OlxcbitcXHRtdWx0aSA9IDA7XFxuIFxcdG5ldHMwID0gcmN1X2RlcmVmZXJlbmNlX2JoKGgtXFx1MDAzZXJuZXRzWzBdKTtcXG4rXFx0c2VxMCA9IHJlYWRfc2VxY291bnRfYmVnaW4oXFx1MDAyNm5ldHMwLVxcdTAwM2VzZXEpO1xcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcXG4gXFx0bmV0czEgPSByY3VfZGVyZWZlcmVuY2VfYmgoaC1cXHUwMDNlcm5ldHNbMV0pO1xcbitcXHRzZXExID0gcmVhZF9zZXFjb3VudF9iZWdpbihcXHUwMDI2bmV0czEtXFx1MDAzZXNlcSk7XFxuICNlbmRpZlxcbiBcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgbmV0czAtXFx1MDAzZWxlbiBcXHUwMDI2XFx1MDAyNiAhbXVsdGk7IGorKykge1xcbi1cXHRcXHRpZiAoIW5ldHMwLVxcdTAwM2VuZXRzW2pdLmNvdW50KVxcbitcXHRcXHRzdHJ1Y3QgbmV0X3ByZWZpeCBwMCA9IFJFQURfT05DRShuZXRzMC1cXHUwMDNlbmV0c1tqXSk7XFxuK1xcbitcXHRcXHRpZiAoIXAwLmNvdW50KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXFxuIFxcdFxcdG10eXBlX2RhdGFfcmVzZXRfZWxlbShkLCBcXHUwMDI2b3JpZyk7XFxuLVxcdFxcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMC1cXHUwMDNlbmV0c1tqXS5jaWRyLCBmYWxzZSk7XFxuK1xcdFxcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBwMC5jaWRyLCBmYWxzZSk7XFxuIFxcdFxcdGZvciAoayA9IDA7IGsgXFx1MDAzYyBuZXRzMS1cXHUwMDNlbGVuIFxcdTAwMjZcXHUwMDI2ICFtdWx0aTsgaysrKSB7XFxuLVxcdFxcdFxcdGlmICghbmV0czEtXFx1MDAzZW5ldHNba10uY291bnQpXFxuK1xcdFxcdFxcdHN0cnVjdCBuZXRfcHJlZml4IHAxID0gUkVBRF9PTkNFKG5ldHMxLVxcdTAwM2VuZXRzW2tdKTtcXG4rXFxuK1xcdFxcdFxcdGlmICghcDEuY291bnQpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRcXHRtdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czEtXFx1MDAzZW5ldHNba10uY2lkciwgdHJ1ZSk7XFxuK1xcdFxcdFxcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBwMS5jaWRyLCB0cnVlKTtcXG4gI2Vsc2VcXG4tXFx0XFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMwLVxcdTAwM2VuZXRzW2pdLmNpZHIpO1xcbitcXHRcXHRtdHlwZV9kYXRhX25ldG1hc2soZCwgcDAuY2lkcik7XFxuICNlbmRpZlxcbiBcXHRcXHRrZXkgPSBIS0VZKGQsIGgtXFx1MDAzZWluaXR2YWwsIHQtXFx1MDAzZWh0YWJsZV9iaXRzKTtcXG4gXFx0XFx0biA9IHJjdV9kZXJlZmVyZW5jZV9iaChoYnVja2V0KHQsIGtleSkpO1xcbkBAIC0xMzA0LDYgKzEzNzEsMTIgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLFxcbiBcXHR9XFxuIFxcdHJldCA9IDA7XFxuIHVubG9jazpcXG4rXFx0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXFx1MDAyNm5ldHMwLVxcdTAwM2VzZXEsIHNlcTApKVxcbitcXHRcXHRnb3RvIHJldHJ5O1xcbisjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcXG4rXFx0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXFx1MDAyNm5ldHMxLVxcdTAwM2VzZXEsIHNlcTEpKVxcbitcXHRcXHRnb3RvIHJldHJ5O1xcbisjZW5kaWZcXG4gXFx0cmN1X3JlYWRfdW5sb2NrX2JoKCk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtMTcwNyw2ICsxNzgwLDcgQEAgSVBTRVRfVE9LRU4oSFRZUEUsIF9jcmVhdGUpKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGlwX3NldCAqc2V0LFxcbiBcXHRcXHRcXHRcXHRrZnJlZShyY3VfZGVyZWZlcmVuY2VfcmF3KGgtXFx1MDAzZXJuZXRzWy0taV0pKTtcXG4gXFx0XFx0XFx0Z290byBmcmVlX2hyZWdpb247XFxuIFxcdFxcdH1cXG4rXFx0XFx0c2VxY291bnRfc3BpbmxvY2tfaW5pdChcXHUwMDI2bmV0cy1cXHUwMDNlc2VxLCBcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0UkNVX0lOSVRfUE9JTlRFUihoLVxcdTAwM2VybmV0c1tpXSwgbmV0cyk7XFxuIFxcdH1cXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xcbmluZGV4IGI0NGI5NWY3NjZiN2EuLmI2MDJjYzQzNTY1ZGQgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXFxuQEAgLTM4LDcgKzM4LDYgQEAgTU9EVUxFX0FMSUFTKFxcXCJpcF9zZXRfaGFzaDpuZXQsaWZhY2VcXFwiKTtcXG4gI2RlZmluZSBIVFlQRVxcdFxcdGhhc2hfbmV0aWZhY2VcXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX01VTFRJXFxuLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVQwXFxuIFxcbiAjZGVmaW5lIFNUUlNDUFkoYSwgYilcXHRzdHJzY3B5KGEsIGIsIElGTkFNU0laKVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xcbmluZGV4IDYyOTE1MzJiZTdhNWEuLjYxYWYxY2UyNzEyNzkgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xcbkBAIC0zNiw3ICszNiw2IEBAIE1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2hhc2g6bmV0LHBvcnQsbmV0XFxcIik7XFxuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xcbiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbiAjZGVmaW5lIElQU0VUX05FVF9DT1VOVCAyXFxuLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVQwXFxuIFxcbiAvKiBJUHY0IHZhcmlhbnQgKi9cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjI3OjEzLjAwODMxNjQwOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE4MTIxMDU1NTkxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0VUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVElGQUNFXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFBPUlRcIixcbiAgICBcIklQX1NFVF9IQVNIX0lQUE9SVE5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3NldF91YWRkXCIsXG4gICAgXCJpcF9zZXRfdWRlbFwiLFxuICAgIFwiaXBfc2V0X3V0ZXN0XCIsXG4gICAgXCJpcF9zZXRfZmx1c2hcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X2FkZFwiLFxuICAgIFwiaGFzaF9uZXRpZmFjZTRfZGVsXCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF90ZXN0XCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF9hZGRcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfZGVsXCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ0X3Rlc3RcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfZmx1c2hcIixcbiAgICBcImhhc2hfbmV0NF9hZGRcIixcbiAgICBcImhhc2hfbmV0NF9kZWxcIixcbiAgICBcImhhc2hfbmV0NF90ZXN0XCIsXG4gICAgXCJoYXNoX25ldDRfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBDSURSIG5ldHdvcmsgcHJlZml4ZXMgYXJlIHRyYWNrZWQgaW4gaXBzZXQgaGFzaCB0eXBlcy4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0cyBhcnJheSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIFJDVSByZWFsbG9jYXRpb24gb24gZXZlcnkgZGVsZXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwZGU2ZmVhZDZmZDQwNjEwMmQyNDdkZWM0NTRjOGVhZDgwYzE0NmQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwMzoyNzoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmggYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXG5pbmRleCBmMDBjODJhY2Q3ZjA1Li44MGNhNTIzZjMwNGJiIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFxuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGVfd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvamhhc2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zZXFsb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmhcdTAwM2VcbiBcbkBAIC05OCwxNCArOTksMzQgQEAgc3RydWN0IGh0YWJsZSB7XG4gI2RlZmluZSBJUFNFVF9ORVRfQ09VTlRcdFx0MVxuICNlbmRpZlxuIFxuLS8qIEJvb2sta2VlcGluZyBvZiB0aGUgcHJlZml4ZXMgYWRkZWQgdG8gdGhlIHNldCAqL1xuKy8qKlxuKyAqIHN0cnVjdCBuZXRfcHJlZml4IC0gUmVwcmVzZW50YXRpb24gb2YgYSBuZXR3b3JrIHByZWZpeC5cbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC5cbisgKiBAY291bnQ6IE51bWJlciBvZiBvY2N1cnJlbmNlcy5cbisgKi9cbiBzdHJ1Y3QgbmV0X3ByZWZpeCB7XG4tXHR1OCBjaWRyO1x0XHRcdC8qIHRoZSBjaWRyIHZhbHVlICovXG4tXHR1MzIgY291bnQ7XHRcdFx0LyogbnVtYmVyIG9mIGVsZW1lbnRzIG9mIHRoaXMgY2lkciAqL1xuK1x0dTMyIGNpZHI6ODtcbitcdHUzMiBjb3VudDoyNDtcbiB9O1xuIFxuKyNkZWZpbmUgQ0lEUl9NQVhfQ09VTlQgKCgxIFx1MDAzY1x1MDAzYyAyNCkgLSAxKVxuK1xuKy8qKlxuKyAqIHN0cnVjdCBuZXRfcHJlZml4ZXMgLSBBIGNvbGxlY3Rpb24gb2YgbmV0d29yayBwcmVmaXhlcy5cbisgKiBAcmN1OiBSQ1UgaGVhZFxuKyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0c1xuKyAqIEBsZW46IE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBhcnJheS5cbisgKiBAbmV0czogQXJyYXkgb2YgbmV0X3ByZWZpeCBzdHJ1Y3R1cmVzIChzb3J0ZWQgYnkgQ0lEUiBkZXNjZW5kaW5nKS5cbisgKlxuKyAqIEBuZXRzIGVudHJpZXMgYXJlIHVwZGF0ZWQgaW4gcGxhY2UgdW5kZXIgQHNldCdzIGxvY2suIEEgc2luZ2xlIGVudHJ5J3NcbisgKiBjaWRyL2NvdW50IHBhaXIgaXMgYWx3YXlzIHVwZGF0ZWQgYXRvbWljYWxseSB2aWEgUkVBRF9PTkNFKCkvV1JJVEVfT05DRSgpLFxuKyAqIGJ1dCByZW1vdmluZyBhbiBlbnRyeSBhbHNvIHNoaWZ0cyBldmVyeSBmb2xsb3dpbmcgZW50cnkgZG93biBieSBvbmUgc2xvdC5cbisgKiBMb2NrbGVzcyByZWFkZXJzIHRoYXQgc2NhbiB0aGUgd2hvbGUgYXJyYXkgKGkuZS4gbW9yZSB0aGFuIGEgc2luZ2xlXG4rICogaW5kZXhlZCBzbG90KSBtdXN0IHVzZSBAc2VxIHRvIGRldGVjdCBhbmQgcmV0cnkgYWNyb3NzIHN1Y2ggYSBzaGlmdC5cbisgKi9cbiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIHtcbiBcdHN0cnVjdCByY3VfaGVhZCByY3U7XG4rXHRzZXFjb3VudF9zcGlubG9ja190IHNlcTtcbiBcdHU4IGxlbjtcbiBcdHN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTtcbiB9O1xuQEAgLTE0Myw4ICsxNjQsMTEgQEAgaHRhYmxlX3NpemUodTggaGJpdHMpXG4gI2VuZGlmXG4gXG4gI2RlZmluZSBJTklUX0NJRFIobiwgaG9zdF9tYXNrKSAoe1x0XHRcdFx0XFxcbi1cdGNvbnN0IHN0cnVjdCBuZXRfcHJlZml4ZXMgKl9fbiA9IHJjdV9kZXJlZmVyZW5jZShuKTtcdFx0XFxcbi1cdERDSURSX1BVVCgoX19uKS1cdTAwM2VsZW4gPyAoX19uKS1cdTAwM2VuZXRzWzBdLmNpZHIgOiBob3N0X21hc2spO1xcXG4rXHRjb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7XHRcXFxuK1x0c3RydWN0IG5ldF9wcmVmaXggX19wID1cdFx0XHRcdFx0XFxcbitcdFx0X19uLVx1MDAzZWxlbiA/IFJFQURfT05DRShfX24tXHUwMDNlbmV0c1swXSlcdFx0XFxcbitcdFx0XHQgOiAoc3RydWN0IG5ldF9wcmVmaXgpe307XHRcdFxcXG4rXHREQ0lEUl9QVVQoX19wLmNvdW50ID8gX19wLmNpZHIgOiBob3N0X21hc2spO1x0XHRcXFxuIH0pXG4gXG4gI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqL1xuQEAgLTMxOCwyNyArMzQyLDQzIEBAIHN0cnVjdCBtdHlwZV9yZXNpemVfYWQge1xuIH07XG4gXG4gI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xuLS8qIE5ldHdvcmsgY2lkciBzaXplIGJvb2sga2VlcGluZyB3aGVuIHRoZSBoYXNoIHN0b3JlcyBkaWZmZXJlbnRcbi0gKiBzaXplZCBuZXR3b3Jrcy4gY2lkciA9PSByZWFsIGNpZHIgKyAxIHRvIHN1cHBvcnQgLzAuXG4rLyoqXG4rICogbXR5cGVfYWRkX2NpZHIgLSBBZGQgYSBDSURSIGVudHJ5IHRvIGhhc2ggdGFibGUgYm9va2tlZXBpbmdcbisgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXRcbisgKiBAaDogUG9pbnRlciB0byB0aGUgaHR5cGVcbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aFxuKyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gYWRkIEBjaWRyIHRvXG4rICpcbisgKiBQZXJmb3JtcyBhbiB1cGRhdGUgaWYgQGNpZHIgaXMgZm91bmQsIG90aGVyd2lzZSBwZXJmb3JtcyBDT1ctc3R5bGVcbisgKiBhbGxvY2F0aW9uIGFuZCByZXBsYWNlbWVudCB2aWEgUkNVLlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbiAgKi9cbiBzdGF0aWMgaW50XG4gbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG4ge1xuLVx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcbiBcdGludCBpLCBqLCBmb3VuZCwgbGVuID0gMCwgcmV0ID0gMDtcbitcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XG4rXHRzdHJ1Y3QgbmV0X3ByZWZpeCBucDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdC8qIEFkZCBpbiBpbmNyZWFzaW5nIHByZWZpeCBvcmRlciwgc28gbGFyZ2VyIGNpZHIgZmlyc3QgKi9cbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpKyspIHtcbi1cdFx0aWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudClcbitcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbitcdFx0aWYgKG5wLmNvdW50KVxuIFx0XHRcdGxlbisrO1xuIFx0XHRpZiAoZm91bmQgIT0gLTEpIHtcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0fSBlbHNlIGlmIChuZXRzLVx1MDAzZW5ldHNbaV0uY2lkciBcdTAwM2MgY2lkcikge1xuK1x0XHR9IGVsc2UgaWYgKG5wLmNpZHIgXHUwMDNjIGNpZHIpIHtcbiBcdFx0XHRmb3VuZCA9IGk7XG4tXHRcdH0gZWxzZSBpZiAobmV0cy1cdTAwM2VuZXRzW2ldLmNpZHIgPT0gY2lkcikge1xuLVx0XHRcdG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudCsrO1xuK1x0XHR9IGVsc2UgaWYgKG5wLmNpZHIgPT0gY2lkcikge1xuK1x0XHRcdGlmIChucC5jb3VudCBcdTAwM2MgQ0lEUl9NQVhfQ09VTlQpIHtcbitcdFx0XHRcdG5wLmNvdW50Kys7XG4rXHRcdFx0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tpXSwgbnApO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRyZXQgPSAtRU9WRVJGTE9XO1xuK1x0XHRcdH1cbiBcdFx0XHRnb3RvIHVubG9jaztcbiBcdFx0fVxuIFx0fVxuQEAgLTM1MCw2ICszOTAsNyBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcbiBcdH1cbiBcbiBcdHRtcC1cdTAwM2VsZW4gPSBsZW47XG4rXHRzZXFjb3VudF9zcGlubG9ja19pbml0KFx1MDAyNnRtcC1cdTAwM2VzZXEsIFx1MDAyNnNldC1cdTAwM2Vsb2NrKTtcbiBcdGZvciAoaSA9IDAsIGogPSAwOyBpIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaSsrKSB7XG4gXHRcdGlmIChpID09IGZvdW5kKSB7XG4gXHRcdFx0dG1wLVx1MDAzZW5ldHNbal0uY2lkciA9IGNpZHI7XG5AQCAtMzcxLDQyICs0MTIsNjAgQEAgbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbisvKipcbisgKiBtdHlwZV9kZWxfY2lkciAtIFJlbW92ZSBDSURSIGVudHJ5IGFuZCBtYWludGFpbiBhcnJheSBpbnRlZ3JpdHkuXG4rICogQHNldDogUG9pbnRlciB0byB0aGUgaXBfc2V0LlxuKyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS5cbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC5cbisgKiBAbjogVGhlIGluZGV4IG9mIHRoZSBuZXRfcHJlZml4IGFycmF5IHRvIHJlbW92ZSBAY2lkciBmcm9tXG4rICpcbisgKiBJZiBDSURSIGVudHJ5IGNvdW50IGZhbGxzIHRvIDAsIHRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSBcInNoaWZ0LWxlZnRcIlxuKyAqIG9wZXJhdGlvbiBvbiBhbGwgZm9sbG93aW5nIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJyYXkgcmVtYWluc1xuKyAqIGNvbnRpZ3VvdXMgYW5kIG1haW50YWlucyBpdHMgZGVzY2VuZGluZyBvcmRlciBieSBDSURSLiBUaGUgdmFjYXRlZCBzbG90XG4rICogYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkgaXMgemVyb2VkIG91dCAoY2lkcj0wLCBjb3VudD0wKS5cbisgKi9cbiBzdGF0aWMgdm9pZFxuIG10eXBlX2RlbF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxuIHtcbi1cdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XG4tXHR1OCBpLCBqLCBsZW4gPSAwO1xuK1x0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cztcbitcdHN0cnVjdCBuZXRfcHJlZml4IG5wO1xuIFx0aW50IGZvdW5kO1xuK1x0dTggaSwgajtcbitcbitcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IG5ldF9wcmVmaXgpICE9IHNpemVvZih1MzIpKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpKyspIHtcbi1cdFx0aWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudClcbi1cdFx0XHRsZW4rKztcbi1cdFx0aWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpXG4rXHRcdG5wID0gUkVBRF9PTkNFKG5ldHMtXHUwMDNlbmV0c1tpXSk7XG4rXHRcdGlmIChucC5jb3VudCBcdTAwMjZcdTAwMjYgbnAuY2lkciA9PSBjaWRyKSB7XG4rXHRcdFx0bnAuY291bnQtLTtcbiBcdFx0XHRmb3VuZCA9IGk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdH1cbiBcdGlmICh1bmxpa2VseShmb3VuZCA9PSAtMSkpXG4gXHRcdGdvdG8gdW5sb2NrO1xuIFxuLVx0bmV0cy1cdTAwM2VuZXRzW2ZvdW5kXS5jb3VudC0tO1xuLVx0aWYgKG5ldHMtXHUwMDNlbmV0c1tmb3VuZF0uY291bnQpXG4tXHRcdGdvdG8gdW5sb2NrO1xuLVx0bGVuLS07XG4tXHR0bXAgPSBremFsbG9jX2ZsZXgoKnRtcCwgbmV0cywgbGVuLCBHRlBfQVRPTUlDKTtcbi1cdGlmICghdG1wKVxuLVx0XHQvKiBMZWF2ZSBhIGhvbGUgKi9cbitcdGlmIChucC5jb3VudCkge1xuK1x0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tmb3VuZF0sIG5wKTtcbiBcdFx0Z290byB1bmxvY2s7XG4rXHR9XG4gXG4tXHR0bXAtXHUwMDNlbGVuID0gbGVuO1xuK1x0d3JpdGVfc2VxY291bnRfYmVnaW4oXHUwMDI2bmV0cy1cdTAwM2VzZXEpO1xuIFx0Zm9yIChpID0gMCwgaiA9IDA7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpKyspIHtcbi1cdFx0aWYgKCFuZXRzLVx1MDAzZW5ldHNbaV0uY291bnQgfHwgaSA9PSBmb3VuZClcbitcdFx0aWYgKGkgPT0gZm91bmQpXG4gXHRcdFx0Y29udGludWU7XG4tXHRcdHRtcC1cdTAwM2VuZXRzW2pdLmNpZHIgPSBuZXRzLVx1MDAzZW5ldHNbaV0uY2lkcjtcbi1cdFx0dG1wLVx1MDAzZW5ldHNbaisrXS5jb3VudCA9IG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudDtcbitcbitcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbitcdFx0aWYgKGkgIT0gailcbitcdFx0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tqXSwgbnApO1xuK1x0XHRqKys7XG4gXHR9XG4tXHRyY3VfYXNzaWduX3BvaW50ZXIoaC1cdTAwM2VybmV0c1tuXSwgdG1wKTtcbi1cdGtmcmVlX3JjdShuZXRzLCByY3UpO1xuK1xuK1x0d2hpbGUgKGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuKVxuK1x0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tqKytdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xuK1x0d3JpdGVfc2VxY291bnRfZW5kKFx1MDAyNm5ldHMtXHUwMDNlc2VxKTtcbiB1bmxvY2s6XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gfVxuQEAgLTQ1MSw3ICs1MTAsNyBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG4ge1xuIFx0c3RydWN0IGh0eXBlICpoID0gc2V0LVx1MDAzZWRhdGE7XG4gI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xuLVx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcbitcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHM7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgaHRhYmxlICp0O1xuIFx0c3RydWN0IGhidWNrZXQgKm47XG5AQCAtNDc3LDE3ICs1MzYsMTUgQEAgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxuIFx0fVxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIElQU0VUX05FVF9DT1VOVDsgaSsrKSB7XG4tXHRcdG5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtXHUwMDNlcm5ldHNbaV0pO1xuLVx0XHR0bXAgPSBremFsbG9jX29iaigqdG1wLCBHRlBfQVRPTUlDKTtcbi1cdFx0aWYgKCF0bXApIHtcbi1cdFx0XHR1OCBqO1xuK1x0XHR1OCBqO1xuIFxuLVx0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBqKyspXG4tXHRcdFx0XHRuZXRzLVx1MDAzZW5ldHNbal0uY291bnQgPSAwO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihoLVx1MDAzZXJuZXRzW2ldLCB0bXApO1xuLVx0XHRcdGtmcmVlX3JjdShuZXRzLCByY3UpO1xuLVx0XHR9XG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4rXHRcdG5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtXHUwMDNlcm5ldHNbaV0pO1xuK1x0XHR3cml0ZV9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4rXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBqKyspXG4rXHRcdFx0V1JJVEVfT05DRShuZXRzLVx1MDAzZW5ldHNbal0sIChzdHJ1Y3QgbmV0X3ByZWZpeCl7fSk7XG4rXHRcdHdyaXRlX3NlcWNvdW50X2VuZChcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnNldC1cdTAwM2Vsb2NrKTtcbiBcdH1cbiAjZW5kaWZcbiB9XG5AQCAtMTI1MywzMSArMTMxMCw0MSBAQCBtdHlwZV90ZXN0X2NpZHJzKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG10eXBlX2VsZW0gKmQsXG4gI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXG4gXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzMTtcbiBcdHN0cnVjdCBtdHlwZV9lbGVtIG9yaWcgPSAqZDtcbitcdHVuc2lnbmVkIGludCBzZXExO1xuIFx0aW50IHJldCwgaSwgaiwgaztcbiAjZWxzZVxuIFx0aW50IHJldCwgaSwgajtcbiAjZW5kaWZcbi1cdHUzMiBrZXksIG11bHRpID0gMDtcbitcdHVuc2lnbmVkIGludCBzZXEwO1xuK1x0dTMyIGtleSwgbXVsdGk7XG4gXHR1OCBwb3M7XG4gXG4gXHRwcl9kZWJ1ZyhcInRlc3QgYnkgbmV0c1xcblwiKTtcbiBcdHJjdV9yZWFkX2xvY2tfYmgoKTtcbityZXRyeTpcbitcdG11bHRpID0gMDtcbiBcdG5ldHMwID0gcmN1X2RlcmVmZXJlbmNlX2JoKGgtXHUwMDNlcm5ldHNbMF0pO1xuK1x0c2VxMCA9IHJlYWRfc2VxY291bnRfYmVnaW4oXHUwMDI2bmV0czAtXHUwMDNlc2VxKTtcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcbiBcdG5ldHMxID0gcmN1X2RlcmVmZXJlbmNlX2JoKGgtXHUwMDNlcm5ldHNbMV0pO1xuK1x0c2VxMSA9IHJlYWRfc2VxY291bnRfYmVnaW4oXHUwMDI2bmV0czEtXHUwMDNlc2VxKTtcbiAjZW5kaWZcbiBcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5ldHMwLVx1MDAzZWxlbiBcdTAwMjZcdTAwMjYgIW11bHRpOyBqKyspIHtcbi1cdFx0aWYgKCFuZXRzMC1cdTAwM2VuZXRzW2pdLmNvdW50KVxuK1x0XHRzdHJ1Y3QgbmV0X3ByZWZpeCBwMCA9IFJFQURfT05DRShuZXRzMC1cdTAwM2VuZXRzW2pdKTtcbitcbitcdFx0aWYgKCFwMC5jb3VudClcbiBcdFx0XHRjb250aW51ZTtcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcbiBcdFx0bXR5cGVfZGF0YV9yZXNldF9lbGVtKGQsIFx1MDAyNm9yaWcpO1xuLVx0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czAtXHUwMDNlbmV0c1tqXS5jaWRyLCBmYWxzZSk7XG4rXHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBwMC5jaWRyLCBmYWxzZSk7XG4gXHRcdGZvciAoayA9IDA7IGsgXHUwMDNjIG5ldHMxLVx1MDAzZWxlbiBcdTAwMjZcdTAwMjYgIW11bHRpOyBrKyspIHtcbi1cdFx0XHRpZiAoIW5ldHMxLVx1MDAzZW5ldHNba10uY291bnQpXG4rXHRcdFx0c3RydWN0IG5ldF9wcmVmaXggcDEgPSBSRUFEX09OQ0UobmV0czEtXHUwMDNlbmV0c1trXSk7XG4rXG4rXHRcdFx0aWYgKCFwMS5jb3VudClcbiBcdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMS1cdTAwM2VuZXRzW2tdLmNpZHIsIHRydWUpO1xuK1x0XHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBwMS5jaWRyLCB0cnVlKTtcbiAjZWxzZVxuLVx0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czAtXHUwMDNlbmV0c1tqXS5jaWRyKTtcbitcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAwLmNpZHIpO1xuICNlbmRpZlxuIFx0XHRrZXkgPSBIS0VZKGQsIGgtXHUwMDNlaW5pdHZhbCwgdC1cdTAwM2VodGFibGVfYml0cyk7XG4gXHRcdG4gPSByY3VfZGVyZWZlcmVuY2VfYmgoaGJ1Y2tldCh0LCBrZXkpKTtcbkBAIC0xMzA0LDYgKzEzNzEsMTIgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLFxuIFx0fVxuIFx0cmV0ID0gMDtcbiB1bmxvY2s6XG4rXHRpZiAocmVhZF9zZXFjb3VudF9yZXRyeShcdTAwMjZuZXRzMC1cdTAwM2VzZXEsIHNlcTApKVxuK1x0XHRnb3RvIHJldHJ5O1xuKyNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMlxuK1x0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXHUwMDI2bmV0czEtXHUwMDNlc2VxLCBzZXExKSlcbitcdFx0Z290byByZXRyeTtcbisjZW5kaWZcbiBcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTcwNyw2ICsxNzgwLDcgQEAgSVBTRVRfVE9LRU4oSFRZUEUsIF9jcmVhdGUpKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGlwX3NldCAqc2V0LFxuIFx0XHRcdFx0a2ZyZWUocmN1X2RlcmVmZXJlbmNlX3JhdyhoLVx1MDAzZXJuZXRzWy0taV0pKTtcbiBcdFx0XHRnb3RvIGZyZWVfaHJlZ2lvbjtcbiBcdFx0fVxuK1x0XHRzZXFjb3VudF9zcGlubG9ja19pbml0KFx1MDAyNm5ldHMtXHUwMDNlc2VxLCBcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRcdFJDVV9JTklUX1BPSU5URVIoaC1cdTAwM2VybmV0c1tpXSwgbmV0cyk7XG4gXHR9XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXG5pbmRleCBiNDRiOTVmNzY2YjdhLi5iNjAyY2M0MzU2NWRkIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcbkBAIC0zOCw3ICszOCw2IEBAIE1PRFVMRV9BTElBUyhcImlwX3NldF9oYXNoOm5ldCxpZmFjZVwiKTtcbiAjZGVmaW5lIEhUWVBFXHRcdGhhc2hfbmV0aWZhY2VcbiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9NVUxUSVxuLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVQwXG4gXG4gI2RlZmluZSBTVFJTQ1BZKGEsIGIpXHRzdHJzY3B5KGEsIGIsIElGTkFNU0laKVxuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcbmluZGV4IDYyOTE1MzJiZTdhNWEuLjYxYWYxY2UyNzEyNzkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcbkBAIC0zNiw3ICszNiw2IEBAIE1PRFVMRV9BTElBUyhcImlwX3NldF9oYXNoOm5ldCxwb3J0LG5ldFwiKTtcbiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cbiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xuICNkZWZpbmUgSVBTRVRfTkVUX0NPVU5UIDJcbi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMFxuIFxuIC8qIElQdjQgdmFyaWFudCAqL1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6Mjc6MTMuMDA4MzE3ODk4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc1MTE5ODI1NDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXBzZXQgSGFzaCBDSURSIFRyYWNraW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGlwc2V0YC4gSXQncyB0b3VjaGluZyBgaXBfc2V0X2hhc2hfZ2VuLmhgLCBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AsIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gQmFzaWNhbGx5LCB0aGUgY29yZSBvZiBob3cgaXBzZXQgaGFzaCB0eXBlcyBoYW5kbGUgQ0lEUiBwcmVmaXhlcyBpcyBiZWluZyB1cGRhdGVkLiBUaGUgYmlnIGRlYWwgaGVyZSBpcyB0aGUgdXNlIG9mIGBzZXFjb3VudF9zcGlubG9ja190YCB0byBtYW5hZ2UgcmVvcmRlcmluZyBvZiB0aGUgYG5ldHNgIGFycmF5IGluLXBsYWNlLiBUaGlzIGlzIGdyZWF0OyBpdCBtZWFucyB3ZSBjYW4gYXZvaWQgcmVhbGxvY2F0aW5nIGV2ZXJ5dGhpbmcgd2l0aCBSQ1Ugb24gZXZlcnkgZGVsZXRlLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIHdpbi5cblxuVGhpcyBhZmZlY3RzIGBtdHlwZV9hZGRfY2lkcmAsIGBtdHlwZV9kZWxfY2lkcmAsIGBtdHlwZV9mbHVzaGAsIGFuZCBgbXR5cGVfdGVzdF9jaWRyc2AuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm8gcXVlc3Rpb24uIFRoaXMgKm5lZWRzKiB0byBiZSBmdXp6ZWQsIGltbWVkaWF0ZWx5LiBHb3R0YSBmaW5kIGFueSBoaWRkZW4gaXNzdWVzIGhlcmUgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG5cbk5vdywgbGV0J3MgcGlucG9pbnQgdGhlIGNydWNpYWwgZnVuY3Rpb25zLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBtYWNyb3Mgb3IgdGVtcGxhdGVzIHdpdGhpbiBgaXBfc2V0X2hhc2hfZ2VuLmhgLCB3aGljaCBhcmUgdGhlbiBpbnN0YW50aWF0ZWQgYW5kIHVzZWQgYnkgdGhlIEMgZmlsZXMgZm9yIGRpZmZlcmVudCBoYXNoIHR5cGVzLiBgbXR5cGVfYWRkX2NpZHJgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGluIHRoZSBoZWFkZXIsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGdldHMgaW5jbHVkZWQgYW5kIHJlbmFtZWQvdXNlZCBieSB0aGUgQyBmaWxlcy4gSXQncyBub3QgZGlyZWN0bHkgZXhwb3J0ZWQsIGJ1dCBpdCdzIGZ1bmRhbWVudGFsbHkgcGFydCBvZiB0aGVzZSBgaGFzaF8qYCBtb2R1bGVzLlxuXG5BaCwgcmlnaHQuIFNpbmNlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24gaW4gdGhlIGhlYWRlciwgSSBzaG91bGQgY2hlY2sgd2hlcmUgYG10eXBlX2FkZF9jaWRyYCBpcyBhY3R1YWxseSAqdXNlZCouIEl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgYnkgYG10eXBlX2FkZGAsIHdoaWNoIGlzIGFsc28gYSB0ZW1wbGF0ZS4gU28sIGEgZ3JlcCBmb3IgYG10eXBlX2FkZGAgb3IgZXZlbiBgbXR5cGVfYWRkX2NpZHJgIHNob3VsZCBiZSB0aGUgYmVzdCB3YXkgdG8gdW5jb3ZlciB0aGUgY2FsbCBjaGFpbi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnRzIHRvIHJlYWxseSBmb2N1cyBvbiBmb3IgZnV6emluZyBhbmQgdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjAzNCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjM2OjQ4LjEyODE0NjMwOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY1NTA5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdHlwZV9hZGRfY2lkclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIxOS0jdW5kZWYgbXR5cGVfZXh0X2NsZWFudXBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIyMDojdW5kZWYgbXR5cGVfYWRkX2NpZHJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMS0jdW5kZWYgbXR5cGVfZGVsX2NpZHJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY3LSNkZWZpbmUgbXR5cGVfZXh0X2NsZWFudXBcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2V4dF9jbGVhbnVwKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjY4OiNkZWZpbmUgbXR5cGVfYWRkX2NpZHJcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZF9jaWRyKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY5LSNkZWZpbmUgbXR5cGVfZGVsX2NpZHJcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbF9jaWRyKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0zMzU9c3RydWN0IG10eXBlX3Jlc2l6ZV9hZCB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTM0NS0vKipcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjM0NjogKiBtdHlwZV9hZGRfY2lkciAtIEFkZCBhIENJRFIgZW50cnkgdG8gaGFzaCB0YWJsZSBib29ra2VlcGluZ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzQ3LSAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0zNTc9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MzU4Om10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzU5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg4PW10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xMTEzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBJUFNFVF9ORVRfQ09VTlQ7IGkrKylcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjExMTQ6XFx0XFx0bXR5cGVfYWRkX2NpZHIoc2V0LCBoLCBEQ0lEUl9HRVQoZC1cXHUwMDNlY2lkciwgaSksIGkpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTExNS0jZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6MzY6NDguMTcyODA1MDg1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAzNjUzODQxMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBJUCBTZXQgSGFzaCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlc2UgSVAgc2V0IGZ1bmN0aW9ucyBhcmUgZ2VuZXJhdGVkLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUga2V5IGlzIHRoaXMgYElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAgbWFjcm8uIE15IGltbWVkaWF0ZSB0YXNrIGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBgTVRZUEVgIHJlcHJlc2VudHMgaW4gYSBjb3VwbGUgb2Ygc3BlY2lmaWMgZmlsZXM6IGBpcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCBhbmQgYGlwX3NldF9oYXNoX25ldHBvcnRuZXQuY2AuXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGZpcnN0LiBBaGEhIEhlcmUgd2Ugc2VlIHRoZSBkZWZpbml0aW9uOiBgI2RlZmluZSBNVFlQRSBoYXNoX25ldGlmYWNlNGAgYW5kLCBJJ2QgYmV0LCBgaGFzaF9uZXRpZmFjZTZgIGFzIHdlbGwuIFRoYXQgZ2l2ZXMgbWUgYSBjbGVhciBpZGVhIG9mIHdoYXQgdG8gZXhwZWN0IHdoZW4gaW5zcGVjdGluZyB0aGUgY29udGVudHMgb2YgYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIG5leHQuIExldCdzIGdldCB0byB0aGUgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ5NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0Njo1MS44MjY2NDg5MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODEwNzcwNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBNVFlQRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTEyOD1oYXNoX25ldGlmYWNlNF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTMzLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxMzQ6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfbmV0aWZhY2U0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTEzNS0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzYyPWhhc2hfbmV0aWZhY2U2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRpZmFjZTZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zNjktXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM3MDojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRpZmFjZTZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzcxLSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ2OjUyLjIwNzczMzg5MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyOTQ4OTU0NDkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIEludGVyZmFjZSBIYXNoaW5nIEZ1bmN0aW9ucyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IG5ldHdvcmsgaW50ZXJmYWNlIGhhc2hpbmcsIGFuZCB0aGUga2V5IGZ1bmN0aW9ucyBzZWVtIHRvIGJlIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBgaGFzaF9uZXRpZmFjZTRfZGVsYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCB0aGVuIHRoZSBJUHY2IHZlcnNpb25zOiBgaGFzaF9uZXRpZmFjZTZfYWRkYCwgYW5kIHNvIG9uLiBQcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG5hbWluZyBjb252ZW50aW9uLCBJIGFwcHJlY2lhdGUgdGhhdC4gTm93LCB3aGVyZSBhcmUgdGhlc2UgYWN0dWFsbHkgaW1wbGVtZW50ZWQgYW5kIGhvdyBhcmUgdGhleSB1c2VkPyBNeSBndXQgc2F5cyB0aGUgY29yZSBsb2dpYyB3aWxsIGJlIGluIGBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNgLiBUaGF0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGludGVyZmFjZS1iYXNlZCBzZXRzIGFyZSBidWlsdCBhbmQgbWFuYWdlZC4gTGV0J3MgZGl2ZSBpbiB0aGVyZSBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTM0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDc6MDUuMTU2NjkwNDcyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTE4NjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNkZWZpbmUgTVRZUEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9MTMxPWhhc2hfbmV0cG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnRuZXQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzctXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM6MTM4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldHBvcnRuZXQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtMTM5LSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jPTQyNT1oYXNoX25ldHBvcnRuZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0bmV0Nl9lbGVtICpuZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDMzLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jOjQzNDojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRwb3J0bmV0Nlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTQzNS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzowNS4yMDI2MTc1MjdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzA3NDMwMzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyBgSVBfU0VUX0hBU0hfV0lUSF9ORVRTYCBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AgY29uY2VwdCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogd2hlcmUgZWxzZSBpcyB0aGlzIGJlaW5nIHVzZWQ/IElzIHRoaXMgaXNvbGF0ZWQgdG8gdGhlIGN1cnJlbnQgY29udGV4dCwgb3IgaXMgdGhpcyBhIGJ1aWxkaW5nIGJsb2NrIGZvciBzb21ldGhpbmcgbGFyZ2VyPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaXRzIGltcGxlbWVudGF0aW9uIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIGFueSBjaGFuZ2VzIG9yIG1vZGlmaWNhdGlvbnMuIEFyZSB0aGVyZSBvdGhlciBmaWxlcyBpbiB0aGlzIHByb2plY3QsIG9yIGV2ZW4gaW4gcmVsYXRlZCBwcm9qZWN0cywgdGhhdCByZWx5IG9uIHRoaXMgcGFydGljdWxhciBoYXNoIGltcGxlbWVudGF0aW9uPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGltcGFjdCByYWRpdXMuIEtub3dpbmcgd2hpY2ggb3RoZXIgYXJlYXMgdXNlIHRoaXMgd2lsbCBkZXRlcm1pbmUgaG93IHRob3JvdWdobHkgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMuIFRoaXMgZmVlbHMgbGlrZSB0aGUga2luZCBvZiBmdW5jdGlvbiB0aGF0IGNvdWxkIGJlIGVpdGhlciBpc29sYXRlZCBhbmQgc3BlY2lmaWMsIG9yIGEgbW9yZSBnZW5lcmFsaXplZCwgY29yZSBmdW5jdGlvbi4gVGltZSB0byBmaW5kIG91dCFcblxuXG4iLCJJbnB1dFRva2VucyI6ODY5OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjA5LjUxMDA1MTQxNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2OTk0MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYz0zNj1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOmlwLHBvcnQsbmV0XFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTQ0LSAqL1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6NDU6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNfUEFDS0VEXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy00Ni0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jOjQ3OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy00OC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MzM9TU9EVUxFX0FMSUFTKFxcXCJpcF9zZXRfaGFzaDpuZXRcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMzYtI2RlZmluZSBIVFlQRVxcdFxcdGhhc2hfbmV0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYzozNzojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMzgtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzU9TU9EVUxFX0FMSUFTKFxcXCJpcF9zZXRfaGFzaDpuZXQsaWZhY2VcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zOC0jZGVmaW5lIEhUWVBFXFx0XFx0aGFzaF9uZXRpZmFjZVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzozOTojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00MC0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTVVMVElcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM9MzI9TU9EVUxFX0FMSUFTKFxcXCJpcF9zZXRfaGFzaDpuZXQsbmV0XFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM1LSNkZWZpbmUgSFRZUEVcXHRcXHRoYXNoX25ldG5ldFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MzY6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3LSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRNQVNLXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0zNT1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOm5ldCxwb3J0XFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zOS0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYzo0MDojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTQxLVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtNDUtICovXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6NDY6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNfUEFDS0VEXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtNDctXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYz0zMj1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOm5ldCxwb3J0LG5ldFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtMzYtI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX1BST1RPXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM6Mzc6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0zOC0jZGVmaW5lIElQU0VUX05FVF9DT1VOVCAyXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjA5LjU1Mzc1Nzk4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDc0MDAyNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIElQIFNldCBIYXNoaW5nIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaGFzaF9uZXRgLCBgaGFzaF9uZXRpZmFjZWAsIGBoYXNoX25ldG5ldGAsIGBoYXNoX25ldHBvcnRgLCBgaGFzaF9uZXRwb3J0bmV0YCwgYW5kIGBoYXNoX2lwcG9ydG5ldGAgYWxsIHJlbHkgb24gYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AuIFRoZSBrZXkgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBpcF9zZXRfaGFzaF9nZW4uaGAsIHdoaWNoIGlzIGEgY29tbW9uIGluY2x1ZGUsIHNvIHRoaXMgY291bGQgaGF2ZSB3aWRlc3ByZWFkIGltcGxpY2F0aW9ucyBhY3Jvc3MgYWxsIG9mIHRob3NlIGhhc2ggdHlwZXMuXG5cbkJ1dCB3YWl0LCB0aGlzIGlzbid0IGp1c3QgYSBnZW5lcmljIGhlYWRlciBtb2RpZmljYXRpb24uIFRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gQWhhLCBpdCdzIHJlbW92aW5nIGAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMGAgaW4gdGhvc2Ugc3BlY2lmaWMgZmlsZXMuIFRoYXQncyB0aGUgcmVhbCBjcnV4IG9mIHRoaXMuIE5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBJUF9TRVRfSEFTSF9XSVRIX05FVDBgIGFjdHVhbGx5ICpkaWQqLiBXaGF0IGZ1bmN0aW9uYWxpdHkgaXMgYmVpbmcgYWx0ZXJlZCBvciByZW1vdmVkIGJ5IHRoaXMgcmVmYWN0b3Jpbmc/IEl0J3MgZ29pbmcgdG8gYmUgZXNzZW50aWFsIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGRpZmZlcmVudCBhcyBhIHJlc3VsdCBvZiB0aGUgY2hhbmdlcyB0byB0aGUgZmlsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4ODcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDc6MTQuMjAxMTYxMTc1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzkwODMzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVBfU0VUX0hBU0hfV0lUSF9ORVQwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzoxNC4yNDUwNzgwNzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwMzU2Mjg1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBSZW1vdmFsIG9mIElQIFNldCBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGlzIGNvZGUgd2FzIHJlbW92ZWQgZnJvbSBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgYW5kIGBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNgLiBUaGF0J3MgYSBrZXkgZGV0YWlsLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaHk/IFdoYXQgY2hhbmdlZD9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIHdhcyBhIGRlbGliZXJhdGUgZGVzaWduIGRlY2lzaW9uLCBhIHJlZmFjdG9yaW5nLCBvciBhIGJ1ZyBmaXguXG5cbk15IG5leHQgc3RlcCBpcyB0byBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIHRoZSBleHBlY3RlZCBmbGFncyDigJMgc3BlY2lmaWNhbGx5IGBJUF9TRVRgLCBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBhbmQgcG90ZW50aWFsbHkgb3RoZXJzIOKAkyBhcmUgc3RpbGwgYXZhaWxhYmxlIGFuZCBlbmFibGVkLiBUaGlzIHdpbGwgdGVsbCBtZSBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBzaW1wbHkgZGlzYWJsZWQsIG9yIGlmIHRoZSAqb3B0aW9uKiBpdHNlbGYgaXMgZ29uZS5cblxuVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUsIEknbGwgbmVlZCB0byBkaXZlIGludG8gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJIGNhbiBjb25maXJtIHRoZSBzdGF0dXMgb2YgdGhvc2Ugb3B0aW9ucyBhbmQgdW5kZXJzdGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEknbSBsb29raW5nIGZvciBhbnkgY2x1ZXMgYWJvdXQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIHJlbW92YWwgb3IgbW9kaWZpY2F0aW9uLiBJcyBpdCBub3cgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZT8gUGFydCBvZiBhIGJyb2FkZXIgZmVhdHVyZT8gT3IsIGlzIGl0IHBlcmhhcHMgZGVwcmVjYXRlZCBlbnRpcmVseT8gTGV0J3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMzgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzoxOS40NDg2NDM2NTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDA0MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRfSEFTSF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz00Nj1jb25maWcgSVBfU0VUX0JJVE1BUF9QT1JUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTQtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NjU6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTczLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NDpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFjIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMwOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzgtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDc6MTkuNDk4MDU0NTUxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODMxMDc0MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgSVAgU2V0cyBhbmQgVGhlaXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gd2UncmUgZ29pbmcgdG8gZW5hYmxlIGEgc3VpdGUgb2YgYElQX1NFVGAgZmVhdHVyZXMg4oCTIHNwZWNpZmljYWxseSBgSVBfU0VUYCwgYElQX1NFVF9IQVNIX05FVGAsIGBJUF9TRVRfSEFTSF9ORVRJRkFDRWAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUYCwgYElQX1NFVF9IQVNIX05FVE5FVGAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUYCwgYW5kIGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgLiBCZWZvcmUgd2UgY29tbWl0IHRvIHRoaXMsIHRob3VnaCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcy4gR290dGEgbWFrZSBzdXJlIHdlJ3JlIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBjcml0aWNhbCBpbiB0aGUga2VybmVsIGNvbmZpZy4gTGV0J3Mgc2VlIHdoYXQgYElQX1NFVGAgcmVsaWVzIG9uLiBUaGF0J3MgdGhlIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTk2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDc6MjMuMjgxMTY0OTg1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQzMjUzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NFVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjIzLjMyNDYwNzcyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjk4ODYyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkxvY2F0aW5nIHRoZSBJUF9TRVQgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSB0aGUgYElQX1NFVGAgY29uZmlndXJhdGlvbiBvcHRpb24gbGl2ZXMgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIGl0cyBmdW5jdGlvbiwgaXMgdGhhdCBpdCB3b3VsZCBiZSByZWxhdGVkIHRvIG5ldHdvcmtpbmcgb3IgbmV0ZmlsdGVyLiBJJ20gdGhpbmtpbmcsIFwiV2hlcmUgd291bGQgdGhpcyBzb3J0IG9mIGZlYXR1cmUgYmUgZGVmaW5lZD9cIiBMZXQgbWUgdHJ5IGFuZCBzZWFyY2ggd2l0aGluIHRoZSBrZXJuZWwgc291cmNlLiBBaCBoYSEgSSBiZWxpZXZlIEkgc2VlIGl0IG5vdy4gSSd2ZSBmb3VuZCBpdDogYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgcmlnaHQgd2hlcmUgSSdkIGV4cGVjdCBpdCwgZ2l2ZW4gdGhhdCBJUCBzZXRzIGFyZSBkZWVwbHkgaW50ZXJ0d2luZWQgd2l0aCBuZXRmaWx0ZXIgZnVuY3Rpb25hbGl0eS4gVGhpcyBjb25maXJtcyBteSBpbml0aWFsIGludHVpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NzUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzoyNi42OTQ0OTc5ODRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzQyNDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyOm1lbnVjb25maWcgSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklQIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0PWlmIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTY6Y29uZmlnIElQX1NFVF9NQVhcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTctXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiBJUCBzZXRzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyODpjb25maWcgSVBfU0VUX0JJVE1BUF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM2LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozNzpjb25maWcgSVBfU0VUX0JJVE1BUF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00NS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDY6Y29uZmlnIElQX1NFVF9CSVRNQVBfUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOnBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTQtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NjU6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTczLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NDpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFjIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMwOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzgtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjI2LjczODI1MDk1OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzkxODg5MjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXaGVyZSBkb2VzIGBJUF9TRVRgIGNvbWUgaW50byBwbGF5IGluIHRoZSBOZXRmaWx0ZXIgZnJhbWV3b3JrPyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNvdXJjZSBvZiB0aGlzIG9wdGlvbi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGxvb2sgd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGlzIHNlZW1zIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiBkaWdnaW5nLCBnaXZlbiB0aGUgY29udGV4dC4gSSdtIGFzc3VtaW5nIHRoYXQncyB3aGVyZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgcmVsYXRlZCB0byBJUCBTZXRzIHdpbGwgYmUgZGVmaW5lZCBhbmQsIGlkZWFsbHksIHNvdXJjZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gZGV0ZXJtaW5lIGhvdyBpdCBpcyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBzeXN0ZW0uIExldCdzIHNlZSB3aGF0IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIHJldmVhbHMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzMTMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzozMS41MzAxNDMxNzhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MzE4ODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZSBcXFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXFxcIlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTE2NjA9ZW5kbWVudVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjYyOnNvdXJjZSBcXFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXFxcIlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzozMS41NzU0ODU5MTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE1MjU4OTQxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEknbSB0aGUgb25lIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzLCBhbmQga2VlcGluZyBpbiBtaW5kIEknbSBhbiBleHBlcnQ6XG5cbioqRGVsdmluZyBpbnRvIHRoZSBGb3VuZGF0aW9ucyBvZiBgSVBfU0VUYCoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBgSVBfU0VUYC4gV2Uga25vdyBpdCdzIGEgcG93ZXJmdWwgdG9vbCwgYnV0IGxpa2UgYW55IHN0cm9uZyBzeXN0ZW0sIHVuZGVyc3RhbmRpbmcgaXRzIHVuZGVybHlpbmcgZGVwZW5kZW5jaWVzIGlzIGtleSB0byB1c2luZyBpdCBlZmZlY3RpdmVseSBhbmQgdHJvdWJsZXNob290aW5nIGFueSBpc3N1ZXMuIFRoZSByZWFsIHF1ZXN0aW9uIEknbSBncmFwcGxpbmcgd2l0aCByaWdodCBub3cgaXM6ICp3aGF0KiBwcmVjaXNlbHkgZG9lcyBgSVBfU0VUYCByZWx5IG9uPyBCZXlvbmQgdGhlIG9idmlvdXMga2VybmVsIG1vZHVsZXMgYW5kIHRoZSB1c2VyLXNwYWNlIHV0aWxpdGllcywgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIGV4YW1pbmUgdGhlIGRlZXBlciBwbHVtYmluZy4gQXJlIHRoZXJlIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9ucyB0aGF0IGFyZSBzdXBwb3J0ZWQgb3IgcmVxdWlyZWQ/IFdoYXQgYWJvdXQgbGlicmFyaWVzPyBBcmUgdGhlcmUgYW55IGxvd2VyLWxldmVsIG5ldHdvcmsgc3RhY2sgY29tcG9uZW50cyB0aGF0IGBJUF9TRVRgIGludGVyZmFjZXMgd2l0aCB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQ/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHNwZWNpZmljIG5ldGZpbHRlciBob29rcyBpdCdzIGxldmVyYWdpbmc/IFRoaXMga2luZCBvZiBncmFudWxhciB1bmRlcnN0YW5kaW5nIGlzIGVzc2VudGlhbCBmb3Igb3B0aW1pemF0aW9uLCBkZWJ1Z2dpbmcsIGFuZCwgb2YgY291cnNlLCBhcmNoaXRlY3Rpbmcgc2VjdXJlIGFuZCBwZXJmb3JtYW50IG5ldHdvcmsgc29sdXRpb25zLiBUaGlzIGlzIHdoZXJlIEkgd2FudCB0byBmb2N1cywgSSB3YW50IHRvIG1hcCB0aGUgYElQX1NFVGAgbGFuZHNjYXBlIGZyb20gdGhlIGdyb3VuZCB1cCB0byByZWFsbHkgdW5kZXJzdGFuZCBpdCwgYW5kIG1ha2Ugc3VyZSB0aGF0IGl0IHBsYXlzIG5pY2Ugd2l0aCBhbGwgdGhlIG90aGVyIHRvb2xzIEknbSB1c2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MzAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzozNi43MjgwNzc4NjVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDA2ODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0yPW1lbnVjb25maWcgSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklQIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNS1cXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNj1jb25maWcgSVBfU0VUX01BWFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE5LVxcdHJhbmdlIDIgNjU1MzRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MjA6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjEtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTI4PWNvbmZpZyBJUF9TRVRfQklUTUFQX0lQXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJiaXRtYXA6aXAgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjMwOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMxLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0zNz1jb25maWcgSVBfU0VUX0JJVE1BUF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Mzk6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDAtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTQ2PWNvbmZpZyBJUF9TRVRfQklUTUFQX1BPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcImJpdG1hcDpwb3J0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo0ODpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00OS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NTU9Y29uZmlnIElQX1NFVF9IQVNIX0lQXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU2LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo1NzpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01OC1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NjU9Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo2NzpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02OC1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NzQ9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03NS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NjpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03Ny1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9ODM9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVElQXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsaXAgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjg1OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg2LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz05Mz1jb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5NTpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05Ni1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTAzPWNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFjIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMDU6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA2LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMTI9Y29uZmlnIElQX1NFVF9IQVNIX01BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcImhhc2g6bWFjIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMTQ6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMjE9Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIzOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyNC1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTMwPWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMyOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMy1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTM5PWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE0MTpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDItXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1MDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTEtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE1OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTYwOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2MS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTY4PWNvbmZpZyBJUF9TRVRfTElTVF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY5LVxcdHRyaXN0YXRlIFxcXCJsaXN0OnNldCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTcwOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3MS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTc4PWNvbmZpZyBHQ09WX1BST0ZJTEVfSVBTRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTc5LVxcdGJvb2wgXFxcIkVuYWJsZSBHQ09WIHByb2ZpbGluZyBmb3IgaXBzZXRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE4MDpcXHRkZXBlbmRzIG9uIEdDT1ZfS0VSTkVMXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE4MS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjM2Ljc3NTA4ODk3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNjYyMTA4NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBJUCBTZXQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGNvbmZpZ3VyaW5nIGBJUF9TRVRgLiBOYXR1cmFsbHksIGl0IHJlbGllcyBvbiBib3RoIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAsIHRoYXQncyBhIGdpdmVuLiBXZSdsbCBkZWZpbml0ZWx5IHdhbnQgdG8gZW5hYmxlIGBJUF9TRVRgIGl0c2VsZiwgYW5kIHRoZW4sIGZvciBhIHJvYnVzdCBpbXBsZW1lbnRhdGlvbiwgSSdtIHRoaW5raW5nIHdlIHNob3VsZCBhbHNvIGVuYWJsZSBhIGZldyBoYXNoIHR5cGVzOiBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUTkVUYCwgYElQX1NFVF9IQVNIX05FVFBPUlRgLCBhbmQgYElQX1NFVF9IQVNIX0lQUE9SVE5FVGAuIFRob3NlIHNlZW0gbGlrZSB0aGUgbW9zdCBjb21tb24gYW5kIHZlcnNhdGlsZSBvcHRpb25zIHRvIHN0YXJ0IHdpdGguXG5cbkhvbGQgb24gYSBzZWNvbmQsIHRoYXQgYG10eXBlX2FkZF9jaWRyYCBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgc3RhdGljLiBUaGF0IG1lYW5zIGl0J3Mgbm90IGV4cG9ydGVkLCBzbyBpdCdzIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSBpdHMgY29tcGlsYXRpb24gdW5pdC4gSG1tLCB0aGF0IGNvbXBsaWNhdGVzIHRoaW5ncy4gV2UgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyAqYXJlKiBleHBvcnRlZCwgb3IgYXQgbGVhc3Qgd2hpY2ggb25lcyB3ZSAqY2FuKiBsZXZlcmFnZS5cblxuTGV0J3MgdHJhY2UgYmFjayBob3cgYG10eXBlX2FkZF9jaWRyYCBpcyBiZWluZyB1c2VkLiBBaCwgaXQncyBjYWxsZWQgZnJvbSBgbXR5cGVfYWRkYC4gRGFtbWl0LCBgbXR5cGVfYWRkYCBpcyBhbHNvIHN0YXRpYy4gT2theSwgdGhpcyBpc24ndCBnZXR0aW5nIHVzIGFueXdoZXJlLiBMZXQncyBzZWUgaWYgdGhlcmUgaXMgc29tZXRoaW5nIG1vcmUgYXBwcm9hY2hhYmxlIGluIGBpcF9zZXRfaGFzaF9nZW4uaGAgdG8gc2VlIGhvdyBgbXR5cGVfYWRkYCBpcyB1c2VkLiBUaGlzIHNlZW1zIGxpa2UgdGhlIGtleSBwbGFjZSBmb3IgaG93IHRoZSBzZXRzIGFyZSBnZW5lcmF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NjM2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjQyLjA0MTMwMjQzWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMyOTUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdHlwZV9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIxOS0jdW5kZWYgbXR5cGVfZXh0X2NsZWFudXBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIyMDojdW5kZWYgbXR5cGVfYWRkX2NpZHJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMS0jdW5kZWYgbXR5cGVfZGVsX2NpZHJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjMxLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjMyOiN1bmRlZiBtdHlwZV9hZGRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIzMy0jdW5kZWYgbXR5cGVfZGVsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI2Ny0jZGVmaW5lIG10eXBlX2V4dF9jbGVhbnVwXFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9leHRfY2xlYW51cClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI2ODojZGVmaW5lIG10eXBlX2FkZF9jaWRyXFx0XFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9hZGRfY2lkcilcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI2OS0jZGVmaW5lIG10eXBlX2RlbF9jaWRyXFx0XFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9kZWxfY2lkcilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjc5LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjgwOiNkZWZpbmUgbXR5cGVfYWRkXFx0XFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9hZGQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yODEtI2RlZmluZSBtdHlwZV9kZWxcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MzM1PXN0cnVjdCBtdHlwZV9yZXNpemVfYWQge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0zNDUtLyoqXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDozNDY6ICogbXR5cGVfYWRkX2NpZHIgLSBBZGQgYSBDSURSIGVudHJ5IHRvIGhhc2ggdGFibGUgYm9va2tlZXBpbmdcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTM0Ny0gKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MzU3PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjM1ODptdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTM1OS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc0MD1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo3NDE6bXR5cGVfYWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC03NDItXFx0ICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NzUyPW10eXBlX3Jlc2l6ZShzdHJ1Y3QgaXBfc2V0ICpzZXQsIGJvb2wgcmV0cmllZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTA0LVxcdFxcdGlmICh4LVxcdTAwM2VhZCA9PSBJUFNFVF9BREQpIHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjkwNTpcXHRcXHRcXHRtdHlwZV9hZGQoc2V0LCBcXHUwMDI2eC1cXHUwMDNlZCwgXFx1MDAyNngtXFx1MDAzZWV4dCwgXFx1MDAyNngtXFx1MDAzZW1leHQsIHgtXFx1MDAzZWZsYWdzKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNi1cXHRcXHR9IGVsc2Uge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD05ODc9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6OTg4Om10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTg5LVxcdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTExMy1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSVBTRVRfTkVUX0NPVU5UOyBpKyspXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoxMTE0OlxcdFxcdG10eXBlX2FkZF9jaWRyKHNldCwgaCwgRENJRFJfR0VUKGQtXFx1MDAzZWNpZHIsIGkpLCBpKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTExMTUtI2VuZGlmXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE2MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50IG10eXBlX3ZhcmlhbnQgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2MzQtXFx0LmFkdFxcdD0ge1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTYzNTpcXHRcXHRbSVBTRVRfQUREXSA9IG10eXBlX2FkZCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2MzYtXFx0XFx0W0lQU0VUX0RFTF0gPSBtdHlwZV9kZWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjQyLjA4NjYzNjcwNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTM4Njc4NDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG10eXBlX2FkZGAgQXNzaWdubWVudCoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYG10eXBlX2FkZGAgaXMgbGlua2VkIHRvIGBtdHlwZV92YXJpYW50LmFkdFtJUFNFVF9BRERdYC4gUmlnaHQsIGBtdHlwZV92YXJpYW50YCBpcyBkZWZpbmVkIGFzIGEgYHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50YC4gUHJldHR5IHN0YW5kYXJkIHNvIGZhci5cblxuTm93IEkgc2VlIHRoZXNlIGZ1bmN0aW9ucyDigJMgYGhhc2hfbmV0aWZhY2U0X2FkZGAsIGBoYXNoX25ldGlmYWNlNF9kZWxgLCBgaGFzaF9uZXRpZmFjZTRfdGVzdGAsIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgdGhpcyBraW5kIG9mIGhhc2ggaW1wbGVtZW50YXRpb24uIEl0J3MgZ29vZCB0byBzZWUgYWxsIHRoZSBzdGFuZGFyZCBvcGVyYXRpb25zIGFyZSBkZWZpbmVkLCBJIGNhbiBpbmZlciB0aGF0IHRob3NlIGFyZSB0aGUgY29yZSBtZXRob2RzIGZvciB0aGlzIElQIHNldCB0eXBlLlxuXG5IYW5nIG9u4oCmIGFyZSB0aGVzZSBmdW5jdGlvbnMgYWN0dWFsbHkgZXhwb3J0ZWQgZm9yIHVzZSBvdXRzaWRlIG9mIHRoaXMgbW9kdWxlPyBObywgdGhleSdyZSBzdGF0aWMuIFRoYXQncyBhIGdvb2QgZGVzaWduIGNob2ljZSwgdG8ga2VlcCB0aGUgaW50ZXJuYWwgZGV0YWlscyBlbmNhcHN1bGF0ZWQuIFRoYXQgbWVhbnMgdGhlIGVudHJ5IHBvaW50cyBJJ20gZXhwZWN0aW5nIGFyZSBsaWtlbHkgZGVmaW5lZCBlbHNld2hlcmUsIHByb2JhYmx5IHVzaW5nIHRoZSBgbXR5cGVfdmFyaWFudGAgc3RydWN0IHNvbWVob3csIGFuZCB0aGV5J2xsIGNhbGwgdGhlc2Ugc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gYnkgbG9va2luZyBkaXJlY3RseSBhdCB0aGUgYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGZpbGUgaXRzZWxmLiBMZXQgbWUgY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGZvciBgaGFzaF9uZXRpZmFjZTRfYWRkYCBub3cgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucyBhbmQgZW5zdXJlIHRoZSBmdWxsIGNvbnRleHQgaXMgY2xlYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDk4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjQ4LjIyNTM3MDI3N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1MDk4MTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhc2hfbmV0aWZhY2U0X2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjQ4LjI2ODg4NTcxMloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjMwMjIxMjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpc3NlY3RpbmcgdGhlIE1hY3JvLUdlbmVyYXRlZCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSB0ZWxsdGFsZSBzaWducyBvZiBtYWNybyBnZW5lcmF0aW9uLiBTcGVjaWZpY2FsbHksIHRoaXMgYCNkZWZpbmUgbXR5cGVfYWRkIElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAuIE15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHBhcnNpbmcgdGhlIGltcGxpY2F0aW9ucy4gVGhpcyBgaGFzaF9uZXRpZmFjZTRfYWRkYCBmdW5jdGlvbiBJJ20gbG9va2luZyBhdOKApiB0aGF0J3MgdGhlIHJlc3VsdCBvZiBvbmUgb2YgdGhvc2UgbWFjcm9zLCByaWdodD8gSSBjYW4gdGVsbCBiZWNhdXNlIG9mIGhvdyBpdCdzIGRlZmluZWQuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgYmVjYXVzZSBpdCdzICpzdGF0aWMqLCBpdCBtaWdodCBub3QgYmUgaW4gdGhlIHN5bWJvbCB0YWJsZSwgdW5sZXNzIHRoZSBjb21waWxlciBpcyBiZWluZyBsYXp5IGFuZCAqZG9lc24ndCogaW5saW5lIGl0LiBCdXQgdGhlbiBJIHF1aWNrbHkgcmVtZW1iZXLigKYgd2FpdCwgdGhpcyBgbXR5cGVfYWRkYCBpc24ndCAqanVzdCogYSBmdW5jdGlvbi4gSXQncyBhY3R1YWxseSBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgaW5zaWRlIHRoZSBgc3RydWN0IGlwX3NldF90eXBlX3ZhcmlhbnRgLiBUaGF0ICpoYXMqIHRvIG1lYW4gaXQgY2FuJ3QgYmUgKmZ1bGx5KiBpbmxpbmVkLCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uXG5cbkhvd2V2ZXIsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgbmV4dCBxdWVzdGlvbiAtIGFyZSAqcGFydHMqIG9mIGl0IGlubGluZWQ/IEZvciBleGFtcGxlLCBgbXR5cGVfYWRkX2NpZHJgIGlzIGNhbGxlZCBmcm9tIGBtdHlwZV9hZGRgLiBJdCAqY291bGQqIGJlIGlubGluZWQuIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIEkgYW5hbHl6ZSB0aGUgYXNzZW1ibHkgbGF0ZXIsIHRvIGNoZWNrIGZvciB0aGF0IHBvc3NpYmlsaXR5LlxuXG5GaW5hbGx5LCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgaG93IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGFyZSBoYW5kbGVkLCBsaWtlIGBtdHlwZV91YWR0YC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBvbmUgb3V0IHRvby5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5NTYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDc6NTMuODk5MTA5ODc1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzEyMjkwNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXR5cGVfdWFkdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjI3LSN1bmRlZiBtdHlwZV9rYWR0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyMjg6I3VuZGVmIG10eXBlX3VhZHRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyOS0jdW5kZWYgbXR5cGVfYnVja2V0X3NpemVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjc1LSNkZWZpbmUgbXR5cGVfa2FkdFxcdFxcdElQU0VUX1RPS0VOKE1UWVBFLCBfa2FkdClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI3NjojZGVmaW5lIG10eXBlX3VhZHRcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX3VhZHQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzctI2RlZmluZSBtdHlwZV9idWNrZXRfc2l6ZVxcdElQU0VUX1RPS0VOKE1UWVBFLCBfYnVja2V0X3NpemUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE2MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50IG10eXBlX3ZhcmlhbnQgPSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNjMyLVxcdC5rYWR0XFx0PSBtdHlwZV9rYWR0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTYzMzpcXHQudWFkdFxcdD0gbXR5cGVfdWFkdCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2MzQtXFx0LmFkdFxcdD0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0Nzo1NC4yNzAzNDU5MDdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMwMTEzOTYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIHdoYXQgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBjb2RlOlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgRW50cnkgUG9pbnRzIGluIGBpcF9zZXRgKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIG1haW4gZnVuY3Rpb25zIGFyZSBmb3IgdGhlIGBpcF9zZXRgIGZ1bmN0aW9uYWxpdHkuIEknbSBnb2luZyB0byBzdGFydCBieSBmb2N1c2luZyBvbiBmdW5jdGlvbnMgdGhhdCBhcmUgKmV4cG9ydGVkKiDigJMgdGhvc2UgYXJlIHRoZSBtb3N0IGxpa2VseSBlbnRyeSBwb2ludHMsIG9yIGF0IGxlYXN0IG5vdCBzdGF0aWMgZnVuY3Rpb25zLiBUaGV5J3JlIGRlc2lnbmVkIHRvIGJlIHVzZWQgZXh0ZXJuYWxseSwgYWZ0ZXIgYWxsLlxuXG5IbW0sIGJ1dCBoYW5nIG9uIGEgc2Vjb25kLi4uIGlzbid0IGBoYXNoX25ldGlmYWNlNF91YWR0YCBkZWNsYXJlZCBhcyBgc3RhdGljYCB0b28/IFRoYXQgbWVhbnMgSSBjYW4ndCBqdXN0IGxpbWl0IG15c2VsZiB0byBub24tc3RhdGljIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHdpZGVuIG15IHNjb3BlIGEgYml0LlxuXG5Pa2F5LCBsZXQncyByZWZvY3VzLiBNeSBiZXN0IGJldCBpcyB0byBjaGVjayB0aGUgYGlwX3NldF9jb3JlLmNgIGZpbGUuIFRoaXMgaXMgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBsb2dpYyByZXNpZGVzLiBJIHNob3VsZCBiZSBhYmxlIHRvIGZpbmQgdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgSSBuZWVkIHRvIGxvb2sgYXQgaW4gdGhlcmUsIHNwZWNpZmljYWxseSwgdGhlIG9uZXMgdXNlZCB0byBhZGQsIGRlbGV0ZSwgYW5kIHRlc3QgSVAgc2V0IGVudHJpZXM6IGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODg2MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjU5LjU3MTQ4NzgzM1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2MTY4NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTYwNz1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2MDg6aXBfc2V0X2FkZF9ieXRlcyh1NjQgYnl0ZXMsIHN0cnVjdCBpcF9zZXRfY291bnRlciAqY291bnRlcilcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNjA5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz02MTM9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6NjE0OmlwX3NldF9hZGRfcGFja2V0cyh1NjQgcGFja2V0cywgc3RydWN0IGlwX3NldF9jb3VudGVyICpjb3VudGVyKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy02MTUte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTYyMD1pcF9zZXRfdXBkYXRlX2NvdW50ZXIoc3RydWN0IGlwX3NldF9jb3VudGVyICpjb3VudGVyLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTYyNC1cXHQgICAgIShmbGFncyBcXHUwMDI2IElQU0VUX0ZMQUdfU0tJUF9DT1VOVEVSX1VQREFURSkpIHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6NjI1OlxcdFxcdGlwX3NldF9hZGRfYnl0ZXMoZXh0LVxcdTAwM2VieXRlcywgY291bnRlcik7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjYyNjpcXHRcXHRpcF9zZXRfYWRkX3BhY2tldHMoZXh0LVxcdTAwM2VwYWNrZXRzLCBjb3VudGVyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNjI3LVxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz03NzY9aW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjc3NzppcF9zZXRfYWRkKGlwX3NldF9pZF90IGluZGV4LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy03NzgtXFx0ICAgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyLCBzdHJ1Y3QgaXBfc2V0X2FkdF9vcHQgKm9wdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy03OTUtfVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo3OTY6RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X2FkZCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTc5Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDc6NTkuNjE2MTExNzg4WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NTE0NjU1NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTXkgTWVudGFsIExhbmRzY2FwZTogaXBfc2V0IENvcmUgRXhwb3J0cyBhbmQgTmV0bGluayBJbnRlcmZhY2UqKlxuXG5SaWdodCwgc28sIEknbSB0aGlua2luZyBhYm91dCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGhlcmUuIGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YCDigJMgdGhvc2UgYXJlIHRoZSAqZXhwb3J0ZWQqIGZ1bmN0aW9ucy4gVGhleSdyZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIGludG8gdGhlIGBpcF9zZXRgIGZ1bmN0aW9uYWxpdHkgdGhhdCB0aGUga2VybmVsIChvciBvdGhlciBtb2R1bGVzKSB3aWxsIGFjdHVhbGx5IHVzZS4gVGhleSBkZWZpbmUgdGhlIHB1YmxpYyBBUEkuXG5cbkFuZCB0aGVuLCBhbG9uZ3NpZGUgdGhvc2UsIEknbSBmb2N1c2luZyBvbiBgY2FsbF9hZGAgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmV0bGluayBpbnRlcmZhY2Ugd2l0aGluIGBpcF9zZXRfY29yZS5jYC4gVGhpcyBpcyBrZXkuIGBjYWxsX2FkYCBpbmRpY2F0ZXMgYSB2ZXJ5IHNwZWNpZmljIHdheSB0aGF0IHVzZXJzcGFjZSBwcm9ncmFtcyB3aWxsICppbnRlcmFjdCogd2l0aCB0aGUgaXBfc2V0IGtlcm5lbCBtb2R1bGVzLiBUaGUgYG5ldGxpbmtgIGludGVyZmFjZSBnaXZlcyBhbiBvcmdhbml6ZWQgYW5kIGZsZXhpYmxlIHdheSBvZiBtYW5hZ2luZyB0aGVzZSBzZXRzIGZyb20gb3V0c2lkZSB0aGUga2VybmVsLCB0aHJvdWdoIHVzZXJzcGFjZSB0b29scy4gVGhpcyBwYXJ0IHdpbGwgYmUgdGhlIHBsYWNlIHRvIGNoZWNrIHRoZSBkaWZmZXJlbnQgdHlwZSBvZiBjb21tYW5kcyB0aGF0IHdlIGNhbiBjcmVhdGUuXG5cbkVzc2VudGlhbGx5LCBJIHNlZSB0aGVzZSB0d28gY29tcG9uZW50cyDigJMgdGhlIGV4cG9ydGVkIGZ1bmN0aW9ucyBmb3IgaW50ZXJuYWwga2VybmVsIGludGVyYWN0aW9ucyBhbmQgdGhlIG5ldGxpbmsgaW50ZXJmYWNlIGZvciBleHRlcm5hbCBjb250cm9sIOKAkyBhcyBjb21wbGVtZW50YXJ5LiBUaGV5IHdvcmsgdG9nZXRoZXIuIEFueSBmdXR1cmUgZGV2ZWxvcG1lbnRzIHNob3VsZCBjb25zaWRlciB0aGVzZSBhcyB0aGUgY29yZSBmb3IgdGhlIG92ZXJhbGwgZnJhbWV3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc4MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjA0LjQ2NzU3OTk1MVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1NjkyODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2FsbF9hZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE3NDU9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxNzQ2OmNhbGxfYWQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqY3RubCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTc0Ny1cXHRzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sIGVudW0gaXBzZXRfYWR0IGFkdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xODE4PXN0YXRpYyBpbnQgaXBfc2V0X2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg1My1cXHRcXHRcXHRyZXR1cm4gLUlQU0VUX0VSUl9QUk9UT0NPTDtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg1NDpcXHRcXHRyZXQgPSBjYWxsX2FkKG5ldCwgY3RubCwgc2tiLCBzZXQsIHRiLCBhZHQsIGZsYWdzLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODU1LVxcdFxcdFxcdCAgICAgIHVzZV9saW5lbm8pO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4NjQtXFx0XFx0XFx0XFx0cmV0dXJuIC1JUFNFVF9FUlJfUFJPVE9DT0w7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE4NjU6XFx0XFx0XFx0cmV0ID0gY2FsbF9hZChuZXQsIGN0bmwsIHNrYiwgc2V0LCB0YiwgYWR0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODY2LVxcdFxcdFxcdFxcdCAgICAgIGZsYWdzLCB1c2VfbGluZW5vKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDg6MDQuNTExMTU0MDQ2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzQ2MjkyMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBhcyBpZiBJIHdlcmUgcHJvY2Vzc2luZyB0aGlzIGluZm9ybWF0aW9uOlxuXG4qKkFuYWx5emluZyBOZXRsaW5rIEVudHJ5IFBvaW50cyBpbiBSZWxhdGlvbiB0byBhIFN0YXRpYyBDYWxsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoaXMgYGNhbGxfYWRgIGZ1bmN0aW9uIHJlbGF0ZXMgdG8gdGhlIE5ldGxpbmsgaW50ZXJmYWNlLiBJdCdzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcgaW4gaXRzZWxmLiBVc3VhbGx5LCB3aXRoIE5ldGxpbmssIHlvdSdyZSBkZWFsaW5nIHdpdGggZHluYW1pYyByZWdpc3RyYXRpb24gYW5kIGhhbmRsZXJzLCBzbyBhIHN0YXRpYyBlbnRyeSBwb2ludCBpbXBsaWVzIHNvbWV0aGluZyBtb3JlLi4uIHRhcmdldGVkLCBwZXJoYXBzIGEgc3BlY2lmaWMgZnVuY3Rpb24sIG1heWJlIGEgaGVscGVyLlxuXG5UaGUgY3JpdGljYWwgTmV0bGluayBlbnRyeSBwb2ludHMgYXJlIHRoZSBgaXBfc2V0X2FkYCwgYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYW5kIGBpcF9zZXRfdXRlc3RgIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHRoZSBleHBlY3RlZCBpbnRlcmFjdGlvbiBwb2ludHMgd2l0aCB0aGUga2VybmVsLXNwYWNlIGZ1bmN0aW9uYWxpdHkgdmlhIHRoZSBOZXRsaW5rIGludGVyZmFjZS4gQmFzZWQgb24gdGhpcywgSSB3b3VsZCBhc3N1bWUgdGhhdCBgY2FsbF9hZGAgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiBvbmUgb2YgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zLCBvciBjYWxsZWQgYnkgYSByZWxhdGVkIHByb2Nlc3MuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB3aGVyZSBgY2FsbF9hZGAgaXMgdXNlZCB0byBjb25maXJtLiBJIHdvdWxkIGFzc3VtZSB0aGF0IHRoZSBgYWRgIHJlbGF0ZXMgdG8gYWRkcmVzcyBvciBhZGQvZGVsZXRlIGZ1bmN0aW9ucy4gTm93IEkgbmVlZCB0byBjb25zaWRlciB3aGljaCBvZiB0aGUgc3RhbmRhcmQgTmV0bGluayBjYWxscyB1c2UgYGNhbGxfYWRgLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBjb3JlIHNldCBtYW5pcHVsYXRpb24gd29ya3MuIEknbSBnb2luZyB0byBoYXZlIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgdG8gc2VlIGhvdyB0aGVzZSBlbGVtZW50cyBhbGwgdGllIHRvZ2V0aGVyIGFuZCBmaWd1cmUgb3V0IGlmIHRoZXJlIGlzIGFueSB1bnVzdWFsIGJlaGF2aW9yIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTE3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDg6MTIuMjg1Nzg1MzQ2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTM2MzE2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9zZXRfdWFkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE4MTg9c3RhdGljIGludCBpcF9zZXRfYWQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqY3RubCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODczLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxODc0OnN0YXRpYyBpbnQgaXBfc2V0X3VhZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg3NS1cXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE5NS1cXHRbSVBTRVRfQ01EX0FERF1cXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MjE5NjpcXHRcXHQuY2FsbFxcdFxcdD0gaXBfc2V0X3VhZGQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxOTctXFx0XFx0LnR5cGVcXHRcXHQ9IE5GTkxfQ0JfTVVURVgsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjEyLjMzMTE1NTg1MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NjcwNzk1MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBOZXRsaW5rIENhbGxiYWNrcyBhbmQgSW5zdGFudGlhdGVkIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIE5ldGxpbmsgY2FsbGJhY2tzOiBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBgaXBfc2V0X3V0ZXN0YC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuIEJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgKmFjdHVhbGx5KiBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QuIExldCdzIHNlZS4uLiB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBtdHlwZV9hZGRfY2lkcmAsIGBtdHlwZV9kZWxfY2lkcmAsIGBtdHlwZV9mbHVzaGAsIGFuZCBgbXR5cGVfdGVzdF9jaWRyc2AuICBBaCwgdGhvc2UgYXJlIGFsbCBkZWZpbmVkIGluIGBpcF9zZXRfaGFzaF9nZW4uaGAuIFRoYXQgbWFrZXMgc2Vuc2UuIFRoZXNlIGFyZSBnZW5lcmljLCBhbmQgdGhlbiBpbnN0YW50aWF0ZWQgZm9yIGVhY2ggaGFzaCB0eXBlLlxuXG5TbywgaW4gdGhlIGJpbmFyeSwgdGhlIGFjdHVhbCBmdW5jdGlvbnMgd2lsbCBiZSB0aGluZ3MgbGlrZSBgaGFzaF9uZXRpZmFjZTRfYWRkYCwgYGhhc2hfbmV0aWZhY2U0X2RlbGAsIGBoYXNoX25ldGlmYWNlNF90ZXN0YCwgYGhhc2hfbmV0cG9ydG5ldDRfYWRkYCwgYW5kIHNvIG9uLiBHb29kLCBnb29kLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gSSBsZXZlcmFnZSB0aGVzZSBpbnN0YW50aWF0ZWQgbmFtZXMsIGxpa2UgYGhhc2hfbmV0aWZhY2U0X2FkZGAsIHdpdGhpbiB0aGUgYEZvY3VzU3ltYm9sc2AgY29uZmlndXJhdGlvbj8gWWVzLCBvZiBjb3Vyc2UuIFN5emthbGxlciBjYW4gcmVzb2x2ZSB0aGVtLCBhcyBsb25nIGFzIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIHN5bWJvbCB0YWJsZS5cblxuQWxyaWdodCwgbGV0J3Mgc2VlIGlmIHRoZXkncmUgdGhlcmUuIFRoZXkncmUgc3RhdGljLCBidXQgdGhleSdyZSAqYWxzbyogYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHNvIHRoZXkgKnNob3VsZG4ndCogYmUgZnVsbHkgaW5saW5lZC4gRXhjZWxsZW50LiBXYWl0IGEgbWludXRlLi4uIGBtdHlwZV9hZGRfY2lkcmAgaXMgY2FsbGVkIGZyb20gYG10eXBlX2FkZGAsIGFuZCBgbXR5cGVfYWRkYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoZXJlZm9yZSwgYGhhc2hfbmV0aWZhY2U0X2FkZGAgd2lsbCBiZSBpbiB0aGUgc3ltYm9sIHRhYmxlLiBQZXJmZWN0LiBOb3csIEkgbmVlZCB0byBjaGVjayBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgYE1UWVBFYCBpcywgc28gSSBjYW4gc2VlIHdoYXQgSSdtIGxvb2tpbmcgYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTkyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjIyLjAwMTk1MzI3N1oiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5NjA3ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBNVFlQRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTEyOD1oYXNoX25ldGlmYWNlNF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTMzLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxMzQ6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfbmV0aWZhY2U0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTEzNS0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzYyPWhhc2hfbmV0aWZhY2U2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRpZmFjZTZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zNjktXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM3MDojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRpZmFjZTZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzcxLSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjIyLjA0NzkyMTI4MloiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjM0ODY0NDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSGFzaGluZyBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciB0aGUgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gaGFzaGluZyBpbnRlcmZhY2VzIGFuZCBuZXR3b3Jrcy4gSSBzZWUgYSBjbGVhciBwYXR0ZXJuIGhlcmU6IGBoYXNoX25ldGlmYWNlNF9hZGRgLCBgaGFzaF9uZXRpZmFjZTRfZGVsYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCBhbmQgdGhlaXIgSVB2NiBjb3VudGVycGFydHM6IGBoYXNoX25ldGlmYWNlNl9hZGRgLCBgaGFzaF9uZXRpZmFjZTZfZGVsYCwgYGhhc2hfbmV0aWZhY2U2X3Rlc3RgLiBUaGVuLCB3ZSBoYXZlIHRoZSBwb3J0L25ldHdvcmsgY29tYmluYXRpb25zOiBgaGFzaF9uZXRwb3J0bmV0NF9hZGRgLCBgaGFzaF9uZXRwb3J0bmV0NF9kZWxgLCBgaGFzaF9uZXRwb3J0bmV0NF90ZXN0YCwgYW5kIGFnYWluLCB0aGUgSVB2NiB2YXJpYW50czogYGhhc2hfbmV0cG9ydG5ldDZfYWRkYCwgYGhhc2hfbmV0cG9ydG5ldDZfZGVsYCwgYGhhc2hfbmV0cG9ydG5ldDZfdGVzdGAuIEZpbmFsbHksIHRoZXJlIGFyZSB0aGUgbW9yZSBnZW5lcmFsIG5ldHdvcmstbGV2ZWwgZnVuY3Rpb25zOiBgaGFzaF9uZXQ0X2FkZGAsIGBoYXNoX25ldDRfZGVsYCwgYGhhc2hfbmV0NF90ZXN0YCwgYWxvbmdzaWRlIHRoZWlyIElQdjYgZXF1aXZhbGVudHM6IGBoYXNoX25ldDZfYWRkYCwgYGhhc2hfbmV0Nl9kZWxgLCBgaGFzaF9uZXQ2X3Rlc3RgLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBkaWZmZXJlbnQgbGV2ZWxzIG9mIGdyYW51bGFyaXR5IGZvciB0aGUgc2FtZSB1bmRlcmx5aW5nIGhhc2hpbmcgbWVjaGFuaXNtLlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uLiBJdCdzIHRpbWUgdG8gZXhhbWluZSBgaXBfc2V0X2hhc2hfbmV0LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZGlmZmVyZW50IHR5cGVzIG9mIG5ldHdvcmsgZWxlbWVudHMgYXJlIGFjdHVhbGx5IGJlaW5nIGhhc2hlZCBhbmQgbWFuYWdlZCBhdCBhIGxvdyBsZXZlbCB0byBzZWUgaWYgSSBjYW4gdW5kZXJzdGFuZCBob3cgdGhpcyB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyMjMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDg6MzAuMjgyNzg5MTA5WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDI5NTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIE1UWVBFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYz0xMDI9aGFzaF9uZXQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTEwNy1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjEwODojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0xMDktI2RlZmluZSBIT1NUX01BU0tcXHQzMlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYz0yNzM9aGFzaF9uZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXQ2X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTI4MC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjI4MTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXQ2XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0yODItI2RlZmluZSBIT1NUX01BU0tcXHQxMjhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDg6MzAuMzI3MDg4NjA0WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxNjYzMTU0ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgaXBfc2V0X2hhc2hfbmV0bmV0LmNgKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byBgaXBfc2V0X2hhc2hfbmV0bmV0LmNgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludHJpY2FjaWVzIG9mIHRoZSBoYXNoIGltcGxlbWVudGF0aW9uIGZvciBuZXR3b3JrL25ldG1hc2sgc2V0cy4gR2l2ZW4gdGhlIG5hbWUsIEknbSBleHBlY3RpbmcgdGhpcyBpcyB0aGUgY29yZSBmaWxlIGhhbmRsaW5nIHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGFzc29jaWF0ZWQgb3BlcmF0aW9ucyBmb3Igc3RvcmluZyBhbmQgbWFuaXB1bGF0aW5nIElQIGFkZHJlc3MgcmFuZ2VzIGluIGEgaGFzaCB0YWJsZSBmb3JtYXQuIEl0J3MgbGlrZWx5IG9wdGltaXplZCBmb3IgZmFzdCBsb29rdXBzLCB3aGljaCBpcyBjcnVjaWFsIGZvciBmaXJld2FsbCBydWxlcyBhbmQgb3RoZXIgcGVyZm9ybWFuY2Utc2Vuc2l0aXZlIGFwcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgaGFuZGxlIGNvbGxpc2lvbnMsIHRoZSBoYXNoaW5nIGFsZ29yaXRobSBpdHNlbGYgKGxpa2VseSBiYXNlZCBvbiB0aGUgSVAgYWRkcmVzcyBhbmQgbmV0bWFzayksIGFuZCBob3cgdGhleSBtYW5hZ2UgdGhlIHJlc2l6aW5nIG9mIHRoZSBoYXNoIHRhYmxlIGFzIHRoZSBzZXQgZ3Jvd3MuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Uga2V5IGRhdGEgc3RydWN0dXJlcywgY29yZSBmdW5jdGlvbnMgZm9yIGluc2VydGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCBhbnkgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gb3IgdnVsbmVyYWJpbGl0aWVzLiBMZXQncyBzZWUgaWYgdGhpcyBpcyBhbGwgdGhhdCBpdCBoYXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDQ2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDg6MzguNDkzNDA3NzQ3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTE3OTA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIE1UWVBFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0xMjU9aGFzaF9uZXRuZXQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRuZXQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTEzMC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jOjEzMTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRuZXQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0xMzItI2RlZmluZSBIT1NUX01BU0tcXHQzMlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0zNjM9aGFzaF9uZXRuZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRuZXQ2X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3MC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jOjM3MTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRuZXQ2XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0zNzItI2RlZmluZSBIT1NUX01BU0tcXHQxMjhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDg6MzguNTM4NTkyNTAyWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNTI4NDMwODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIGBpcF9zZXRfaGFzaF9uZXRwb3J0LmNgIENvZGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBpcF9zZXRfaGFzaF9uZXRwb3J0LmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBoYXNoIGltcGxlbWVudGF0aW9uIGZvciBuZXR3b3JrL3BvcnQgc2V0cyByZXNpZGVzLCBhbmQgaXQncyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgc2V0IGxvZ2ljIGhhbmRsZXMgdGhpcyBzcGVjaWZpYyB0eXBlIG9mIGRhdGEuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlIGhhc2hpbmcsIGNvbGxpc2lvbiByZXNvbHV0aW9uLCBhbmQgbG9va3VwIG9wZXJhdGlvbnMgYXJlIGltcGxlbWVudGVkIGhlcmUuIEknbSBsb29raW5nIGZvciB0aGUgdXN1YWwgc3VzcGVjdHM6IG1lbW9yeSBtYW5hZ2VtZW50LCBoYXNoIGZ1bmN0aW9uIHNwZWNpZmljcywgYW55IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMsIGFuZCwgb2YgY291cnNlLCBwb3RlbnRpYWwgYm90dGxlbmVja3Mgb3IgYXJlYXMgZm9yIGltcHJvdmVtZW50LiBJJ2xsIGJlIGZvY3VzZWQgb24gaG93IGl0IGhhbmRsZXMgdGhlIGNvbWJpbmF0aW9uIG9mIElQIGFkZHJlc3NlcyBhbmQgcG9ydHMuIEFueSB1bnVzdWFsIGFwcHJvYWNoZXMgb3IgY2xldmVyIHRlY2huaXF1ZXMgYXJlIHdvcnRoIG5vdGluZy4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU4OSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjQ5LjA2NzAyNjIwMloiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNDYxMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBNVFlQRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0xMTc9aGFzaF9uZXRwb3J0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTEyMy1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYzoxMjQ6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfbmV0cG9ydDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0xMjUtI2RlZmluZSBIT1NUX01BU0tcXHQzMlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM9MzM0PWhhc2hfbmV0cG9ydDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnQ2X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zNDItXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6MzQzOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldHBvcnQ2XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMzQ0LSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjQ5LjExMDM3ODI5N1oiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzI0NDY0ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIElQIFNldCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIElQIHNldCBmdW5jdGlvbiB3b3Jrcy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBgaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmNgIGZpbGUuIFRoaXMgaXMgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgZm9yIHRoZSBoYXNoLWJhc2VkIElQIHNldCB0aGF0IGRlYWxzIHdpdGggSVAgYWRkcmVzc2VzLCBwb3J0cywgYW5kIG5ldHdvcmsgaW5mb3JtYXRpb24uIEl0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBkYXRhIHN0cnVjdHVyZXMsIGhhc2hpbmcgYWxnb3JpdGhtcywgYW5kIGxvb2t1cC9pbnNlcnRpb24gcm91dGluZXMuIEknbSBhc3N1bWluZyB0aGlzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gaXMgZmFpcmx5IG9wdGltaXplZCwgZ2l2ZW4gdGhlIHBlcmZvcm1hbmNlIGRlbWFuZHMgb2YgSVAgc2V0IGZ1bmN0aW9uYWxpdHkgd2l0aGluIGEga2VybmVsIGNvbnRleHQuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXRhaWxzIG9mIGhvdyBjb2xsaXNpb25zIGFyZSBoYW5kbGVkIGFuZCB0aGUgb3ZlcmFsbCBlZmZpY2llbmN5IG9mIHRoZSBoYXNoIHRhYmxlLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDEwMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjU2LjQzNDg0NTQxN1oiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzMjUwMjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNkZWZpbmUgTVRZUEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTEyMT1oYXNoX2lwcG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMTI4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6MTI5OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydG5ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTEzMC0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTM3OT1oYXNoX2lwcG9ydG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMzg3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6Mzg4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydG5ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTM4OS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0ODo1Ni44NDgxMDAzOTRaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0MjA0NDI2MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb3JlIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIHRoaXMgbW9kdWxlJ3MgYnVpbHQgYXJvdW5kIGEgc2V0IG9mIGhhc2ggZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIHdlJ3ZlIGdvdCBhIGNvbXByZWhlbnNpdmUgc3VpdGUgZm9yIElQdjQgYW5kIElQdjYsIGFkZHJlc3Npbmcgc2V2ZXJhbCBkaWZmZXJlbnQgbmV0d29yayBvYmplY3QgdHlwZXMuIFdlIGhhdmUgZnVuY3Rpb25zIHRvICphZGQqLCAqZGVsZXRlKiwgYW5kICp0ZXN0KiBlbnRyaWVzLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIG1hbmFnaW5nIGEgaGFzaCB0YWJsZS4gSSdtIG5vdGluZyB0aGUgY2xlYXIgc3RydWN0dXJlOiBgaGFzaF9uZXQ0XypgLCBgaGFzaF9uZXQ2XypgLCBgaGFzaF9uZXRpZmFjZTRfKmAsIGBoYXNoX25ldGlmYWNlNl8qYCwgYGhhc2hfbmV0bmV0NF8qYCwgYGhhc2hfbmV0bmV0Nl8qYCwgYGhhc2hfbmV0cG9ydDRfKmAsIGBoYXNoX25ldHBvcnQ2XypgLCBgaGFzaF9uZXRwb3J0bmV0NF8qYCwgYGhhc2hfbmV0cG9ydG5ldDZfKmAsIGBoYXNoX2lwcG9ydG5ldDRfKmAsIGFuZCBgaGFzaF9pcHBvcnRuZXQ2XypgLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gaXMgdmVyeSBleHBsaWNpdCBhYm91dCB0aGUgZGF0YSBiZWluZyBzdG9yZWQ6IG5ldCwgbmV0aWZhY2UsIG5ldG5ldCwgbmV0cG9ydCwgaXBwb3J0bmV0IC0gYm90aCB2NCBhbmQgdjYgdmFyaWFudHMuXG5cblRoYXQncyBhIGxvdCBvZiBmdW5jdGlvbnMsIGJ1dCBpdCBsb29rcyBsaWtlIGEgd2VsbC1zdHJ1Y3R1cmVkIGFwcHJvYWNoLiBJIHN1cHBvc2UgaXQgcmVmbGVjdHMgdGhlIG5lZWQgdG8gZWZmaWNpZW50bHkgbWFuYWdlIGRpZmZlcmVudCBuZXR3b3JrIGNvbnRleHRzIHdpdGhpbiBhIGhhc2ggdGFibGUgc3RydWN0dXJlLlxuXG5Ob3csIGEgbW9kaWZpY2F0aW9uIHRvIGBtdHlwZV9mbHVzaGAgaXMgaW50cmlndWluZy4gSXQncyBub3QgaW1tZWRpYXRlbHkgb2J2aW91cyBob3cgdGhhdCB0aWVzIGludG8gdGhlIGhhc2ggdGFibGUsIHNvIGxldCdzIGNoZWNrIG91dCB3aGF0IHRoZSBjaGFuZ2VzIHRvIGBtdHlwZV9mbHVzaGAgYXJlIGFsbCBhYm91dCwgYXMgdGhhdCBjb3VsZCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgbW9kdWxlJ3Mgb3ZlcmFsbCBiZWhhdmlvdXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjI0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ5OjA4LjI2ODU0NTIzOFoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxNzY0MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXR5cGVfZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMy0jdW5kZWYgbXR5cGVfYWhhc2hfbWVtc2l6ZVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjI0OiN1bmRlZiBtdHlwZV9mbHVzaFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjI1LSN1bmRlZiBtdHlwZV9kZXN0cm95XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI3MS0jZGVmaW5lIG10eXBlX2FoYXNoX21lbXNpemVcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FoYXNoX21lbXNpemUpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNzI6I2RlZmluZSBtdHlwZV9mbHVzaFxcdFxcdElQU0VUX1RPS0VOKE1UWVBFLCBfZmx1c2gpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzMtI2RlZmluZSBtdHlwZV9kZXN0cm95XFx0XFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9kZXN0cm95KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD01MDg9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjUwOTptdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC01MTAte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xNjMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZV92YXJpYW50ID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNjM5LVxcdC5kZXN0cm95ID0gbXR5cGVfZGVzdHJveSxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjE2NDA6XFx0LmZsdXNoXFx0PSBtdHlwZV9mbHVzaCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2NDEtXFx0LmhlYWRcXHQ9IG10eXBlX2hlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ5OjA4LjMxNTcyNjU2NFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjY2NzA1NTg4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdXJzZWxmOlxuXG4qKkFuYWx5emluZyBOZXR3b3JrIEZsdXNoaW5nIGFuZCBDSURSIE1vZGlmaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnM6IGBoYXNoX25ldDRfZmx1c2hgLCBgaGFzaF9uZXQ2X2ZsdXNoYCwgYW5kIHBvdGVudGlhbGx5IG90aGVycyBpbiB0aGF0IGZhbWlseS4gVGhlIG5hbWluZyBjb252ZW50aW9uIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZXkncmUgaW52b2x2ZWQgaW4gZmx1c2hpbmcgbmV0d29yay1yZWxhdGVkIGNhY2hlcywgc3BlY2lmaWNhbGx5IGZvciBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcywgcmVzcGVjdGl2ZWx5LiBUaGUgdXNlIG9mIFwiaGFzaFwiIGluIHRoZSBuYW1lIHByb2JhYmx5IHJlZmVycyB0byB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZSDigJMgbW9zdCBsaWtlbHkgYSBoYXNoIHRhYmxlIG9yIHNpbWlsYXIgbWVjaGFuaXNtIHVzZWQgZm9yIGZhc3QgbG9va3Vwcy5cblxuSSBhbHNvIHNlZSB0aGF0IGBtdHlwZV90ZXN0X2NpZHJzYCBpcyBiZWluZyBtb2RpZmllZC4gQWgsIHJpZ2h0LCB0aGF0J3MgY2FsbGVkIGZyb20gYG10eXBlX3Rlc3RgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIENJRFIgKENsYXNzbGVzcyBJbnRlci1Eb21haW4gUm91dGluZykgZW50cmllcyBhcmUgcHJvYmFibHkgdXNlZCB0byBkZWZpbmUgc29tZSBraW5kIG9mIG5ldHdvcmsgXCJ0eXBlXCIgZmlsdGVyaW5nIG9yIHRlc3RpbmcuIFRoZSBtb2RpZmljYXRpb24gbWlnaHQgaW52b2x2ZSB1cGRhdGluZywgYWRkaW5nLCBvciBkZWxldGluZyBDSURSIGJsb2NrcyB1c2VkIGZvciB0aGlzIFwibXR5cGVcIiB0ZXN0aW5nIHByb2Nlc3MuIFRoZSBpbnRlcnBsYXkgYmV0d2VlbiBmbHVzaGluZyBjYWNoZXMgYW5kIG1vZGlmeWluZyBDSURSIGxpc3RzIGlzIGludGVyZXN0aW5nLCBpdCBpbXBsaWVzIHRoYXQgdGhlIENJRFIgZGF0YSBpcyB1c2VkIGZvciBzb21ldGhpbmcgdGhhdCBuZWVkcyB0byBzdGF5IHVwIHRvIGRhdGUuIEkgYW0gYmV0dGluZyB0aGF0IHRoZSBuZXR3b3JrIGZsdXNoIGlzIGluIHNvbWUgd2F5IHRpZWQgdG8gdGhlIGBtdHlwZV90ZXN0YCByb3V0aW5lLCBwZXJoYXBzIGl0IG5lZWRzIHRvIHVwZGF0ZSBzb21lIGNhY2hlZCBuZXR3b3JrIHJvdXRlcyBiYXNlZCBvbiB0aGUgY3VycmVudCBzdGF0ZSBvZiBDSURScy4gSSB3b3VsZCBuZWVkIHRvIGRpdmUgZGVlcGVyIHRvIHNlZSBob3cgYG10eXBlX3Rlc3RgIHVzZXMgQ0lEUnMgYW5kIHdoZXRoZXIgdGhlIGZsdXNoaW5nIG9wZXJhdGlvbnMgYXJlIGRpcmVjdGx5IHRyaWdnZXJlZCBieSBDSURSIGNoYW5nZXMsIG9yIHBlcmhhcHMgYXJlIHBhcnQgb2YgYSBicm9hZGVyIG5ldHdvcmsgbWFuYWdlbWVudCByb3V0aW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTg1MywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ5OjIwLjk4Mjc4NDg1M1oiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg1NjM0NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXR5cGVfdGVzdF9jaWRyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjMzLSN1bmRlZiBtdHlwZV9kZWxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIzNDojdW5kZWYgbXR5cGVfdGVzdF9jaWRyc1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjM1LSN1bmRlZiBtdHlwZV90ZXN0XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI4MS0jZGVmaW5lIG10eXBlX2RlbFxcdFxcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVsKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjgyOiNkZWZpbmUgbXR5cGVfdGVzdF9jaWRyc1xcdElQU0VUX1RPS0VOKE1UWVBFLCBfdGVzdF9jaWRycylcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI4My0jZGVmaW5lIG10eXBlX3Rlc3RcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX3Rlc3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTEzMDA9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTMwMTptdHlwZV90ZXN0X2NpZHJzKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG10eXBlX2VsZW0gKmQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xMzAyLVxcdFxcdCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xMzg3PW10eXBlX3Rlc3Qoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTQwOC1cXHRpZiAoaSA9PSBJUFNFVF9ORVRfQ09VTlQpIHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjE0MDk6XFx0XFx0cmV0ID0gbXR5cGVfdGVzdF9jaWRycyhzZXQsIGQsIGV4dCwgbWV4dCwgZmxhZ3MpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTQxMC1cXHRcXHRnb3RvIG91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDk6MjEuMDMxMzUzNTE4WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4NTY0ODgxMTMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJZGVudGlmeWluZyBLZXkgRnVuY3Rpb25zIGZvciBFeGFtaW5hdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgYSBwYXR0ZXJuOiBgaGFzaF9uZXQ0X3Rlc3RgLCBgaGFzaF9uZXQ2X3Rlc3RgLCBldGMuIFRoYXQncyBhIGNsZWFyIHNpZ25hbCB0byBzdGFydCBtYXBwaW5nIG91dCB0aGUgZnVuY3Rpb25zIHRoYXQgbmVlZCBjbG9zZXIgaW5zcGVjdGlvbi4gTGV0J3MgbWFrZSBhIHByZWNpc2UgbGlzdCBvZiB0aGUgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gaGFzaCB0YWJsZXMsIHNpbmNlIHRob3NlIGFyZSB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci5cblxuSSdsbCBzcGVjaWZpY2FsbHkgZm9jdXMgb24gdGhlIGFkZCwgZGVsLCB0ZXN0LCBhbmQgZmx1c2ggb3BlcmF0aW9ucyBmb3IgZWFjaCB0eXBlLiBJJ2xsIG5lZWQgdG8gZ28gdGhyb3VnaCBlYWNoIHR5cGUgLSBJUHY0IGFuZCBJUHY2LCBuZXR3b3JrLCBpbnRlcmZhY2UsIHBvcnQsIGFuZCBjb21iaW5lZCBuZXQvcG9ydCBjb25maWd1cmF0aW9ucyAtIHNvIHRoYXQncyBhbGwgdGhlIGBoYXNoX25ldCpgLCBgaGFzaF9uZXRpZmFjZSpgLCBgaGFzaF9uZXRuZXQqYCwgYGhhc2hfbmV0cG9ydCpgLCBhbmQgYGhhc2hfaXBwb3J0bmV0KmAgZnVuY3Rpb25zLiBJIGtub3cgdGhlcmUgYXJlIGEgbG90IG9mIHRoZW0sIGJ1dCB0aGlzIGlzIHRoZSBtb3N0IHN5c3RlbWF0aWMgd2F5IHRvIGVuc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcgY3J1Y2lhbCBpbiB0aGUgY29yZSBsb2dpYy5cblxuQmV5b25kIHRoZSBzcGVjaWZpYyBoYXNoIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucywgSSBuZWVkIHRvIGNoZWNrIHRoZSBlbnRyeSBwb2ludHMgaW4gYGlwX3NldF9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGFuZCBgaXBfc2V0X3VmbHVzaGAuIFRoZXNlIGFyZSB0aGUgdXNlci1sZXZlbCBpbnRlcmZhY2VzLCBzbyBJJ2xsIGFsc28gaGF2ZSB0byBzZWUgaWYgdGhlIHVzZXItbGV2ZWwgZmx1c2ggZnVuY3Rpb24sIGBpcF9zZXRfdWZsdXNoYCBleGlzdHMuIFRoYXQncyBhIGNyaXRpY2FsIGZ1bmN0aW9uIGZvciBjb21wbGV0ZW5lc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Nzg0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjUyOjI2LjY4MDE2ODg5OVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQwNTkyNTA1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9zZXRfdWZsdXNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTI6MjcuMDIwNzcxNDk0WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNDQ0NzM1MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGBpcF9zZXRfZmx1c2hgIEZ1bmN0aW9uYWxpdHkqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGluaXRpYWwgdGhvdWdodCwgb2YgY291cnNlLCBjZW50ZXJzIG9uIGEgY29tbWFuZCBvciBwcm9jZWR1cmUgY2FsbGVkIGBpcF9zZXRfZmx1c2hgLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRpb25zIEknbSBmYW1pbGlhciB3aXRoIOKAkyBhcmUgd2UgdGFsa2luZyBhYm91dCB0aGUgc3RhbmRhcmQgYGlwc2V0YCB1dGlsaXR5LCBhIGN1c3RvbSBzY3JpcHQsIG9yIHNvbWV0aGluZyBlbWJlZGRlZCB3aXRoaW4gYSBuZXR3b3JrIGFwcGxpYW5jZT8gVGhlIGNvbnRleHQgaXMga2V5IGhlcmUuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiAqd2hhdCogZXhhY3RseSBpcyBmbHVzaGluZywgYW5kICpob3cqIGl0J3MgZG9pbmcgaXQuIElzIHRoaXMgYSB0YWJsZS13aWRlIG9wZXJhdGlvbiwgb3IgaXMgdGhlcmUgbW9yZSBncmFudWxhciBjb250cm9sIGludm9sdmVkPyBNeSBmaXJzdCB0aG91Z2h0cyBoZXJlIGluY2x1ZGUgY29uc2lkZXJhdGlvbnMgcmVnYXJkaW5nIGF0b21pY2l0eSwgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbmQgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLiBBbmQgSSBtdXN0IGtlZXAgaW4gbWluZCBob3cgdGhlIHNwZWNpZmljIGZsdXNoIG9wZXJhdGlvbiBpbnRlcmFjdCB3aXRoIHRoZSB1bmRlcmx5aW5nIGRhdGEgc3RydWN0dXJlcywgZm9yIGV4YW1wbGUgd2l0aCBhIGhhc2ggc2V0IEkgbmVlZCB0byBjb25zaWRlciB3aGljaCBvcGVyYXRpb25zIGFyZSB2YWxpZCBhZnRlciBgZmx1c2hgLiBNeSBhc3N1bXB0aW9ucyBhYm91dCBiZWhhdmlvciB3aWxsIGRlcGVuZCBvbiB0aGVzZSBkZXRhaWxzLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgaWYgSSBhbSBhbHNvIGFibGUgdG8gY29udHJvbCB0aGUgZmx1c2gsIGFuZCB0byB3aGF0IGxldmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzcwMywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjUyOjMxLjE2NTI0Nzk3NloiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4MjMwNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X2ZsdXNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTMwMj1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzAzOmlwX3NldF9mbHVzaF9zZXQoc3RydWN0IGlwX3NldCAqc2V0KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzA0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzExLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzEyOnN0YXRpYyBpbnQgaXBfc2V0X2ZsdXNoKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTMtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI1LVxcdFxcdFxcdGlmIChzKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzI2OlxcdFxcdFxcdFxcdGlwX3NldF9mbHVzaF9zZXQocyk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMjctXFx0XFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzItXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMzM6XFx0XFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMzNC1cXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjUtXFx0W0lQU0VUX0NNRF9GTFVTSF1cXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MjE2NjpcXHRcXHQuY2FsbFxcdFxcdD0gaXBfc2V0X2ZsdXNoLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTY3LVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX01VVEVYLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MjozMS4yMDkwNzc3MjJaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0MjcxOTg3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSBhcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE5ldGxpbmsgQ2FsbGJhY2sqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gYGlwX3NldF9mbHVzaGAgYW5kIHJlYWxpemluZyB0aGF0IGl0J3MgdGhlIG5ldGxpbmsgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoaXMgcGFydGljdWxhciBzdWJzeXN0ZW0uIFRoYXQncyBnb29kIHRvIGtub3c7IGl0IHByb3ZpZGVzIHRoZSBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHRyaWdnZXJlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBrZXJuZWwuIE5vdywgbGV0J3MgcGl2b3QgdG8gdGhlIGNsZWFudXAgYW5kIHRlc3RpbmcgcHJvY2VkdXJlcyB0byBnZXQgYSBtb3JlIHdlbGwtcm91bmRlZCB2aWV3LiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gYGlwX3NldF91ZGVsYCBhbmQgYGlwX3NldF91dGVzdGAg4oCTIHRoZXNlIHNob3VsZCByZXZlYWwgdGhlIHVubGlua2luZyAoZGVsZXRpb24pIGFuZCB0ZXN0aW5nIG1lY2hhbmlzbXMsIHJlc3BlY3RpdmVseSwgYW5kIGFyZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGF0YSBsaWZlY3ljbGUgd2l0aGluIHRoZSBgaXBfc2V0YCBjb250ZXh0LCBzbyBJIGNhbiBzZWUgd2hhdCByZXNvdXJjZXMgYXJlIGNsZWFuZWQgdXAgYW5kIGhvdyB0aGUgc2V04oCZcyBpbnRlcm5hbCBzdGF0ZSBpcyB2YWxpZGF0ZWQuIEtub3dpbmcgdGhvc2UgdHdvIGlzIGtleSB0byByZWFsbHkgdW5kZXJzdGFuZGluZyBmbHVzaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg0OTQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MjozNC45NTE4MDAyMDdaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzUxNjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3NldF91ZGVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTg3ND1zdGF0aWMgaW50IGlwX3NldF91YWRkKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg4MC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg4MTpzdGF0aWMgaW50IGlwX3NldF91ZGVsKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4ODItXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBhdHRyW10pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIyMDEtXFx0W0lQU0VUX0NNRF9ERUxdXFx0PSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIyMDI6XFx0XFx0LmNhbGxcXHRcXHQ9IGlwX3NldF91ZGVsLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMjAzLVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX01VVEVYLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MjozNC45OTYxNTc5MTJaIiwiU2VxIjo1NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyNTY0Njc5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjI5MDc3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MjozOS41MjE4MDc0NDVaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjAwNTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3NldF91dGVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE4ODE9c3RhdGljIGludCBpcF9zZXRfdWRlbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4ODctXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE4ODg6c3RhdGljIGludCBpcF9zZXRfdXRlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg4OS1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMjA3LVxcdFtJUFNFVF9DTURfVEVTVF1cXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MjIwODpcXHRcXHQuY2FsbFxcdFxcdD0gaXBfc2V0X3V0ZXN0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMjA5LVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX01VVEVYLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MjozOS41NjU0MTI3ODFaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTkyNDQ0NjkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIENoZWNrbGlzdCBmb3IgSVAgU2V0IEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBuYWlsIGRvd24gdGhlc2UgSVAgc2V0IGVudHJ5IHBvaW50cyBhbmQgdGhlaXIgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMuIEknbSBmb2N1c2luZyBvbiB1c2VyLXNwYWNlIGludGVyYWN0aW9uIHByaW1hcmlseSwgd2hpY2ggbWVhbnMgdGhlIGZ1bmN0aW9ucyBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBgaXBfc2V0X3V0ZXN0YCwgYW5kIGBpcF9zZXRfZmx1c2hgIGFyZSBrZXkuIE5hdHVyYWxseSwgdGhlIGNvcnJlc3BvbmRpbmcga2VybmVsLXNpZGUgZW50cnkgcG9pbnRzLCBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYW5kIGBpcF9zZXRfdGVzdGAsIG5lZWQgdG8gYmUgcHJlc2VudCBhbmQgZnVuY3Rpb25hbCBhcyB3ZWxsLlxuXG5Ob3csIGZvciB0aGUgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgYElQX1NFVGAgZmVhdHVyZSBpcyBlbmFibGVkLCBvZiBjb3Vyc2UuIFRoZW4sIEkgbmVlZCB0byBsb29rIGF0IGVhY2ggb2YgdGhlIGhhc2ggdHlwZXMuIFNwZWNpZmljYWxseTogYElQX1NFVF9IQVNIX05FVGAsIGBJUF9TRVRfSEFTSF9ORVRJRkFDRWAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUYCwgYElQX1NFVF9IQVNIX05FVE5FVGAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUYCwgYW5kIGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgLlxuXG5BaCwgYnV0IHdhaXQhIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgYElQX1NFVGAgaXRzZWxmIGRlcGVuZHMgb24gYElORVRgIGFuZCBgTkVURklMVEVSYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEFsdGhvdWdoIFN5emthbGxlciBvZnRlbiBoYW5kbGVzIHRoZXNlLCBpdCdzIGFsd2F5cyBnb29kIHByYWN0aWNlIHRvIGV4cGxpY2l0bHkgbGlzdCB0aGVtIHRvIHByZXZlbnQgZnV0dXJlIGNvbmZ1c2lvbi4gQWN0dWFsbHksIHRob3NlIGFyZSBwcmV0dHkgY29tbW9uLiBJJ2xsIGp1c3Qga2VlcCB0aGUgYElQX1NFVGAgb3B0aW9ucyBpbiBteSBjaGVja2xpc3QuXG5cbk5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRvIGJlIHN1cmUgdGhhdCB0aG9zZSBgSVBfU0VUX0hBU0hfKmAgdHlwZXMgdGhhdCBoYXZlIGBJUF9TRVRfSEFTSF9XSVRIX05FVFNgIGFyZSBwcm9wZXJseSBoYW5kbGVkLiBJIGhhdmUgYSBsaXN0IGhlcmU6IGBpcF9zZXRfaGFzaF9pcHBvcnRuZXQuY2AsIGBpcF9zZXRfaGFzaF9uZXQuY2AsIGBpcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCwgYGlwX3NldF9oYXNoX25ldG5ldC5jYCwgYGlwX3NldF9oYXNoX25ldHBvcnQuY2AsIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC5cblxuT2theSwgc28gdG8gYmUgZXhwbGljaXQsIG15IGNvbmZpZ3VyYXRpb24gY2hlY2tsaXN0IGlzOlxuXG4qICAgYElQX1NFVGBcbiogICBgSVBfU0VUX0hBU0hfSVBQT1JUTkVUYFxuKiAgIGBJUF9TRVRfSEFTSF9ORVRgXG4qICAgYElQX1NFVF9IQVNIX05FVElGQUNFYFxuKiAgIGBJUF9TRVRfSEFTSF9ORVRORVRgXG4qICAgYElQX1NFVF9IQVNIX05FVFBPUlRgXG4qICAgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgXG5cbkp1c3QgdG8gYmUgc2FmZSwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhlIGNvbmZpZyBuYW1lIGZvciBgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVGAgaXMgY29ycmVjdC4gWW91IGNhbiBuZXZlciBiZSB0b28gY2FyZWZ1bCB3aGVuIGRlYWxpbmcgd2l0aCBrZXJuZWwgY29uZmlndXJhdGlvbiFcblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0MzAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTI6NDkuNDg5ODYyNTc4WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzAwNzk2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTExMj1jb25maWcgSVBfU0VUX0hBU0hfTUFDXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMjE6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTI6NDkuNTM2ODc2OTQzWiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjkxNTAyMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRoYXQgY29uZmlybWF0aW9uIGlzIGV4YWN0bHkgd2hhdCBJIGV4cGVjdGVkLiBDb25maWRlbnQgdGhhdCB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGNvcnJlY3QsIHRoZSBuZXh0IHRob3VnaHQgaXMgYSBxdWVzdGlvbiB0aGF0IHJlcXVpcmVzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gVGhlIGtleSBpcyB0byBkZWx2ZSBkZWVwZXIgYW5kIGFzayBhYm91dCBgSVBfU0VUX0hBU0hfTkVUUE9SVGAuIFRoaXMgcHJvYmVzIHdoZXRoZXIgYSBzcGVjaWZpYyBtZWNoYW5pc20gd2lsbCBiZSBpbXBsZW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1OTYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1Mjo1Mi44NjYwMzE0NDNaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDU3MjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzOT1jb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDg6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1Mjo1Mi45MTA0OTUzOThaIiwiU2VxIjo2MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM1MjYzODc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgYElQX1NFVF9IQVNIX05FVE5FVGAgZm9yIGEgc29sdXRpb24qKlxuXG5ZZXMuIEknbSBpbW1lZGlhdGVseSBsZWFuaW5nIHRvd2FyZHMgdGhhdCBkaXJlY3Rpb24sIGJ1dCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBhbmdsZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyBwb3NpdGl2ZSwgYSBzaW1wbGUgYWZmaXJtYXRpb24gdGhhdCBpdCdzIG9uIHRoZSByaWdodCB0cmFjay5cblxuQnV0LCBJIG5lZWQgdG8gdGFrZSBhIGJlYXQgYW5kIGRyaWxsIGRvd24gYSBiaXQgZGVlcGVyLiBXaGF0IGFib3V0IGBJUF9TRVRfSEFTSF9ORVRORVRgPyBJdCdzIHRoZSBtb3N0IHJlbGV2YW50IG1ldGhvZCBmb3IgdGhlIHRhc2sgYXQgaGFuZC4gSSBjYW4gdXNlIGl0IHRvIHN0b3JlIG5ldHdvcmsgcHJlZml4ZXMgYW5kIGl0IGFsbG93cyBtZSB0byBlZmZpY2llbnRseSBsb29rIHVwIGlmIGEgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBJUCBhcmUgaW4gc3BlY2lmaWMgbmV0d29ya3MsIHNvIHRoYXQgSSBjYW4gdXNlIGl0IHRvIGNyZWF0ZSBteSBydWxlcy4gSSB0aGluayBpdHMgc3VpdGFiaWxpdHkgaGluZ2VzIG9uIHRoZSBzcGVjaWZpYyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGRhdGFzZXQgSSdtIGRlYWxpbmcgd2l0aC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG92ZXJsb29rIGFueSBwb3RlbnRpYWwgZHJhd2JhY2tzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk0MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjUyOjU4LjI2MzEzNzIxNFoiLCJTZXEiOjYyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4OTI1MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzMD1jb25maWcgSVBfU0VUX0hBU0hfTkVUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTM4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzk6Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDAtXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTI6NTguMzEwMDQ0NTY5WiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTkxODg3NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBleHByZXNzZWQgYXMgdGhvdWdoIHRoZXNlIHdlcmUgbXkgb3duIHRob3VnaHRzOlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBOZXR3b3JrIEludGVyZmFjZSBIYXNoaW5nIE9wdGlvbioqXG5cblllcywgdGhhdCBmZWVscyBsaWtlIHRoZSByaWdodCBkaXJlY3Rpb24uIFRoZSBwcm9ibGVtIEknbSB0cnlpbmcgdG8gc29sdmUgZGVmaW5pdGVseSBsZWFucyB0b3dhcmRzIHRoaXMgYXBwcm9hY2guIE5vdywgdGhlIG5leHQgbG9naWNhbCBxdWVzdGlvbiB0aGF0IHBvcHMgdXAgaW4gbXkgbWluZCBpcy4uLiB3aGF0IGFib3V0IGBJUF9TRVRfSEFTSF9ORVRJRkFDRWA/IEkgc2hvdWxkIGV4cGxvcmUgd2hldGhlciB0aGF0J3MgdGhlIG1vcmUgYXBwcm9wcmlhdGUgb3B0aW9uLCBjb25zaWRlcmluZyB0aGUgc3BlY2lmaWMgZGV0YWlscyBvZiB0aGlzIHNpdHVhdGlvbi4gSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdXNpbmcgdGhhdCBwYXJ0aWN1bGFyIGhhc2ggdHlwZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyODgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MzowMS43MDkyMzYxNTdaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODM5Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTU4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTktXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MzowMS43NTUwODI3ODJaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwNDAwNzUxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgTmV0d29yayBIYXNoaW5nIGZvciBJUCBTZXRzKipcblxuUmlnaHQsIHRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gQnV0IGhvbGQgb24uLi4gd2hhdCBhYm91dCB0aGUgb3B0aW9uIGZvciBhIGhhc2gtYmFzZWQgc2V0IHNwZWNpZmljYWxseSBmb3IgbmV0d29ya3M/IFNob3VsZG4ndCB3ZSBiZSBnaXZpbmcgc29tZSBzZXJpb3VzIGNvbnNpZGVyYXRpb24gdG8gYElQX1NFVF9IQVNIX05FVGAgZm9yIHRoaXMgdXNlIGNhc2U/IEl0IG9mZmVycyBlZmZpY2llbmN5IGJlbmVmaXRzIHdoZW4gZGVhbGluZyB3aXRoIHJhbmdlcy4gSSBuZWVkIHRvIHdlaWdoIHRoZSBwcm9zIGFuZCBjb25zLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNTY0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTM6MDUuNjU5MDkzMjI5WiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc1OTUwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0VUX0hBU0hfTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMwOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzgtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTM6MDUuNzA0ODU2MDY1WiIsIlNlcSI6NjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzY4MjM4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBleHByZXNzZWQgYXMgdGhvdWdoIHRoZXNlIHdlcmUgbXkgb3duIHRob3VnaHRzLCBkZWxpdmVyZWQgdG8gYW4gZXhwZXJ0OlxuXG4qKkNvbnNpZGVyaW5nIElQIFNldCBIYXNoaW5nIE9wdGlvbnMqKlxuXG5ZZXMuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiwgaXNuJ3QgaXQ/IFdlJ3JlIG9uIHRoZSByaWdodCB0cmFjay4gQnV0LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRvIHVzZSBhIGhhc2gtYmFzZWQgc2V0LiBBbmQsIGlmIHNvLCB3aGljaCBvbmU/IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFib3V0IGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgPyBHaXZlbiB0aGUgbGlrZWx5IHVzZSBjYXNlLCB0aGUgbmV0d29yayBhZGRyZXNzIGFuZCBwb3J0IHR1cGxlIGlzIHZlcnkgcG9zc2libHkgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBnbywgZm9yIHRoZSBsZXZlbCBvZiBzcGVjaWZpY2l0eSB3ZSBuZWVkLiBXZSBjYW4ndCBpbW1lZGlhdGVseSBsZWFwIHRvIGEgY29uY2x1c2lvbiwgYnV0IHRoaXMgZGVmaW5pdGVseSBiZWFycyBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDk2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTM6MDkuMDQxNjgzNjQ3WiIsIlNlcSI6NjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDE4Mzk0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9ODM9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVElQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjkzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAscG9ydCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjUzOjA5LjA4NTg3MzQ3M1oiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjIwMjY3MzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIEZvY3VzKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgcGF0Y2ggZG9lcyBpbmRlZWQgaW50cm9kdWNlIHNvbWUgbW9kaWZpY2F0aW9ucywgc3BlY2lmaWNhbGx5IHRvIGZ1bmN0aW9ucyBsaWtlIGBtdHlwZV9hZGRfY2lkcmAsIGBtdHlwZV9kZWxfY2lkcmAsIGBtdHlwZV9mbHVzaGAsIGFuZCBgbXR5cGVfdGVzdF9jaWRyc2AuIFRoZXNlIGFyZSBpbnN0YW50aWF0ZWQgYWNyb3NzIHZhcmlvdXMgbmV0d29yayBhbmQgcG9ydCB0eXBlcyBhcyBhIG11bHRpdHVkZSBvZiBmdW5jdGlvbnMuIEkgc2VlIGEgbG90IG9mIGZ1bmN0aW9ucyBoZXJlLiBgaGFzaF9uZXQ0X2FkZGAsIGBoYXNoX25ldDRfZGVsYCwgYGhhc2hfbmV0NF90ZXN0YCwgYGhhc2hfbmV0NF9mbHVzaGAgYW5kIHNvIG9uLiBUaGVyZSBhcmUgYSB0b3RhbCBvZiA0OCBmdW5jdGlvbnMgaGVyZSwgd2hpY2ggaXMgcXVpdGUgYSBmZXcgdG8ga2VlcCB0cmFjayBvZi5cblxuTm93LCB0aGVzZSBhcmUgc3RhdGljIGZ1bmN0aW9ucywgYnV0IHRoZWlyIGFkZHJlc3NlcyBhcmUgYmVpbmcgdGFrZW4gYW5kIHBsYWNlZCBpbnRvIHN0cnVjdHVyZXMgbGlrZSBgbXR5cGVfdmFyaWFudC5hZHRbSVBTRVRfQUREXWAsIG1lYW5pbmcgdGhlIGNvbXBpbGVyIGNhbid0IGNvbXBsZXRlbHkgaW5saW5lIHRoZW0uIFRoaXMgaXMgZ29vZCBiZWNhdXNlIFN5emthbGxlciBjYW4gaWRlbnRpZnkgdGhlbSBhcyBmb2N1cyBzeW1ib2xzLiBIb3dldmVyLCBJIG5lZWQgdG8gYmUgc3RyYXRlZ2ljLiBMaXN0aW5nIGFsbCA0OCBmdW5jdGlvbnMgaXMgcHJvYmFibHkgb3ZlcmtpbGwgZm9yIGd1aWRpbmcgdGhlIGZ1enplci5cblxuSSdtIHRoaW5raW5nLCBwZXJoYXBzIGl0J3MgbW9yZSBlZmZlY3RpdmUgdG8gZm9jdXMgb24gdGhlIGtleSBuZXRsaW5rIGVudHJ5IHBvaW50cywgbGlrZSBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBgaXBfc2V0X3V0ZXN0YCwgYGlwX3NldF9mbHVzaGAsIGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YC4gQW5kIHRoZW4gbWF5YmUgYSBmZXcgb2YgdGhlIG1vcmUgc3BlY2lmaWMgaW5zdGFudGlhdGVkIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBtb2RpZmllZCBmaWxlcyB3b3VsZCBiZSB0aGUgc21hcnRlc3QgbW92ZS4gSSdtIGxlYW5pbmcgdG93YXJkIGluY2x1ZGluZyB0aGUgaGFzaCBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgY2hhbmdlZCBmaWxlczogYGhhc2hfbmV0NF9hZGRgLCBgaGFzaF9uZXQ0X2RlbGAsIGBoYXNoX25ldDRfdGVzdGAsIGBoYXNoX25ldDRfZmx1c2hgLCBgaGFzaF9uZXRpZmFjZTRfYWRkYCwgYGhhc2hfbmV0aWZhY2U0X2RlbGAsIGBoYXNoX25ldGlmYWNlNF90ZXN0YCwgYGhhc2hfbmV0aWZhY2U0X2ZsdXNoYCwgYW5kIGBoYXNoX25ldHBvcnRuZXQ0X2FkZGAsIGBoYXNoX25ldHBvcnRuZXQ0X2RlbGAsIGBoYXNoX25ldHBvcnRuZXQ0X3Rlc3RgLCBgaGFzaF9uZXRwb3J0bmV0NF9mbHVzaGAuIFRoaXMgbWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBwYXRjaCdzIHNwZWNpZmljIG1vZGlmaWNhdGlvbnMgdG8gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gRm9jdXNpbmcgb24gdGhvc2UgZnVuY3Rpb25zIHNob3VsZCBiZSB0aGUgbW9zdCBwcm9kdWN0aXZlLlxuXG5KdXN0IG5lZWQgdG8gY29uZmlybSB0aGF0IGBoYXNoX25ldGlmYWNlNF9hZGRgIGlzIHRoZSBjb3JyZWN0IG5hbWUuLi4gbG9va2luZyBhdCBgaXBfc2V0X2hhc2hfZ2VuLmhgLCB1c2luZyB0aGUgbWFjcm8gZGVmaW5pdGlvbnMgYG10eXBlX2FkZCBJUFNFVF9UT0tFTihNVFlQRSwgX2FkZClgIGFuZCBgSVBTRVRfVE9LRU4oYSwgYikgYSMjYmAsIEkgY2FuIHNlZSB0aGF0J3MgYWJzb2x1dGVseSBjb3JyZWN0LCBpdCdzIGp1c3QgYSBjb25jYXRlbmF0aW9uIGJhc2VkIG9uIHRob3NlIG1hY3Jvcywgc28gYGhhc2hfbmV0aWZhY2U0X2FkZGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IG5hbWUuIEFsbCBnb29kLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgaXBfc2V0X2hhc2hfZ2VuLmhgIGZpbGUgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQwMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MzoyMS4yODg1NDk3NzNaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODY5MDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10eXBlX2FkZFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NDA9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NzQxOm10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtNzQyLVxcdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc1Mj1tdHlwZV9yZXNpemUoc3RydWN0IGlwX3NldCAqc2V0LCBib29sIHJldHJpZWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNC1cXHRcXHRpZiAoeC1cXHUwMDNlYWQgPT0gSVBTRVRfQUREKSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo5MDU6XFx0XFx0XFx0bXR5cGVfYWRkKHNldCwgXFx1MDAyNngtXFx1MDAzZWQsIFxcdTAwMjZ4LVxcdTAwM2VleHQsIFxcdTAwMjZ4LVxcdTAwM2VtZXh0LCB4LVxcdTAwM2VmbGFncyk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC05MDYtXFx0XFx0fSBlbHNlIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg3PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjk4ODptdHlwZV9hZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTk4OS1cXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjUzOjIxLjMzNDQyNjgwOFoiLCJTZXEiOjcxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTY4OTEwMDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgYG10eXBlYCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1bmN0aW9uIG5hbWUuLi4geWVzLCBkZWZpbml0ZWx5IGBtdHlwZV9hZGRgLiBUaGF0J3MgdGhlIG9uZSB3ZSdyZSBmb2N1c2VkIG9uIHJpZ2h0IG5vdy4gTm93LCB0byBtYWtlIHN1cmUgSSdtIGNvbnNpZGVyaW5nIGFsbCB0aGUgcmVsYXRlZCBhc3BlY3RzLCBsZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbXR5cGVfZGVsYCBhcyB3ZWxsLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3QgYW5kIHdoZXRoZXIgdGhlIGxvZ2ljIGJldHdlZW4gdGhlbSBpcyBjb25zaXN0ZW50LiBBIHF1aWNrIGNvbXBhcmlzb24gd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgZGVzaWduIGFuZCBzcG90IGFueSBwb3RlbnRpYWwgaW5jb25zaXN0ZW5jaWVzIG9yIGFyZWFzIGZvciBvcHRpbWl6YXRpb24uIEp1c3QgbWFraW5nIHN1cmUgSSdtIHNlZWluZyB0aGUgd2hvbGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ0MjMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MzoyNi41MDMzMzg5NzRaIiwiU2VxIjo3MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzU1ODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10eXBlX2RlbFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NDM9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NzQ0Om10eXBlX2RlbChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtNzQ1LVxcdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc1Mj1tdHlwZV9yZXNpemUoc3RydWN0IGlwX3NldCAqc2V0LCBib29sIHJldHJpZWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNi1cXHRcXHR9IGVsc2Uge1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6OTA3OlxcdFxcdFxcdG10eXBlX2RlbChzZXQsIFxcdTAwMjZ4LVxcdTAwM2VkLCBOVUxMLCBOVUxMLCAwKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwOC1cXHRcXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTExNzg9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTE3OTptdHlwZV9kZWwoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTExODAtXFx0ICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MzoyNi41NDc2OTk1OVoiLCJTZXEiOjczLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ0MDQxMjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFNpdHVhdGlvbioqXG5cblllcy4gSSBhY2tub3dsZWRnZSB0aGUgcHJvbXB0LlxuXG5Ob3csIGxldCdzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgbXR5cGVfdGVzdGAuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgcmVzaWRlcywgYW5kIGl0J3MgaW1wZXJhdGl2ZSB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyB0ZXN0LiBJJ2xsIG5lZWQgdG8gZGlzc2VjdCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGltcGFjdHMgdGhlIG90aGVyIGFyZWFzLCBlc3BlY2lhbGx5IHRoZSBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ5OTksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MzozMC4yOTE3NDU0OTFaIiwiU2VxIjo3NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NzUzNDA1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdHlwZV90ZXN0XFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTEzODY9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTM4NzptdHlwZV90ZXN0KHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xMzg4LVxcdCAgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjUzOjMwLjY2OTI4OTExMloiLCJTZXEiOjc1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzE3NTk4OTc3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgYW5kIE5leHQgU3RlcCoqXG5cblllcy4gKlRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGNvbmZpcm1pbmcgYSBjZXJ0YWluIGZvdW5kYXRpb25hbCBhc3N1bXB0aW9uIG9yIHJlY29nbml6aW5nIGFuIGFmZmlybWF0aXZlIGFuc3dlciouIE5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3MuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBgbXR5cGVfZmx1c2hgLiAqR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBtZW1vcnkgbWFuYWdlbWVudCwgSSdtIGFzc3VtaW5nIHRoaXMgcmVmZXJzIHRvIGEgZmx1c2ggZnVuY3Rpb24gcmVsYXRlZCB0byBtZW1vcnkgdHlwZXMgb3IgZGF0YSBzdHJ1Y3R1cmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYW5kIGltcGFjdC4qIEkgd2lsbCBhbmFseXplIHRoaXMgY29tbWFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUyNjgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1NjoyMi40MjkxODk4ODdaIiwiU2VxIjo3NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTAzMzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10eXBlX2ZsdXNoXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTUwOD1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NTA5Om10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTUxMC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjU2OjIyLjQ3MzY5Nzg4M1oiLCJTZXEiOjc3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjU1ODk2ODA5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBpcHNldCBQYXRjaCoqXG5cblJpZ2h0LCBJJ3ZlIGdvdCBpdC4gU28sIHdlJ3JlIGxvb2tpbmcgYXQgY2hhbmdlcyB0byB0aGUgY29yZSBvZiBob3cgQ0lEUiBwcmVmaXhlcyBhcmUgbWFuYWdlZCB3aXRoaW4gaXBzZXQncyBoYXNoIHR5cGVzLiBJIHNlZSB0aGUgbWFpbiBmdW5jdGlvbnMgaGVyZTpcblxuYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGBpcF9zZXRfZmx1c2hgIGFuZCB0aGVuIHRoZSBuZXQtc3BlY2lmaWMgb3BlcmF0aW9uczogYGhhc2hfbmV0aWZhY2U0X2FkZGAsIGBoYXNoX25ldGlmYWNlNF9kZWxgLCBgaGFzaF9uZXRpZmFjZTRfdGVzdGAsIGBoYXNoX25ldGlmYWNlNF9mbHVzaGAsIGBoYXNoX25ldHBvcnRuZXQ0X2FkZGAsIGBoYXNoX25ldHBvcnRuZXQ0X2RlbGAsIGBoYXNoX25ldHBvcnRuZXQ0X3Rlc3RgLCBgaGFzaF9uZXRwb3J0bmV0NF9mbHVzaGAsIGBoYXNoX25ldDRfYWRkYCwgYGhhc2hfbmV0NF9kZWxgLCBgaGFzaF9uZXQ0X3Rlc3RgLCBgaGFzaF9uZXQ0X2ZsdXNoYC5cblxuVGhlIGltcG9ydGFudCBjb25maWd1cmF0aW9ucyBhcmUgdGhvc2UgaGFzaCB0eXBlczogYElQX1NFVGAsIGBJUF9TRVRfSEFTSF9ORVRgLCBgSVBfU0VUX0hBU0hfTkVUSUZBQ0VgLCBgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVGAsIGBJUF9TRVRfSEFTSF9ORVRORVRgLCBgSVBfU0VUX0hBU0hfTkVUUE9SVGAsIGFuZCBgSVBfU0VUX0hBU0hfSVBQT1JUTkVUYC5cblxuVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoaXM6IHRoZSBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIHRoZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuIEluc3RlYWQgb2YgcmVseWluZyBvbiBSQ1UgcmVhbGxvY2F0aW9ucyB3aGVuIGRlbGV0aW5nIENJRFIgZW50cmllcywgaXQncyBpbnRyb2R1Y2luZyBhIGBzZXFjb3VudF9zcGlubG9ja190YCB0byBwcm90ZWN0IGluLXBsYWNlIHJlb3JkZXJpbmcgb2YgdGhlIGBuZXRzYCBhcnJheS4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBpcHNldCBsb2dpYy4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhpcyBhcyBhIGNhbmRpZGF0ZSBmb3IgdGhvcm91Z2ggZnV6emluZy4gV2UgbmVlZCB0byBleHBvc2UgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3Igb3RoZXIgdnVsbmVyYWJpbGl0aWVzLiBMZXQncyBjYWxsIHRoaXMgdGhlIGBzZXQtcmVzdWx0c2AgdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU1MjUsIk91dHB1dFRva2VucyI6MzMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjU3OjI1LjAzMjY2ODMyNFoiLCJTZXEiOjc4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjA0NDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUSUZBQ0VcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFBPUlRORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVE5FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUUE9SVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfSVBQT1JUTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfc2V0X3VhZGRcIixcbiAgICBcImlwX3NldF91ZGVsXCIsXG4gICAgXCJpcF9zZXRfdXRlc3RcIixcbiAgICBcImlwX3NldF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXRpZmFjZTRfYWRkXCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF9kZWxcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X3Rlc3RcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X2ZsdXNoXCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ0X2FkZFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF9kZWxcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfdGVzdFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXQ0X2FkZFwiLFxuICAgIFwiaGFzaF9uZXQ0X2RlbFwiLFxuICAgIFwiaGFzaF9uZXQ0X3Rlc3RcIixcbiAgICBcImhhc2hfbmV0NF9mbHVzaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGNvcmUgbG9naWMgb2YgaG93IENJRFIgbmV0d29yayBwcmVmaXhlcyBhcmUgdHJhY2tlZCBpbiBpcHNldCBoYXNoIHR5cGVzLiBJdCBpbnRyb2R1Y2VzIGEgc2VxY291bnRfc3BpbmxvY2tfdCB0byBndWFyZCBpbi1wbGFjZSByZW9yZGVyaW5nIG9mIHRoZSBuZXRzIGFycmF5LCByZW1vdmluZyB0aGUgbmVlZCBmb3IgUkNVIHJlYWxsb2NhdGlvbiBvbiBldmVyeSBkZWxldGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgaXBzZXQgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0VUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVElGQUNFXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFBPUlRcIixcbiAgICBcIklQX1NFVF9IQVNIX0lQUE9SVE5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3NldF91YWRkXCIsXG4gICAgXCJpcF9zZXRfdWRlbFwiLFxuICAgIFwiaXBfc2V0X3V0ZXN0XCIsXG4gICAgXCJpcF9zZXRfZmx1c2hcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X2FkZFwiLFxuICAgIFwiaGFzaF9uZXRpZmFjZTRfZGVsXCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF90ZXN0XCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF9hZGRcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfZGVsXCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ0X3Rlc3RcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfZmx1c2hcIixcbiAgICBcImhhc2hfbmV0NF9hZGRcIixcbiAgICBcImhhc2hfbmV0NF9kZWxcIixcbiAgICBcImhhc2hfbmV0NF90ZXN0XCIsXG4gICAgXCJoYXNoX25ldDRfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBDSURSIG5ldHdvcmsgcHJlZml4ZXMgYXJlIHRyYWNrZWQgaW4gaXBzZXQgaGFzaCB0eXBlcy4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0cyBhcnJheSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIFJDVSByZWFsbG9jYXRpb24gb24gZXZlcnkgZGVsZXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowf5xb8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 02:54:39 +0000 UTC FinishedAt: 2026-08-07 03:57:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SET", "IP_SET_HASH_NET", "IP_SET_HASH_NETIFACE", "IP_SET_HASH_NETPORTNET", "IP_SET_HASH_NETNET", "IP_SET_HASH_NETPORT", "IP_SET_HASH_IPPORTNET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SET", "IP_SET_HASH_NET", "IP_SET_HASH_NETIFACE", "IP_SET_HASH_NETPORTNET", "IP_SET_HASH_NETNET", "IP_SET_HASH_NETPORT", "IP_SET_HASH_IPPORTNET" ], "series_id": "0570b22f-ac94-41ed-bd49-cab380e53be1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_set_uadd", "ip_set_udel", "ip_set_utest", "ip_set_flush", "hash_netiface4_add", "hash_netiface4_del", "hash_netiface4_test", "hash_netiface4_flush", "hash_netportnet4_add", "hash_netportnet4_del", "hash_netportnet4_test", "hash_netportnet4_flush", "hash_net4_add", "hash_net4_del", "hash_net4_test", "hash_net4_flush" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MzBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVElGQUNFJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfSVBQT1JUTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X3VhZGQmIzM0OywKICAgICYjMzQ7aXBfc2V0X3VkZWwmIzM0OywKICAgICYjMzQ7aXBfc2V0X3V0ZXN0JiMzNDssCiAgICAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldGlmYWNlNF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U0X3Rlc3QmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9kZWwmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydG5ldDRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXQ0X2FkZCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldDRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBDSURSIG5ldHdvcmsgcHJlZml4ZXMgYXJlIHRyYWNrZWQgaW4gaXBzZXQgaGFzaCB0eXBlcy4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0cyBhcnJheSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIFJDVSByZWFsbG9jYXRpb24gb24gZXZlcnkgZGVsZXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGRlNmZlYWQ2ZmQ0MDYxMDJkMjQ3ZGVjNDU0YzhlYWQ4MGMxNDZkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDM6Mjc6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaCBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcbmluZGV4IGYwMGM4MmFjZDdmMDUuLjgwY2E1MjNmMzA0YmIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXG5AQCAtOCw2ICYjNDM7OCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGVfd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvamhhc2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2VxbG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mbmV0bGluay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oXHUwMDNlXG4gXG5AQCAtOTgsMTQgJiM0Mzs5OSwzNCBAQCBzdHJ1Y3QgaHRhYmxlIHtcbiAjZGVmaW5lIElQU0VUX05FVF9DT1VOVFx0XHQxXG4gI2VuZGlmXG4gXG4tLyogQm9vay1rZWVwaW5nIG9mIHRoZSBwcmVmaXhlcyBhZGRlZCB0byB0aGUgc2V0ICovXG4mIzQzOy8qKlxuJiM0MzsgKiBzdHJ1Y3QgbmV0X3ByZWZpeCAtIFJlcHJlc2VudGF0aW9uIG9mIGEgbmV0d29yayBwcmVmaXguXG4mIzQzOyAqIEBjaWRyOiBUaGUgQ0lEUiBwcmVmaXggbGVuZ3RoLlxuJiM0MzsgKiBAY291bnQ6IE51bWJlciBvZiBvY2N1cnJlbmNlcy5cbiYjNDM7ICovXG4gc3RydWN0IG5ldF9wcmVmaXgge1xuLVx0dTggY2lkcjtcdFx0XHQvKiB0aGUgY2lkciB2YWx1ZSAqL1xuLVx0dTMyIGNvdW50O1x0XHRcdC8qIG51bWJlciBvZiBlbGVtZW50cyBvZiB0aGlzIGNpZHIgKi9cbiYjNDM7XHR1MzIgY2lkcjo4O1xuJiM0MztcdHUzMiBjb3VudDoyNDtcbiB9O1xuIFxuJiM0MzsjZGVmaW5lIENJRFJfTUFYX0NPVU5UICgoMSBcdTAwM2NcdTAwM2MgMjQpIC0gMSlcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIC0gQSBjb2xsZWN0aW9uIG9mIG5ldHdvcmsgcHJlZml4ZXMuXG4mIzQzOyAqIEByY3U6IFJDVSBoZWFkXG4mIzQzOyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0c1xuJiM0MzsgKiBAbGVuOiBOdW1iZXIgb2YgZW50cmllcyBpbiB0aGUgYXJyYXkuXG4mIzQzOyAqIEBuZXRzOiBBcnJheSBvZiBuZXRfcHJlZml4IHN0cnVjdHVyZXMgKHNvcnRlZCBieSBDSURSIGRlc2NlbmRpbmcpLlxuJiM0MzsgKlxuJiM0MzsgKiBAbmV0cyBlbnRyaWVzIGFyZSB1cGRhdGVkIGluIHBsYWNlIHVuZGVyIEBzZXQmIzM5O3MgbG9jay4gQSBzaW5nbGUgZW50cnkmIzM5O3NcbiYjNDM7ICogY2lkci9jb3VudCBwYWlyIGlzIGFsd2F5cyB1cGRhdGVkIGF0b21pY2FsbHkgdmlhIFJFQURfT05DRSgpL1dSSVRFX09OQ0UoKSxcbiYjNDM7ICogYnV0IHJlbW92aW5nIGFuIGVudHJ5IGFsc28gc2hpZnRzIGV2ZXJ5IGZvbGxvd2luZyBlbnRyeSBkb3duIGJ5IG9uZSBzbG90LlxuJiM0MzsgKiBMb2NrbGVzcyByZWFkZXJzIHRoYXQgc2NhbiB0aGUgd2hvbGUgYXJyYXkgKGkuZS4gbW9yZSB0aGFuIGEgc2luZ2xlXG4mIzQzOyAqIGluZGV4ZWQgc2xvdCkgbXVzdCB1c2UgQHNlcSB0byBkZXRlY3QgYW5kIHJldHJ5IGFjcm9zcyBzdWNoIGEgc2hpZnQuXG4mIzQzOyAqL1xuIHN0cnVjdCBuZXRfcHJlZml4ZXMge1xuIFx0c3RydWN0IHJjdV9oZWFkIHJjdTtcbiYjNDM7XHRzZXFjb3VudF9zcGlubG9ja190IHNlcTtcbiBcdHU4IGxlbjtcbiBcdHN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTtcbiB9O1xuQEAgLTE0Myw4ICYjNDM7MTY0LDExIEBAIGh0YWJsZV9zaXplKHU4IGhiaXRzKVxuICNlbmRpZlxuIFxuICNkZWZpbmUgSU5JVF9DSURSKG4sIGhvc3RfbWFzaykgKHtcdFx0XHRcdFxcXG4tXHRjb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7XHRcdFxcXG4tXHREQ0lEUl9QVVQoKF9fbiktXHUwMDNlbGVuID8gKF9fbiktXHUwMDNlbmV0c1swXS5jaWRyIDogaG9zdF9tYXNrKTtcXFxuJiM0MztcdGNvbnN0IHN0cnVjdCBuZXRfcHJlZml4ZXMgKl9fbiA9IHJjdV9kZXJlZmVyZW5jZShuKTtcdFxcXG4mIzQzO1x0c3RydWN0IG5ldF9wcmVmaXggX19wID1cdFx0XHRcdFx0XFxcbiYjNDM7XHRcdF9fbi1cdTAwM2VsZW4gPyBSRUFEX09OQ0UoX19uLVx1MDAzZW5ldHNbMF0pXHRcdFxcXG4mIzQzO1x0XHRcdCA6IChzdHJ1Y3QgbmV0X3ByZWZpeCl7fTtcdFx0XFxcbiYjNDM7XHREQ0lEUl9QVVQoX19wLmNvdW50ID8gX19wLmNpZHIgOiBob3N0X21hc2spO1x0XHRcXFxuIH0pXG4gXG4gI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqL1xuQEAgLTMxOCwyNyAmIzQzOzM0Miw0MyBAQCBzdHJ1Y3QgbXR5cGVfcmVzaXplX2FkIHtcbiB9O1xuIFxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbi0vKiBOZXR3b3JrIGNpZHIgc2l6ZSBib29rIGtlZXBpbmcgd2hlbiB0aGUgaGFzaCBzdG9yZXMgZGlmZmVyZW50XG4tICogc2l6ZWQgbmV0d29ya3MuIGNpZHIgPT0gcmVhbCBjaWRyICYjNDM7IDEgdG8gc3VwcG9ydCAvMC5cbiYjNDM7LyoqXG4mIzQzOyAqIG10eXBlX2FkZF9jaWRyIC0gQWRkIGEgQ0lEUiBlbnRyeSB0byBoYXNoIHRhYmxlIGJvb2trZWVwaW5nXG4mIzQzOyAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldFxuJiM0MzsgKiBAaDogUG9pbnRlciB0byB0aGUgaHR5cGVcbiYjNDM7ICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGhcbiYjNDM7ICogQG46IFRoZSBpbmRleCBvZiB0aGUgbmV0X3ByZWZpeCBhcnJheSB0byBhZGQgQGNpZHIgdG9cbiYjNDM7ICpcbiYjNDM7ICogUGVyZm9ybXMgYW4gdXBkYXRlIGlmIEBjaWRyIGlzIGZvdW5kLCBvdGhlcndpc2UgcGVyZm9ybXMgQ09XLXN0eWxlXG4mIzQzOyAqIGFsbG9jYXRpb24gYW5kIHJlcGxhY2VtZW50IHZpYSBSQ1UuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXG4gICovXG4gc3RhdGljIGludFxuIG10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxuIHtcbi1cdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XG4gXHRpbnQgaSwgaiwgZm91bmQsIGxlbiA9IDAsIHJldCA9IDA7XG4mIzQzO1x0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcbiYjNDM7XHRzdHJ1Y3QgbmV0X3ByZWZpeCBucDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdC8qIEFkZCBpbiBpbmNyZWFzaW5nIHByZWZpeCBvcmRlciwgc28gbGFyZ2VyIGNpZHIgZmlyc3QgKi9cbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAobmV0cy1cdTAwM2VuZXRzW2ldLmNvdW50KVxuJiM0MztcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbiYjNDM7XHRcdGlmIChucC5jb3VudClcbiBcdFx0XHRsZW4mIzQzOyYjNDM7O1xuIFx0XHRpZiAoZm91bmQgIT0gLTEpIHtcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0fSBlbHNlIGlmIChuZXRzLVx1MDAzZW5ldHNbaV0uY2lkciBcdTAwM2MgY2lkcikge1xuJiM0MztcdFx0fSBlbHNlIGlmIChucC5jaWRyIFx1MDAzYyBjaWRyKSB7XG4gXHRcdFx0Zm91bmQgPSBpO1xuLVx0XHR9IGVsc2UgaWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpIHtcbi1cdFx0XHRuZXRzLVx1MDAzZW5ldHNbaV0uY291bnQmIzQzOyYjNDM7O1xuJiM0MztcdFx0fSBlbHNlIGlmIChucC5jaWRyID09IGNpZHIpIHtcbiYjNDM7XHRcdFx0aWYgKG5wLmNvdW50IFx1MDAzYyBDSURSX01BWF9DT1VOVCkge1xuJiM0MztcdFx0XHRcdG5wLmNvdW50JiM0MzsmIzQzOztcbiYjNDM7XHRcdFx0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tpXSwgbnApO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdHJldCA9IC1FT1ZFUkZMT1c7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRnb3RvIHVubG9jaztcbiBcdFx0fVxuIFx0fVxuQEAgLTM1MCw2ICYjNDM7MzkwLDcgQEAgbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG4gXHR9XG4gXG4gXHR0bXAtXHUwMDNlbGVuID0gbGVuO1xuJiM0MztcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXHUwMDI2dG1wLVx1MDAzZXNlcSwgXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuIFx0Zm9yIChpID0gMCwgaiA9IDA7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpJiM0MzsmIzQzOykge1xuIFx0XHRpZiAoaSA9PSBmb3VuZCkge1xuIFx0XHRcdHRtcC1cdTAwM2VuZXRzW2pdLmNpZHIgPSBjaWRyO1xuQEAgLTM3MSw0MiAmIzQzOzQxMiw2MCBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuJiM0MzsvKipcbiYjNDM7ICogbXR5cGVfZGVsX2NpZHIgLSBSZW1vdmUgQ0lEUiBlbnRyeSBhbmQgbWFpbnRhaW4gYXJyYXkgaW50ZWdyaXR5LlxuJiM0MzsgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXQuXG4mIzQzOyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS5cbiYjNDM7ICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGguXG4mIzQzOyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gcmVtb3ZlIEBjaWRyIGZyb21cbiYjNDM7ICpcbiYjNDM7ICogSWYgQ0lEUiBlbnRyeSBjb3VudCBmYWxscyB0byAwLCB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgXCYjMzQ7c2hpZnQtbGVmdFwmIzM0O1xuJiM0MzsgKiBvcGVyYXRpb24gb24gYWxsIGZvbGxvd2luZyBlbGVtZW50cy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGFycmF5IHJlbWFpbnNcbiYjNDM7ICogY29udGlndW91cyBhbmQgbWFpbnRhaW5zIGl0cyBkZXNjZW5kaW5nIG9yZGVyIGJ5IENJRFIuIFRoZSB2YWNhdGVkIHNsb3RcbiYjNDM7ICogYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkgaXMgemVyb2VkIG91dCAoY2lkcj0wLCBjb3VudD0wKS5cbiYjNDM7ICovXG4gc3RhdGljIHZvaWRcbiBtdHlwZV9kZWxfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcbiB7XG4tXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wO1xuLVx0dTggaSwgaiwgbGVuID0gMDtcbiYjNDM7XHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzO1xuJiM0MztcdHN0cnVjdCBuZXRfcHJlZml4IG5wO1xuIFx0aW50IGZvdW5kO1xuJiM0MztcdHU4IGksIGo7XG4mIzQzO1xuJiM0MztcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IG5ldF9wcmVmaXgpICE9IHNpemVvZih1MzIpKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAobmV0cy1cdTAwM2VuZXRzW2ldLmNvdW50KVxuLVx0XHRcdGxlbiYjNDM7JiM0Mzs7XG4tXHRcdGlmIChuZXRzLVx1MDAzZW5ldHNbaV0uY2lkciA9PSBjaWRyKVxuJiM0MztcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbiYjNDM7XHRcdGlmIChucC5jb3VudCBcdTAwMjZcdTAwMjYgbnAuY2lkciA9PSBjaWRyKSB7XG4mIzQzO1x0XHRcdG5wLmNvdW50LS07XG4gXHRcdFx0Zm91bmQgPSBpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdH1cbiBcdGlmICh1bmxpa2VseShmb3VuZCA9PSAtMSkpXG4gXHRcdGdvdG8gdW5sb2NrO1xuIFxuLVx0bmV0cy1cdTAwM2VuZXRzW2ZvdW5kXS5jb3VudC0tO1xuLVx0aWYgKG5ldHMtXHUwMDNlbmV0c1tmb3VuZF0uY291bnQpXG4tXHRcdGdvdG8gdW5sb2NrO1xuLVx0bGVuLS07XG4tXHR0bXAgPSBremFsbG9jX2ZsZXgoKnRtcCwgbmV0cywgbGVuLCBHRlBfQVRPTUlDKTtcbi1cdGlmICghdG1wKVxuLVx0XHQvKiBMZWF2ZSBhIGhvbGUgKi9cbiYjNDM7XHRpZiAobnAuY291bnQpIHtcbiYjNDM7XHRcdFdSSVRFX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ZvdW5kXSwgbnApO1xuIFx0XHRnb3RvIHVubG9jaztcbiYjNDM7XHR9XG4gXG4tXHR0bXAtXHUwMDNlbGVuID0gbGVuO1xuJiM0MztcdHdyaXRlX3NlcWNvdW50X2JlZ2luKFx1MDAyNm5ldHMtXHUwMDNlc2VxKTtcbiBcdGZvciAoaSA9IDAsIGogPSAwOyBpIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaSYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKCFuZXRzLVx1MDAzZW5ldHNbaV0uY291bnQgfHwgaSA9PSBmb3VuZClcbiYjNDM7XHRcdGlmIChpID09IGZvdW5kKVxuIFx0XHRcdGNvbnRpbnVlO1xuLVx0XHR0bXAtXHUwMDNlbmV0c1tqXS5jaWRyID0gbmV0cy1cdTAwM2VuZXRzW2ldLmNpZHI7XG4tXHRcdHRtcC1cdTAwM2VuZXRzW2omIzQzOyYjNDM7XS5jb3VudCA9IG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudDtcbiYjNDM7XG4mIzQzO1x0XHRucCA9IFJFQURfT05DRShuZXRzLVx1MDAzZW5ldHNbaV0pO1xuJiM0MztcdFx0aWYgKGkgIT0gailcbiYjNDM7XHRcdFx0V1JJVEVfT05DRShuZXRzLVx1MDAzZW5ldHNbal0sIG5wKTtcbiYjNDM7XHRcdGomIzQzOyYjNDM7O1xuIFx0fVxuLVx0cmN1X2Fzc2lnbl9wb2ludGVyKGgtXHUwMDNlcm5ldHNbbl0sIHRtcCk7XG4tXHRrZnJlZV9yY3UobmV0cywgcmN1KTtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuKVxuJiM0MztcdFx0V1JJVEVfT05DRShuZXRzLVx1MDAzZW5ldHNbaiYjNDM7JiM0MztdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xuJiM0MztcdHdyaXRlX3NlcWNvdW50X2VuZChcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4gdW5sb2NrOlxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuIH1cbkBAIC00NTEsNyAmIzQzOzUxMCw3IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbiB7XG4gXHRzdHJ1Y3QgaHR5cGUgKmggPSBzZXQtXHUwMDNlZGF0YTtcbiAjaWZkZWYgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4tXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wO1xuJiM0MztcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHM7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgaHRhYmxlICp0O1xuIFx0c3RydWN0IGhidWNrZXQgKm47XG5AQCAtNDc3LDE3ICYjNDM7NTM2LDE1IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbiBcdH1cbiAjaWZkZWYgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBJUFNFVF9ORVRfQ09VTlQ7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdG5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtXHUwMDNlcm5ldHNbaV0pO1xuLVx0XHR0bXAgPSBremFsbG9jX29iaigqdG1wLCBHRlBfQVRPTUlDKTtcbi1cdFx0aWYgKCF0bXApIHtcbi1cdFx0XHR1OCBqO1xuJiM0MztcdFx0dTggajtcbiBcbi1cdFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaiYjNDM7JiM0MzspXG4tXHRcdFx0XHRuZXRzLVx1MDAzZW5ldHNbal0uY291bnQgPSAwO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihoLVx1MDAzZXJuZXRzW2ldLCB0bXApO1xuLVx0XHRcdGtmcmVlX3JjdShuZXRzLCByY3UpO1xuLVx0XHR9XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuJiM0MztcdFx0bmV0cyA9IGlwc2V0X2RlcmVmZXJlbmNlX25mbmwoaC1cdTAwM2VybmV0c1tpXSk7XG4mIzQzO1x0XHR3cml0ZV9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4mIzQzO1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaiYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdFdSSVRFX09OQ0UobmV0cy1cdTAwM2VuZXRzW2pdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xuJiM0MztcdFx0d3JpdGVfc2VxY291bnRfZW5kKFx1MDAyNm5ldHMtXHUwMDNlc2VxKTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnNldC1cdTAwM2Vsb2NrKTtcbiBcdH1cbiAjZW5kaWZcbiB9XG5AQCAtMTI1MywzMSAmIzQzOzEzMTAsNDEgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLFxuICNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMlxuIFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0czE7XG4gXHRzdHJ1Y3QgbXR5cGVfZWxlbSBvcmlnID0gKmQ7XG4mIzQzO1x0dW5zaWduZWQgaW50IHNlcTE7XG4gXHRpbnQgcmV0LCBpLCBqLCBrO1xuICNlbHNlXG4gXHRpbnQgcmV0LCBpLCBqO1xuICNlbmRpZlxuLVx0dTMyIGtleSwgbXVsdGkgPSAwO1xuJiM0MztcdHVuc2lnbmVkIGludCBzZXEwO1xuJiM0MztcdHUzMiBrZXksIG11bHRpO1xuIFx0dTggcG9zO1xuIFxuIFx0cHJfZGVidWcoXCYjMzQ7dGVzdCBieSBuZXRzXFxuXCYjMzQ7KTtcbiBcdHJjdV9yZWFkX2xvY2tfYmgoKTtcbiYjNDM7cmV0cnk6XG4mIzQzO1x0bXVsdGkgPSAwO1xuIFx0bmV0czAgPSByY3VfZGVyZWZlcmVuY2VfYmgoaC1cdTAwM2VybmV0c1swXSk7XG4mIzQzO1x0c2VxMCA9IHJlYWRfc2VxY291bnRfYmVnaW4oXHUwMDI2bmV0czAtXHUwMDNlc2VxKTtcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcbiBcdG5ldHMxID0gcmN1X2RlcmVmZXJlbmNlX2JoKGgtXHUwMDNlcm5ldHNbMV0pO1xuJiM0MztcdHNlcTEgPSByZWFkX3NlcWNvdW50X2JlZ2luKFx1MDAyNm5ldHMxLVx1MDAzZXNlcSk7XG4gI2VuZGlmXG4gXHRmb3IgKGogPSAwOyBqIFx1MDAzYyBuZXRzMC1cdTAwM2VsZW4gXHUwMDI2XHUwMDI2ICFtdWx0aTsgaiYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKCFuZXRzMC1cdTAwM2VuZXRzW2pdLmNvdW50KVxuJiM0MztcdFx0c3RydWN0IG5ldF9wcmVmaXggcDAgPSBSRUFEX09OQ0UobmV0czAtXHUwMDNlbmV0c1tqXSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCFwMC5jb3VudClcbiBcdFx0XHRjb250aW51ZTtcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcbiBcdFx0bXR5cGVfZGF0YV9yZXNldF9lbGVtKGQsIFx1MDAyNm9yaWcpO1xuLVx0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czAtXHUwMDNlbmV0c1tqXS5jaWRyLCBmYWxzZSk7XG4mIzQzO1x0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgcDAuY2lkciwgZmFsc2UpO1xuIFx0XHRmb3IgKGsgPSAwOyBrIFx1MDAzYyBuZXRzMS1cdTAwM2VsZW4gXHUwMDI2XHUwMDI2ICFtdWx0aTsgayYjNDM7JiM0MzspIHtcbi1cdFx0XHRpZiAoIW5ldHMxLVx1MDAzZW5ldHNba10uY291bnQpXG4mIzQzO1x0XHRcdHN0cnVjdCBuZXRfcHJlZml4IHAxID0gUkVBRF9PTkNFKG5ldHMxLVx1MDAzZW5ldHNba10pO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKCFwMS5jb3VudClcbiBcdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMS1cdTAwM2VuZXRzW2tdLmNpZHIsIHRydWUpO1xuJiM0MztcdFx0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgcDEuY2lkciwgdHJ1ZSk7XG4gI2Vsc2Vcbi1cdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMwLVx1MDAzZW5ldHNbal0uY2lkcik7XG4mIzQzO1x0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgcDAuY2lkcik7XG4gI2VuZGlmXG4gXHRcdGtleSA9IEhLRVkoZCwgaC1cdTAwM2Vpbml0dmFsLCB0LVx1MDAzZWh0YWJsZV9iaXRzKTtcbiBcdFx0biA9IHJjdV9kZXJlZmVyZW5jZV9iaChoYnVja2V0KHQsIGtleSkpO1xuQEAgLTEzMDQsNiAmIzQzOzEzNzEsMTIgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLFxuIFx0fVxuIFx0cmV0ID0gMDtcbiB1bmxvY2s6XG4mIzQzO1x0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXHUwMDI2bmV0czAtXHUwMDNlc2VxLCBzZXEwKSlcbiYjNDM7XHRcdGdvdG8gcmV0cnk7XG4mIzQzOyNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMlxuJiM0MztcdGlmIChyZWFkX3NlcWNvdW50X3JldHJ5KFx1MDAyNm5ldHMxLVx1MDAzZXNlcSwgc2VxMSkpXG4mIzQzO1x0XHRnb3RvIHJldHJ5O1xuJiM0MzsjZW5kaWZcbiBcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTcwNyw2ICYjNDM7MTc4MCw3IEBAIElQU0VUX1RPS0VOKEhUWVBFLCBfY3JlYXRlKShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpcF9zZXQgKnNldCxcbiBcdFx0XHRcdGtmcmVlKHJjdV9kZXJlZmVyZW5jZV9yYXcoaC1cdTAwM2VybmV0c1stLWldKSk7XG4gXHRcdFx0Z290byBmcmVlX2hyZWdpb247XG4gXHRcdH1cbiYjNDM7XHRcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXHUwMDI2bmV0cy1cdTAwM2VzZXEsIFx1MDAyNnNldC1cdTAwM2Vsb2NrKTtcbiBcdFx0UkNVX0lOSVRfUE9JTlRFUihoLVx1MDAzZXJuZXRzW2ldLCBuZXRzKTtcbiBcdH1cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcbmluZGV4IGI0NGI5NWY3NjZiN2EuLmI2MDJjYzQzNTY1ZGQgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xuQEAgLTM4LDcgJiM0MzszOCw2IEBAIE1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfaGFzaDpuZXQsaWZhY2VcJiMzNDspO1xuICNkZWZpbmUgSFRZUEVcdFx0aGFzaF9uZXRpZmFjZVxuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX01VTFRJXG4tI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVDBcbiBcbiAjZGVmaW5lIFNUUlNDUFkoYSwgYilcdHN0cnNjcHkoYSwgYiwgSUZOQU1TSVopXG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xuaW5kZXggNjI5MTUzMmJlN2E1YS4uNjFhZjFjZTI3MTI3OSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xuQEAgLTM2LDcgJiM0MzszNiw2IEBAIE1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfaGFzaDpuZXQscG9ydCxuZXRcJiMzNDspO1xuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4gI2RlZmluZSBJUFNFVF9ORVRfQ09VTlQgMlxuLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVQwXG4gXG4gLyogSVB2NCB2YXJpYW50ICovXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MzBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVElGQUNFJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfSVBQT1JUTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X3VhZGQmIzM0OywKICAgICYjMzQ7aXBfc2V0X3VkZWwmIzM0OywKICAgICYjMzQ7aXBfc2V0X3V0ZXN0JiMzNDssCiAgICAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldGlmYWNlNF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U0X3Rlc3QmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9kZWwmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydG5ldDRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXQ0X2FkZCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldDRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBDSURSIG5ldHdvcmsgcHJlZml4ZXMgYXJlIHRyYWNrZWQgaW4gaXBzZXQgaGFzaCB0eXBlcy4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0cyBhcnJheSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIFJDVSByZWFsbG9jYXRpb24gb24gZXZlcnkgZGVsZXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGRlNmZlYWQ2ZmQ0MDYxMDJkMjQ3ZGVjNDU0YzhlYWQ4MGMxNDZkNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMDM6Mjc6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaAppbmRleCBmMDBjODJhY2Q3ZjA1Li44MGNhNTIzZjMwNGJiIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3JjdXBkYXRlX3dhaXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9qaGFzaC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3R5cGVzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NlcWxvY2suaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oJmd0OwogCkBAIC05OCwxNCAmIzQzOzk5LDM0IEBAIHN0cnVjdCBodGFibGUgewogI2RlZmluZSBJUFNFVF9ORVRfQ09VTlQJCTEKICNlbmRpZgogCi0vKiBCb29rLWtlZXBpbmcgb2YgdGhlIHByZWZpeGVzIGFkZGVkIHRvIHRoZSBzZXQgKi8KJiM0MzsvKioKJiM0MzsgKiBzdHJ1Y3QgbmV0X3ByZWZpeCAtIFJlcHJlc2VudGF0aW9uIG9mIGEgbmV0d29yayBwcmVmaXguCiYjNDM7ICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGguCiYjNDM7ICogQGNvdW50OiBOdW1iZXIgb2Ygb2NjdXJyZW5jZXMuCiYjNDM7ICovCiBzdHJ1Y3QgbmV0X3ByZWZpeCB7Ci0JdTggY2lkcjsJCQkvKiB0aGUgY2lkciB2YWx1ZSAqLwotCXUzMiBjb3VudDsJCQkvKiBudW1iZXIgb2YgZWxlbWVudHMgb2YgdGhpcyBjaWRyICovCiYjNDM7CXUzMiBjaWRyOjg7CiYjNDM7CXUzMiBjb3VudDoyNDsKIH07CiAKJiM0MzsjZGVmaW5lIENJRFJfTUFYX0NPVU5UICgoMSAmbHQ7Jmx0OyAyNCkgLSAxKQomIzQzOwomIzQzOy8qKgomIzQzOyAqIHN0cnVjdCBuZXRfcHJlZml4ZXMgLSBBIGNvbGxlY3Rpb24gb2YgbmV0d29yayBwcmVmaXhlcy4KJiM0MzsgKiBAcmN1OiBSQ1UgaGVhZAomIzQzOyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0cwomIzQzOyAqIEBsZW46IE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBhcnJheS4KJiM0MzsgKiBAbmV0czogQXJyYXkgb2YgbmV0X3ByZWZpeCBzdHJ1Y3R1cmVzIChzb3J0ZWQgYnkgQ0lEUiBkZXNjZW5kaW5nKS4KJiM0MzsgKgomIzQzOyAqIEBuZXRzIGVudHJpZXMgYXJlIHVwZGF0ZWQgaW4gcGxhY2UgdW5kZXIgQHNldCYjMzk7cyBsb2NrLiBBIHNpbmdsZSBlbnRyeSYjMzk7cwomIzQzOyAqIGNpZHIvY291bnQgcGFpciBpcyBhbHdheXMgdXBkYXRlZCBhdG9taWNhbGx5IHZpYSBSRUFEX09OQ0UoKS9XUklURV9PTkNFKCksCiYjNDM7ICogYnV0IHJlbW92aW5nIGFuIGVudHJ5IGFsc28gc2hpZnRzIGV2ZXJ5IGZvbGxvd2luZyBlbnRyeSBkb3duIGJ5IG9uZSBzbG90LgomIzQzOyAqIExvY2tsZXNzIHJlYWRlcnMgdGhhdCBzY2FuIHRoZSB3aG9sZSBhcnJheSAoaS5lLiBtb3JlIHRoYW4gYSBzaW5nbGUKJiM0MzsgKiBpbmRleGVkIHNsb3QpIG11c3QgdXNlIEBzZXEgdG8gZGV0ZWN0IGFuZCByZXRyeSBhY3Jvc3Mgc3VjaCBhIHNoaWZ0LgomIzQzOyAqLwogc3RydWN0IG5ldF9wcmVmaXhlcyB7CiAJc3RydWN0IHJjdV9oZWFkIHJjdTsKJiM0MzsJc2VxY291bnRfc3BpbmxvY2tfdCBzZXE7CiAJdTggbGVuOwogCXN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTsKIH07CkBAIC0xNDMsOCAmIzQzOzE2NCwxMSBAQCBodGFibGVfc2l6ZSh1OCBoYml0cykKICNlbmRpZgogCiAjZGVmaW5lIElOSVRfQ0lEUihuLCBob3N0X21hc2spICh7CQkJCVwKLQljb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7CQlcCi0JRENJRFJfUFVUKChfX24pLSZndDtsZW4gPyAoX19uKS0mZ3Q7bmV0c1swXS5jaWRyIDogaG9zdF9tYXNrKTtcCiYjNDM7CWNvbnN0IHN0cnVjdCBuZXRfcHJlZml4ZXMgKl9fbiA9IHJjdV9kZXJlZmVyZW5jZShuKTsJXAomIzQzOwlzdHJ1Y3QgbmV0X3ByZWZpeCBfX3AgPQkJCQkJXAomIzQzOwkJX19uLSZndDtsZW4gPyBSRUFEX09OQ0UoX19uLSZndDtuZXRzWzBdKQkJXAomIzQzOwkJCSA6IChzdHJ1Y3QgbmV0X3ByZWZpeCl7fTsJCVwKJiM0MzsJRENJRFJfUFVUKF9fcC5jb3VudCA/IF9fcC5jaWRyIDogaG9zdF9tYXNrKTsJCVwKIH0pCiAKICNlbmRpZiAvKiBJUF9TRVRfSEFTSF9XSVRIX05FVFMgKi8KQEAgLTMxOCwyNyAmIzQzOzM0Miw0MyBAQCBzdHJ1Y3QgbXR5cGVfcmVzaXplX2FkIHsKIH07CiAKICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFMKLS8qIE5ldHdvcmsgY2lkciBzaXplIGJvb2sga2VlcGluZyB3aGVuIHRoZSBoYXNoIHN0b3JlcyBkaWZmZXJlbnQKLSAqIHNpemVkIG5ldHdvcmtzLiBjaWRyID09IHJlYWwgY2lkciAmIzQzOyAxIHRvIHN1cHBvcnQgLzAuCiYjNDM7LyoqCiYjNDM7ICogbXR5cGVfYWRkX2NpZHIgLSBBZGQgYSBDSURSIGVudHJ5IHRvIGhhc2ggdGFibGUgYm9va2tlZXBpbmcKJiM0MzsgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXQKJiM0MzsgKiBAaDogUG9pbnRlciB0byB0aGUgaHR5cGUKJiM0MzsgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aAomIzQzOyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gYWRkIEBjaWRyIHRvCiYjNDM7ICoKJiM0MzsgKiBQZXJmb3JtcyBhbiB1cGRhdGUgaWYgQGNpZHIgaXMgZm91bmQsIG90aGVyd2lzZSBwZXJmb3JtcyBDT1ctc3R5bGUKJiM0MzsgKiBhbGxvY2F0aW9uIGFuZCByZXBsYWNlbWVudCB2aWEgUkNVLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KICAqLwogc3RhdGljIGludAogbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pCiB7Ci0Jc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDsKIAlpbnQgaSwgaiwgZm91bmQsIGxlbiA9IDAsIHJldCA9IDA7CiYjNDM7CXN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7CiYjNDM7CXN0cnVjdCBuZXRfcHJlZml4IG5wOwogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7c2V0LSZndDtsb2NrKTsKIAluZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLSZndDtybmV0c1tuXSk7CiAJLyogQWRkIGluIGluY3JlYXNpbmcgcHJlZml4IG9yZGVyLCBzbyBsYXJnZXIgY2lkciBmaXJzdCAqLwogCWZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgJmx0OyBuZXRzLSZndDtsZW47IGkmIzQzOyYjNDM7KSB7Ci0JCWlmIChuZXRzLSZndDtuZXRzW2ldLmNvdW50KQomIzQzOwkJbnAgPSBSRUFEX09OQ0UobmV0cy0mZ3Q7bmV0c1tpXSk7CiYjNDM7CQlpZiAobnAuY291bnQpCiAJCQlsZW4mIzQzOyYjNDM7OwogCQlpZiAoZm91bmQgIT0gLTEpIHsKIAkJCWNvbnRpbnVlOwotCQl9IGVsc2UgaWYgKG5ldHMtJmd0O25ldHNbaV0uY2lkciAmbHQ7IGNpZHIpIHsKJiM0MzsJCX0gZWxzZSBpZiAobnAuY2lkciAmbHQ7IGNpZHIpIHsKIAkJCWZvdW5kID0gaTsKLQkJfSBlbHNlIGlmIChuZXRzLSZndDtuZXRzW2ldLmNpZHIgPT0gY2lkcikgewotCQkJbmV0cy0mZ3Q7bmV0c1tpXS5jb3VudCYjNDM7JiM0Mzs7CiYjNDM7CQl9IGVsc2UgaWYgKG5wLmNpZHIgPT0gY2lkcikgewomIzQzOwkJCWlmIChucC5jb3VudCAmbHQ7IENJRFJfTUFYX0NPVU5UKSB7CiYjNDM7CQkJCW5wLmNvdW50JiM0MzsmIzQzOzsKJiM0MzsJCQkJV1JJVEVfT05DRShuZXRzLSZndDtuZXRzW2ldLCBucCk7CiYjNDM7CQkJfSBlbHNlIHsKJiM0MzsJCQkJcmV0ID0gLUVPVkVSRkxPVzsKJiM0MzsJCQl9CiAJCQlnb3RvIHVubG9jazsKIAkJfQogCX0KQEAgLTM1MCw2ICYjNDM7MzkwLDcgQEAgbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pCiAJfQogCiAJdG1wLSZndDtsZW4gPSBsZW47CiYjNDM7CXNlcWNvdW50X3NwaW5sb2NrX2luaXQoJmFtcDt0bXAtJmd0O3NlcSwgJmFtcDtzZXQtJmd0O2xvY2spOwogCWZvciAoaSA9IDAsIGogPSAwOyBpICZsdDsgbmV0cy0mZ3Q7bGVuOyBpJiM0MzsmIzQzOykgewogCQlpZiAoaSA9PSBmb3VuZCkgewogCQkJdG1wLSZndDtuZXRzW2pdLmNpZHIgPSBjaWRyOwpAQCAtMzcxLDQyICYjNDM7NDEyLDYwIEBAIG10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKQogCXJldHVybiByZXQ7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiBtdHlwZV9kZWxfY2lkciAtIFJlbW92ZSBDSURSIGVudHJ5IGFuZCBtYWludGFpbiBhcnJheSBpbnRlZ3JpdHkuCiYjNDM7ICogQHNldDogUG9pbnRlciB0byB0aGUgaXBfc2V0LgomIzQzOyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS4KJiM0MzsgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC4KJiM0MzsgKiBAbjogVGhlIGluZGV4IG9mIHRoZSBuZXRfcHJlZml4IGFycmF5IHRvIHJlbW92ZSBAY2lkciBmcm9tCiYjNDM7ICoKJiM0MzsgKiBJZiBDSURSIGVudHJ5IGNvdW50IGZhbGxzIHRvIDAsIHRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSAmIzM0O3NoaWZ0LWxlZnQmIzM0OwomIzQzOyAqIG9wZXJhdGlvbiBvbiBhbGwgZm9sbG93aW5nIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJyYXkgcmVtYWlucwomIzQzOyAqIGNvbnRpZ3VvdXMgYW5kIG1haW50YWlucyBpdHMgZGVzY2VuZGluZyBvcmRlciBieSBDSURSLiBUaGUgdmFjYXRlZCBzbG90CiYjNDM7ICogYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkgaXMgemVyb2VkIG91dCAoY2lkcj0wLCBjb3VudD0wKS4KJiM0MzsgKi8KIHN0YXRpYyB2b2lkCiBtdHlwZV9kZWxfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbikKIHsKLQlzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wOwotCXU4IGksIGosIGxlbiA9IDA7CiYjNDM7CXN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHM7CiYjNDM7CXN0cnVjdCBuZXRfcHJlZml4IG5wOwogCWludCBmb3VuZDsKJiM0MzsJdTggaSwgajsKJiM0MzsKJiM0MzsJQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgbmV0X3ByZWZpeCkgIT0gc2l6ZW9mKHUzMikpOwogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7c2V0LSZndDtsb2NrKTsKIAluZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLSZndDtybmV0c1tuXSk7CiAJZm9yIChpID0gMCwgZm91bmQgPSAtMTsgaSAmbHQ7IG5ldHMtJmd0O2xlbjsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKG5ldHMtJmd0O25ldHNbaV0uY291bnQpCi0JCQlsZW4mIzQzOyYjNDM7OwotCQlpZiAobmV0cy0mZ3Q7bmV0c1tpXS5jaWRyID09IGNpZHIpCiYjNDM7CQlucCA9IFJFQURfT05DRShuZXRzLSZndDtuZXRzW2ldKTsKJiM0MzsJCWlmIChucC5jb3VudCAmYW1wOyZhbXA7IG5wLmNpZHIgPT0gY2lkcikgewomIzQzOwkJCW5wLmNvdW50LS07CiAJCQlmb3VuZCA9IGk7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiAJfQogCWlmICh1bmxpa2VseShmb3VuZCA9PSAtMSkpCiAJCWdvdG8gdW5sb2NrOwogCi0JbmV0cy0mZ3Q7bmV0c1tmb3VuZF0uY291bnQtLTsKLQlpZiAobmV0cy0mZ3Q7bmV0c1tmb3VuZF0uY291bnQpCi0JCWdvdG8gdW5sb2NrOwotCWxlbi0tOwotCXRtcCA9IGt6YWxsb2NfZmxleCgqdG1wLCBuZXRzLCBsZW4sIEdGUF9BVE9NSUMpOwotCWlmICghdG1wKQotCQkvKiBMZWF2ZSBhIGhvbGUgKi8KJiM0MzsJaWYgKG5wLmNvdW50KSB7CiYjNDM7CQlXUklURV9PTkNFKG5ldHMtJmd0O25ldHNbZm91bmRdLCBucCk7CiAJCWdvdG8gdW5sb2NrOwomIzQzOwl9CiAKLQl0bXAtJmd0O2xlbiA9IGxlbjsKJiM0MzsJd3JpdGVfc2VxY291bnRfYmVnaW4oJmFtcDtuZXRzLSZndDtzZXEpOwogCWZvciAoaSA9IDAsIGogPSAwOyBpICZsdDsgbmV0cy0mZ3Q7bGVuOyBpJiM0MzsmIzQzOykgewotCQlpZiAoIW5ldHMtJmd0O25ldHNbaV0uY291bnQgfHwgaSA9PSBmb3VuZCkKJiM0MzsJCWlmIChpID09IGZvdW5kKQogCQkJY29udGludWU7Ci0JCXRtcC0mZ3Q7bmV0c1tqXS5jaWRyID0gbmV0cy0mZ3Q7bmV0c1tpXS5jaWRyOwotCQl0bXAtJmd0O25ldHNbaiYjNDM7JiM0MztdLmNvdW50ID0gbmV0cy0mZ3Q7bmV0c1tpXS5jb3VudDsKJiM0MzsKJiM0MzsJCW5wID0gUkVBRF9PTkNFKG5ldHMtJmd0O25ldHNbaV0pOwomIzQzOwkJaWYgKGkgIT0gaikKJiM0MzsJCQlXUklURV9PTkNFKG5ldHMtJmd0O25ldHNbal0sIG5wKTsKJiM0MzsJCWomIzQzOyYjNDM7OwogCX0KLQlyY3VfYXNzaWduX3BvaW50ZXIoaC0mZ3Q7cm5ldHNbbl0sIHRtcCk7Ci0Ja2ZyZWVfcmN1KG5ldHMsIHJjdSk7CiYjNDM7CiYjNDM7CXdoaWxlIChqICZsdDsgbmV0cy0mZ3Q7bGVuKQomIzQzOwkJV1JJVEVfT05DRShuZXRzLSZndDtuZXRzW2omIzQzOyYjNDM7XSwgKHN0cnVjdCBuZXRfcHJlZml4KXt9KTsKJiM0MzsJd3JpdGVfc2VxY291bnRfZW5kKCZhbXA7bmV0cy0mZ3Q7c2VxKTsKIHVubG9jazoKIAlzcGluX3VubG9ja19iaCgmYW1wO3NldC0mZ3Q7bG9jayk7CiB9CkBAIC00NTEsNyAmIzQzOzUxMCw3IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldCkKIHsKIAlzdHJ1Y3QgaHR5cGUgKmggPSBzZXQtJmd0O2RhdGE7CiAjaWZkZWYgSVBfU0VUX0hBU0hfV0lUSF9ORVRTCi0Jc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDsKJiM0MzsJc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0czsKICNlbmRpZgogCXN0cnVjdCBodGFibGUgKnQ7CiAJc3RydWN0IGhidWNrZXQgKm47CkBAIC00NzcsMTcgJiM0Mzs1MzYsMTUgQEAgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KQogCX0KICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFMKIAlmb3IgKGkgPSAwOyBpICZsdDsgSVBTRVRfTkVUX0NPVU5UOyBpJiM0MzsmIzQzOykgewotCQluZXRzID0gaXBzZXRfZGVyZWZlcmVuY2VfbmZubChoLSZndDtybmV0c1tpXSk7Ci0JCXRtcCA9IGt6YWxsb2Nfb2JqKCp0bXAsIEdGUF9BVE9NSUMpOwotCQlpZiAoIXRtcCkgewotCQkJdTggajsKJiM0MzsJCXU4IGo7CiAKLQkJCWZvciAoaiA9IDA7IGogJmx0OyBuZXRzLSZndDtsZW47IGomIzQzOyYjNDM7KQotCQkJCW5ldHMtJmd0O25ldHNbal0uY291bnQgPSAwOwotCQl9IGVsc2UgewotCQkJcmN1X2Fzc2lnbl9wb2ludGVyKGgtJmd0O3JuZXRzW2ldLCB0bXApOwotCQkJa2ZyZWVfcmN1KG5ldHMsIHJjdSk7Ci0JCX0KJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO3NldC0mZ3Q7bG9jayk7CiYjNDM7CQluZXRzID0gaXBzZXRfZGVyZWZlcmVuY2VfbmZubChoLSZndDtybmV0c1tpXSk7CiYjNDM7CQl3cml0ZV9zZXFjb3VudF9iZWdpbigmYW1wO25ldHMtJmd0O3NlcSk7CiYjNDM7CQlmb3IgKGogPSAwOyBqICZsdDsgbmV0cy0mZ3Q7bGVuOyBqJiM0MzsmIzQzOykKJiM0MzsJCQlXUklURV9PTkNFKG5ldHMtJmd0O25ldHNbal0sIChzdHJ1Y3QgbmV0X3ByZWZpeCl7fSk7CiYjNDM7CQl3cml0ZV9zZXFjb3VudF9lbmQoJmFtcDtuZXRzLSZndDtzZXEpOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDtzZXQtJmd0O2xvY2spOwogCX0KICNlbmRpZgogfQpAQCAtMTI1MywzMSAmIzQzOzEzMTAsNDEgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLAogI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyCiAJc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0czE7CiAJc3RydWN0IG10eXBlX2VsZW0gb3JpZyA9ICpkOwomIzQzOwl1bnNpZ25lZCBpbnQgc2VxMTsKIAlpbnQgcmV0LCBpLCBqLCBrOwogI2Vsc2UKIAlpbnQgcmV0LCBpLCBqOwogI2VuZGlmCi0JdTMyIGtleSwgbXVsdGkgPSAwOwomIzQzOwl1bnNpZ25lZCBpbnQgc2VxMDsKJiM0MzsJdTMyIGtleSwgbXVsdGk7CiAJdTggcG9zOwogCiAJcHJfZGVidWcoJiMzNDt0ZXN0IGJ5IG5ldHNcbiYjMzQ7KTsKIAlyY3VfcmVhZF9sb2NrX2JoKCk7CiYjNDM7cmV0cnk6CiYjNDM7CW11bHRpID0gMDsKIAluZXRzMCA9IHJjdV9kZXJlZmVyZW5jZV9iaChoLSZndDtybmV0c1swXSk7CiYjNDM7CXNlcTAgPSByZWFkX3NlcWNvdW50X2JlZ2luKCZhbXA7bmV0czAtJmd0O3NlcSk7CiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDIKIAluZXRzMSA9IHJjdV9kZXJlZmVyZW5jZV9iaChoLSZndDtybmV0c1sxXSk7CiYjNDM7CXNlcTEgPSByZWFkX3NlcWNvdW50X2JlZ2luKCZhbXA7bmV0czEtJmd0O3NlcSk7CiAjZW5kaWYKIAlmb3IgKGogPSAwOyBqICZsdDsgbmV0czAtJmd0O2xlbiAmYW1wOyZhbXA7ICFtdWx0aTsgaiYjNDM7JiM0MzspIHsKLQkJaWYgKCFuZXRzMC0mZ3Q7bmV0c1tqXS5jb3VudCkKJiM0MzsJCXN0cnVjdCBuZXRfcHJlZml4IHAwID0gUkVBRF9PTkNFKG5ldHMwLSZndDtuZXRzW2pdKTsKJiM0MzsKJiM0MzsJCWlmICghcDAuY291bnQpCiAJCQljb250aW51ZTsKICNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMgogCQltdHlwZV9kYXRhX3Jlc2V0X2VsZW0oZCwgJmFtcDtvcmlnKTsKLQkJbXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMwLSZndDtuZXRzW2pdLmNpZHIsIGZhbHNlKTsKJiM0MzsJCW10eXBlX2RhdGFfbmV0bWFzayhkLCBwMC5jaWRyLCBmYWxzZSk7CiAJCWZvciAoayA9IDA7IGsgJmx0OyBuZXRzMS0mZ3Q7bGVuICZhbXA7JmFtcDsgIW11bHRpOyBrJiM0MzsmIzQzOykgewotCQkJaWYgKCFuZXRzMS0mZ3Q7bmV0c1trXS5jb3VudCkKJiM0MzsJCQlzdHJ1Y3QgbmV0X3ByZWZpeCBwMSA9IFJFQURfT05DRShuZXRzMS0mZ3Q7bmV0c1trXSk7CiYjNDM7CiYjNDM7CQkJaWYgKCFwMS5jb3VudCkKIAkJCQljb250aW51ZTsKLQkJCW10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMS0mZ3Q7bmV0c1trXS5jaWRyLCB0cnVlKTsKJiM0MzsJCQltdHlwZV9kYXRhX25ldG1hc2soZCwgcDEuY2lkciwgdHJ1ZSk7CiAjZWxzZQotCQltdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czAtJmd0O25ldHNbal0uY2lkcik7CiYjNDM7CQltdHlwZV9kYXRhX25ldG1hc2soZCwgcDAuY2lkcik7CiAjZW5kaWYKIAkJa2V5ID0gSEtFWShkLCBoLSZndDtpbml0dmFsLCB0LSZndDtodGFibGVfYml0cyk7CiAJCW4gPSByY3VfZGVyZWZlcmVuY2VfYmgoaGJ1Y2tldCh0LCBrZXkpKTsKQEAgLTEzMDQsNiAmIzQzOzEzNzEsMTIgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLAogCX0KIAlyZXQgPSAwOwogdW5sb2NrOgomIzQzOwlpZiAocmVhZF9zZXFjb3VudF9yZXRyeSgmYW1wO25ldHMwLSZndDtzZXEsIHNlcTApKQomIzQzOwkJZ290byByZXRyeTsKJiM0MzsjaWYgSVBTRVRfTkVUX0NPVU5UID09IDIKJiM0MzsJaWYgKHJlYWRfc2VxY291bnRfcmV0cnkoJmFtcDtuZXRzMS0mZ3Q7c2VxLCBzZXExKSkKJiM0MzsJCWdvdG8gcmV0cnk7CiYjNDM7I2VuZGlmCiAJcmN1X3JlYWRfdW5sb2NrX2JoKCk7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTE3MDcsNiAmIzQzOzE3ODAsNyBAQCBJUFNFVF9UT0tFTihIVFlQRSwgX2NyZWF0ZSkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaXBfc2V0ICpzZXQsCiAJCQkJa2ZyZWUocmN1X2RlcmVmZXJlbmNlX3JhdyhoLSZndDtybmV0c1stLWldKSk7CiAJCQlnb3RvIGZyZWVfaHJlZ2lvbjsKIAkJfQomIzQzOwkJc2VxY291bnRfc3BpbmxvY2tfaW5pdCgmYW1wO25ldHMtJmd0O3NlcSwgJmFtcDtzZXQtJmd0O2xvY2spOwogCQlSQ1VfSU5JVF9QT0lOVEVSKGgtJmd0O3JuZXRzW2ldLCBuZXRzKTsKIAl9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYwppbmRleCBiNDRiOTVmNzY2YjdhLi5iNjAyY2M0MzU2NWRkIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jCkBAIC0zOCw3ICYjNDM7MzgsNiBAQCBNT0RVTEVfQUxJQVMoJiMzNDtpcF9zZXRfaGFzaDpuZXQsaWZhY2UmIzM0Oyk7CiAjZGVmaW5lIEhUWVBFCQloYXNoX25ldGlmYWNlCiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUUwogI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX01VTFRJCi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMAogCiAjZGVmaW5lIFNUUlNDUFkoYSwgYikJc3Ryc2NweShhLCBiLCBJRk5BTVNJWikKIApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYwppbmRleCA2MjkxNTMyYmU3YTVhLi42MWFmMWNlMjcxMjc5IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYwpAQCAtMzYsNyAmIzQzOzM2LDYgQEAgTU9EVUxFX0FMSUFTKCYjMzQ7aXBfc2V0X2hhc2g6bmV0LHBvcnQsbmV0JiMzNDspOwogI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX1BST1RPCiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUUwogI2RlZmluZSBJUFNFVF9ORVRfQ09VTlQgMgotI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVDAKIAogLyogSVB2NCB2YXJpYW50ICovCiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjltPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAzNAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGlwc2V0IEhhc2ggQ0lEUiBUcmFja2luZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGlwc2V0YC4gSXQmIzM5O3MgdG91Y2hpbmcgYGlwX3NldF9oYXNoX2dlbi5oYCwgYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgLCBhbmQgYGlwX3NldF9oYXNoX25ldHBvcnRuZXQuY2AuIEJhc2ljYWxseSwgdGhlIGNvcmUgb2YgaG93IGlwc2V0IGhhc2ggdHlwZXMgaGFuZGxlIENJRFIgcHJlZml4ZXMgaXMgYmVpbmcgdXBkYXRlZC4gVGhlIGJpZyBkZWFsIGhlcmUgaXMgdGhlIHVzZSBvZiBgc2VxY291bnRfc3BpbmxvY2tfdGAgdG8gbWFuYWdlIHJlb3JkZXJpbmcgb2YgdGhlIGBuZXRzYCBhcnJheSBpbi1wbGFjZS4gVGhpcyBpcyBncmVhdDsgaXQgbWVhbnMgd2UgY2FuIGF2b2lkIHJlYWxsb2NhdGluZyBldmVyeXRoaW5nIHdpdGggUkNVIG9uIGV2ZXJ5IGRlbGV0ZSwgd2hpY2ggaXMgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSB3aW4uCgpUaGlzIGFmZmVjdHMgYG10eXBlX2FkZF9jaWRyYCwgYG10eXBlX2RlbF9jaWRyYCwgYG10eXBlX2ZsdXNoYCwgYW5kIGBtdHlwZV90ZXN0X2NpZHJzYC4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm8gcXVlc3Rpb24uIFRoaXMgKm5lZWRzKiB0byBiZSBmdXp6ZWQsIGltbWVkaWF0ZWx5LiBHb3R0YSBmaW5kIGFueSBoaWRkZW4gaXNzdWVzIGhlcmUgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IuCgpOb3csIGxldCYjMzk7cyBwaW5wb2ludCB0aGUgY3J1Y2lhbCBmdW5jdGlvbnMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG1hY3JvcyBvciB0ZW1wbGF0ZXMgd2l0aGluIGBpcF9zZXRfaGFzaF9nZW4uaGAsIHdoaWNoIGFyZSB0aGVuIGluc3RhbnRpYXRlZCBhbmQgdXNlZCBieSB0aGUgQyBmaWxlcyBmb3IgZGlmZmVyZW50IGhhc2ggdHlwZXMuIGBtdHlwZV9hZGRfY2lkcmAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gaW4gdGhlIGhlYWRlciwgYW5kIGl0IGxvb2tzIGxpa2UgaXQgZ2V0cyBpbmNsdWRlZCBhbmQgcmVuYW1lZC91c2VkIGJ5IHRoZSBDIGZpbGVzLiBJdCYjMzk7cyBub3QgZGlyZWN0bHkgZXhwb3J0ZWQsIGJ1dCBpdCYjMzk7cyBmdW5kYW1lbnRhbGx5IHBhcnQgb2YgdGhlc2UgYGhhc2hfKmAgbW9kdWxlcy4KCkFoLCByaWdodC4gU2luY2UgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24gaW4gdGhlIGhlYWRlciwgSSBzaG91bGQgY2hlY2sgd2hlcmUgYG10eXBlX2FkZF9jaWRyYCBpcyBhY3R1YWxseSAqdXNlZCouIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGJ5IGBtdHlwZV9hZGRgLCB3aGljaCBpcyBhbHNvIGEgdGVtcGxhdGUuIFNvLCBhIGdyZXAgZm9yIGBtdHlwZV9hZGRgIG9yIGV2ZW4gYG10eXBlX2FkZF9jaWRyYCBzaG91bGQgYmUgdGhlIGJlc3Qgd2F5IHRvIHVuY292ZXIgdGhlIGNhbGwgY2hhaW4uIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50cyB0byByZWFsbHkgZm9jdXMgb24gZm9yIGZ1enppbmcgYW5kIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXR5cGVfYWRkX2NpZHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yMTktI3VuZGVmIG10eXBlX2V4dF9jbGVhbnVwXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIyMDojdW5kZWYgbXR5cGVfYWRkX2NpZHJcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjIxLSN1bmRlZiBtdHlwZV9kZWxfY2lkclxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY3LSNkZWZpbmUgbXR5cGVfZXh0X2NsZWFudXBcdElQU0VUX1RPS0VOKE1UWVBFLCBfZXh0X2NsZWFudXApXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI2ODojZGVmaW5lIG10eXBlX2FkZF9jaWRyXHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkX2NpZHIpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI2OS0jZGVmaW5lIG10eXBlX2RlbF9jaWRyXHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVsX2NpZHIpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0zMzU9c3RydWN0IG10eXBlX3Jlc2l6ZV9hZCB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0zNDUtLyoqXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjM0NjogKiBtdHlwZV9hZGRfY2lkciAtIEFkZCBhIENJRFIgZW50cnkgdG8gaGFzaCB0YWJsZSBib29ra2VlcGluZ1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0zNDctICogQHNldDogUG9pbnRlciB0byB0aGUgaXBfc2V0XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0zNTc9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDozNTg6bXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTM1OS17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD05ODg9bXR5cGVfYWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xMTEzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSVBTRVRfTkVUX0NPVU5UOyBpJiM0MzsmIzQzOylcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTExNDpcdFx0bXR5cGVfYWRkX2NpZHIoc2V0LCBoLCBEQ0lEUl9HRVQoZC1cdTAwM2VjaWRyLCBpKSwgaSk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTExMTUtI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjEwbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0OTQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIElQIFNldCBIYXNoIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIElQIHNldCBmdW5jdGlvbnMgYXJlIGdlbmVyYXRlZCwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBpcyB0aGlzIGBJUFNFVF9UT0tFTihNVFlQRSwgX2FkZClgIG1hY3JvLiBNeSBpbW1lZGlhdGUgdGFzayBpcyB0byBmaWd1cmUgb3V0IHdoYXQgYE1UWVBFYCByZXByZXNlbnRzIGluIGEgY291cGxlIG9mIHNwZWNpZmljIGZpbGVzOiBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgYW5kIGBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNgLgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGZpcnN0LiBBaGEhIEhlcmUgd2Ugc2VlIHRoZSBkZWZpbml0aW9uOiBgI2RlZmluZSBNVFlQRSBoYXNoX25ldGlmYWNlNGAgYW5kLCBJJiMzOTtkIGJldCwgYGhhc2hfbmV0aWZhY2U2YCBhcyB3ZWxsLiBUaGF0IGdpdmVzIG1lIGEgY2xlYXIgaWRlYSBvZiB3aGF0IHRvIGV4cGVjdCB3aGVuIGluc3BlY3RpbmcgdGhlIGNvbnRlbnRzIG9mIGBpcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCBuZXh0LiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgTVRZUEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTEyOD1oYXNoX25ldGlmYWNlNF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTEzMy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxMzQ6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldGlmYWNlNFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTEzNS0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzYyPWhhc2hfbmV0aWZhY2U2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRpZmFjZTZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzY5LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM3MDojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0aWZhY2U2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzcxLSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTM0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgTmV0d29yayBJbnRlcmZhY2UgSGFzaGluZyBGdW5jdGlvbnMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IG5ldHdvcmsgaW50ZXJmYWNlIGhhc2hpbmcsIGFuZCB0aGUga2V5IGZ1bmN0aW9ucyBzZWVtIHRvIGJlIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBgaGFzaF9uZXRpZmFjZTRfZGVsYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCB0aGVuIHRoZSBJUHY2IHZlcnNpb25zOiBgaGFzaF9uZXRpZmFjZTZfYWRkYCwgYW5kIHNvIG9uLiBQcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG5hbWluZyBjb252ZW50aW9uLCBJIGFwcHJlY2lhdGUgdGhhdC4gTm93LCB3aGVyZSBhcmUgdGhlc2UgYWN0dWFsbHkgaW1wbGVtZW50ZWQgYW5kIGhvdyBhcmUgdGhleSB1c2VkPyBNeSBndXQgc2F5cyB0aGUgY29yZSBsb2dpYyB3aWxsIGJlIGluIGBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNgLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBpbnRlcmZhY2UtYmFzZWQgc2V0cyBhcmUgYnVpbHQgYW5kIG1hbmFnZWQuIExldCYjMzk7cyBkaXZlIGluIHRoZXJlIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgTVRZUEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYz0xMzE9aGFzaF9uZXRwb3J0bmV0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydG5ldDRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzoxMzg6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldHBvcnRuZXQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzktI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9NDI1PWhhc2hfbmV0cG9ydG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnRuZXQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDMzLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM6NDM0OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRwb3J0bmV0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDM1LSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Njk4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkludmVzdGlnYXRpbmcgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AgVXNhZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AgY29uY2VwdCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogd2hlcmUgZWxzZSBpcyB0aGlzIGJlaW5nIHVzZWQ/IElzIHRoaXMgaXNvbGF0ZWQgdG8gdGhlIGN1cnJlbnQgY29udGV4dCwgb3IgaXMgdGhpcyBhIGJ1aWxkaW5nIGJsb2NrIGZvciBzb21ldGhpbmcgbGFyZ2VyPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaXRzIGltcGxlbWVudGF0aW9uIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIGFueSBjaGFuZ2VzIG9yIG1vZGlmaWNhdGlvbnMuIEFyZSB0aGVyZSBvdGhlciBmaWxlcyBpbiB0aGlzIHByb2plY3QsIG9yIGV2ZW4gaW4gcmVsYXRlZCBwcm9qZWN0cywgdGhhdCByZWx5IG9uIHRoaXMgcGFydGljdWxhciBoYXNoIGltcGxlbWVudGF0aW9uPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGltcGFjdCByYWRpdXMuIEtub3dpbmcgd2hpY2ggb3RoZXIgYXJlYXMgdXNlIHRoaXMgd2lsbCBkZXRlcm1pbmUgaG93IHRob3JvdWdobHkgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMuIFRoaXMgZmVlbHMgbGlrZSB0aGUga2luZCBvZiBmdW5jdGlvbiB0aGF0IGNvdWxkIGJlIGVpdGhlciBpc29sYXRlZCBhbmQgc3BlY2lmaWMsIG9yIGEgbW9yZSBnZW5lcmFsaXplZCwgY29yZSBmdW5jdGlvbi4gVGltZSB0byBmaW5kIG91dCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTM2PU1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfaGFzaDppcCxwb3J0LG5ldFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy00NC0gKi9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6NDU6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNfUEFDS0VEXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTQ2LSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYzo0NzojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy00OC1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTMzPU1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfaGFzaDpuZXRcJiMzNDspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMzYtI2RlZmluZSBIVFlQRVx0XHRoYXNoX25ldFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYzozNzojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0zOC1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzU9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOm5ldCxpZmFjZVwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTM4LSNkZWZpbmUgSFRZUEVcdFx0aGFzaF9uZXRpZmFjZVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM5OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNDAtI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX01VTFRJXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0zMj1NT0RVTEVfQUxJQVMoXCYjMzQ7aXBfc2V0X2hhc2g6bmV0LG5ldFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0zNS0jZGVmaW5lIEhUWVBFXHRcdGhhc2hfbmV0bmV0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jOjM2OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3LSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRNQVNLXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM9MzU9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOm5ldCxwb3J0XCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zOS0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjQwOiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy00MS1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy00NS0gKi9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjQ2OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTX1BBQ0tFRFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtNDctXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9MzI9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOm5ldCxwb3J0LG5ldFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtMzYtI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX1BST1RPXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzozNzojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtMzgtI2RlZmluZSBJUFNFVF9ORVRfQ09VTlQgMlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODg3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBJUCBTZXQgSGFzaGluZyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaGFzaF9uZXRgLCBgaGFzaF9uZXRpZmFjZWAsIGBoYXNoX25ldG5ldGAsIGBoYXNoX25ldHBvcnRgLCBgaGFzaF9uZXRwb3J0bmV0YCwgYW5kIGBoYXNoX2lwcG9ydG5ldGAgYWxsIHJlbHkgb24gYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AuIFRoZSBrZXkgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBpcF9zZXRfaGFzaF9nZW4uaGAsIHdoaWNoIGlzIGEgY29tbW9uIGluY2x1ZGUsIHNvIHRoaXMgY291bGQgaGF2ZSB3aWRlc3ByZWFkIGltcGxpY2F0aW9ucyBhY3Jvc3MgYWxsIG9mIHRob3NlIGhhc2ggdHlwZXMuCgpCdXQgd2FpdCwgdGhpcyBpc24mIzM5O3QganVzdCBhIGdlbmVyaWMgaGVhZGVyIG1vZGlmaWNhdGlvbi4gVGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgYW5kIGBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNgLiBBaGEsIGl0JiMzOTtzIHJlbW92aW5nIGAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMGAgaW4gdGhvc2Ugc3BlY2lmaWMgZmlsZXMuIFRoYXQmIzM5O3MgdGhlIHJlYWwgY3J1eCBvZiB0aGlzLiBOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgSVBfU0VUX0hBU0hfV0lUSF9ORVQwYCBhY3R1YWxseSAqZGlkKi4gV2hhdCBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIGFsdGVyZWQgb3IgcmVtb3ZlZCBieSB0aGlzIHJlZmFjdG9yaW5nPyBJdCYjMzk7cyBnb2luZyB0byBiZSBlc3NlbnRpYWwgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGRpZmZlcmVudCBhcyBhIHJlc3VsdCBvZiB0aGUgY2hhbmdlcyB0byB0aGUgZmlsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVBfU0VUX0hBU0hfV0lUSF9ORVQwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMzOAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIFJlbW92YWwgb2YgSVAgU2V0IEZ1bmN0aW9uYWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgdGhpcyBjb2RlIHdhcyByZW1vdmVkIGZyb20gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gVGhhdCYjMzk7cyBhIGtleSBkZXRhaWwuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doeT8gV2hhdCBjaGFuZ2VkPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgd2FzIGEgZGVsaWJlcmF0ZSBkZXNpZ24gZGVjaXNpb24sIGEgcmVmYWN0b3JpbmcsIG9yIGEgYnVnIGZpeC4KCk15IG5leHQgc3RlcCBpcyB0byBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGUgZXhwZWN0ZWQgZmxhZ3Mg4oCTIHNwZWNpZmljYWxseSBgSVBfU0VUYCwgYElQX1NFVF9IQVNIX05FVGAsIGBJUF9TRVRfSEFTSF9ORVRJRkFDRWAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUYCwgYW5kIHBvdGVudGlhbGx5IG90aGVycyDigJMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhbmQgZW5hYmxlZC4gVGhpcyB3aWxsIHRlbGwgbWUgaWYgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgc2ltcGx5IGRpc2FibGVkLCBvciBpZiB0aGUgKm9wdGlvbiogaXRzZWxmIGlzIGdvbmUuCgpUbyBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZSwgSSYjMzk7bGwgbmVlZCB0byBkaXZlIGludG8gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBjYW4gY29uZmlybSB0aGUgc3RhdHVzIG9mIHRob3NlIG9wdGlvbnMgYW5kIHVuZGVyc3RhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBJJiMzOTttIGxvb2tpbmcgZm9yIGFueSBjbHVlcyBhYm91dCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGUgcmVtb3ZhbCBvciBtb2RpZmljYXRpb24uIElzIGl0IG5vdyB1bmRlciBhIGRpZmZlcmVudCBuYW1lPyBQYXJ0IG9mIGEgYnJvYWRlciBmZWF0dXJlPyBPciwgaXMgaXQgcGVyaGFwcyBkZXByZWNhdGVkIGVudGlyZWx5PyBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVF9IQVNIXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NDY9Y29uZmlnIElQX1NFVF9CSVRNQVBfUE9SVFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo1NTpjb25maWcgSVBfU0VUX0hBU0hfSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NjU6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTczLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjc0OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04Mi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo4Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxpcCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05Mi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwMi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMDM6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxtYWMgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTExLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjExMjpjb25maWcgSVBfU0VUX0hBU0hfTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDptYWMgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIwLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzA6Y29uZmlnIElQX1NFVF9IQVNIX05FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzOC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzk6Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTU4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTk2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgSVAgU2V0cyBhbmQgVGhlaXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIHdlJiMzOTtyZSBnb2luZyB0byBlbmFibGUgYSBzdWl0ZSBvZiBgSVBfU0VUYCBmZWF0dXJlcyDigJMgc3BlY2lmaWNhbGx5IGBJUF9TRVRgLCBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUTkVUYCwgYElQX1NFVF9IQVNIX05FVFBPUlRgLCBhbmQgYElQX1NFVF9IQVNIX0lQUE9SVE5FVGAuIEJlZm9yZSB3ZSBjb21taXQgdG8gdGhpcywgdGhvdWdoLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzLiBHb3R0YSBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBjcml0aWNhbCBpbiB0aGUga2VybmVsIGNvbmZpZy4gTGV0JiMzOTtzIHNlZSB3aGF0IGBJUF9TRVRgIHJlbGllcyBvbi4gVGhhdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0VUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4NzUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipMb2NhdGluZyB0aGUgSVBfU0VUIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHdoZXJlIHRoZSBgSVBfU0VUYCBjb25maWd1cmF0aW9uIG9wdGlvbiBsaXZlcyB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gaXRzIGZ1bmN0aW9uLCBpcyB0aGF0IGl0IHdvdWxkIGJlIHJlbGF0ZWQgdG8gbmV0d29ya2luZyBvciBuZXRmaWx0ZXIuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2hlcmUgd291bGQgdGhpcyBzb3J0IG9mIGZlYXR1cmUgYmUgZGVmaW5lZD8mIzM0OyBMZXQgbWUgdHJ5IGFuZCBzZWFyY2ggd2l0aGluIHRoZSBrZXJuZWwgc291cmNlLiBBaCBoYSEgSSBiZWxpZXZlIEkgc2VlIGl0IG5vdy4gSSYjMzk7dmUgZm91bmQgaXQ6IGBuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyByaWdodCB3aGVyZSBJJiMzOTtkIGV4cGVjdCBpdCwgZ2l2ZW4gdGhhdCBJUCBzZXRzIGFyZSBkZWVwbHkgaW50ZXJ0d2luZWQgd2l0aCBuZXRmaWx0ZXIgZnVuY3Rpb25hbGl0eS4gVGhpcyBjb25maXJtcyBteSBpbml0aWFsIGludHVpdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyOm1lbnVjb25maWcgSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0lQIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0PWlmIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2OmNvbmZpZyBJUF9TRVRfTUFYXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTctXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgSVAgc2V0c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yNy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyODpjb25maWcgSVBfU0VUX0JJVE1BUF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOmlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM2LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM3OmNvbmZpZyBJUF9TRVRfQklUTUFQX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6aXAsbWFjIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ1LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjQ2OmNvbmZpZyBJUF9TRVRfQklUTUFQX1BPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDpwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU0LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo2NTpjb25maWcgSVBfU0VUX0hBU0hfSVBNQVJLXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hcmsgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzMtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzQ6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTgyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjkzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTAyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEwMzpjb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTEtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIxOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTI5LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMDpjb25maWcgSVBfU0VUX0hBU0hfTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTM4LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDg6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTg6Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY3LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY5LVx0dHJpc3RhdGUgXCYjMzQ7bGlzdDpzZXQgc2V0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzMTMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBpdCB3ZXJlIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFdoZXJlIGRvZXMgYElQX1NFVGAgY29tZSBpbnRvIHBsYXkgaW4gdGhlIE5ldGZpbHRlciBmcmFtZXdvcms/IEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgc291cmNlIG9mIHRoaXMgb3B0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayB3aXRoaW4gdGhlIE5ldGZpbHRlciBjb25maWd1cmF0aW9uIGZpbGVzLCBzcGVjaWZpY2FsbHkgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AuIFRoaXMgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIGRpZ2dpbmcsIGdpdmVuIHRoZSBjb250ZXh0LiBJJiMzOTttIGFzc3VtaW5nIHRoYXQmIzM5O3Mgd2hlcmUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zIHJlbGF0ZWQgdG8gSVAgU2V0cyB3aWxsIGJlIGRlZmluZWQgYW5kLCBpZGVhbGx5LCBzb3VyY2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHRvIGRldGVybWluZSBob3cgaXQgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgcmV2ZWFscy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UgXCYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXCYjMzQ7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xNjYwPWVuZG1lbnVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYxLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE2NjI6c291cmNlIFwmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wmIzM0O1xubmV0L25ldGZpbHRlci9LY29uZmlnLTE2NjMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNjMwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSYjMzk7bSB0aGUgb25lIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzLCBhbmQga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipEZWx2aW5nIGludG8gdGhlIEZvdW5kYXRpb25zIG9mIGBJUF9TRVRgKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYElQX1NFVGAuIFdlIGtub3cgaXQmIzM5O3MgYSBwb3dlcmZ1bCB0b29sLCBidXQgbGlrZSBhbnkgc3Ryb25nIHN5c3RlbSwgdW5kZXJzdGFuZGluZyBpdHMgdW5kZXJseWluZyBkZXBlbmRlbmNpZXMgaXMga2V5IHRvIHVzaW5nIGl0IGVmZmVjdGl2ZWx5IGFuZCB0cm91Ymxlc2hvb3RpbmcgYW55IGlzc3Vlcy4gVGhlIHJlYWwgcXVlc3Rpb24gSSYjMzk7bSBncmFwcGxpbmcgd2l0aCByaWdodCBub3cgaXM6ICp3aGF0KiBwcmVjaXNlbHkgZG9lcyBgSVBfU0VUYCByZWx5IG9uPyBCZXlvbmQgdGhlIG9idmlvdXMga2VybmVsIG1vZHVsZXMgYW5kIHRoZSB1c2VyLXNwYWNlIHV0aWxpdGllcywgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIGV4YW1pbmUgdGhlIGRlZXBlciBwbHVtYmluZy4gQXJlIHRoZXJlIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9ucyB0aGF0IGFyZSBzdXBwb3J0ZWQgb3IgcmVxdWlyZWQ/IFdoYXQgYWJvdXQgbGlicmFyaWVzPyBBcmUgdGhlcmUgYW55IGxvd2VyLWxldmVsIG5ldHdvcmsgc3RhY2sgY29tcG9uZW50cyB0aGF0IGBJUF9TRVRgIGludGVyZmFjZXMgd2l0aCB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQ/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHNwZWNpZmljIG5ldGZpbHRlciBob29rcyBpdCYjMzk7cyBsZXZlcmFnaW5nPyBUaGlzIGtpbmQgb2YgZ3JhbnVsYXIgdW5kZXJzdGFuZGluZyBpcyBlc3NlbnRpYWwgZm9yIG9wdGltaXphdGlvbiwgZGVidWdnaW5nLCBhbmQsIG9mIGNvdXJzZSwgYXJjaGl0ZWN0aW5nIHNlY3VyZSBhbmQgcGVyZm9ybWFudCBuZXR3b3JrIHNvbHV0aW9ucy4gVGhpcyBpcyB3aGVyZSBJIHdhbnQgdG8gZm9jdXMsIEkgd2FudCB0byBtYXAgdGhlIGBJUF9TRVRgIGxhbmRzY2FwZSBmcm9tIHRoZSBncm91bmQgdXAgdG8gcmVhbGx5IHVuZGVyc3RhbmQgaXQsIGFuZCBtYWtlIHN1cmUgdGhhdCBpdCBwbGF5cyBuaWNlIHdpdGggYWxsIHRoZSBvdGhlciB0b29scyBJJiMzOTttIHVzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0yPW1lbnVjb25maWcgSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0lQIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDpcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNS1cdHNlbGVjdCBORVRGSUxURVJfTkVUTElOS1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNj1jb25maWcgSVBfU0VUX01BWFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xOS1cdHJhbmdlIDIgNjU1MzRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyMDpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjEtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTI4PWNvbmZpZyBJUF9TRVRfQklUTUFQX0lQXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjktXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6aXAgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozMDpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzEtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTM3PWNvbmZpZyBJUF9TRVRfQklUTUFQX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6aXAsbWFjIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Mzk6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQwLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz00Nj1jb25maWcgSVBfU0VUX0JJVE1BUF9QT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDctXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6cG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjQ4Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00OS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NTU9Y29uZmlnIElQX1NFVF9IQVNIX0lQXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTYtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NTc6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU4LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz02NT1jb25maWcgSVBfU0VUX0hBU0hfSVBNQVJLXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hcmsgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo2NzpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjgtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTc0PWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjc2Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03Ny1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9ODM9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVElQXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQsaXAgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo4NTpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODYtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTkzPWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5NTpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTYtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEwMz1jb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEwNTpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA2LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMTI9Y29uZmlnIElQX1NFVF9IQVNIX01BQ1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bWFjIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTE0Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTUtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEyMT1jb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIzOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjQtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzMD1jb25maWcgSVBfU0VUX0hBU0hfTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzI6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMy1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTM5PWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDAtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDE6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Mi1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTQ4PWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1MDpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTUxLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNTg9Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNjA6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2MS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTY4PWNvbmZpZyBJUF9TRVRfTElTVF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjktXHR0cmlzdGF0ZSBcJiMzNDtsaXN0OnNldCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE3MDpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTcxLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNzg9Y29uZmlnIEdDT1ZfUFJPRklMRV9JUFNFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3OS1cdGJvb2wgXCYjMzQ7RW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBpcHNldFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE4MDpcdGRlcGVuZHMgb24gR0NPVl9LRVJORUxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xODEtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NjM2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gSVAgU2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGNvbmZpZ3VyaW5nIGBJUF9TRVRgLiBOYXR1cmFsbHksIGl0IHJlbGllcyBvbiBib3RoIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAsIHRoYXQmIzM5O3MgYSBnaXZlbi4gV2UmIzM5O2xsIGRlZmluaXRlbHkgd2FudCB0byBlbmFibGUgYElQX1NFVGAgaXRzZWxmLCBhbmQgdGhlbiwgZm9yIGEgcm9idXN0IGltcGxlbWVudGF0aW9uLCBJJiMzOTttIHRoaW5raW5nIHdlIHNob3VsZCBhbHNvIGVuYWJsZSBhIGZldyBoYXNoIHR5cGVzOiBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUTkVUYCwgYElQX1NFVF9IQVNIX05FVFBPUlRgLCBhbmQgYElQX1NFVF9IQVNIX0lQUE9SVE5FVGAuIFRob3NlIHNlZW0gbGlrZSB0aGUgbW9zdCBjb21tb24gYW5kIHZlcnNhdGlsZSBvcHRpb25zIHRvIHN0YXJ0IHdpdGguCgpIb2xkIG9uIGEgc2Vjb25kLCB0aGF0IGBtdHlwZV9hZGRfY2lkcmAgZnVuY3Rpb24gaXMgbWFya2VkIGFzIHN0YXRpYy4gVGhhdCBtZWFucyBpdCYjMzk7cyBub3QgZXhwb3J0ZWQsIHNvIGl0JiMzOTtzIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSBpdHMgY29tcGlsYXRpb24gdW5pdC4gSG1tLCB0aGF0IGNvbXBsaWNhdGVzIHRoaW5ncy4gV2UgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyAqYXJlKiBleHBvcnRlZCwgb3IgYXQgbGVhc3Qgd2hpY2ggb25lcyB3ZSAqY2FuKiBsZXZlcmFnZS4KCkxldCYjMzk7cyB0cmFjZSBiYWNrIGhvdyBgbXR5cGVfYWRkX2NpZHJgIGlzIGJlaW5nIHVzZWQuIEFoLCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgbXR5cGVfYWRkYC4gRGFtbWl0LCBgbXR5cGVfYWRkYCBpcyBhbHNvIHN0YXRpYy4gT2theSwgdGhpcyBpc24mIzM5O3QgZ2V0dGluZyB1cyBhbnl3aGVyZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBpcyBzb21ldGhpbmcgbW9yZSBhcHByb2FjaGFibGUgaW4gYGlwX3NldF9oYXNoX2dlbi5oYCB0byBzZWUgaG93IGBtdHlwZV9hZGRgIGlzIHVzZWQuIFRoaXMgc2VlbXMgbGlrZSB0aGUga2V5IHBsYWNlIGZvciBob3cgdGhlIHNldHMgYXJlIGdlbmVyYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXR5cGVfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yMTktI3VuZGVmIG10eXBlX2V4dF9jbGVhbnVwXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIyMDojdW5kZWYgbXR5cGVfYWRkX2NpZHJcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjIxLSN1bmRlZiBtdHlwZV9kZWxfY2lkclxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjMxLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyMzI6I3VuZGVmIG10eXBlX2FkZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yMzMtI3VuZGVmIG10eXBlX2RlbFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY3LSNkZWZpbmUgbXR5cGVfZXh0X2NsZWFudXBcdElQU0VUX1RPS0VOKE1UWVBFLCBfZXh0X2NsZWFudXApXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI2ODojZGVmaW5lIG10eXBlX2FkZF9jaWRyXHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkX2NpZHIpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI2OS0jZGVmaW5lIG10eXBlX2RlbF9jaWRyXHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVsX2NpZHIpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzktXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI4MDojZGVmaW5lIG10eXBlX2FkZFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjgxLSNkZWZpbmUgbXR5cGVfZGVsXHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVsKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MzM1PXN0cnVjdCBtdHlwZV9yZXNpemVfYWQge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzQ1LS8qKlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDozNDY6ICogbXR5cGVfYWRkX2NpZHIgLSBBZGQgYSBDSURSIGVudHJ5IHRvIGhhc2ggdGFibGUgYm9va2tlZXBpbmdcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzQ3LSAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MzU3PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MzU4Om10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0zNTkte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NzQwPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NzQxOm10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC03NDItXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NzUyPW10eXBlX3Jlc2l6ZShzdHJ1Y3QgaXBfc2V0ICpzZXQsIGJvb2wgcmV0cmllZClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNC1cdFx0aWYgKHgtXHUwMDNlYWQgPT0gSVBTRVRfQUREKSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjkwNTpcdFx0XHRtdHlwZV9hZGQoc2V0LCBcdTAwMjZ4LVx1MDAzZWQsIFx1MDAyNngtXHUwMDNlZXh0LCBcdTAwMjZ4LVx1MDAzZW1leHQsIHgtXHUwMDNlZmxhZ3MpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC05MDYtXHRcdH0gZWxzZSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD05ODc9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo5ODg6bXR5cGVfYWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTk4OS1cdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTExMTMtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBJUFNFVF9ORVRfQ09VTlQ7IGkmIzQzOyYjNDM7KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoxMTE0Olx0XHRtdHlwZV9hZGRfY2lkcihzZXQsIGgsIERDSURSX0dFVChkLVx1MDAzZWNpZHIsIGkpLCBpKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTExNS0jZW5kaWZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE2MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50IG10eXBlX3ZhcmlhbnQgPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNjM0LVx0LmFkdFx0PSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjE2MzU6XHRcdFtJUFNFVF9BRERdID0gbXR5cGVfYWRkLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNjM2LVx0XHRbSVBTRVRfREVMXSA9IG10eXBlX2RlbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0OTgKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbXR5cGVfYWRkYCBBc3NpZ25tZW50KioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYG10eXBlX2FkZGAgaXMgbGlua2VkIHRvIGBtdHlwZV92YXJpYW50LmFkdFtJUFNFVF9BRERdYC4gUmlnaHQsIGBtdHlwZV92YXJpYW50YCBpcyBkZWZpbmVkIGFzIGEgYHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50YC4gUHJldHR5IHN0YW5kYXJkIHNvIGZhci4KCk5vdyBJIHNlZSB0aGVzZSBmdW5jdGlvbnMg4oCTIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBgaGFzaF9uZXRpZmFjZTRfZGVsYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCB0aGUgdXN1YWwgc3VzcGVjdHMgZm9yIHRoaXMga2luZCBvZiBoYXNoIGltcGxlbWVudGF0aW9uLiBJdCYjMzk7cyBnb29kIHRvIHNlZSBhbGwgdGhlIHN0YW5kYXJkIG9wZXJhdGlvbnMgYXJlIGRlZmluZWQsIEkgY2FuIGluZmVyIHRoYXQgdGhvc2UgYXJlIHRoZSBjb3JlIG1ldGhvZHMgZm9yIHRoaXMgSVAgc2V0IHR5cGUuCgpIYW5nIG9u4oCmIGFyZSB0aGVzZSBmdW5jdGlvbnMgYWN0dWFsbHkgZXhwb3J0ZWQgZm9yIHVzZSBvdXRzaWRlIG9mIHRoaXMgbW9kdWxlPyBObywgdGhleSYjMzk7cmUgc3RhdGljLiBUaGF0JiMzOTtzIGEgZ29vZCBkZXNpZ24gY2hvaWNlLCB0byBrZWVwIHRoZSBpbnRlcm5hbCBkZXRhaWxzIGVuY2Fwc3VsYXRlZC4gVGhhdCBtZWFucyB0aGUgZW50cnkgcG9pbnRzIEkmIzM5O20gZXhwZWN0aW5nIGFyZSBsaWtlbHkgZGVmaW5lZCBlbHNld2hlcmUsIHByb2JhYmx5IHVzaW5nIHRoZSBgbXR5cGVfdmFyaWFudGAgc3RydWN0IHNvbWVob3csIGFuZCB0aGV5JiMzOTtsbCBjYWxsIHRoZXNlIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLgoKSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSBieSBsb29raW5nIGRpcmVjdGx5IGF0IHRoZSBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgZmlsZSBpdHNlbGYuIExldCBtZSBjaGVjayB0aGUgc291cmNlIGNvZGUgZm9yIGBoYXNoX25ldGlmYWNlNF9hZGRgIG5vdyB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBlbnN1cmUgdGhlIGZ1bGwgY29udGV4dCBpcyBjbGVhci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoYXNoX25ldGlmYWNlNF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk1NgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXNzZWN0aW5nIHRoZSBNYWNyby1HZW5lcmF0ZWQgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSB0ZWxsdGFsZSBzaWducyBvZiBtYWNybyBnZW5lcmF0aW9uLiBTcGVjaWZpY2FsbHksIHRoaXMgYCNkZWZpbmUgbXR5cGVfYWRkIElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAuIE15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHBhcnNpbmcgdGhlIGltcGxpY2F0aW9ucy4gVGhpcyBgaGFzaF9uZXRpZmFjZTRfYWRkYCBmdW5jdGlvbiBJJiMzOTttIGxvb2tpbmcgYXTigKYgdGhhdCYjMzk7cyB0aGUgcmVzdWx0IG9mIG9uZSBvZiB0aG9zZSBtYWNyb3MsIHJpZ2h0PyBJIGNhbiB0ZWxsIGJlY2F1c2Ugb2YgaG93IGl0JiMzOTtzIGRlZmluZWQuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIGJlY2F1c2UgaXQmIzM5O3MgKnN0YXRpYyosIGl0IG1pZ2h0IG5vdCBiZSBpbiB0aGUgc3ltYm9sIHRhYmxlLCB1bmxlc3MgdGhlIGNvbXBpbGVyIGlzIGJlaW5nIGxhenkgYW5kICpkb2VzbiYjMzk7dCogaW5saW5lIGl0LiBCdXQgdGhlbiBJIHF1aWNrbHkgcmVtZW1iZXLigKYgd2FpdCwgdGhpcyBgbXR5cGVfYWRkYCBpc24mIzM5O3QgKmp1c3QqIGEgZnVuY3Rpb24uIEl0JiMzOTtzIGFjdHVhbGx5IGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciBpbnNpZGUgdGhlIGBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudGAuIFRoYXQgKmhhcyogdG8gbWVhbiBpdCBjYW4mIzM5O3QgYmUgKmZ1bGx5KiBpbmxpbmVkLCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLgoKSG93ZXZlciwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgbmV4dCBxdWVzdGlvbiAtIGFyZSAqcGFydHMqIG9mIGl0IGlubGluZWQ/IEZvciBleGFtcGxlLCBgbXR5cGVfYWRkX2NpZHJgIGlzIGNhbGxlZCBmcm9tIGBtdHlwZV9hZGRgLiBJdCAqY291bGQqIGJlIGlubGluZWQuIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIEkgYW5hbHl6ZSB0aGUgYXNzZW1ibHkgbGF0ZXIsIHRvIGNoZWNrIGZvciB0aGF0IHBvc3NpYmlsaXR5LgoKRmluYWxseSwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBob3cgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgYXJlIGhhbmRsZWQsIGxpa2UgYG10eXBlX3VhZHRgLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0IG9uZSBvdXQgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdHlwZV91YWR0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yMjctI3VuZGVmIG10eXBlX2thZHRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjI4OiN1bmRlZiBtdHlwZV91YWR0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyOS0jdW5kZWYgbXR5cGVfYnVja2V0X3NpemVcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI3NS0jZGVmaW5lIG10eXBlX2thZHRcdFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9rYWR0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNzY6I2RlZmluZSBtdHlwZV91YWR0XHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfdWFkdClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjc3LSNkZWZpbmUgbXR5cGVfYnVja2V0X3NpemVcdElQU0VUX1RPS0VOKE1UWVBFLCBfYnVja2V0X3NpemUpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xNjMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZV92YXJpYW50ID0ge1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNjMyLVx0LmthZHRcdD0gbXR5cGVfa2FkdCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTYzMzpcdC51YWR0XHQ9IG10eXBlX3VhZHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2MzQtXHQuYWR0XHQ9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4NjMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyB3aGF0IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGNvZGU6CgoqKkFuYWx5emluZyBQb3RlbnRpYWwgRW50cnkgUG9pbnRzIGluIGBpcF9zZXRgKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBtYWluIGZ1bmN0aW9ucyBhcmUgZm9yIHRoZSBgaXBfc2V0YCBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGZvY3VzaW5nIG9uIGZ1bmN0aW9ucyB0aGF0IGFyZSAqZXhwb3J0ZWQqIOKAkyB0aG9zZSBhcmUgdGhlIG1vc3QgbGlrZWx5IGVudHJ5IHBvaW50cywgb3IgYXQgbGVhc3Qgbm90IHN0YXRpYyBmdW5jdGlvbnMuIFRoZXkmIzM5O3JlIGRlc2lnbmVkIHRvIGJlIHVzZWQgZXh0ZXJuYWxseSwgYWZ0ZXIgYWxsLgoKSG1tLCBidXQgaGFuZyBvbiBhIHNlY29uZC4uLiBpc24mIzM5O3QgYGhhc2hfbmV0aWZhY2U0X3VhZHRgIGRlY2xhcmVkIGFzIGBzdGF0aWNgIHRvbz8gVGhhdCBtZWFucyBJIGNhbiYjMzk7dCBqdXN0IGxpbWl0IG15c2VsZiB0byBub24tc3RhdGljIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHdpZGVuIG15IHNjb3BlIGEgYml0LgoKT2theSwgbGV0JiMzOTtzIHJlZm9jdXMuIE15IGJlc3QgYmV0IGlzIHRvIGNoZWNrIHRoZSBgaXBfc2V0X2NvcmUuY2AgZmlsZS4gVGhpcyBpcyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHJlc2lkZXMuIEkgc2hvdWxkIGJlIGFibGUgdG8gZmluZCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBJIG5lZWQgdG8gbG9vayBhdCBpbiB0aGVyZSwgc3BlY2lmaWNhbGx5LCB0aGUgb25lcyB1c2VkIHRvIGFkZCwgZGVsZXRlLCBhbmQgdGVzdCBJUCBzZXQgZW50cmllczogYGlwX3NldF9hZGRgLCBgaXBfc2V0X2RlbGAsIGFuZCBgaXBfc2V0X3Rlc3RgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz02MDc9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2MDg6aXBfc2V0X2FkZF9ieXRlcyh1NjQgYnl0ZXMsIHN0cnVjdCBpcF9zZXRfY291bnRlciAqY291bnRlcilcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy02MDkte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz02MTM9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2MTQ6aXBfc2V0X2FkZF9wYWNrZXRzKHU2NCBwYWNrZXRzLCBzdHJ1Y3QgaXBfc2V0X2NvdW50ZXIgKmNvdW50ZXIpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNjE1LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9NjIwPWlwX3NldF91cGRhdGVfY291bnRlcihzdHJ1Y3QgaXBfc2V0X2NvdW50ZXIgKmNvdW50ZXIsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTYyNC1cdCAgICAhKGZsYWdzIFx1MDAyNiBJUFNFVF9GTEFHX1NLSVBfQ09VTlRFUl9VUERBVEUpKSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6NjI1Olx0XHRpcF9zZXRfYWRkX2J5dGVzKGV4dC1cdTAwM2VieXRlcywgY291bnRlcik7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6NjI2Olx0XHRpcF9zZXRfYWRkX3BhY2tldHMoZXh0LVx1MDAzZXBhY2tldHMsIGNvdW50ZXIpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTYyNy1cdH1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9Nzc2PWludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjc3NzppcF9zZXRfYWRkKGlwX3NldF9pZF90IGluZGV4LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTc3OC1cdCAgIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhciwgc3RydWN0IGlwX3NldF9hZHRfb3B0ICpvcHQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTc5NS19XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6Nzk2OkVYUE9SVF9TWU1CT0xfR1BMKGlwX3NldF9hZGQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTc5Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3ODEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IE1lbnRhbCBMYW5kc2NhcGU6IGlwX3NldCBDb3JlIEV4cG9ydHMgYW5kIE5ldGxpbmsgSW50ZXJmYWNlKioKClJpZ2h0LCBzbywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGhlcmUuIGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YCDigJMgdGhvc2UgYXJlIHRoZSAqZXhwb3J0ZWQqIGZ1bmN0aW9ucy4gVGhleSYjMzk7cmUgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyBpbnRvIHRoZSBgaXBfc2V0YCBmdW5jdGlvbmFsaXR5IHRoYXQgdGhlIGtlcm5lbCAob3Igb3RoZXIgbW9kdWxlcykgd2lsbCBhY3R1YWxseSB1c2UuIFRoZXkgZGVmaW5lIHRoZSBwdWJsaWMgQVBJLgoKQW5kIHRoZW4sIGFsb25nc2lkZSB0aG9zZSwgSSYjMzk7bSBmb2N1c2luZyBvbiBgY2FsbF9hZGAgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmV0bGluayBpbnRlcmZhY2Ugd2l0aGluIGBpcF9zZXRfY29yZS5jYC4gVGhpcyBpcyBrZXkuIGBjYWxsX2FkYCBpbmRpY2F0ZXMgYSB2ZXJ5IHNwZWNpZmljIHdheSB0aGF0IHVzZXJzcGFjZSBwcm9ncmFtcyB3aWxsICppbnRlcmFjdCogd2l0aCB0aGUgaXBfc2V0IGtlcm5lbCBtb2R1bGVzLiBUaGUgYG5ldGxpbmtgIGludGVyZmFjZSBnaXZlcyBhbiBvcmdhbml6ZWQgYW5kIGZsZXhpYmxlIHdheSBvZiBtYW5hZ2luZyB0aGVzZSBzZXRzIGZyb20gb3V0c2lkZSB0aGUga2VybmVsLCB0aHJvdWdoIHVzZXJzcGFjZSB0b29scy4gVGhpcyBwYXJ0IHdpbGwgYmUgdGhlIHBsYWNlIHRvIGNoZWNrIHRoZSBkaWZmZXJlbnQgdHlwZSBvZiBjb21tYW5kcyB0aGF0IHdlIGNhbiBjcmVhdGUuCgpFc3NlbnRpYWxseSwgSSBzZWUgdGhlc2UgdHdvIGNvbXBvbmVudHMg4oCTIHRoZSBleHBvcnRlZCBmdW5jdGlvbnMgZm9yIGludGVybmFsIGtlcm5lbCBpbnRlcmFjdGlvbnMgYW5kIHRoZSBuZXRsaW5rIGludGVyZmFjZSBmb3IgZXh0ZXJuYWwgY29udHJvbCDigJMgYXMgY29tcGxlbWVudGFyeS4gVGhleSB3b3JrIHRvZ2V0aGVyLiBBbnkgZnV0dXJlIGRldmVsb3BtZW50cyBzaG91bGQgY29uc2lkZXIgdGhlc2UgYXMgdGhlIGNvcmUgZm9yIHRoZSBvdmVyYWxsIGZyYW1ld29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2FsbF9hZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTc0NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTc0NjpjYWxsX2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTc0Ny1cdHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSwgZW51bSBpcHNldF9hZHQgYWR0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xODE4PXN0YXRpYyBpbnQgaXBfc2V0X2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4NTMtXHRcdFx0cmV0dXJuIC1JUFNFVF9FUlJfUFJPVE9DT0w7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg1NDpcdFx0cmV0ID0gY2FsbF9hZChuZXQsIGN0bmwsIHNrYiwgc2V0LCB0YiwgYWR0LCBmbGFncyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODU1LVx0XHRcdCAgICAgIHVzZV9saW5lbm8pO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODY0LVx0XHRcdFx0cmV0dXJuIC1JUFNFVF9FUlJfUFJPVE9DT0w7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg2NTpcdFx0XHRyZXQgPSBjYWxsX2FkKG5ldCwgY3RubCwgc2tiLCBzZXQsIHRiLCBhZHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg2Ni1cdFx0XHRcdCAgICAgIGZsYWdzLCB1c2VfbGluZW5vKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1MTcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBhcyBpZiBJIHdlcmUgcHJvY2Vzc2luZyB0aGlzIGluZm9ybWF0aW9uOgoKKipBbmFseXppbmcgTmV0bGluayBFbnRyeSBQb2ludHMgaW4gUmVsYXRpb24gdG8gYSBTdGF0aWMgQ2FsbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoaXMgYGNhbGxfYWRgIGZ1bmN0aW9uIHJlbGF0ZXMgdG8gdGhlIE5ldGxpbmsgaW50ZXJmYWNlLiBJdCYjMzk7cyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nIGluIGl0c2VsZi4gVXN1YWxseSwgd2l0aCBOZXRsaW5rLCB5b3UmIzM5O3JlIGRlYWxpbmcgd2l0aCBkeW5hbWljIHJlZ2lzdHJhdGlvbiBhbmQgaGFuZGxlcnMsIHNvIGEgc3RhdGljIGVudHJ5IHBvaW50IGltcGxpZXMgc29tZXRoaW5nIG1vcmUuLi4gdGFyZ2V0ZWQsIHBlcmhhcHMgYSBzcGVjaWZpYyBmdW5jdGlvbiwgbWF5YmUgYSBoZWxwZXIuCgpUaGUgY3JpdGljYWwgTmV0bGluayBlbnRyeSBwb2ludHMgYXJlIHRoZSBgaXBfc2V0X2FkYCwgYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYW5kIGBpcF9zZXRfdXRlc3RgIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHRoZSBleHBlY3RlZCBpbnRlcmFjdGlvbiBwb2ludHMgd2l0aCB0aGUga2VybmVsLXNwYWNlIGZ1bmN0aW9uYWxpdHkgdmlhIHRoZSBOZXRsaW5rIGludGVyZmFjZS4gQmFzZWQgb24gdGhpcywgSSB3b3VsZCBhc3N1bWUgdGhhdCBgY2FsbF9hZGAgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiBvbmUgb2YgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zLCBvciBjYWxsZWQgYnkgYSByZWxhdGVkIHByb2Nlc3MuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB3aGVyZSBgY2FsbF9hZGAgaXMgdXNlZCB0byBjb25maXJtLiBJIHdvdWxkIGFzc3VtZSB0aGF0IHRoZSBgYWRgIHJlbGF0ZXMgdG8gYWRkcmVzcyBvciBhZGQvZGVsZXRlIGZ1bmN0aW9ucy4gTm93IEkgbmVlZCB0byBjb25zaWRlciB3aGljaCBvZiB0aGUgc3RhbmRhcmQgTmV0bGluayBjYWxscyB1c2UgYGNhbGxfYWRgLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBjb3JlIHNldCBtYW5pcHVsYXRpb24gd29ya3MuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIHRvIHNlZSBob3cgdGhlc2UgZWxlbWVudHMgYWxsIHRpZSB0b2dldGhlciBhbmQgZmlndXJlIG91dCBpZiB0aGVyZSBpcyBhbnkgdW51c3VhbCBiZWhhdmlvciBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfdWFkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTgxOD1zdGF0aWMgaW50IGlwX3NldF9hZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpjdG5sLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODczLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE4NzQ6c3RhdGljIGludCBpcF9zZXRfdWFkZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4NzUtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxOTUtXHRbSVBTRVRfQ01EX0FERF1cdD0ge1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxOTY6XHRcdC5jYWxsXHRcdD0gaXBfc2V0X3VhZGQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE5Ny1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX01VVEVYLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE5MgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTmV0bGluayBDYWxsYmFja3MgYW5kIEluc3RhbnRpYXRlZCBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIE5ldGxpbmsgY2FsbGJhY2tzOiBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBgaXBfc2V0X3V0ZXN0YC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuIEJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICphY3R1YWxseSogaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgYG10eXBlX2FkZF9jaWRyYCwgYG10eXBlX2RlbF9jaWRyYCwgYG10eXBlX2ZsdXNoYCwgYW5kIGBtdHlwZV90ZXN0X2NpZHJzYC4gIEFoLCB0aG9zZSBhcmUgYWxsIGRlZmluZWQgaW4gYGlwX3NldF9oYXNoX2dlbi5oYC4gVGhhdCBtYWtlcyBzZW5zZS4gVGhlc2UgYXJlIGdlbmVyaWMsIGFuZCB0aGVuIGluc3RhbnRpYXRlZCBmb3IgZWFjaCBoYXNoIHR5cGUuCgpTbywgaW4gdGhlIGJpbmFyeSwgdGhlIGFjdHVhbCBmdW5jdGlvbnMgd2lsbCBiZSB0aGluZ3MgbGlrZSBgaGFzaF9uZXRpZmFjZTRfYWRkYCwgYGhhc2hfbmV0aWZhY2U0X2RlbGAsIGBoYXNoX25ldGlmYWNlNF90ZXN0YCwgYGhhc2hfbmV0cG9ydG5ldDRfYWRkYCwgYW5kIHNvIG9uLiBHb29kLCBnb29kLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gSSBsZXZlcmFnZSB0aGVzZSBpbnN0YW50aWF0ZWQgbmFtZXMsIGxpa2UgYGhhc2hfbmV0aWZhY2U0X2FkZGAsIHdpdGhpbiB0aGUgYEZvY3VzU3ltYm9sc2AgY29uZmlndXJhdGlvbj8gWWVzLCBvZiBjb3Vyc2UuIFN5emthbGxlciBjYW4gcmVzb2x2ZSB0aGVtLCBhcyBsb25nIGFzIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIHN5bWJvbCB0YWJsZS4KCkFscmlnaHQsIGxldCYjMzk7cyBzZWUgaWYgdGhleSYjMzk7cmUgdGhlcmUuIFRoZXkmIzM5O3JlIHN0YXRpYywgYnV0IHRoZXkmIzM5O3JlICphbHNvKiBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycywgc28gdGhleSAqc2hvdWxkbiYjMzk7dCogYmUgZnVsbHkgaW5saW5lZC4gRXhjZWxsZW50LiBXYWl0IGEgbWludXRlLi4uIGBtdHlwZV9hZGRfY2lkcmAgaXMgY2FsbGVkIGZyb20gYG10eXBlX2FkZGAsIGFuZCBgbXR5cGVfYWRkYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoZXJlZm9yZSwgYGhhc2hfbmV0aWZhY2U0X2FkZGAgd2lsbCBiZSBpbiB0aGUgc3ltYm9sIHRhYmxlLiBQZXJmZWN0LiBOb3csIEkgbmVlZCB0byBjaGVjayBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgYE1UWVBFYCBpcywgc28gSSBjYW4gc2VlIHdoYXQgSSYjMzk7bSBsb29raW5nIGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIE1UWVBFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0xMjg9aGFzaF9uZXRpZmFjZTRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldGlmYWNlNF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xMzMtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6MTM0OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRpZmFjZTRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xMzUtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTM2Mj1oYXNoX25ldGlmYWNlNl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTM2OS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzozNzA6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldGlmYWNlNlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTM3MS0jZGVmaW5lIEhPU1RfTUFTS1x0MTI4XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMjIzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSGFzaGluZyBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIHRoZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBoYXNoaW5nIGludGVyZmFjZXMgYW5kIG5ldHdvcmtzLiBJIHNlZSBhIGNsZWFyIHBhdHRlcm4gaGVyZTogYGhhc2hfbmV0aWZhY2U0X2FkZGAsIGBoYXNoX25ldGlmYWNlNF9kZWxgLCBgaGFzaF9uZXRpZmFjZTRfdGVzdGAsIGFuZCB0aGVpciBJUHY2IGNvdW50ZXJwYXJ0czogYGhhc2hfbmV0aWZhY2U2X2FkZGAsIGBoYXNoX25ldGlmYWNlNl9kZWxgLCBgaGFzaF9uZXRpZmFjZTZfdGVzdGAuIFRoZW4sIHdlIGhhdmUgdGhlIHBvcnQvbmV0d29yayBjb21iaW5hdGlvbnM6IGBoYXNoX25ldHBvcnRuZXQ0X2FkZGAsIGBoYXNoX25ldHBvcnRuZXQ0X2RlbGAsIGBoYXNoX25ldHBvcnRuZXQ0X3Rlc3RgLCBhbmQgYWdhaW4sIHRoZSBJUHY2IHZhcmlhbnRzOiBgaGFzaF9uZXRwb3J0bmV0Nl9hZGRgLCBgaGFzaF9uZXRwb3J0bmV0Nl9kZWxgLCBgaGFzaF9uZXRwb3J0bmV0Nl90ZXN0YC4gRmluYWxseSwgdGhlcmUgYXJlIHRoZSBtb3JlIGdlbmVyYWwgbmV0d29yay1sZXZlbCBmdW5jdGlvbnM6IGBoYXNoX25ldDRfYWRkYCwgYGhhc2hfbmV0NF9kZWxgLCBgaGFzaF9uZXQ0X3Rlc3RgLCBhbG9uZ3NpZGUgdGhlaXIgSVB2NiBlcXVpdmFsZW50czogYGhhc2hfbmV0Nl9hZGRgLCBgaGFzaF9uZXQ2X2RlbGAsIGBoYXNoX25ldDZfdGVzdGAuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBkaWZmZXJlbnQgbGV2ZWxzIG9mIGdyYW51bGFyaXR5IGZvciB0aGUgc2FtZSB1bmRlcmx5aW5nIGhhc2hpbmcgbWVjaGFuaXNtLgoKTXkgbmV4dCBtb3ZlIGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbi4gSXQmIzM5O3MgdGltZSB0byBleGFtaW5lIGBpcF9zZXRfaGFzaF9uZXQuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBkaWZmZXJlbnQgdHlwZXMgb2YgbmV0d29yayBlbGVtZW50cyBhcmUgYWN0dWFsbHkgYmVpbmcgaGFzaGVkIGFuZCBtYW5hZ2VkIGF0IGEgbG93IGxldmVsIHRvIHNlZSBpZiBJIGNhbiB1bmRlcnN0YW5kIGhvdyB0aGlzIHdvcmtzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIE1UWVBFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTEwMj1oYXNoX25ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldDRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTEwNy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM6MTA4OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTEwOS0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTI3Mz1oYXNoX25ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldDZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTI4MC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM6MjgxOiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXQ2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTI4Mi0jZGVmaW5lIEhPU1RfTUFTS1x0MTI4XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDQ2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIGBpcF9zZXRfaGFzaF9uZXRuZXQuY2AqKgoKT2theSwgdGltZSB0byBkaWcgaW50byBgaXBfc2V0X2hhc2hfbmV0bmV0LmNgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludHJpY2FjaWVzIG9mIHRoZSBoYXNoIGltcGxlbWVudGF0aW9uIGZvciBuZXR3b3JrL25ldG1hc2sgc2V0cy4gR2l2ZW4gdGhlIG5hbWUsIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgaXMgdGhlIGNvcmUgZmlsZSBoYW5kbGluZyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBhc3NvY2lhdGVkIG9wZXJhdGlvbnMgZm9yIHN0b3JpbmcgYW5kIG1hbmlwdWxhdGluZyBJUCBhZGRyZXNzIHJhbmdlcyBpbiBhIGhhc2ggdGFibGUgZm9ybWF0LiBJdCYjMzk7cyBsaWtlbHkgb3B0aW1pemVkIGZvciBmYXN0IGxvb2t1cHMsIHdoaWNoIGlzIGNydWNpYWwgZm9yIGZpcmV3YWxsIHJ1bGVzIGFuZCBvdGhlciBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgYXBwbGljYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBoYW5kbGUgY29sbGlzaW9ucywgdGhlIGhhc2hpbmcgYWxnb3JpdGhtIGl0c2VsZiAobGlrZWx5IGJhc2VkIG9uIHRoZSBJUCBhZGRyZXNzIGFuZCBuZXRtYXNrKSwgYW5kIGhvdyB0aGV5IG1hbmFnZSB0aGUgcmVzaXppbmcgb2YgdGhlIGhhc2ggdGFibGUgYXMgdGhlIHNldCBncm93cy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Uga2V5IGRhdGEgc3RydWN0dXJlcywgY29yZSBmdW5jdGlvbnMgZm9yIGluc2VydGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCBhbnkgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gb3IgdnVsbmVyYWJpbGl0aWVzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMgYWxsIHRoYXQgaXQgaGFzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIE1UWVBFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTEyNT1oYXNoX25ldG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldG5ldDRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTEzMC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MTMxOiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRuZXQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTEzMi0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTM2Mz1oYXNoX25ldG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldG5ldDZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3MC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MzcxOiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRuZXQ2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3Mi0jZGVmaW5lIEhPU1RfTUFTS1x0MTI4XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTg5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBgaXBfc2V0X2hhc2hfbmV0cG9ydC5jYCBDb2RlKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGlwX3NldF9oYXNoX25ldHBvcnQuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGhhc2ggaW1wbGVtZW50YXRpb24gZm9yIG5ldHdvcmsvcG9ydCBzZXRzIHJlc2lkZXMsIGFuZCBpdCYjMzk7cyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgc2V0IGxvZ2ljIGhhbmRsZXMgdGhpcyBzcGVjaWZpYyB0eXBlIG9mIGRhdGEuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlIGhhc2hpbmcsIGNvbGxpc2lvbiByZXNvbHV0aW9uLCBhbmQgbG9va3VwIG9wZXJhdGlvbnMgYXJlIGltcGxlbWVudGVkIGhlcmUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHVzdWFsIHN1c3BlY3RzOiBtZW1vcnkgbWFuYWdlbWVudCwgaGFzaCBmdW5jdGlvbiBzcGVjaWZpY3MsIGFueSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zLCBhbmQsIG9mIGNvdXJzZSwgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIGZvciBpbXByb3ZlbWVudC4gSSYjMzk7bGwgYmUgZm9jdXNlZCBvbiBob3cgaXQgaGFuZGxlcyB0aGUgY29tYmluYXRpb24gb2YgSVAgYWRkcmVzc2VzIGFuZCBwb3J0cy4gQW55IHVudXN1YWwgYXBwcm9hY2hlcyBvciBjbGV2ZXIgdGVjaG5pcXVlcyBhcmUgd29ydGggbm90aW5nLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBNVFlQRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jPTExNz1oYXNoX25ldHBvcnQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTEyMy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjEyNDojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0cG9ydDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTEyNS0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0zMzQ9aGFzaF9uZXRwb3J0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydDZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zNDItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYzozNDM6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldHBvcnQ2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zNDQtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDEwMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgSVAgU2V0IEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIElQIHNldCBmdW5jdGlvbiB3b3Jrcy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBgaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmNgIGZpbGUuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZvciB0aGUgaGFzaC1iYXNlZCBJUCBzZXQgdGhhdCBkZWFscyB3aXRoIElQIGFkZHJlc3NlcywgcG9ydHMsIGFuZCBuZXR3b3JrIGluZm9ybWF0aW9uLiBJdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGRhdGEgc3RydWN0dXJlcywgaGFzaGluZyBhbGdvcml0aG1zLCBhbmQgbG9va3VwL2luc2VydGlvbiByb3V0aW5lcy4gSSYjMzk7bSBhc3N1bWluZyB0aGlzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gaXMgZmFpcmx5IG9wdGltaXplZCwgZ2l2ZW4gdGhlIHBlcmZvcm1hbmNlIGRlbWFuZHMgb2YgSVAgc2V0IGZ1bmN0aW9uYWxpdHkgd2l0aGluIGEga2VybmVsIGNvbnRleHQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGV0YWlscyBvZiBob3cgY29sbGlzaW9ucyBhcmUgaGFuZGxlZCBhbmQgdGhlIG92ZXJhbGwgZWZmaWNpZW5jeSBvZiB0aGUgaGFzaCB0YWJsZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIE1UWVBFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTEyMT1oYXNoX2lwcG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTEyOC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6MTI5OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcHBvcnRuZXQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTEzMC0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTM3OT1oYXNoX2lwcG9ydG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTM4Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6Mzg4OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcHBvcnRuZXQ2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTM4OS0jZGVmaW5lIEhPU1RfTUFTS1x0MTI4XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjI0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29yZSBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCB0aGlzIG1vZHVsZSYjMzk7cyBidWlsdCBhcm91bmQgYSBzZXQgb2YgaGFzaCBmdW5jdGlvbnMuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3ZlIGdvdCBhIGNvbXByZWhlbnNpdmUgc3VpdGUgZm9yIElQdjQgYW5kIElQdjYsIGFkZHJlc3Npbmcgc2V2ZXJhbCBkaWZmZXJlbnQgbmV0d29yayBvYmplY3QgdHlwZXMuIFdlIGhhdmUgZnVuY3Rpb25zIHRvICphZGQqLCAqZGVsZXRlKiwgYW5kICp0ZXN0KiBlbnRyaWVzLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIG1hbmFnaW5nIGEgaGFzaCB0YWJsZS4gSSYjMzk7bSBub3RpbmcgdGhlIGNsZWFyIHN0cnVjdHVyZTogYGhhc2hfbmV0NF8qYCwgYGhhc2hfbmV0Nl8qYCwgYGhhc2hfbmV0aWZhY2U0XypgLCBgaGFzaF9uZXRpZmFjZTZfKmAsIGBoYXNoX25ldG5ldDRfKmAsIGBoYXNoX25ldG5ldDZfKmAsIGBoYXNoX25ldHBvcnQ0XypgLCBgaGFzaF9uZXRwb3J0Nl8qYCwgYGhhc2hfbmV0cG9ydG5ldDRfKmAsIGBoYXNoX25ldHBvcnRuZXQ2XypgLCBgaGFzaF9pcHBvcnRuZXQ0XypgLCBhbmQgYGhhc2hfaXBwb3J0bmV0Nl8qYC4gVGhlIG5hbWluZyBjb252ZW50aW9uIGlzIHZlcnkgZXhwbGljaXQgYWJvdXQgdGhlIGRhdGEgYmVpbmcgc3RvcmVkOiBuZXQsIG5ldGlmYWNlLCBuZXRuZXQsIG5ldHBvcnQsIGlwcG9ydG5ldCAtIGJvdGggdjQgYW5kIHY2IHZhcmlhbnRzLgoKVGhhdCYjMzk7cyBhIGxvdCBvZiBmdW5jdGlvbnMsIGJ1dCBpdCBsb29rcyBsaWtlIGEgd2VsbC1zdHJ1Y3R1cmVkIGFwcHJvYWNoLiBJIHN1cHBvc2UgaXQgcmVmbGVjdHMgdGhlIG5lZWQgdG8gZWZmaWNpZW50bHkgbWFuYWdlIGRpZmZlcmVudCBuZXR3b3JrIGNvbnRleHRzIHdpdGhpbiBhIGhhc2ggdGFibGUgc3RydWN0dXJlLgoKTm93LCBhIG1vZGlmaWNhdGlvbiB0byBgbXR5cGVfZmx1c2hgIGlzIGludHJpZ3VpbmcuIEl0JiMzOTtzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzIGhvdyB0aGF0IHRpZXMgaW50byB0aGUgaGFzaCB0YWJsZSwgc28gbGV0JiMzOTtzIGNoZWNrIG91dCB3aGF0IHRoZSBjaGFuZ2VzIHRvIGBtdHlwZV9mbHVzaGAgYXJlIGFsbCBhYm91dCwgYXMgdGhhdCBjb3VsZCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgbW9kdWxlJiMzOTtzIG92ZXJhbGwgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdHlwZV9mbHVzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xODg9c3RhdGljIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciB6ZXJvbWFzayA9IHt9O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjIzLSN1bmRlZiBtdHlwZV9haGFzaF9tZW1zaXplXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIyNDojdW5kZWYgbXR5cGVfZmx1c2hcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjI1LSN1bmRlZiBtdHlwZV9kZXN0cm95XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzEtI2RlZmluZSBtdHlwZV9haGFzaF9tZW1zaXplXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FoYXNoX21lbXNpemUpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI3MjojZGVmaW5lIG10eXBlX2ZsdXNoXHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfZmx1c2gpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI3My0jZGVmaW5lIG10eXBlX2Rlc3Ryb3lcdFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9kZXN0cm95KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NTA4PXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjUwOTptdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTUxMC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xNjMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZV92YXJpYW50ID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTYzOS1cdC5kZXN0cm95ID0gbXR5cGVfZGVzdHJveSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTY0MDpcdC5mbHVzaFx0PSBtdHlwZV9mbHVzaCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTY0MS1cdC5oZWFkXHQ9IG10eXBlX2hlYWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODUzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6CgoqKkFuYWx5emluZyBOZXR3b3JrIEZsdXNoaW5nIGFuZCBDSURSIE1vZGlmaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYGhhc2hfbmV0NF9mbHVzaGAsIGBoYXNoX25ldDZfZmx1c2hgLCBhbmQgcG90ZW50aWFsbHkgb3RoZXJzIGluIHRoYXQgZmFtaWx5LiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3Ryb25nbHkgc3VnZ2VzdHMgdGhleSYjMzk7cmUgaW52b2x2ZWQgaW4gZmx1c2hpbmcgbmV0d29yay1yZWxhdGVkIGNhY2hlcywgc3BlY2lmaWNhbGx5IGZvciBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcywgcmVzcGVjdGl2ZWx5LiBUaGUgdXNlIG9mICYjMzQ7aGFzaCYjMzQ7IGluIHRoZSBuYW1lIHByb2JhYmx5IHJlZmVycyB0byB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZSDigJMgbW9zdCBsaWtlbHkgYSBoYXNoIHRhYmxlIG9yIHNpbWlsYXIgbWVjaGFuaXNtIHVzZWQgZm9yIGZhc3QgbG9va3Vwcy4KCkkgYWxzbyBzZWUgdGhhdCBgbXR5cGVfdGVzdF9jaWRyc2AgaXMgYmVpbmcgbW9kaWZpZWQuIEFoLCByaWdodCwgdGhhdCYjMzk7cyBjYWxsZWQgZnJvbSBgbXR5cGVfdGVzdGAuIFRoaXMgc3VnZ2VzdHMgdGhhdCB0aGUgQ0lEUiAoQ2xhc3NsZXNzIEludGVyLURvbWFpbiBSb3V0aW5nKSBlbnRyaWVzIGFyZSBwcm9iYWJseSB1c2VkIHRvIGRlZmluZSBzb21lIGtpbmQgb2YgbmV0d29yayAmIzM0O3R5cGUmIzM0OyBmaWx0ZXJpbmcgb3IgdGVzdGluZy4gVGhlIG1vZGlmaWNhdGlvbiBtaWdodCBpbnZvbHZlIHVwZGF0aW5nLCBhZGRpbmcsIG9yIGRlbGV0aW5nIENJRFIgYmxvY2tzIHVzZWQgZm9yIHRoaXMgJiMzNDttdHlwZSYjMzQ7IHRlc3RpbmcgcHJvY2Vzcy4gVGhlIGludGVycGxheSBiZXR3ZWVuIGZsdXNoaW5nIGNhY2hlcyBhbmQgbW9kaWZ5aW5nIENJRFIgbGlzdHMgaXMgaW50ZXJlc3RpbmcsIGl0IGltcGxpZXMgdGhhdCB0aGUgQ0lEUiBkYXRhIGlzIHVzZWQgZm9yIHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIHN0YXkgdXAgdG8gZGF0ZS4gSSBhbSBiZXR0aW5nIHRoYXQgdGhlIG5ldHdvcmsgZmx1c2ggaXMgaW4gc29tZSB3YXkgdGllZCB0byB0aGUgYG10eXBlX3Rlc3RgIHJvdXRpbmUsIHBlcmhhcHMgaXQgbmVlZHMgdG8gdXBkYXRlIHNvbWUgY2FjaGVkIG5ldHdvcmsgcm91dGVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIENJRFJzLiBJIHdvdWxkIG5lZWQgdG8gZGl2ZSBkZWVwZXIgdG8gc2VlIGhvdyBgbXR5cGVfdGVzdGAgdXNlcyBDSURScyBhbmQgd2hldGhlciB0aGUgZmx1c2hpbmcgb3BlcmF0aW9ucyBhcmUgZGlyZWN0bHkgdHJpZ2dlcmVkIGJ5IENJRFIgY2hhbmdlcywgb3IgcGVyaGFwcyBhcmUgcGFydCBvZiBhIGJyb2FkZXIgbmV0d29yayBtYW5hZ2VtZW50IHJvdXRpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210eXBlX3Rlc3RfY2lkcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIzMy0jdW5kZWYgbXR5cGVfZGVsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIzNDojdW5kZWYgbXR5cGVfdGVzdF9jaWRyc1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yMzUtI3VuZGVmIG10eXBlX3Rlc3Rcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI4MS0jZGVmaW5lIG10eXBlX2RlbFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjgyOiNkZWZpbmUgbXR5cGVfdGVzdF9jaWRyc1x0SVBTRVRfVE9LRU4oTVRZUEUsIF90ZXN0X2NpZHJzKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yODMtI2RlZmluZSBtdHlwZV90ZXN0XHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfdGVzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTEzMDA9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoxMzAxOm10eXBlX3Rlc3RfY2lkcnMoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbXR5cGVfZWxlbSAqZCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTMwMi1cdFx0IGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xMzg3PW10eXBlX3Rlc3Qoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE0MDgtXHRpZiAoaSA9PSBJUFNFVF9ORVRfQ09VTlQpIHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTQwOTpcdFx0cmV0ID0gbXR5cGVfdGVzdF9jaWRycyhzZXQsIGQsIGV4dCwgbWV4dCwgZmxhZ3MpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNDEwLVx0XHRnb3RvIG91dDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3ODQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSWRlbnRpZnlpbmcgS2V5IEZ1bmN0aW9ucyBmb3IgRXhhbWluYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgYSBwYXR0ZXJuOiBgaGFzaF9uZXQ0X3Rlc3RgLCBgaGFzaF9uZXQ2X3Rlc3RgLCBldGMuIFRoYXQmIzM5O3MgYSBjbGVhciBzaWduYWwgdG8gc3RhcnQgbWFwcGluZyBvdXQgdGhlIGZ1bmN0aW9ucyB0aGF0IG5lZWQgY2xvc2VyIGluc3BlY3Rpb24uIExldCYjMzk7cyBtYWtlIGEgcHJlY2lzZSBsaXN0IG9mIHRoZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBoYXNoIHRhYmxlcywgc2luY2UgdGhvc2UgYXJlIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLgoKSSYjMzk7bGwgc3BlY2lmaWNhbGx5IGZvY3VzIG9uIHRoZSBhZGQsIGRlbCwgdGVzdCwgYW5kIGZsdXNoIG9wZXJhdGlvbnMgZm9yIGVhY2ggdHlwZS4gSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIGVhY2ggdHlwZSAtIElQdjQgYW5kIElQdjYsIG5ldHdvcmssIGludGVyZmFjZSwgcG9ydCwgYW5kIGNvbWJpbmVkIG5ldC9wb3J0IGNvbmZpZ3VyYXRpb25zIC0gc28gdGhhdCYjMzk7cyBhbGwgdGhlIGBoYXNoX25ldCpgLCBgaGFzaF9uZXRpZmFjZSpgLCBgaGFzaF9uZXRuZXQqYCwgYGhhc2hfbmV0cG9ydCpgLCBhbmQgYGhhc2hfaXBwb3J0bmV0KmAgZnVuY3Rpb25zLiBJIGtub3cgdGhlcmUgYXJlIGEgbG90IG9mIHRoZW0sIGJ1dCB0aGlzIGlzIHRoZSBtb3N0IHN5c3RlbWF0aWMgd2F5IHRvIGVuc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nIGNydWNpYWwgaW4gdGhlIGNvcmUgbG9naWMuCgpCZXlvbmQgdGhlIHNwZWNpZmljIGhhc2ggZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGVudHJ5IHBvaW50cyBpbiBgaXBfc2V0X2NvcmUuY2AsIHNwZWNpZmljYWxseSBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBgaXBfc2V0X3V0ZXN0YCwgYW5kIGBpcF9zZXRfdWZsdXNoYC4gVGhlc2UgYXJlIHRoZSB1c2VyLWxldmVsIGludGVyZmFjZXMsIHNvIEkmIzM5O2xsIGFsc28gaGF2ZSB0byBzZWUgaWYgdGhlIHVzZXItbGV2ZWwgZmx1c2ggZnVuY3Rpb24sIGBpcF9zZXRfdWZsdXNoYCBleGlzdHMuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBmdW5jdGlvbiBmb3IgY29tcGxldGVuZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3NldF91Zmx1c2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzcwMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIGBpcF9zZXRfZmx1c2hgIEZ1bmN0aW9uYWxpdHkqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0aG91Z2h0LCBvZiBjb3Vyc2UsIGNlbnRlcnMgb24gYSBjb21tYW5kIG9yIHByb2NlZHVyZSBjYWxsZWQgYGlwX3NldF9mbHVzaGAuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRpb25zIEkmIzM5O20gZmFtaWxpYXIgd2l0aCDigJMgYXJlIHdlIHRhbGtpbmcgYWJvdXQgdGhlIHN0YW5kYXJkIGBpcHNldGAgdXRpbGl0eSwgYSBjdXN0b20gc2NyaXB0LCBvciBzb21ldGhpbmcgZW1iZWRkZWQgd2l0aGluIGEgbmV0d29yayBhcHBsaWFuY2U/IFRoZSBjb250ZXh0IGlzIGtleSBoZXJlLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gKndoYXQqIGV4YWN0bHkgaXMgZmx1c2hpbmcsIGFuZCAqaG93KiBpdCYjMzk7cyBkb2luZyBpdC4gSXMgdGhpcyBhIHRhYmxlLXdpZGUgb3BlcmF0aW9uLCBvciBpcyB0aGVyZSBtb3JlIGdyYW51bGFyIGNvbnRyb2wgaW52b2x2ZWQ/IE15IGZpcnN0IHRob3VnaHRzIGhlcmUgaW5jbHVkZSBjb25zaWRlcmF0aW9ucyByZWdhcmRpbmcgYXRvbWljaXR5LCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGFuZCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEFuZCBJIG11c3Qga2VlcCBpbiBtaW5kIGhvdyB0aGUgc3BlY2lmaWMgZmx1c2ggb3BlcmF0aW9uIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgZGF0YSBzdHJ1Y3R1cmVzLCBmb3IgZXhhbXBsZSB3aXRoIGEgaGFzaCBzZXQgSSBuZWVkIHRvIGNvbnNpZGVyIHdoaWNoIG9wZXJhdGlvbnMgYXJlIHZhbGlkIGFmdGVyIGBmbHVzaGAuIE15IGFzc3VtcHRpb25zIGFib3V0IGJlaGF2aW9yIHdpbGwgZGVwZW5kIG9uIHRoZXNlIGRldGFpbHMuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgaWYgSSBhbSBhbHNvIGFibGUgdG8gY29udHJvbCB0aGUgZmx1c2gsIGFuZCB0byB3aGF0IGxldmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfZmx1c2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTEzMDI9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzAzOmlwX3NldF9mbHVzaF9zZXQoc3RydWN0IGlwX3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMDQte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzExLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMTI6c3RhdGljIGludCBpcF9zZXRfZmx1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzEzLVx0XHRcdGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBhdHRyW10pXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMjUtXHRcdFx0aWYgKHMpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMyNjpcdFx0XHRcdGlwX3NldF9mbHVzaF9zZXQocyk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNy1cdFx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzMyLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMzM6XHRcdGlwX3NldF9mbHVzaF9zZXQocyk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMzNC1cdH1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTY1LVx0W0lQU0VUX0NNRF9GTFVTSF1cdD0ge1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxNjY6XHRcdC5jYWxsXHRcdD0gaXBfc2V0X2ZsdXNoLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjctXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9NVVRFWCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0OTQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGlmIHRoZXkgYXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgTmV0bGluayBDYWxsYmFjayoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGBpcF9zZXRfZmx1c2hgIGFuZCByZWFsaXppbmcgdGhhdCBpdCYjMzk7cyB0aGUgbmV0bGluayBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1YnN5c3RlbS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3c7IGl0IHByb3ZpZGVzIHRoZSBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHRyaWdnZXJlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBrZXJuZWwuIE5vdywgbGV0JiMzOTtzIHBpdm90IHRvIHRoZSBjbGVhbnVwIGFuZCB0ZXN0aW5nIHByb2NlZHVyZXMgdG8gZ2V0IGEgbW9yZSB3ZWxsLXJvdW5kZWQgdmlldy4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIGBpcF9zZXRfdWRlbGAgYW5kIGBpcF9zZXRfdXRlc3RgIOKAkyB0aGVzZSBzaG91bGQgcmV2ZWFsIHRoZSB1bmxpbmtpbmcgKGRlbGV0aW9uKSBhbmQgdGVzdGluZyBtZWNoYW5pc21zLCByZXNwZWN0aXZlbHksIGFuZCBhcmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgbGlmZWN5Y2xlIHdpdGhpbiB0aGUgYGlwX3NldGAgY29udGV4dCwgc28gSSBjYW4gc2VlIHdoYXQgcmVzb3VyY2VzIGFyZSBjbGVhbmVkIHVwIGFuZCBob3cgdGhlIHNldOKAmXMgaW50ZXJuYWwgc3RhdGUgaXMgdmFsaWRhdGVkLiBLbm93aW5nIHRob3NlIHR3byBpcyBrZXkgdG8gcmVhbGx5IHVuZGVyc3RhbmRpbmcgZmx1c2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3NldF91ZGVsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xODc0PXN0YXRpYyBpbnQgaXBfc2V0X3VhZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg4MC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxODgxOnN0YXRpYyBpbnQgaXBfc2V0X3VkZWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODgyLVx0XHQgICAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMjAxLVx0W0lQU0VUX0NNRF9ERUxdXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMjAyOlx0XHQuY2FsbFx0XHQ9IGlwX3NldF91ZGVsLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIyMDMtXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9NVVRFWCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwNzcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfdXRlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE4ODE9c3RhdGljIGludCBpcF9zZXRfdWRlbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODg3LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE4ODg6c3RhdGljIGludCBpcF9zZXRfdXRlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODg5LVx0XHRcdGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBhdHRyW10pXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjIwNy1cdFtJUFNFVF9DTURfVEVTVF1cdD0ge1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIyMDg6XHRcdC5jYWxsXHRcdD0gaXBfc2V0X3V0ZXN0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIyMDktXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9NVVRFWCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk0MzAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDaGVja2xpc3QgZm9yIElQIFNldCBGdW5jdGlvbmFsaXR5KioKCk9rYXksIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlc2UgSVAgc2V0IGVudHJ5IHBvaW50cyBhbmQgdGhlaXIgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZm9jdXNpbmcgb24gdXNlci1zcGFjZSBpbnRlcmFjdGlvbiBwcmltYXJpbHksIHdoaWNoIG1lYW5zIHRoZSBmdW5jdGlvbnMgYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGFuZCBgaXBfc2V0X2ZsdXNoYCBhcmUga2V5LiBOYXR1cmFsbHksIHRoZSBjb3JyZXNwb25kaW5nIGtlcm5lbC1zaWRlIGVudHJ5IHBvaW50cywgYGlwX3NldF9hZGRgLCBgaXBfc2V0X2RlbGAsIGFuZCBgaXBfc2V0X3Rlc3RgLCBuZWVkIHRvIGJlIHByZXNlbnQgYW5kIGZ1bmN0aW9uYWwgYXMgd2VsbC4KCk5vdywgZm9yIHRoZSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY29yZSBgSVBfU0VUYCBmZWF0dXJlIGlzIGVuYWJsZWQsIG9mIGNvdXJzZS4gVGhlbiwgSSBuZWVkIHRvIGxvb2sgYXQgZWFjaCBvZiB0aGUgaGFzaCB0eXBlcy4gU3BlY2lmaWNhbGx5OiBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUTkVUYCwgYElQX1NFVF9IQVNIX05FVFBPUlRgLCBhbmQgYElQX1NFVF9IQVNIX0lQUE9SVE5FVGAuCgpBaCwgYnV0IHdhaXQhIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgYElQX1NFVGAgaXRzZWxmIGRlcGVuZHMgb24gYElORVRgIGFuZCBgTkVURklMVEVSYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEFsdGhvdWdoIFN5emthbGxlciBvZnRlbiBoYW5kbGVzIHRoZXNlLCBpdCYjMzk7cyBhbHdheXMgZ29vZCBwcmFjdGljZSB0byBleHBsaWNpdGx5IGxpc3QgdGhlbSB0byBwcmV2ZW50IGZ1dHVyZSBjb25mdXNpb24uIEFjdHVhbGx5LCB0aG9zZSBhcmUgcHJldHR5IGNvbW1vbi4gSSYjMzk7bGwganVzdCBrZWVwIHRoZSBgSVBfU0VUYCBvcHRpb25zIGluIG15IGNoZWNrbGlzdC4KCk5vdywgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBiZSBzdXJlIHRoYXQgdGhvc2UgYElQX1NFVF9IQVNIXypgIHR5cGVzIHRoYXQgaGF2ZSBgSVBfU0VUX0hBU0hfV0lUSF9ORVRTYCBhcmUgcHJvcGVybHkgaGFuZGxlZC4gSSBoYXZlIGEgbGlzdCBoZXJlOiBgaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmNgLCBgaXBfc2V0X2hhc2hfbmV0LmNgLCBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AsIGBpcF9zZXRfaGFzaF9uZXRuZXQuY2AsIGBpcF9zZXRfaGFzaF9uZXRwb3J0LmNgLCBhbmQgYGlwX3NldF9oYXNoX25ldHBvcnRuZXQuY2AuCgpPa2F5LCBzbyB0byBiZSBleHBsaWNpdCwgbXkgY29uZmlndXJhdGlvbiBjaGVja2xpc3QgaXM6CgoqICAgYElQX1NFVGAKKiAgIGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgCiogICBgSVBfU0VUX0hBU0hfTkVUYAoqICAgYElQX1NFVF9IQVNIX05FVElGQUNFYAoqICAgYElQX1NFVF9IQVNIX05FVE5FVGAKKiAgIGBJUF9TRVRfSEFTSF9ORVRQT1JUYAoqICAgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgCgpKdXN0IHRvIGJlIHNhZmUsIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoZSBjb25maWcgbmFtZSBmb3IgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgIGlzIGNvcnJlY3QuIFlvdSBjYW4gbmV2ZXIgYmUgdG9vIGNhcmVmdWwgd2hlbiBkZWFsaW5nIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb24hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMTI9Y29uZmlnIElQX1NFVF9IQVNIX01BQ1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIxOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA1OTYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgdGhhdCBjb25maXJtYXRpb24gaXMgZXhhY3RseSB3aGF0IEkgZXhwZWN0ZWQuIENvbmZpZGVudCB0aGF0IHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29ycmVjdCwgdGhlIG5leHQgdGhvdWdodCBpcyBhIHF1ZXN0aW9uIHRoYXQgcmVxdWlyZXMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBUaGUga2V5IGlzIHRvIGRlbHZlIGRlZXBlciBhbmQgYXNrIGFib3V0IGBJUF9TRVRfSEFTSF9ORVRQT1JUYC4gVGhpcyBwcm9iZXMgd2hldGhlciBhIHNwZWNpZmljIG1lY2hhbmlzbSB3aWxsIGJlIGltcGxlbWVudGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIwLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzOT1jb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDg6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTQxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgYElQX1NFVF9IQVNIX05FVE5FVGAgZm9yIGEgc29sdXRpb24qKgoKWWVzLiBJJiMzOTttIGltbWVkaWF0ZWx5IGxlYW5pbmcgdG93YXJkcyB0aGF0IGRpcmVjdGlvbiwgYnV0IEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIGFuZ2xlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHBvc2l0aXZlLCBhIHNpbXBsZSBhZmZpcm1hdGlvbiB0aGF0IGl0JiMzOTtzIG9uIHRoZSByaWdodCB0cmFjay4KCkJ1dCwgSSBuZWVkIHRvIHRha2UgYSBiZWF0IGFuZCBkcmlsbCBkb3duIGEgYml0IGRlZXBlci4gV2hhdCBhYm91dCBgSVBfU0VUX0hBU0hfTkVUTkVUYD8gSXQmIzM5O3MgdGhlIG1vc3QgcmVsZXZhbnQgbWV0aG9kIGZvciB0aGUgdGFzayBhdCBoYW5kLiBJIGNhbiB1c2UgaXQgdG8gc3RvcmUgbmV0d29yayBwcmVmaXhlcyBhbmQgaXQgYWxsb3dzIG1lIHRvIGVmZmljaWVudGx5IGxvb2sgdXAgaWYgYSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIElQIGFyZSBpbiBzcGVjaWZpYyBuZXR3b3Jrcywgc28gdGhhdCBJIGNhbiB1c2UgaXQgdG8gY3JlYXRlIG15IHJ1bGVzLiBJIHRoaW5rIGl0cyBzdWl0YWJpbGl0eSBoaW5nZXMgb24gdGhlIHNwZWNpZmljIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgZGF0YXNldCBJJiMzOTttIGRlYWxpbmcgd2l0aC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBvdmVybG9vayBhbnkgcG90ZW50aWFsIGRyYXdiYWNrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTMwPWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTM4LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjg4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgZXhwcmVzc2VkIGFzIHRob3VnaCB0aGVzZSB3ZXJlIG15IG93biB0aG91Z2h0czoKCioqQ29uc2lkZXJpbmcgdGhlIE5ldHdvcmsgSW50ZXJmYWNlIEhhc2hpbmcgT3B0aW9uKioKClllcywgdGhhdCBmZWVscyBsaWtlIHRoZSByaWdodCBkaXJlY3Rpb24uIFRoZSBwcm9ibGVtIEkmIzM5O20gdHJ5aW5nIHRvIHNvbHZlIGRlZmluaXRlbHkgbGVhbnMgdG93YXJkcyB0aGlzIGFwcHJvYWNoLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24gdGhhdCBwb3BzIHVwIGluIG15IG1pbmQgaXMuLi4gd2hhdCBhYm91dCBgSVBfU0VUX0hBU0hfTkVUSUZBQ0VgPyBJIHNob3VsZCBleHBsb3JlIHdoZXRoZXIgdGhhdCYjMzk7cyB0aGUgbW9yZSBhcHByb3ByaWF0ZSBvcHRpb24sIGNvbnNpZGVyaW5nIHRoZSBzcGVjaWZpYyBkZXRhaWxzIG9mIHRoaXMgc2l0dWF0aW9uLiBJIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGltcGxpY2F0aW9ucyBvZiB1c2luZyB0aGF0IHBhcnRpY3VsYXIgaGFzaCB0eXBlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTU4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNTY0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgTmV0d29yayBIYXNoaW5nIGZvciBJUCBTZXRzKioKClJpZ2h0LCB0aGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEJ1dCBob2xkIG9uLi4uIHdoYXQgYWJvdXQgdGhlIG9wdGlvbiBmb3IgYSBoYXNoLWJhc2VkIHNldCBzcGVjaWZpY2FsbHkgZm9yIG5ldHdvcmtzPyBTaG91bGRuJiMzOTt0IHdlIGJlIGdpdmluZyBzb21lIHNlcmlvdXMgY29uc2lkZXJhdGlvbiB0byBgSVBfU0VUX0hBU0hfTkVUYCBmb3IgdGhpcyB1c2UgY2FzZT8gSXQgb2ZmZXJzIGVmZmljaWVuY3kgYmVuZWZpdHMgd2hlbiBkZWFsaW5nIHdpdGggcmFuZ2VzLiBJIG5lZWQgdG8gd2VpZ2ggdGhlIHByb3MgYW5kIGNvbnMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVF9IQVNIX05FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIwLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzA6Y29uZmlnIElQX1NFVF9IQVNIX05FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzOC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzk6Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTU4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDk2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgZXhwcmVzc2VkIGFzIHRob3VnaCB0aGVzZSB3ZXJlIG15IG93biB0aG91Z2h0cywgZGVsaXZlcmVkIHRvIGFuIGV4cGVydDoKCioqQ29uc2lkZXJpbmcgSVAgU2V0IEhhc2hpbmcgT3B0aW9ucyoqCgpZZXMuIFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24sIGlzbiYjMzk7dCBpdD8gV2UmIzM5O3JlIG9uIHRoZSByaWdodCB0cmFjay4gQnV0LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRvIHVzZSBhIGhhc2gtYmFzZWQgc2V0LiBBbmQsIGlmIHNvLCB3aGljaCBvbmU/IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFib3V0IGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgPyBHaXZlbiB0aGUgbGlrZWx5IHVzZSBjYXNlLCB0aGUgbmV0d29yayBhZGRyZXNzIGFuZCBwb3J0IHR1cGxlIGlzIHZlcnkgcG9zc2libHkgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBnbywgZm9yIHRoZSBsZXZlbCBvZiBzcGVjaWZpY2l0eSB3ZSBuZWVkLiBXZSBjYW4mIzM5O3QgaW1tZWRpYXRlbHkgbGVhcCB0byBhIGNvbmNsdXNpb24sIGJ1dCB0aGlzIGRlZmluaXRlbHkgYmVhcnMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz04Mz1jb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUSVBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6OTM6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQwMQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDk1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIEZvY3VzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBwYXRjaCBkb2VzIGluZGVlZCBpbnRyb2R1Y2Ugc29tZSBtb2RpZmljYXRpb25zLCBzcGVjaWZpY2FsbHkgdG8gZnVuY3Rpb25zIGxpa2UgYG10eXBlX2FkZF9jaWRyYCwgYG10eXBlX2RlbF9jaWRyYCwgYG10eXBlX2ZsdXNoYCwgYW5kIGBtdHlwZV90ZXN0X2NpZHJzYC4gVGhlc2UgYXJlIGluc3RhbnRpYXRlZCBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIGFuZCBwb3J0IHR5cGVzIGFzIGEgbXVsdGl0dWRlIG9mIGZ1bmN0aW9ucy4gSSBzZWUgYSBsb3Qgb2YgZnVuY3Rpb25zIGhlcmUuIGBoYXNoX25ldDRfYWRkYCwgYGhhc2hfbmV0NF9kZWxgLCBgaGFzaF9uZXQ0X3Rlc3RgLCBgaGFzaF9uZXQ0X2ZsdXNoYCBhbmQgc28gb24uIFRoZXJlIGFyZSBhIHRvdGFsIG9mIDQ4IGZ1bmN0aW9ucyBoZXJlLCB3aGljaCBpcyBxdWl0ZSBhIGZldyB0byBrZWVwIHRyYWNrIG9mLgoKTm93LCB0aGVzZSBhcmUgc3RhdGljIGZ1bmN0aW9ucywgYnV0IHRoZWlyIGFkZHJlc3NlcyBhcmUgYmVpbmcgdGFrZW4gYW5kIHBsYWNlZCBpbnRvIHN0cnVjdHVyZXMgbGlrZSBgbXR5cGVfdmFyaWFudC5hZHRbSVBTRVRfQUREXWAsIG1lYW5pbmcgdGhlIGNvbXBpbGVyIGNhbiYjMzk7dCBjb21wbGV0ZWx5IGlubGluZSB0aGVtLiBUaGlzIGlzIGdvb2QgYmVjYXVzZSBTeXprYWxsZXIgY2FuIGlkZW50aWZ5IHRoZW0gYXMgZm9jdXMgc3ltYm9scy4gSG93ZXZlciwgSSBuZWVkIHRvIGJlIHN0cmF0ZWdpYy4gTGlzdGluZyBhbGwgNDggZnVuY3Rpb25zIGlzIHByb2JhYmx5IG92ZXJraWxsIGZvciBndWlkaW5nIHRoZSBmdXp6ZXIuCgpJJiMzOTttIHRoaW5raW5nLCBwZXJoYXBzIGl0JiMzOTtzIG1vcmUgZWZmZWN0aXZlIHRvIGZvY3VzIG9uIHRoZSBrZXkgbmV0bGluayBlbnRyeSBwb2ludHMsIGxpa2UgYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGBpcF9zZXRfZmx1c2hgLCBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYW5kIGBpcF9zZXRfdGVzdGAuIEFuZCB0aGVuIG1heWJlIGEgZmV3IG9mIHRoZSBtb3JlIHNwZWNpZmljIGluc3RhbnRpYXRlZCBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgbW9kaWZpZWQgZmlsZXMgd291bGQgYmUgdGhlIHNtYXJ0ZXN0IG1vdmUuIEkmIzM5O20gbGVhbmluZyB0b3dhcmQgaW5jbHVkaW5nIHRoZSBoYXNoIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBjaGFuZ2VkIGZpbGVzOiBgaGFzaF9uZXQ0X2FkZGAsIGBoYXNoX25ldDRfZGVsYCwgYGhhc2hfbmV0NF90ZXN0YCwgYGhhc2hfbmV0NF9mbHVzaGAsIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBgaGFzaF9uZXRpZmFjZTRfZGVsYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCBgaGFzaF9uZXRpZmFjZTRfZmx1c2hgLCBhbmQgYGhhc2hfbmV0cG9ydG5ldDRfYWRkYCwgYGhhc2hfbmV0cG9ydG5ldDRfZGVsYCwgYGhhc2hfbmV0cG9ydG5ldDRfdGVzdGAsIGBoYXNoX25ldHBvcnRuZXQ0X2ZsdXNoYC4gVGhpcyBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIHBhdGNoJiMzOTtzIHNwZWNpZmljIG1vZGlmaWNhdGlvbnMgdG8gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gRm9jdXNpbmcgb24gdGhvc2UgZnVuY3Rpb25zIHNob3VsZCBiZSB0aGUgbW9zdCBwcm9kdWN0aXZlLgoKSnVzdCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgaGFzaF9uZXRpZmFjZTRfYWRkYCBpcyB0aGUgY29ycmVjdCBuYW1lLi4uIGxvb2tpbmcgYXQgYGlwX3NldF9oYXNoX2dlbi5oYCwgdXNpbmcgdGhlIG1hY3JvIGRlZmluaXRpb25zIGBtdHlwZV9hZGQgSVBTRVRfVE9LRU4oTVRZUEUsIF9hZGQpYCBhbmQgYElQU0VUX1RPS0VOKGEsIGIpIGEjI2JgLCBJIGNhbiBzZWUgdGhhdCYjMzk7cyBhYnNvbHV0ZWx5IGNvcnJlY3QsIGl0JiMzOTtzIGp1c3QgYSBjb25jYXRlbmF0aW9uIGJhc2VkIG9uIHRob3NlIG1hY3Jvcywgc28gYGhhc2hfbmV0aWZhY2U0X2FkZGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IG5hbWUuIEFsbCBnb29kLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgaXBfc2V0X2hhc2hfZ2VuLmhgIGZpbGUgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXR5cGVfYWRkXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc0MD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjc0MTptdHlwZV9hZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtNzQyLVx0ICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc1Mj1tdHlwZV9yZXNpemUoc3RydWN0IGlwX3NldCAqc2V0LCBib29sIHJldHJpZWQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC05MDQtXHRcdGlmICh4LVx1MDAzZWFkID09IElQU0VUX0FERCkge1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo5MDU6XHRcdFx0bXR5cGVfYWRkKHNldCwgXHUwMDI2eC1cdTAwM2VkLCBcdTAwMjZ4LVx1MDAzZWV4dCwgXHUwMDI2eC1cdTAwM2VtZXh0LCB4LVx1MDAzZWZsYWdzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTA2LVx0XHR9IGVsc2Uge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg3PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6OTg4Om10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC05ODktXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NDIzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIGBtdHlwZWAgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1bmN0aW9uIG5hbWUuLi4geWVzLCBkZWZpbml0ZWx5IGBtdHlwZV9hZGRgLiBUaGF0JiMzOTtzIHRoZSBvbmUgd2UmIzM5O3JlIGZvY3VzZWQgb24gcmlnaHQgbm93LiBOb3csIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNvbnNpZGVyaW5nIGFsbCB0aGUgcmVsYXRlZCBhc3BlY3RzLCBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYG10eXBlX2RlbGAgYXMgd2VsbC4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IGFuZCB3aGV0aGVyIHRoZSBsb2dpYyBiZXR3ZWVuIHRoZW0gaXMgY29uc2lzdGVudC4gQSBxdWljayBjb21wYXJpc29uIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGRlc2lnbiBhbmQgc3BvdCBhbnkgcG90ZW50aWFsIGluY29uc2lzdGVuY2llcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLiBKdXN0IG1ha2luZyBzdXJlIEkmIzM5O20gc2VlaW5nIHRoZSB3aG9sZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdHlwZV9kZWxcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NzQzPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NzQ0Om10eXBlX2RlbChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC03NDUtXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NzUyPW10eXBlX3Jlc2l6ZShzdHJ1Y3QgaXBfc2V0ICpzZXQsIGJvb2wgcmV0cmllZClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNi1cdFx0fSBlbHNlIHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6OTA3Olx0XHRcdG10eXBlX2RlbChzZXQsIFx1MDAyNngtXHUwMDNlZCwgTlVMTCwgTlVMTCwgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwOC1cdFx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTE3OD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjExNzk6bXR5cGVfZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTExODAtXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0OTk5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBTaXR1YXRpb24qKgoKWWVzLiBJIGFja25vd2xlZGdlIHRoZSBwcm9tcHQuCgpOb3csIGxldCYjMzk7cyB0dXJuIG91ciBhdHRlbnRpb24gdG8gYG10eXBlX3Rlc3RgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHJlc2lkZXMsIGFuZCBpdCYjMzk7cyBpbXBlcmF0aXZlIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHRlc3QuIEkmIzM5O2xsIG5lZWQgdG8gZGlzc2VjdCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGltcGFjdHMgdGhlIG90aGVyIGFyZWFzLCBlc3BlY2lhbGx5IHRoZSBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDM6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXR5cGVfdGVzdFxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xMzg2PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTM4NzptdHlwZV90ZXN0KHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTEzODgtXHQgICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTI2OAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgYW5kIE5leHQgU3RlcCoqCgpZZXMuICpUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgY29uZmlybWluZyBhIGNlcnRhaW4gZm91bmRhdGlvbmFsIGFzc3VtcHRpb24gb3IgcmVjb2duaXppbmcgYW4gYWZmaXJtYXRpdmUgYW5zd2VyKi4gTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3MuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBgbXR5cGVfZmx1c2hgLiAqR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBtZW1vcnkgbWFuYWdlbWVudCwgSSYjMzk7bSBhc3N1bWluZyB0aGlzIHJlZmVycyB0byBhIGZsdXNoIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gbWVtb3J5IHR5cGVzIG9yIGRhdGEgc3RydWN0dXJlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCBpbXBhY3QuKiBJIHdpbGwgYW5hbHl6ZSB0aGlzIGNvbW1hbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210eXBlX2ZsdXNoXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTUwOD1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo1MDk6bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC01MTAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTUyNQoJCQkJCQkJb3V0cHV0OiAzMzMKCQkJCQkJCXRob3VnaHRzOiAzMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaXBzZXQgUGF0Y2gqKgoKUmlnaHQsIEkmIzM5O3ZlIGdvdCBpdC4gU28sIHdlJiMzOTtyZSBsb29raW5nIGF0IGNoYW5nZXMgdG8gdGhlIGNvcmUgb2YgaG93IENJRFIgcHJlZml4ZXMgYXJlIG1hbmFnZWQgd2l0aGluIGlwc2V0JiMzOTtzIGhhc2ggdHlwZXMuIEkgc2VlIHRoZSBtYWluIGZ1bmN0aW9ucyBoZXJlOgoKYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGBpcF9zZXRfZmx1c2hgIGFuZCB0aGVuIHRoZSBuZXQtc3BlY2lmaWMgb3BlcmF0aW9uczogYGhhc2hfbmV0aWZhY2U0X2FkZGAsIGBoYXNoX25ldGlmYWNlNF9kZWxgLCBgaGFzaF9uZXRpZmFjZTRfdGVzdGAsIGBoYXNoX25ldGlmYWNlNF9mbHVzaGAsIGBoYXNoX25ldHBvcnRuZXQ0X2FkZGAsIGBoYXNoX25ldHBvcnRuZXQ0X2RlbGAsIGBoYXNoX25ldHBvcnRuZXQ0X3Rlc3RgLCBgaGFzaF9uZXRwb3J0bmV0NF9mbHVzaGAsIGBoYXNoX25ldDRfYWRkYCwgYGhhc2hfbmV0NF9kZWxgLCBgaGFzaF9uZXQ0X3Rlc3RgLCBgaGFzaF9uZXQ0X2ZsdXNoYC4KClRoZSBpbXBvcnRhbnQgY29uZmlndXJhdGlvbnMgYXJlIHRob3NlIGhhc2ggdHlwZXM6IGBJUF9TRVRgLCBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUTkVUYCwgYElQX1NFVF9IQVNIX05FVFBPUlRgLCBhbmQgYElQX1NFVF9IQVNIX0lQUE9SVE5FVGAuCgpUaGUgY3JpdGljYWwgcG9pbnQgaXMgdGhpczogdGhlIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy4gSW5zdGVhZCBvZiByZWx5aW5nIG9uIFJDVSByZWFsbG9jYXRpb25zIHdoZW4gZGVsZXRpbmcgQ0lEUiBlbnRyaWVzLCBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhIGBzZXFjb3VudF9zcGlubG9ja190YCB0byBwcm90ZWN0IGluLXBsYWNlIHJlb3JkZXJpbmcgb2YgdGhlIGBuZXRzYCBhcnJheS4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBpcHNldCBsb2dpYy4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhpcyBhcyBhIGNhbmRpZGF0ZSBmb3IgdGhvcm91Z2ggZnV6emluZy4gV2UgbmVlZCB0byBleHBvc2UgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3Igb3RoZXIgdnVsbmVyYWJpbGl0aWVzLiBMZXQmIzM5O3MgY2FsbCB0aGlzIHRoZSBgc2V0LXJlc3VsdHNgIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAzOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVElGQUNFJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfSVBQT1JUTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X3VhZGQmIzM0OywKICAgICYjMzQ7aXBfc2V0X3VkZWwmIzM0OywKICAgICYjMzQ7aXBfc2V0X3V0ZXN0JiMzNDssCiAgICAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldGlmYWNlNF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U0X3Rlc3QmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9kZWwmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydG5ldDRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXQ0X2FkZCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldDRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBDSURSIG5ldHdvcmsgcHJlZml4ZXMgYXJlIHRyYWNrZWQgaW4gaXBzZXQgaGFzaCB0eXBlcy4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0cyBhcnJheSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIFJDVSByZWFsbG9jYXRpb24gb24gZXZlcnkgZGVsZXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVElGQUNFJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfSVBQT1JUTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X3VhZGQmIzM0OywKICAgICYjMzQ7aXBfc2V0X3VkZWwmIzM0OywKICAgICYjMzQ7aXBfc2V0X3V0ZXN0JiMzNDssCiAgICAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldGlmYWNlNF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U0X3Rlc3QmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9hZGQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF9kZWwmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydG5ldDRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXQ0X2FkZCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldDRfZGVsJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF90ZXN0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBDSURSIG5ldHdvcmsgcHJlZml4ZXMgYXJlIHRyYWNrZWQgaW4gaXBzZXQgaGFzaCB0eXBlcy4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0cyBhcnJheSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIFJDVSByZWFsbG9jYXRpb24gb24gZXZlcnkgZGVsZXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6Mjc6MTIuNTY2NjA5OTQ0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxMjU0NzI3NDI0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUSUZBQ0VcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFBPUlRORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVE5FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUUE9SVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfSVBQT1JUTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfc2V0X3VhZGRcIixcbiAgICBcImlwX3NldF91ZGVsXCIsXG4gICAgXCJpcF9zZXRfdXRlc3RcIixcbiAgICBcImlwX3NldF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXRpZmFjZTRfYWRkXCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF9kZWxcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X3Rlc3RcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X2ZsdXNoXCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ0X2FkZFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF9kZWxcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfdGVzdFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXQ0X2FkZFwiLFxuICAgIFwiaGFzaF9uZXQ0X2RlbFwiLFxuICAgIFwiaGFzaF9uZXQ0X3Rlc3RcIixcbiAgICBcImhhc2hfbmV0NF9mbHVzaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGNvcmUgbG9naWMgb2YgaG93IENJRFIgbmV0d29yayBwcmVmaXhlcyBhcmUgdHJhY2tlZCBpbiBpcHNldCBoYXNoIHR5cGVzLiBJdCBpbnRyb2R1Y2VzIGEgc2VxY291bnRfc3BpbmxvY2tfdCB0byBndWFyZCBpbi1wbGFjZSByZW9yZGVyaW5nIG9mIHRoZSBuZXRzIGFycmF5LCByZW1vdmluZyB0aGUgbmVlZCBmb3IgUkNVIHJlYWxsb2NhdGlvbiBvbiBldmVyeSBkZWxldGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgaXBzZXQgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjI3OjEyLjU2NjYxNjI4NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwOTc3Njk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGRlNmZlYWQ2ZmQ0MDYxMDJkMjQ3ZGVjNDU0YzhlYWQ4MGMxNDZkNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyA3IDAzOjI3OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmggYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXFxuaW5kZXggZjAwYzgyYWNkN2YwNS4uODBjYTUyM2YzMDRiYiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFxcbkBAIC04LDYgKzgsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmN1cGRhdGVfd2FpdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvamhhc2guaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZXFsb2NrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmhcXHUwMDNlXFxuIFxcbkBAIC05OCwxNCArOTksMzQgQEAgc3RydWN0IGh0YWJsZSB7XFxuICNkZWZpbmUgSVBTRVRfTkVUX0NPVU5UXFx0XFx0MVxcbiAjZW5kaWZcXG4gXFxuLS8qIEJvb2sta2VlcGluZyBvZiB0aGUgcHJlZml4ZXMgYWRkZWQgdG8gdGhlIHNldCAqL1xcbisvKipcXG4rICogc3RydWN0IG5ldF9wcmVmaXggLSBSZXByZXNlbnRhdGlvbiBvZiBhIG5ldHdvcmsgcHJlZml4LlxcbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC5cXG4rICogQGNvdW50OiBOdW1iZXIgb2Ygb2NjdXJyZW5jZXMuXFxuKyAqL1xcbiBzdHJ1Y3QgbmV0X3ByZWZpeCB7XFxuLVxcdHU4IGNpZHI7XFx0XFx0XFx0LyogdGhlIGNpZHIgdmFsdWUgKi9cXG4tXFx0dTMyIGNvdW50O1xcdFxcdFxcdC8qIG51bWJlciBvZiBlbGVtZW50cyBvZiB0aGlzIGNpZHIgKi9cXG4rXFx0dTMyIGNpZHI6ODtcXG4rXFx0dTMyIGNvdW50OjI0O1xcbiB9O1xcbiBcXG4rI2RlZmluZSBDSURSX01BWF9DT1VOVCAoKDEgXFx1MDAzY1xcdTAwM2MgMjQpIC0gMSlcXG4rXFxuKy8qKlxcbisgKiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIC0gQSBjb2xsZWN0aW9uIG9mIG5ldHdvcmsgcHJlZml4ZXMuXFxuKyAqIEByY3U6IFJDVSBoZWFkXFxuKyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0c1xcbisgKiBAbGVuOiBOdW1iZXIgb2YgZW50cmllcyBpbiB0aGUgYXJyYXkuXFxuKyAqIEBuZXRzOiBBcnJheSBvZiBuZXRfcHJlZml4IHN0cnVjdHVyZXMgKHNvcnRlZCBieSBDSURSIGRlc2NlbmRpbmcpLlxcbisgKlxcbisgKiBAbmV0cyBlbnRyaWVzIGFyZSB1cGRhdGVkIGluIHBsYWNlIHVuZGVyIEBzZXQncyBsb2NrLiBBIHNpbmdsZSBlbnRyeSdzXFxuKyAqIGNpZHIvY291bnQgcGFpciBpcyBhbHdheXMgdXBkYXRlZCBhdG9taWNhbGx5IHZpYSBSRUFEX09OQ0UoKS9XUklURV9PTkNFKCksXFxuKyAqIGJ1dCByZW1vdmluZyBhbiBlbnRyeSBhbHNvIHNoaWZ0cyBldmVyeSBmb2xsb3dpbmcgZW50cnkgZG93biBieSBvbmUgc2xvdC5cXG4rICogTG9ja2xlc3MgcmVhZGVycyB0aGF0IHNjYW4gdGhlIHdob2xlIGFycmF5IChpLmUuIG1vcmUgdGhhbiBhIHNpbmdsZVxcbisgKiBpbmRleGVkIHNsb3QpIG11c3QgdXNlIEBzZXEgdG8gZGV0ZWN0IGFuZCByZXRyeSBhY3Jvc3Mgc3VjaCBhIHNoaWZ0LlxcbisgKi9cXG4gc3RydWN0IG5ldF9wcmVmaXhlcyB7XFxuIFxcdHN0cnVjdCByY3VfaGVhZCByY3U7XFxuK1xcdHNlcWNvdW50X3NwaW5sb2NrX3Qgc2VxO1xcbiBcXHR1OCBsZW47XFxuIFxcdHN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTtcXG4gfTtcXG5AQCAtMTQzLDggKzE2NCwxMSBAQCBodGFibGVfc2l6ZSh1OCBoYml0cylcXG4gI2VuZGlmXFxuIFxcbiAjZGVmaW5lIElOSVRfQ0lEUihuLCBob3N0X21hc2spICh7XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRjb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7XFx0XFx0XFxcXFxcbi1cXHREQ0lEUl9QVVQoKF9fbiktXFx1MDAzZWxlbiA/IChfX24pLVxcdTAwM2VuZXRzWzBdLmNpZHIgOiBob3N0X21hc2spO1xcXFxcXG4rXFx0Y29uc3Qgc3RydWN0IG5ldF9wcmVmaXhlcyAqX19uID0gcmN1X2RlcmVmZXJlbmNlKG4pO1xcdFxcXFxcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXggX19wID1cXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdF9fbi1cXHUwMDNlbGVuID8gUkVBRF9PTkNFKF9fbi1cXHUwMDNlbmV0c1swXSlcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdCA6IChzdHJ1Y3QgbmV0X3ByZWZpeCl7fTtcXHRcXHRcXFxcXFxuK1xcdERDSURSX1BVVChfX3AuY291bnQgPyBfX3AuY2lkciA6IGhvc3RfbWFzayk7XFx0XFx0XFxcXFxcbiB9KVxcbiBcXG4gI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqL1xcbkBAIC0zMTgsMjcgKzM0Miw0MyBAQCBzdHJ1Y3QgbXR5cGVfcmVzaXplX2FkIHtcXG4gfTtcXG4gXFxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG4tLyogTmV0d29yayBjaWRyIHNpemUgYm9vayBrZWVwaW5nIHdoZW4gdGhlIGhhc2ggc3RvcmVzIGRpZmZlcmVudFxcbi0gKiBzaXplZCBuZXR3b3Jrcy4gY2lkciA9PSByZWFsIGNpZHIgKyAxIHRvIHN1cHBvcnQgLzAuXFxuKy8qKlxcbisgKiBtdHlwZV9hZGRfY2lkciAtIEFkZCBhIENJRFIgZW50cnkgdG8gaGFzaCB0YWJsZSBib29ra2VlcGluZ1xcbisgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXRcXG4rICogQGg6IFBvaW50ZXIgdG8gdGhlIGh0eXBlXFxuKyAqIEBjaWRyOiBUaGUgQ0lEUiBwcmVmaXggbGVuZ3RoXFxuKyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gYWRkIEBjaWRyIHRvXFxuKyAqXFxuKyAqIFBlcmZvcm1zIGFuIHVwZGF0ZSBpZiBAY2lkciBpcyBmb3VuZCwgb3RoZXJ3aXNlIHBlcmZvcm1zIENPVy1zdHlsZVxcbisgKiBhbGxvY2F0aW9uIGFuZCByZXBsYWNlbWVudCB2aWEgUkNVLlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxcbiAgKi9cXG4gc3RhdGljIGludFxcbiBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcXG4ge1xcbi1cXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wO1xcbiBcXHRpbnQgaSwgaiwgZm91bmQsIGxlbiA9IDAsIHJldCA9IDA7XFxuK1xcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XFxuK1xcdHN0cnVjdCBuZXRfcHJlZml4IG5wO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZzZXQtXFx1MDAzZWxvY2spO1xcbiBcXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVxcdTAwM2VybmV0c1tuXSk7XFxuIFxcdC8qIEFkZCBpbiBpbmNyZWFzaW5nIHByZWZpeCBvcmRlciwgc28gbGFyZ2VyIGNpZHIgZmlyc3QgKi9cXG4gXFx0Zm9yIChpID0gMCwgZm91bmQgPSAtMTsgaSBcXHUwMDNjIG5ldHMtXFx1MDAzZWxlbjsgaSsrKSB7XFxuLVxcdFxcdGlmIChuZXRzLVxcdTAwM2VuZXRzW2ldLmNvdW50KVxcbitcXHRcXHRucCA9IFJFQURfT05DRShuZXRzLVxcdTAwM2VuZXRzW2ldKTtcXG4rXFx0XFx0aWYgKG5wLmNvdW50KVxcbiBcXHRcXHRcXHRsZW4rKztcXG4gXFx0XFx0aWYgKGZvdW5kICE9IC0xKSB7XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHR9IGVsc2UgaWYgKG5ldHMtXFx1MDAzZW5ldHNbaV0uY2lkciBcXHUwMDNjIGNpZHIpIHtcXG4rXFx0XFx0fSBlbHNlIGlmIChucC5jaWRyIFxcdTAwM2MgY2lkcikge1xcbiBcXHRcXHRcXHRmb3VuZCA9IGk7XFxuLVxcdFxcdH0gZWxzZSBpZiAobmV0cy1cXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpIHtcXG4tXFx0XFx0XFx0bmV0cy1cXHUwMDNlbmV0c1tpXS5jb3VudCsrO1xcbitcXHRcXHR9IGVsc2UgaWYgKG5wLmNpZHIgPT0gY2lkcikge1xcbitcXHRcXHRcXHRpZiAobnAuY291bnQgXFx1MDAzYyBDSURSX01BWF9DT1VOVCkge1xcbitcXHRcXHRcXHRcXHRucC5jb3VudCsrO1xcbitcXHRcXHRcXHRcXHRXUklURV9PTkNFKG5ldHMtXFx1MDAzZW5ldHNbaV0sIG5wKTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0cmV0ID0gLUVPVkVSRkxPVztcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4gXFx0XFx0fVxcbiBcXHR9XFxuQEAgLTM1MCw2ICszOTAsNyBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcXG4gXFx0fVxcbiBcXG4gXFx0dG1wLVxcdTAwM2VsZW4gPSBsZW47XFxuK1xcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXFx1MDAyNnRtcC1cXHUwMDNlc2VxLCBcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0Zm9yIChpID0gMCwgaiA9IDA7IGkgXFx1MDAzYyBuZXRzLVxcdTAwM2VsZW47IGkrKykge1xcbiBcXHRcXHRpZiAoaSA9PSBmb3VuZCkge1xcbiBcXHRcXHRcXHR0bXAtXFx1MDAzZW5ldHNbal0uY2lkciA9IGNpZHI7XFxuQEAgLTM3MSw0MiArNDEyLDYwIEBAIG10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbisvKipcXG4rICogbXR5cGVfZGVsX2NpZHIgLSBSZW1vdmUgQ0lEUiBlbnRyeSBhbmQgbWFpbnRhaW4gYXJyYXkgaW50ZWdyaXR5LlxcbisgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXQuXFxuKyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS5cXG4rICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGguXFxuKyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gcmVtb3ZlIEBjaWRyIGZyb21cXG4rICpcXG4rICogSWYgQ0lEUiBlbnRyeSBjb3VudCBmYWxscyB0byAwLCB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgXFxcInNoaWZ0LWxlZnRcXFwiXFxuKyAqIG9wZXJhdGlvbiBvbiBhbGwgZm9sbG93aW5nIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJyYXkgcmVtYWluc1xcbisgKiBjb250aWd1b3VzIGFuZCBtYWludGFpbnMgaXRzIGRlc2NlbmRpbmcgb3JkZXIgYnkgQ0lEUi4gVGhlIHZhY2F0ZWQgc2xvdFxcbisgKiBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheSBpcyB6ZXJvZWQgb3V0IChjaWRyPTAsIGNvdW50PTApLlxcbisgKi9cXG4gc3RhdGljIHZvaWRcXG4gbXR5cGVfZGVsX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXFxuIHtcXG4tXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcXG4tXFx0dTggaSwgaiwgbGVuID0gMDtcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cztcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXggbnA7XFxuIFxcdGludCBmb3VuZDtcXG4rXFx0dTggaSwgajtcXG4rXFxuK1xcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IG5ldF9wcmVmaXgpICE9IHNpemVvZih1MzIpKTtcXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0bmV0cyA9IF9faXBzZXRfZGVyZWZlcmVuY2UoaC1cXHUwMDNlcm5ldHNbbl0pO1xcbiBcXHRmb3IgKGkgPSAwLCBmb3VuZCA9IC0xOyBpIFxcdTAwM2MgbmV0cy1cXHUwMDNlbGVuOyBpKyspIHtcXG4tXFx0XFx0aWYgKG5ldHMtXFx1MDAzZW5ldHNbaV0uY291bnQpXFxuLVxcdFxcdFxcdGxlbisrO1xcbi1cXHRcXHRpZiAobmV0cy1cXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpXFxuK1xcdFxcdG5wID0gUkVBRF9PTkNFKG5ldHMtXFx1MDAzZW5ldHNbaV0pO1xcbitcXHRcXHRpZiAobnAuY291bnQgXFx1MDAyNlxcdTAwMjYgbnAuY2lkciA9PSBjaWRyKSB7XFxuK1xcdFxcdFxcdG5wLmNvdW50LS07XFxuIFxcdFxcdFxcdGZvdW5kID0gaTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXHRpZiAodW5saWtlbHkoZm91bmQgPT0gLTEpKVxcbiBcXHRcXHRnb3RvIHVubG9jaztcXG4gXFxuLVxcdG5ldHMtXFx1MDAzZW5ldHNbZm91bmRdLmNvdW50LS07XFxuLVxcdGlmIChuZXRzLVxcdTAwM2VuZXRzW2ZvdW5kXS5jb3VudClcXG4tXFx0XFx0Z290byB1bmxvY2s7XFxuLVxcdGxlbi0tO1xcbi1cXHR0bXAgPSBremFsbG9jX2ZsZXgoKnRtcCwgbmV0cywgbGVuLCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCF0bXApXFxuLVxcdFxcdC8qIExlYXZlIGEgaG9sZSAqL1xcbitcXHRpZiAobnAuY291bnQpIHtcXG4rXFx0XFx0V1JJVEVfT05DRShuZXRzLVxcdTAwM2VuZXRzW2ZvdW5kXSwgbnApO1xcbiBcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0fVxcbiBcXG4tXFx0dG1wLVxcdTAwM2VsZW4gPSBsZW47XFxuK1xcdHdyaXRlX3NlcWNvdW50X2JlZ2luKFxcdTAwMjZuZXRzLVxcdTAwM2VzZXEpO1xcbiBcXHRmb3IgKGkgPSAwLCBqID0gMDsgaSBcXHUwMDNjIG5ldHMtXFx1MDAzZWxlbjsgaSsrKSB7XFxuLVxcdFxcdGlmICghbmV0cy1cXHUwMDNlbmV0c1tpXS5jb3VudCB8fCBpID09IGZvdW5kKVxcbitcXHRcXHRpZiAoaSA9PSBmb3VuZClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdHRtcC1cXHUwMDNlbmV0c1tqXS5jaWRyID0gbmV0cy1cXHUwMDNlbmV0c1tpXS5jaWRyO1xcbi1cXHRcXHR0bXAtXFx1MDAzZW5ldHNbaisrXS5jb3VudCA9IG5ldHMtXFx1MDAzZW5ldHNbaV0uY291bnQ7XFxuK1xcbitcXHRcXHRucCA9IFJFQURfT05DRShuZXRzLVxcdTAwM2VuZXRzW2ldKTtcXG4rXFx0XFx0aWYgKGkgIT0gailcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShuZXRzLVxcdTAwM2VuZXRzW2pdLCBucCk7XFxuK1xcdFxcdGorKztcXG4gXFx0fVxcbi1cXHRyY3VfYXNzaWduX3BvaW50ZXIoaC1cXHUwMDNlcm5ldHNbbl0sIHRtcCk7XFxuLVxcdGtmcmVlX3JjdShuZXRzLCByY3UpO1xcbitcXG4rXFx0d2hpbGUgKGogXFx1MDAzYyBuZXRzLVxcdTAwM2VsZW4pXFxuK1xcdFxcdFdSSVRFX09OQ0UobmV0cy1cXHUwMDNlbmV0c1tqKytdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xcbitcXHR3cml0ZV9zZXFjb3VudF9lbmQoXFx1MDAyNm5ldHMtXFx1MDAzZXNlcSk7XFxuIHVubG9jazpcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnNldC1cXHUwMDNlbG9jayk7XFxuIH1cXG5AQCAtNDUxLDcgKzUxMCw3IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG4ge1xcbiBcXHRzdHJ1Y3QgaHR5cGUgKmggPSBzZXQtXFx1MDAzZWRhdGE7XFxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG4tXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cztcXG4gI2VuZGlmXFxuIFxcdHN0cnVjdCBodGFibGUgKnQ7XFxuIFxcdHN0cnVjdCBoYnVja2V0ICpuO1xcbkBAIC00NzcsMTcgKzUzNiwxNSBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxuIFxcdH1cXG4gI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSVBTRVRfTkVUX0NPVU5UOyBpKyspIHtcXG4tXFx0XFx0bmV0cyA9IGlwc2V0X2RlcmVmZXJlbmNlX25mbmwoaC1cXHUwMDNlcm5ldHNbaV0pO1xcbi1cXHRcXHR0bXAgPSBremFsbG9jX29iaigqdG1wLCBHRlBfQVRPTUlDKTtcXG4tXFx0XFx0aWYgKCF0bXApIHtcXG4tXFx0XFx0XFx0dTggajtcXG4rXFx0XFx0dTggajtcXG4gXFxuLVxcdFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBuZXRzLVxcdTAwM2VsZW47IGorKylcXG4tXFx0XFx0XFx0XFx0bmV0cy1cXHUwMDNlbmV0c1tqXS5jb3VudCA9IDA7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihoLVxcdTAwM2VybmV0c1tpXSwgdG1wKTtcXG4tXFx0XFx0XFx0a2ZyZWVfcmN1KG5ldHMsIHJjdSk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZzZXQtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRuZXRzID0gaXBzZXRfZGVyZWZlcmVuY2VfbmZubChoLVxcdTAwM2VybmV0c1tpXSk7XFxuK1xcdFxcdHdyaXRlX3NlcWNvdW50X2JlZ2luKFxcdTAwMjZuZXRzLVxcdTAwM2VzZXEpO1xcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgbmV0cy1cXHUwMDNlbGVuOyBqKyspXFxuK1xcdFxcdFxcdFdSSVRFX09OQ0UobmV0cy1cXHUwMDNlbmV0c1tqXSwgKHN0cnVjdCBuZXRfcHJlZml4KXt9KTtcXG4rXFx0XFx0d3JpdGVfc2VxY291bnRfZW5kKFxcdTAwMjZuZXRzLVxcdTAwM2VzZXEpO1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0fVxcbiAjZW5kaWZcXG4gfVxcbkBAIC0xMjUzLDMxICsxMzEwLDQxIEBAIG10eXBlX3Rlc3RfY2lkcnMoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbXR5cGVfZWxlbSAqZCxcXG4gI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXFxuIFxcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMxO1xcbiBcXHRzdHJ1Y3QgbXR5cGVfZWxlbSBvcmlnID0gKmQ7XFxuK1xcdHVuc2lnbmVkIGludCBzZXExO1xcbiBcXHRpbnQgcmV0LCBpLCBqLCBrO1xcbiAjZWxzZVxcbiBcXHRpbnQgcmV0LCBpLCBqO1xcbiAjZW5kaWZcXG4tXFx0dTMyIGtleSwgbXVsdGkgPSAwO1xcbitcXHR1bnNpZ25lZCBpbnQgc2VxMDtcXG4rXFx0dTMyIGtleSwgbXVsdGk7XFxuIFxcdHU4IHBvcztcXG4gXFxuIFxcdHByX2RlYnVnKFxcXCJ0ZXN0IGJ5IG5ldHNcXFxcblxcXCIpO1xcbiBcXHRyY3VfcmVhZF9sb2NrX2JoKCk7XFxuK3JldHJ5OlxcbitcXHRtdWx0aSA9IDA7XFxuIFxcdG5ldHMwID0gcmN1X2RlcmVmZXJlbmNlX2JoKGgtXFx1MDAzZXJuZXRzWzBdKTtcXG4rXFx0c2VxMCA9IHJlYWRfc2VxY291bnRfYmVnaW4oXFx1MDAyNm5ldHMwLVxcdTAwM2VzZXEpO1xcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcXG4gXFx0bmV0czEgPSByY3VfZGVyZWZlcmVuY2VfYmgoaC1cXHUwMDNlcm5ldHNbMV0pO1xcbitcXHRzZXExID0gcmVhZF9zZXFjb3VudF9iZWdpbihcXHUwMDI2bmV0czEtXFx1MDAzZXNlcSk7XFxuICNlbmRpZlxcbiBcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgbmV0czAtXFx1MDAzZWxlbiBcXHUwMDI2XFx1MDAyNiAhbXVsdGk7IGorKykge1xcbi1cXHRcXHRpZiAoIW5ldHMwLVxcdTAwM2VuZXRzW2pdLmNvdW50KVxcbitcXHRcXHRzdHJ1Y3QgbmV0X3ByZWZpeCBwMCA9IFJFQURfT05DRShuZXRzMC1cXHUwMDNlbmV0c1tqXSk7XFxuK1xcbitcXHRcXHRpZiAoIXAwLmNvdW50KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXFxuIFxcdFxcdG10eXBlX2RhdGFfcmVzZXRfZWxlbShkLCBcXHUwMDI2b3JpZyk7XFxuLVxcdFxcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMC1cXHUwMDNlbmV0c1tqXS5jaWRyLCBmYWxzZSk7XFxuK1xcdFxcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBwMC5jaWRyLCBmYWxzZSk7XFxuIFxcdFxcdGZvciAoayA9IDA7IGsgXFx1MDAzYyBuZXRzMS1cXHUwMDNlbGVuIFxcdTAwMjZcXHUwMDI2ICFtdWx0aTsgaysrKSB7XFxuLVxcdFxcdFxcdGlmICghbmV0czEtXFx1MDAzZW5ldHNba10uY291bnQpXFxuK1xcdFxcdFxcdHN0cnVjdCBuZXRfcHJlZml4IHAxID0gUkVBRF9PTkNFKG5ldHMxLVxcdTAwM2VuZXRzW2tdKTtcXG4rXFxuK1xcdFxcdFxcdGlmICghcDEuY291bnQpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRcXHRtdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czEtXFx1MDAzZW5ldHNba10uY2lkciwgdHJ1ZSk7XFxuK1xcdFxcdFxcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBwMS5jaWRyLCB0cnVlKTtcXG4gI2Vsc2VcXG4tXFx0XFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMwLVxcdTAwM2VuZXRzW2pdLmNpZHIpO1xcbitcXHRcXHRtdHlwZV9kYXRhX25ldG1hc2soZCwgcDAuY2lkcik7XFxuICNlbmRpZlxcbiBcXHRcXHRrZXkgPSBIS0VZKGQsIGgtXFx1MDAzZWluaXR2YWwsIHQtXFx1MDAzZWh0YWJsZV9iaXRzKTtcXG4gXFx0XFx0biA9IHJjdV9kZXJlZmVyZW5jZV9iaChoYnVja2V0KHQsIGtleSkpO1xcbkBAIC0xMzA0LDYgKzEzNzEsMTIgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLFxcbiBcXHR9XFxuIFxcdHJldCA9IDA7XFxuIHVubG9jazpcXG4rXFx0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXFx1MDAyNm5ldHMwLVxcdTAwM2VzZXEsIHNlcTApKVxcbitcXHRcXHRnb3RvIHJldHJ5O1xcbisjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcXG4rXFx0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXFx1MDAyNm5ldHMxLVxcdTAwM2VzZXEsIHNlcTEpKVxcbitcXHRcXHRnb3RvIHJldHJ5O1xcbisjZW5kaWZcXG4gXFx0cmN1X3JlYWRfdW5sb2NrX2JoKCk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtMTcwNyw2ICsxNzgwLDcgQEAgSVBTRVRfVE9LRU4oSFRZUEUsIF9jcmVhdGUpKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGlwX3NldCAqc2V0LFxcbiBcXHRcXHRcXHRcXHRrZnJlZShyY3VfZGVyZWZlcmVuY2VfcmF3KGgtXFx1MDAzZXJuZXRzWy0taV0pKTtcXG4gXFx0XFx0XFx0Z290byBmcmVlX2hyZWdpb247XFxuIFxcdFxcdH1cXG4rXFx0XFx0c2VxY291bnRfc3BpbmxvY2tfaW5pdChcXHUwMDI2bmV0cy1cXHUwMDNlc2VxLCBcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0UkNVX0lOSVRfUE9JTlRFUihoLVxcdTAwM2VybmV0c1tpXSwgbmV0cyk7XFxuIFxcdH1cXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xcbmluZGV4IGI0NGI5NWY3NjZiN2EuLmI2MDJjYzQzNTY1ZGQgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXFxuQEAgLTM4LDcgKzM4LDYgQEAgTU9EVUxFX0FMSUFTKFxcXCJpcF9zZXRfaGFzaDpuZXQsaWZhY2VcXFwiKTtcXG4gI2RlZmluZSBIVFlQRVxcdFxcdGhhc2hfbmV0aWZhY2VcXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX01VTFRJXFxuLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVQwXFxuIFxcbiAjZGVmaW5lIFNUUlNDUFkoYSwgYilcXHRzdHJzY3B5KGEsIGIsIElGTkFNU0laKVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xcbmluZGV4IDYyOTE1MzJiZTdhNWEuLjYxYWYxY2UyNzEyNzkgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xcbkBAIC0zNiw3ICszNiw2IEBAIE1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2hhc2g6bmV0LHBvcnQsbmV0XFxcIik7XFxuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xcbiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbiAjZGVmaW5lIElQU0VUX05FVF9DT1VOVCAyXFxuLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVQwXFxuIFxcbiAvKiBJUHY0IHZhcmlhbnQgKi9cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjI3OjEzLjAwODMxNjQwOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE4MTIxMDU1NTkxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0VUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVElGQUNFXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFBPUlRcIixcbiAgICBcIklQX1NFVF9IQVNIX0lQUE9SVE5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3NldF91YWRkXCIsXG4gICAgXCJpcF9zZXRfdWRlbFwiLFxuICAgIFwiaXBfc2V0X3V0ZXN0XCIsXG4gICAgXCJpcF9zZXRfZmx1c2hcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X2FkZFwiLFxuICAgIFwiaGFzaF9uZXRpZmFjZTRfZGVsXCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF90ZXN0XCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF9hZGRcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfZGVsXCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ0X3Rlc3RcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfZmx1c2hcIixcbiAgICBcImhhc2hfbmV0NF9hZGRcIixcbiAgICBcImhhc2hfbmV0NF9kZWxcIixcbiAgICBcImhhc2hfbmV0NF90ZXN0XCIsXG4gICAgXCJoYXNoX25ldDRfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBDSURSIG5ldHdvcmsgcHJlZml4ZXMgYXJlIHRyYWNrZWQgaW4gaXBzZXQgaGFzaCB0eXBlcy4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0cyBhcnJheSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIFJDVSByZWFsbG9jYXRpb24gb24gZXZlcnkgZGVsZXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwZGU2ZmVhZDZmZDQwNjEwMmQyNDdkZWM0NTRjOGVhZDgwYzE0NmQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwMzoyNzoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmggYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXG5pbmRleCBmMDBjODJhY2Q3ZjA1Li44MGNhNTIzZjMwNGJiIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFxuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGVfd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvamhhc2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zZXFsb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmhcdTAwM2VcbiBcbkBAIC05OCwxNCArOTksMzQgQEAgc3RydWN0IGh0YWJsZSB7XG4gI2RlZmluZSBJUFNFVF9ORVRfQ09VTlRcdFx0MVxuICNlbmRpZlxuIFxuLS8qIEJvb2sta2VlcGluZyBvZiB0aGUgcHJlZml4ZXMgYWRkZWQgdG8gdGhlIHNldCAqL1xuKy8qKlxuKyAqIHN0cnVjdCBuZXRfcHJlZml4IC0gUmVwcmVzZW50YXRpb24gb2YgYSBuZXR3b3JrIHByZWZpeC5cbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC5cbisgKiBAY291bnQ6IE51bWJlciBvZiBvY2N1cnJlbmNlcy5cbisgKi9cbiBzdHJ1Y3QgbmV0X3ByZWZpeCB7XG4tXHR1OCBjaWRyO1x0XHRcdC8qIHRoZSBjaWRyIHZhbHVlICovXG4tXHR1MzIgY291bnQ7XHRcdFx0LyogbnVtYmVyIG9mIGVsZW1lbnRzIG9mIHRoaXMgY2lkciAqL1xuK1x0dTMyIGNpZHI6ODtcbitcdHUzMiBjb3VudDoyNDtcbiB9O1xuIFxuKyNkZWZpbmUgQ0lEUl9NQVhfQ09VTlQgKCgxIFx1MDAzY1x1MDAzYyAyNCkgLSAxKVxuK1xuKy8qKlxuKyAqIHN0cnVjdCBuZXRfcHJlZml4ZXMgLSBBIGNvbGxlY3Rpb24gb2YgbmV0d29yayBwcmVmaXhlcy5cbisgKiBAcmN1OiBSQ1UgaGVhZFxuKyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0c1xuKyAqIEBsZW46IE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBhcnJheS5cbisgKiBAbmV0czogQXJyYXkgb2YgbmV0X3ByZWZpeCBzdHJ1Y3R1cmVzIChzb3J0ZWQgYnkgQ0lEUiBkZXNjZW5kaW5nKS5cbisgKlxuKyAqIEBuZXRzIGVudHJpZXMgYXJlIHVwZGF0ZWQgaW4gcGxhY2UgdW5kZXIgQHNldCdzIGxvY2suIEEgc2luZ2xlIGVudHJ5J3NcbisgKiBjaWRyL2NvdW50IHBhaXIgaXMgYWx3YXlzIHVwZGF0ZWQgYXRvbWljYWxseSB2aWEgUkVBRF9PTkNFKCkvV1JJVEVfT05DRSgpLFxuKyAqIGJ1dCByZW1vdmluZyBhbiBlbnRyeSBhbHNvIHNoaWZ0cyBldmVyeSBmb2xsb3dpbmcgZW50cnkgZG93biBieSBvbmUgc2xvdC5cbisgKiBMb2NrbGVzcyByZWFkZXJzIHRoYXQgc2NhbiB0aGUgd2hvbGUgYXJyYXkgKGkuZS4gbW9yZSB0aGFuIGEgc2luZ2xlXG4rICogaW5kZXhlZCBzbG90KSBtdXN0IHVzZSBAc2VxIHRvIGRldGVjdCBhbmQgcmV0cnkgYWNyb3NzIHN1Y2ggYSBzaGlmdC5cbisgKi9cbiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIHtcbiBcdHN0cnVjdCByY3VfaGVhZCByY3U7XG4rXHRzZXFjb3VudF9zcGlubG9ja190IHNlcTtcbiBcdHU4IGxlbjtcbiBcdHN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTtcbiB9O1xuQEAgLTE0Myw4ICsxNjQsMTEgQEAgaHRhYmxlX3NpemUodTggaGJpdHMpXG4gI2VuZGlmXG4gXG4gI2RlZmluZSBJTklUX0NJRFIobiwgaG9zdF9tYXNrKSAoe1x0XHRcdFx0XFxcbi1cdGNvbnN0IHN0cnVjdCBuZXRfcHJlZml4ZXMgKl9fbiA9IHJjdV9kZXJlZmVyZW5jZShuKTtcdFx0XFxcbi1cdERDSURSX1BVVCgoX19uKS1cdTAwM2VsZW4gPyAoX19uKS1cdTAwM2VuZXRzWzBdLmNpZHIgOiBob3N0X21hc2spO1xcXG4rXHRjb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7XHRcXFxuK1x0c3RydWN0IG5ldF9wcmVmaXggX19wID1cdFx0XHRcdFx0XFxcbitcdFx0X19uLVx1MDAzZWxlbiA/IFJFQURfT05DRShfX24tXHUwMDNlbmV0c1swXSlcdFx0XFxcbitcdFx0XHQgOiAoc3RydWN0IG5ldF9wcmVmaXgpe307XHRcdFxcXG4rXHREQ0lEUl9QVVQoX19wLmNvdW50ID8gX19wLmNpZHIgOiBob3N0X21hc2spO1x0XHRcXFxuIH0pXG4gXG4gI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqL1xuQEAgLTMxOCwyNyArMzQyLDQzIEBAIHN0cnVjdCBtdHlwZV9yZXNpemVfYWQge1xuIH07XG4gXG4gI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xuLS8qIE5ldHdvcmsgY2lkciBzaXplIGJvb2sga2VlcGluZyB3aGVuIHRoZSBoYXNoIHN0b3JlcyBkaWZmZXJlbnRcbi0gKiBzaXplZCBuZXR3b3Jrcy4gY2lkciA9PSByZWFsIGNpZHIgKyAxIHRvIHN1cHBvcnQgLzAuXG4rLyoqXG4rICogbXR5cGVfYWRkX2NpZHIgLSBBZGQgYSBDSURSIGVudHJ5IHRvIGhhc2ggdGFibGUgYm9va2tlZXBpbmdcbisgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXRcbisgKiBAaDogUG9pbnRlciB0byB0aGUgaHR5cGVcbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aFxuKyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gYWRkIEBjaWRyIHRvXG4rICpcbisgKiBQZXJmb3JtcyBhbiB1cGRhdGUgaWYgQGNpZHIgaXMgZm91bmQsIG90aGVyd2lzZSBwZXJmb3JtcyBDT1ctc3R5bGVcbisgKiBhbGxvY2F0aW9uIGFuZCByZXBsYWNlbWVudCB2aWEgUkNVLlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbiAgKi9cbiBzdGF0aWMgaW50XG4gbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG4ge1xuLVx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcbiBcdGludCBpLCBqLCBmb3VuZCwgbGVuID0gMCwgcmV0ID0gMDtcbitcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XG4rXHRzdHJ1Y3QgbmV0X3ByZWZpeCBucDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdC8qIEFkZCBpbiBpbmNyZWFzaW5nIHByZWZpeCBvcmRlciwgc28gbGFyZ2VyIGNpZHIgZmlyc3QgKi9cbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpKyspIHtcbi1cdFx0aWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudClcbitcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbitcdFx0aWYgKG5wLmNvdW50KVxuIFx0XHRcdGxlbisrO1xuIFx0XHRpZiAoZm91bmQgIT0gLTEpIHtcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0fSBlbHNlIGlmIChuZXRzLVx1MDAzZW5ldHNbaV0uY2lkciBcdTAwM2MgY2lkcikge1xuK1x0XHR9IGVsc2UgaWYgKG5wLmNpZHIgXHUwMDNjIGNpZHIpIHtcbiBcdFx0XHRmb3VuZCA9IGk7XG4tXHRcdH0gZWxzZSBpZiAobmV0cy1cdTAwM2VuZXRzW2ldLmNpZHIgPT0gY2lkcikge1xuLVx0XHRcdG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudCsrO1xuK1x0XHR9IGVsc2UgaWYgKG5wLmNpZHIgPT0gY2lkcikge1xuK1x0XHRcdGlmIChucC5jb3VudCBcdTAwM2MgQ0lEUl9NQVhfQ09VTlQpIHtcbitcdFx0XHRcdG5wLmNvdW50Kys7XG4rXHRcdFx0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tpXSwgbnApO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRyZXQgPSAtRU9WRVJGTE9XO1xuK1x0XHRcdH1cbiBcdFx0XHRnb3RvIHVubG9jaztcbiBcdFx0fVxuIFx0fVxuQEAgLTM1MCw2ICszOTAsNyBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcbiBcdH1cbiBcbiBcdHRtcC1cdTAwM2VsZW4gPSBsZW47XG4rXHRzZXFjb3VudF9zcGlubG9ja19pbml0KFx1MDAyNnRtcC1cdTAwM2VzZXEsIFx1MDAyNnNldC1cdTAwM2Vsb2NrKTtcbiBcdGZvciAoaSA9IDAsIGogPSAwOyBpIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaSsrKSB7XG4gXHRcdGlmIChpID09IGZvdW5kKSB7XG4gXHRcdFx0dG1wLVx1MDAzZW5ldHNbal0uY2lkciA9IGNpZHI7XG5AQCAtMzcxLDQyICs0MTIsNjAgQEAgbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbisvKipcbisgKiBtdHlwZV9kZWxfY2lkciAtIFJlbW92ZSBDSURSIGVudHJ5IGFuZCBtYWludGFpbiBhcnJheSBpbnRlZ3JpdHkuXG4rICogQHNldDogUG9pbnRlciB0byB0aGUgaXBfc2V0LlxuKyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS5cbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC5cbisgKiBAbjogVGhlIGluZGV4IG9mIHRoZSBuZXRfcHJlZml4IGFycmF5IHRvIHJlbW92ZSBAY2lkciBmcm9tXG4rICpcbisgKiBJZiBDSURSIGVudHJ5IGNvdW50IGZhbGxzIHRvIDAsIHRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSBcInNoaWZ0LWxlZnRcIlxuKyAqIG9wZXJhdGlvbiBvbiBhbGwgZm9sbG93aW5nIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJyYXkgcmVtYWluc1xuKyAqIGNvbnRpZ3VvdXMgYW5kIG1haW50YWlucyBpdHMgZGVzY2VuZGluZyBvcmRlciBieSBDSURSLiBUaGUgdmFjYXRlZCBzbG90XG4rICogYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkgaXMgemVyb2VkIG91dCAoY2lkcj0wLCBjb3VudD0wKS5cbisgKi9cbiBzdGF0aWMgdm9pZFxuIG10eXBlX2RlbF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxuIHtcbi1cdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XG4tXHR1OCBpLCBqLCBsZW4gPSAwO1xuK1x0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cztcbitcdHN0cnVjdCBuZXRfcHJlZml4IG5wO1xuIFx0aW50IGZvdW5kO1xuK1x0dTggaSwgajtcbitcbitcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IG5ldF9wcmVmaXgpICE9IHNpemVvZih1MzIpKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpKyspIHtcbi1cdFx0aWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudClcbi1cdFx0XHRsZW4rKztcbi1cdFx0aWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpXG4rXHRcdG5wID0gUkVBRF9PTkNFKG5ldHMtXHUwMDNlbmV0c1tpXSk7XG4rXHRcdGlmIChucC5jb3VudCBcdTAwMjZcdTAwMjYgbnAuY2lkciA9PSBjaWRyKSB7XG4rXHRcdFx0bnAuY291bnQtLTtcbiBcdFx0XHRmb3VuZCA9IGk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdH1cbiBcdGlmICh1bmxpa2VseShmb3VuZCA9PSAtMSkpXG4gXHRcdGdvdG8gdW5sb2NrO1xuIFxuLVx0bmV0cy1cdTAwM2VuZXRzW2ZvdW5kXS5jb3VudC0tO1xuLVx0aWYgKG5ldHMtXHUwMDNlbmV0c1tmb3VuZF0uY291bnQpXG4tXHRcdGdvdG8gdW5sb2NrO1xuLVx0bGVuLS07XG4tXHR0bXAgPSBremFsbG9jX2ZsZXgoKnRtcCwgbmV0cywgbGVuLCBHRlBfQVRPTUlDKTtcbi1cdGlmICghdG1wKVxuLVx0XHQvKiBMZWF2ZSBhIGhvbGUgKi9cbitcdGlmIChucC5jb3VudCkge1xuK1x0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tmb3VuZF0sIG5wKTtcbiBcdFx0Z290byB1bmxvY2s7XG4rXHR9XG4gXG4tXHR0bXAtXHUwMDNlbGVuID0gbGVuO1xuK1x0d3JpdGVfc2VxY291bnRfYmVnaW4oXHUwMDI2bmV0cy1cdTAwM2VzZXEpO1xuIFx0Zm9yIChpID0gMCwgaiA9IDA7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpKyspIHtcbi1cdFx0aWYgKCFuZXRzLVx1MDAzZW5ldHNbaV0uY291bnQgfHwgaSA9PSBmb3VuZClcbitcdFx0aWYgKGkgPT0gZm91bmQpXG4gXHRcdFx0Y29udGludWU7XG4tXHRcdHRtcC1cdTAwM2VuZXRzW2pdLmNpZHIgPSBuZXRzLVx1MDAzZW5ldHNbaV0uY2lkcjtcbi1cdFx0dG1wLVx1MDAzZW5ldHNbaisrXS5jb3VudCA9IG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudDtcbitcbitcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbitcdFx0aWYgKGkgIT0gailcbitcdFx0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tqXSwgbnApO1xuK1x0XHRqKys7XG4gXHR9XG4tXHRyY3VfYXNzaWduX3BvaW50ZXIoaC1cdTAwM2VybmV0c1tuXSwgdG1wKTtcbi1cdGtmcmVlX3JjdShuZXRzLCByY3UpO1xuK1xuK1x0d2hpbGUgKGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuKVxuK1x0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tqKytdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xuK1x0d3JpdGVfc2VxY291bnRfZW5kKFx1MDAyNm5ldHMtXHUwMDNlc2VxKTtcbiB1bmxvY2s6XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gfVxuQEAgLTQ1MSw3ICs1MTAsNyBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG4ge1xuIFx0c3RydWN0IGh0eXBlICpoID0gc2V0LVx1MDAzZWRhdGE7XG4gI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xuLVx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcbitcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHM7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgaHRhYmxlICp0O1xuIFx0c3RydWN0IGhidWNrZXQgKm47XG5AQCAtNDc3LDE3ICs1MzYsMTUgQEAgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxuIFx0fVxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIElQU0VUX05FVF9DT1VOVDsgaSsrKSB7XG4tXHRcdG5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtXHUwMDNlcm5ldHNbaV0pO1xuLVx0XHR0bXAgPSBremFsbG9jX29iaigqdG1wLCBHRlBfQVRPTUlDKTtcbi1cdFx0aWYgKCF0bXApIHtcbi1cdFx0XHR1OCBqO1xuK1x0XHR1OCBqO1xuIFxuLVx0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBqKyspXG4tXHRcdFx0XHRuZXRzLVx1MDAzZW5ldHNbal0uY291bnQgPSAwO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihoLVx1MDAzZXJuZXRzW2ldLCB0bXApO1xuLVx0XHRcdGtmcmVlX3JjdShuZXRzLCByY3UpO1xuLVx0XHR9XG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4rXHRcdG5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtXHUwMDNlcm5ldHNbaV0pO1xuK1x0XHR3cml0ZV9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4rXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBqKyspXG4rXHRcdFx0V1JJVEVfT05DRShuZXRzLVx1MDAzZW5ldHNbal0sIChzdHJ1Y3QgbmV0X3ByZWZpeCl7fSk7XG4rXHRcdHdyaXRlX3NlcWNvdW50X2VuZChcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnNldC1cdTAwM2Vsb2NrKTtcbiBcdH1cbiAjZW5kaWZcbiB9XG5AQCAtMTI1MywzMSArMTMxMCw0MSBAQCBtdHlwZV90ZXN0X2NpZHJzKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG10eXBlX2VsZW0gKmQsXG4gI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXG4gXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzMTtcbiBcdHN0cnVjdCBtdHlwZV9lbGVtIG9yaWcgPSAqZDtcbitcdHVuc2lnbmVkIGludCBzZXExO1xuIFx0aW50IHJldCwgaSwgaiwgaztcbiAjZWxzZVxuIFx0aW50IHJldCwgaSwgajtcbiAjZW5kaWZcbi1cdHUzMiBrZXksIG11bHRpID0gMDtcbitcdHVuc2lnbmVkIGludCBzZXEwO1xuK1x0dTMyIGtleSwgbXVsdGk7XG4gXHR1OCBwb3M7XG4gXG4gXHRwcl9kZWJ1ZyhcInRlc3QgYnkgbmV0c1xcblwiKTtcbiBcdHJjdV9yZWFkX2xvY2tfYmgoKTtcbityZXRyeTpcbitcdG11bHRpID0gMDtcbiBcdG5ldHMwID0gcmN1X2RlcmVmZXJlbmNlX2JoKGgtXHUwMDNlcm5ldHNbMF0pO1xuK1x0c2VxMCA9IHJlYWRfc2VxY291bnRfYmVnaW4oXHUwMDI2bmV0czAtXHUwMDNlc2VxKTtcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcbiBcdG5ldHMxID0gcmN1X2RlcmVmZXJlbmNlX2JoKGgtXHUwMDNlcm5ldHNbMV0pO1xuK1x0c2VxMSA9IHJlYWRfc2VxY291bnRfYmVnaW4oXHUwMDI2bmV0czEtXHUwMDNlc2VxKTtcbiAjZW5kaWZcbiBcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5ldHMwLVx1MDAzZWxlbiBcdTAwMjZcdTAwMjYgIW11bHRpOyBqKyspIHtcbi1cdFx0aWYgKCFuZXRzMC1cdTAwM2VuZXRzW2pdLmNvdW50KVxuK1x0XHRzdHJ1Y3QgbmV0X3ByZWZpeCBwMCA9IFJFQURfT05DRShuZXRzMC1cdTAwM2VuZXRzW2pdKTtcbitcbitcdFx0aWYgKCFwMC5jb3VudClcbiBcdFx0XHRjb250aW51ZTtcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcbiBcdFx0bXR5cGVfZGF0YV9yZXNldF9lbGVtKGQsIFx1MDAyNm9yaWcpO1xuLVx0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czAtXHUwMDNlbmV0c1tqXS5jaWRyLCBmYWxzZSk7XG4rXHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBwMC5jaWRyLCBmYWxzZSk7XG4gXHRcdGZvciAoayA9IDA7IGsgXHUwMDNjIG5ldHMxLVx1MDAzZWxlbiBcdTAwMjZcdTAwMjYgIW11bHRpOyBrKyspIHtcbi1cdFx0XHRpZiAoIW5ldHMxLVx1MDAzZW5ldHNba10uY291bnQpXG4rXHRcdFx0c3RydWN0IG5ldF9wcmVmaXggcDEgPSBSRUFEX09OQ0UobmV0czEtXHUwMDNlbmV0c1trXSk7XG4rXG4rXHRcdFx0aWYgKCFwMS5jb3VudClcbiBcdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMS1cdTAwM2VuZXRzW2tdLmNpZHIsIHRydWUpO1xuK1x0XHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBwMS5jaWRyLCB0cnVlKTtcbiAjZWxzZVxuLVx0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czAtXHUwMDNlbmV0c1tqXS5jaWRyKTtcbitcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAwLmNpZHIpO1xuICNlbmRpZlxuIFx0XHRrZXkgPSBIS0VZKGQsIGgtXHUwMDNlaW5pdHZhbCwgdC1cdTAwM2VodGFibGVfYml0cyk7XG4gXHRcdG4gPSByY3VfZGVyZWZlcmVuY2VfYmgoaGJ1Y2tldCh0LCBrZXkpKTtcbkBAIC0xMzA0LDYgKzEzNzEsMTIgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLFxuIFx0fVxuIFx0cmV0ID0gMDtcbiB1bmxvY2s6XG4rXHRpZiAocmVhZF9zZXFjb3VudF9yZXRyeShcdTAwMjZuZXRzMC1cdTAwM2VzZXEsIHNlcTApKVxuK1x0XHRnb3RvIHJldHJ5O1xuKyNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMlxuK1x0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXHUwMDI2bmV0czEtXHUwMDNlc2VxLCBzZXExKSlcbitcdFx0Z290byByZXRyeTtcbisjZW5kaWZcbiBcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTcwNyw2ICsxNzgwLDcgQEAgSVBTRVRfVE9LRU4oSFRZUEUsIF9jcmVhdGUpKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGlwX3NldCAqc2V0LFxuIFx0XHRcdFx0a2ZyZWUocmN1X2RlcmVmZXJlbmNlX3JhdyhoLVx1MDAzZXJuZXRzWy0taV0pKTtcbiBcdFx0XHRnb3RvIGZyZWVfaHJlZ2lvbjtcbiBcdFx0fVxuK1x0XHRzZXFjb3VudF9zcGlubG9ja19pbml0KFx1MDAyNm5ldHMtXHUwMDNlc2VxLCBcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRcdFJDVV9JTklUX1BPSU5URVIoaC1cdTAwM2VybmV0c1tpXSwgbmV0cyk7XG4gXHR9XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXG5pbmRleCBiNDRiOTVmNzY2YjdhLi5iNjAyY2M0MzU2NWRkIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcbkBAIC0zOCw3ICszOCw2IEBAIE1PRFVMRV9BTElBUyhcImlwX3NldF9oYXNoOm5ldCxpZmFjZVwiKTtcbiAjZGVmaW5lIEhUWVBFXHRcdGhhc2hfbmV0aWZhY2VcbiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9NVUxUSVxuLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVQwXG4gXG4gI2RlZmluZSBTVFJTQ1BZKGEsIGIpXHRzdHJzY3B5KGEsIGIsIElGTkFNU0laKVxuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcbmluZGV4IDYyOTE1MzJiZTdhNWEuLjYxYWYxY2UyNzEyNzkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcbkBAIC0zNiw3ICszNiw2IEBAIE1PRFVMRV9BTElBUyhcImlwX3NldF9oYXNoOm5ldCxwb3J0LG5ldFwiKTtcbiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cbiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xuICNkZWZpbmUgSVBTRVRfTkVUX0NPVU5UIDJcbi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMFxuIFxuIC8qIElQdjQgdmFyaWFudCAqL1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6Mjc6MTMuMDA4MzE3ODk4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc1MTE5ODI1NDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXBzZXQgSGFzaCBDSURSIFRyYWNraW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGlwc2V0YC4gSXQncyB0b3VjaGluZyBgaXBfc2V0X2hhc2hfZ2VuLmhgLCBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AsIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gQmFzaWNhbGx5LCB0aGUgY29yZSBvZiBob3cgaXBzZXQgaGFzaCB0eXBlcyBoYW5kbGUgQ0lEUiBwcmVmaXhlcyBpcyBiZWluZyB1cGRhdGVkLiBUaGUgYmlnIGRlYWwgaGVyZSBpcyB0aGUgdXNlIG9mIGBzZXFjb3VudF9zcGlubG9ja190YCB0byBtYW5hZ2UgcmVvcmRlcmluZyBvZiB0aGUgYG5ldHNgIGFycmF5IGluLXBsYWNlLiBUaGlzIGlzIGdyZWF0OyBpdCBtZWFucyB3ZSBjYW4gYXZvaWQgcmVhbGxvY2F0aW5nIGV2ZXJ5dGhpbmcgd2l0aCBSQ1Ugb24gZXZlcnkgZGVsZXRlLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIHdpbi5cblxuVGhpcyBhZmZlY3RzIGBtdHlwZV9hZGRfY2lkcmAsIGBtdHlwZV9kZWxfY2lkcmAsIGBtdHlwZV9mbHVzaGAsIGFuZCBgbXR5cGVfdGVzdF9jaWRyc2AuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm8gcXVlc3Rpb24uIFRoaXMgKm5lZWRzKiB0byBiZSBmdXp6ZWQsIGltbWVkaWF0ZWx5LiBHb3R0YSBmaW5kIGFueSBoaWRkZW4gaXNzdWVzIGhlcmUgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG5cbk5vdywgbGV0J3MgcGlucG9pbnQgdGhlIGNydWNpYWwgZnVuY3Rpb25zLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBtYWNyb3Mgb3IgdGVtcGxhdGVzIHdpdGhpbiBgaXBfc2V0X2hhc2hfZ2VuLmhgLCB3aGljaCBhcmUgdGhlbiBpbnN0YW50aWF0ZWQgYW5kIHVzZWQgYnkgdGhlIEMgZmlsZXMgZm9yIGRpZmZlcmVudCBoYXNoIHR5cGVzLiBgbXR5cGVfYWRkX2NpZHJgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGluIHRoZSBoZWFkZXIsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGdldHMgaW5jbHVkZWQgYW5kIHJlbmFtZWQvdXNlZCBieSB0aGUgQyBmaWxlcy4gSXQncyBub3QgZGlyZWN0bHkgZXhwb3J0ZWQsIGJ1dCBpdCdzIGZ1bmRhbWVudGFsbHkgcGFydCBvZiB0aGVzZSBgaGFzaF8qYCBtb2R1bGVzLlxuXG5BaCwgcmlnaHQuIFNpbmNlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24gaW4gdGhlIGhlYWRlciwgSSBzaG91bGQgY2hlY2sgd2hlcmUgYG10eXBlX2FkZF9jaWRyYCBpcyBhY3R1YWxseSAqdXNlZCouIEl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgYnkgYG10eXBlX2FkZGAsIHdoaWNoIGlzIGFsc28gYSB0ZW1wbGF0ZS4gU28sIGEgZ3JlcCBmb3IgYG10eXBlX2FkZGAgb3IgZXZlbiBgbXR5cGVfYWRkX2NpZHJgIHNob3VsZCBiZSB0aGUgYmVzdCB3YXkgdG8gdW5jb3ZlciB0aGUgY2FsbCBjaGFpbi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnRzIHRvIHJlYWxseSBmb2N1cyBvbiBmb3IgZnV6emluZyBhbmQgdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjAzNCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjM2OjQ4LjEyODE0NjMwOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY1NTA5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdHlwZV9hZGRfY2lkclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIxOS0jdW5kZWYgbXR5cGVfZXh0X2NsZWFudXBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIyMDojdW5kZWYgbXR5cGVfYWRkX2NpZHJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMS0jdW5kZWYgbXR5cGVfZGVsX2NpZHJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY3LSNkZWZpbmUgbXR5cGVfZXh0X2NsZWFudXBcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2V4dF9jbGVhbnVwKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjY4OiNkZWZpbmUgbXR5cGVfYWRkX2NpZHJcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZF9jaWRyKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY5LSNkZWZpbmUgbXR5cGVfZGVsX2NpZHJcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbF9jaWRyKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0zMzU9c3RydWN0IG10eXBlX3Jlc2l6ZV9hZCB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTM0NS0vKipcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjM0NjogKiBtdHlwZV9hZGRfY2lkciAtIEFkZCBhIENJRFIgZW50cnkgdG8gaGFzaCB0YWJsZSBib29ra2VlcGluZ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzQ3LSAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0zNTc9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MzU4Om10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzU5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg4PW10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xMTEzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBJUFNFVF9ORVRfQ09VTlQ7IGkrKylcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjExMTQ6XFx0XFx0bXR5cGVfYWRkX2NpZHIoc2V0LCBoLCBEQ0lEUl9HRVQoZC1cXHUwMDNlY2lkciwgaSksIGkpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTExNS0jZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6MzY6NDguMTcyODA1MDg1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAzNjUzODQxMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBJUCBTZXQgSGFzaCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlc2UgSVAgc2V0IGZ1bmN0aW9ucyBhcmUgZ2VuZXJhdGVkLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUga2V5IGlzIHRoaXMgYElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAgbWFjcm8uIE15IGltbWVkaWF0ZSB0YXNrIGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBgTVRZUEVgIHJlcHJlc2VudHMgaW4gYSBjb3VwbGUgb2Ygc3BlY2lmaWMgZmlsZXM6IGBpcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCBhbmQgYGlwX3NldF9oYXNoX25ldHBvcnRuZXQuY2AuXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGZpcnN0LiBBaGEhIEhlcmUgd2Ugc2VlIHRoZSBkZWZpbml0aW9uOiBgI2RlZmluZSBNVFlQRSBoYXNoX25ldGlmYWNlNGAgYW5kLCBJJ2QgYmV0LCBgaGFzaF9uZXRpZmFjZTZgIGFzIHdlbGwuIFRoYXQgZ2l2ZXMgbWUgYSBjbGVhciBpZGVhIG9mIHdoYXQgdG8gZXhwZWN0IHdoZW4gaW5zcGVjdGluZyB0aGUgY29udGVudHMgb2YgYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIG5leHQuIExldCdzIGdldCB0byB0aGUgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ5NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0Njo1MS44MjY2NDg5MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODEwNzcwNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBNVFlQRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTEyOD1oYXNoX25ldGlmYWNlNF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTMzLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxMzQ6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfbmV0aWZhY2U0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTEzNS0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzYyPWhhc2hfbmV0aWZhY2U2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRpZmFjZTZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zNjktXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM3MDojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRpZmFjZTZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzcxLSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ2OjUyLjIwNzczMzg5MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyOTQ4OTU0NDkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIEludGVyZmFjZSBIYXNoaW5nIEZ1bmN0aW9ucyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IG5ldHdvcmsgaW50ZXJmYWNlIGhhc2hpbmcsIGFuZCB0aGUga2V5IGZ1bmN0aW9ucyBzZWVtIHRvIGJlIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBgaGFzaF9uZXRpZmFjZTRfZGVsYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCB0aGVuIHRoZSBJUHY2IHZlcnNpb25zOiBgaGFzaF9uZXRpZmFjZTZfYWRkYCwgYW5kIHNvIG9uLiBQcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG5hbWluZyBjb252ZW50aW9uLCBJIGFwcHJlY2lhdGUgdGhhdC4gTm93LCB3aGVyZSBhcmUgdGhlc2UgYWN0dWFsbHkgaW1wbGVtZW50ZWQgYW5kIGhvdyBhcmUgdGhleSB1c2VkPyBNeSBndXQgc2F5cyB0aGUgY29yZSBsb2dpYyB3aWxsIGJlIGluIGBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNgLiBUaGF0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGludGVyZmFjZS1iYXNlZCBzZXRzIGFyZSBidWlsdCBhbmQgbWFuYWdlZC4gTGV0J3MgZGl2ZSBpbiB0aGVyZSBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTM0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDc6MDUuMTU2NjkwNDcyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTE4NjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNkZWZpbmUgTVRZUEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9MTMxPWhhc2hfbmV0cG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnRuZXQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzctXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM6MTM4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldHBvcnRuZXQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtMTM5LSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jPTQyNT1oYXNoX25ldHBvcnRuZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0bmV0Nl9lbGVtICpuZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDMzLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jOjQzNDojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRwb3J0bmV0Nlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTQzNS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzowNS4yMDI2MTc1MjdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzA3NDMwMzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyBgSVBfU0VUX0hBU0hfV0lUSF9ORVRTYCBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AgY29uY2VwdCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogd2hlcmUgZWxzZSBpcyB0aGlzIGJlaW5nIHVzZWQ/IElzIHRoaXMgaXNvbGF0ZWQgdG8gdGhlIGN1cnJlbnQgY29udGV4dCwgb3IgaXMgdGhpcyBhIGJ1aWxkaW5nIGJsb2NrIGZvciBzb21ldGhpbmcgbGFyZ2VyPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaXRzIGltcGxlbWVudGF0aW9uIHRvIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIGFueSBjaGFuZ2VzIG9yIG1vZGlmaWNhdGlvbnMuIEFyZSB0aGVyZSBvdGhlciBmaWxlcyBpbiB0aGlzIHByb2plY3QsIG9yIGV2ZW4gaW4gcmVsYXRlZCBwcm9qZWN0cywgdGhhdCByZWx5IG9uIHRoaXMgcGFydGljdWxhciBoYXNoIGltcGxlbWVudGF0aW9uPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGltcGFjdCByYWRpdXMuIEtub3dpbmcgd2hpY2ggb3RoZXIgYXJlYXMgdXNlIHRoaXMgd2lsbCBkZXRlcm1pbmUgaG93IHRob3JvdWdobHkgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMuIFRoaXMgZmVlbHMgbGlrZSB0aGUga2luZCBvZiBmdW5jdGlvbiB0aGF0IGNvdWxkIGJlIGVpdGhlciBpc29sYXRlZCBhbmQgc3BlY2lmaWMsIG9yIGEgbW9yZSBnZW5lcmFsaXplZCwgY29yZSBmdW5jdGlvbi4gVGltZSB0byBmaW5kIG91dCFcblxuXG4iLCJJbnB1dFRva2VucyI6ODY5OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjA5LjUxMDA1MTQxNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2OTk0MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYz0zNj1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOmlwLHBvcnQsbmV0XFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTQ0LSAqL1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6NDU6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNfUEFDS0VEXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy00Ni0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jOjQ3OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy00OC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MzM9TU9EVUxFX0FMSUFTKFxcXCJpcF9zZXRfaGFzaDpuZXRcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMzYtI2RlZmluZSBIVFlQRVxcdFxcdGhhc2hfbmV0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYzozNzojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMzgtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzU9TU9EVUxFX0FMSUFTKFxcXCJpcF9zZXRfaGFzaDpuZXQsaWZhY2VcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zOC0jZGVmaW5lIEhUWVBFXFx0XFx0aGFzaF9uZXRpZmFjZVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzozOTojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00MC0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTVVMVElcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM9MzI9TU9EVUxFX0FMSUFTKFxcXCJpcF9zZXRfaGFzaDpuZXQsbmV0XFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM1LSNkZWZpbmUgSFRZUEVcXHRcXHRoYXNoX25ldG5ldFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MzY6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3LSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRNQVNLXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0zNT1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOm5ldCxwb3J0XFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zOS0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYzo0MDojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTQxLVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtNDUtICovXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6NDY6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNfUEFDS0VEXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtNDctXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYz0zMj1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOm5ldCxwb3J0LG5ldFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtMzYtI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX1BST1RPXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM6Mzc6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0zOC0jZGVmaW5lIElQU0VUX05FVF9DT1VOVCAyXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjA5LjU1Mzc1Nzk4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDc0MDAyNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIElQIFNldCBIYXNoaW5nIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaGFzaF9uZXRgLCBgaGFzaF9uZXRpZmFjZWAsIGBoYXNoX25ldG5ldGAsIGBoYXNoX25ldHBvcnRgLCBgaGFzaF9uZXRwb3J0bmV0YCwgYW5kIGBoYXNoX2lwcG9ydG5ldGAgYWxsIHJlbHkgb24gYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AuIFRoZSBrZXkgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBpcF9zZXRfaGFzaF9nZW4uaGAsIHdoaWNoIGlzIGEgY29tbW9uIGluY2x1ZGUsIHNvIHRoaXMgY291bGQgaGF2ZSB3aWRlc3ByZWFkIGltcGxpY2F0aW9ucyBhY3Jvc3MgYWxsIG9mIHRob3NlIGhhc2ggdHlwZXMuXG5cbkJ1dCB3YWl0LCB0aGlzIGlzbid0IGp1c3QgYSBnZW5lcmljIGhlYWRlciBtb2RpZmljYXRpb24uIFRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gQWhhLCBpdCdzIHJlbW92aW5nIGAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMGAgaW4gdGhvc2Ugc3BlY2lmaWMgZmlsZXMuIFRoYXQncyB0aGUgcmVhbCBjcnV4IG9mIHRoaXMuIE5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBJUF9TRVRfSEFTSF9XSVRIX05FVDBgIGFjdHVhbGx5ICpkaWQqLiBXaGF0IGZ1bmN0aW9uYWxpdHkgaXMgYmVpbmcgYWx0ZXJlZCBvciByZW1vdmVkIGJ5IHRoaXMgcmVmYWN0b3Jpbmc/IEl0J3MgZ29pbmcgdG8gYmUgZXNzZW50aWFsIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGRpZmZlcmVudCBhcyBhIHJlc3VsdCBvZiB0aGUgY2hhbmdlcyB0byB0aGUgZmlsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4ODcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDc6MTQuMjAxMTYxMTc1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzkwODMzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVBfU0VUX0hBU0hfV0lUSF9ORVQwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzoxNC4yNDUwNzgwNzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwMzU2Mjg1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBSZW1vdmFsIG9mIElQIFNldCBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGlzIGNvZGUgd2FzIHJlbW92ZWQgZnJvbSBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgYW5kIGBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNgLiBUaGF0J3MgYSBrZXkgZGV0YWlsLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaHk/IFdoYXQgY2hhbmdlZD9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIHdhcyBhIGRlbGliZXJhdGUgZGVzaWduIGRlY2lzaW9uLCBhIHJlZmFjdG9yaW5nLCBvciBhIGJ1ZyBmaXguXG5cbk15IG5leHQgc3RlcCBpcyB0byBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIHRoZSBleHBlY3RlZCBmbGFncyDigJMgc3BlY2lmaWNhbGx5IGBJUF9TRVRgLCBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBhbmQgcG90ZW50aWFsbHkgb3RoZXJzIOKAkyBhcmUgc3RpbGwgYXZhaWxhYmxlIGFuZCBlbmFibGVkLiBUaGlzIHdpbGwgdGVsbCBtZSBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBzaW1wbHkgZGlzYWJsZWQsIG9yIGlmIHRoZSAqb3B0aW9uKiBpdHNlbGYgaXMgZ29uZS5cblxuVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUsIEknbGwgbmVlZCB0byBkaXZlIGludG8gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJIGNhbiBjb25maXJtIHRoZSBzdGF0dXMgb2YgdGhvc2Ugb3B0aW9ucyBhbmQgdW5kZXJzdGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEknbSBsb29raW5nIGZvciBhbnkgY2x1ZXMgYWJvdXQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIHJlbW92YWwgb3IgbW9kaWZpY2F0aW9uLiBJcyBpdCBub3cgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZT8gUGFydCBvZiBhIGJyb2FkZXIgZmVhdHVyZT8gT3IsIGlzIGl0IHBlcmhhcHMgZGVwcmVjYXRlZCBlbnRpcmVseT8gTGV0J3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMzgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzoxOS40NDg2NDM2NTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDA0MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRfSEFTSF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz00Nj1jb25maWcgSVBfU0VUX0JJVE1BUF9QT1JUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTQtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NjU6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTczLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NDpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFjIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMwOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzgtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDc6MTkuNDk4MDU0NTUxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODMxMDc0MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgSVAgU2V0cyBhbmQgVGhlaXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gd2UncmUgZ29pbmcgdG8gZW5hYmxlIGEgc3VpdGUgb2YgYElQX1NFVGAgZmVhdHVyZXMg4oCTIHNwZWNpZmljYWxseSBgSVBfU0VUYCwgYElQX1NFVF9IQVNIX05FVGAsIGBJUF9TRVRfSEFTSF9ORVRJRkFDRWAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUYCwgYElQX1NFVF9IQVNIX05FVE5FVGAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUYCwgYW5kIGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgLiBCZWZvcmUgd2UgY29tbWl0IHRvIHRoaXMsIHRob3VnaCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcy4gR290dGEgbWFrZSBzdXJlIHdlJ3JlIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBjcml0aWNhbCBpbiB0aGUga2VybmVsIGNvbmZpZy4gTGV0J3Mgc2VlIHdoYXQgYElQX1NFVGAgcmVsaWVzIG9uLiBUaGF0J3MgdGhlIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTk2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDc6MjMuMjgxMTY0OTg1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQzMjUzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NFVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjIzLjMyNDYwNzcyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjk4ODYyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkxvY2F0aW5nIHRoZSBJUF9TRVQgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSB0aGUgYElQX1NFVGAgY29uZmlndXJhdGlvbiBvcHRpb24gbGl2ZXMgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIGl0cyBmdW5jdGlvbiwgaXMgdGhhdCBpdCB3b3VsZCBiZSByZWxhdGVkIHRvIG5ldHdvcmtpbmcgb3IgbmV0ZmlsdGVyLiBJJ20gdGhpbmtpbmcsIFwiV2hlcmUgd291bGQgdGhpcyBzb3J0IG9mIGZlYXR1cmUgYmUgZGVmaW5lZD9cIiBMZXQgbWUgdHJ5IGFuZCBzZWFyY2ggd2l0aGluIHRoZSBrZXJuZWwgc291cmNlLiBBaCBoYSEgSSBiZWxpZXZlIEkgc2VlIGl0IG5vdy4gSSd2ZSBmb3VuZCBpdDogYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgcmlnaHQgd2hlcmUgSSdkIGV4cGVjdCBpdCwgZ2l2ZW4gdGhhdCBJUCBzZXRzIGFyZSBkZWVwbHkgaW50ZXJ0d2luZWQgd2l0aCBuZXRmaWx0ZXIgZnVuY3Rpb25hbGl0eS4gVGhpcyBjb25maXJtcyBteSBpbml0aWFsIGludHVpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NzUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzoyNi42OTQ0OTc5ODRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzQyNDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyOm1lbnVjb25maWcgSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklQIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0PWlmIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTY6Y29uZmlnIElQX1NFVF9NQVhcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTctXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiBJUCBzZXRzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyODpjb25maWcgSVBfU0VUX0JJVE1BUF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM2LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozNzpjb25maWcgSVBfU0VUX0JJVE1BUF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00NS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDY6Y29uZmlnIElQX1NFVF9CSVRNQVBfUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOnBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTQtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NjU6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTczLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NDpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFjIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMwOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzgtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjI2LjczODI1MDk1OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzkxODg5MjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXaGVyZSBkb2VzIGBJUF9TRVRgIGNvbWUgaW50byBwbGF5IGluIHRoZSBOZXRmaWx0ZXIgZnJhbWV3b3JrPyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNvdXJjZSBvZiB0aGlzIG9wdGlvbi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGxvb2sgd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGlzIHNlZW1zIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiBkaWdnaW5nLCBnaXZlbiB0aGUgY29udGV4dC4gSSdtIGFzc3VtaW5nIHRoYXQncyB3aGVyZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgcmVsYXRlZCB0byBJUCBTZXRzIHdpbGwgYmUgZGVmaW5lZCBhbmQsIGlkZWFsbHksIHNvdXJjZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gZGV0ZXJtaW5lIGhvdyBpdCBpcyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBzeXN0ZW0uIExldCdzIHNlZSB3aGF0IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIHJldmVhbHMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzMTMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzozMS41MzAxNDMxNzhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MzE4ODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZSBcXFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXFxcIlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTE2NjA9ZW5kbWVudVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjYyOnNvdXJjZSBcXFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXFxcIlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzozMS41NzU0ODU5MTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE1MjU4OTQxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEknbSB0aGUgb25lIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzLCBhbmQga2VlcGluZyBpbiBtaW5kIEknbSBhbiBleHBlcnQ6XG5cbioqRGVsdmluZyBpbnRvIHRoZSBGb3VuZGF0aW9ucyBvZiBgSVBfU0VUYCoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBgSVBfU0VUYC4gV2Uga25vdyBpdCdzIGEgcG93ZXJmdWwgdG9vbCwgYnV0IGxpa2UgYW55IHN0cm9uZyBzeXN0ZW0sIHVuZGVyc3RhbmRpbmcgaXRzIHVuZGVybHlpbmcgZGVwZW5kZW5jaWVzIGlzIGtleSB0byB1c2luZyBpdCBlZmZlY3RpdmVseSBhbmQgdHJvdWJsZXNob290aW5nIGFueSBpc3N1ZXMuIFRoZSByZWFsIHF1ZXN0aW9uIEknbSBncmFwcGxpbmcgd2l0aCByaWdodCBub3cgaXM6ICp3aGF0KiBwcmVjaXNlbHkgZG9lcyBgSVBfU0VUYCByZWx5IG9uPyBCZXlvbmQgdGhlIG9idmlvdXMga2VybmVsIG1vZHVsZXMgYW5kIHRoZSB1c2VyLXNwYWNlIHV0aWxpdGllcywgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIGV4YW1pbmUgdGhlIGRlZXBlciBwbHVtYmluZy4gQXJlIHRoZXJlIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9ucyB0aGF0IGFyZSBzdXBwb3J0ZWQgb3IgcmVxdWlyZWQ/IFdoYXQgYWJvdXQgbGlicmFyaWVzPyBBcmUgdGhlcmUgYW55IGxvd2VyLWxldmVsIG5ldHdvcmsgc3RhY2sgY29tcG9uZW50cyB0aGF0IGBJUF9TRVRgIGludGVyZmFjZXMgd2l0aCB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQ/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHNwZWNpZmljIG5ldGZpbHRlciBob29rcyBpdCdzIGxldmVyYWdpbmc/IFRoaXMga2luZCBvZiBncmFudWxhciB1bmRlcnN0YW5kaW5nIGlzIGVzc2VudGlhbCBmb3Igb3B0aW1pemF0aW9uLCBkZWJ1Z2dpbmcsIGFuZCwgb2YgY291cnNlLCBhcmNoaXRlY3Rpbmcgc2VjdXJlIGFuZCBwZXJmb3JtYW50IG5ldHdvcmsgc29sdXRpb25zLiBUaGlzIGlzIHdoZXJlIEkgd2FudCB0byBmb2N1cywgSSB3YW50IHRvIG1hcCB0aGUgYElQX1NFVGAgbGFuZHNjYXBlIGZyb20gdGhlIGdyb3VuZCB1cCB0byByZWFsbHkgdW5kZXJzdGFuZCBpdCwgYW5kIG1ha2Ugc3VyZSB0aGF0IGl0IHBsYXlzIG5pY2Ugd2l0aCBhbGwgdGhlIG90aGVyIHRvb2xzIEknbSB1c2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MzAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0NzozNi43MjgwNzc4NjVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDA2ODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0yPW1lbnVjb25maWcgSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklQIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNS1cXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNj1jb25maWcgSVBfU0VUX01BWFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE5LVxcdHJhbmdlIDIgNjU1MzRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MjA6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjEtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTI4PWNvbmZpZyBJUF9TRVRfQklUTUFQX0lQXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJiaXRtYXA6aXAgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjMwOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMxLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0zNz1jb25maWcgSVBfU0VUX0JJVE1BUF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Mzk6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDAtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTQ2PWNvbmZpZyBJUF9TRVRfQklUTUFQX1BPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcImJpdG1hcDpwb3J0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo0ODpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00OS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NTU9Y29uZmlnIElQX1NFVF9IQVNIX0lQXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU2LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo1NzpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01OC1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NjU9Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo2NzpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02OC1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NzQ9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03NS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NjpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03Ny1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9ODM9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVElQXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsaXAgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjg1OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg2LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz05Mz1jb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5NTpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05Ni1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTAzPWNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFjIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMDU6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA2LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMTI9Y29uZmlnIElQX1NFVF9IQVNIX01BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcImhhc2g6bWFjIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMTQ6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMjE9Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIzOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyNC1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTMwPWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMyOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMy1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTM5PWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE0MTpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDItXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1MDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTEtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE1OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTYwOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2MS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTY4PWNvbmZpZyBJUF9TRVRfTElTVF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY5LVxcdHRyaXN0YXRlIFxcXCJsaXN0OnNldCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTcwOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3MS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTc4PWNvbmZpZyBHQ09WX1BST0ZJTEVfSVBTRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTc5LVxcdGJvb2wgXFxcIkVuYWJsZSBHQ09WIHByb2ZpbGluZyBmb3IgaXBzZXRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE4MDpcXHRkZXBlbmRzIG9uIEdDT1ZfS0VSTkVMXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE4MS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjM2Ljc3NTA4ODk3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNjYyMTA4NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBJUCBTZXQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGNvbmZpZ3VyaW5nIGBJUF9TRVRgLiBOYXR1cmFsbHksIGl0IHJlbGllcyBvbiBib3RoIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAsIHRoYXQncyBhIGdpdmVuLiBXZSdsbCBkZWZpbml0ZWx5IHdhbnQgdG8gZW5hYmxlIGBJUF9TRVRgIGl0c2VsZiwgYW5kIHRoZW4sIGZvciBhIHJvYnVzdCBpbXBsZW1lbnRhdGlvbiwgSSdtIHRoaW5raW5nIHdlIHNob3VsZCBhbHNvIGVuYWJsZSBhIGZldyBoYXNoIHR5cGVzOiBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUTkVUYCwgYElQX1NFVF9IQVNIX05FVFBPUlRgLCBhbmQgYElQX1NFVF9IQVNIX0lQUE9SVE5FVGAuIFRob3NlIHNlZW0gbGlrZSB0aGUgbW9zdCBjb21tb24gYW5kIHZlcnNhdGlsZSBvcHRpb25zIHRvIHN0YXJ0IHdpdGguXG5cbkhvbGQgb24gYSBzZWNvbmQsIHRoYXQgYG10eXBlX2FkZF9jaWRyYCBmdW5jdGlvbiBpcyBtYXJrZWQgYXMgc3RhdGljLiBUaGF0IG1lYW5zIGl0J3Mgbm90IGV4cG9ydGVkLCBzbyBpdCdzIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSBpdHMgY29tcGlsYXRpb24gdW5pdC4gSG1tLCB0aGF0IGNvbXBsaWNhdGVzIHRoaW5ncy4gV2UgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyAqYXJlKiBleHBvcnRlZCwgb3IgYXQgbGVhc3Qgd2hpY2ggb25lcyB3ZSAqY2FuKiBsZXZlcmFnZS5cblxuTGV0J3MgdHJhY2UgYmFjayBob3cgYG10eXBlX2FkZF9jaWRyYCBpcyBiZWluZyB1c2VkLiBBaCwgaXQncyBjYWxsZWQgZnJvbSBgbXR5cGVfYWRkYC4gRGFtbWl0LCBgbXR5cGVfYWRkYCBpcyBhbHNvIHN0YXRpYy4gT2theSwgdGhpcyBpc24ndCBnZXR0aW5nIHVzIGFueXdoZXJlLiBMZXQncyBzZWUgaWYgdGhlcmUgaXMgc29tZXRoaW5nIG1vcmUgYXBwcm9hY2hhYmxlIGluIGBpcF9zZXRfaGFzaF9nZW4uaGAgdG8gc2VlIGhvdyBgbXR5cGVfYWRkYCBpcyB1c2VkLiBUaGlzIHNlZW1zIGxpa2UgdGhlIGtleSBwbGFjZSBmb3IgaG93IHRoZSBzZXRzIGFyZSBnZW5lcmF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NjM2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjQyLjA0MTMwMjQzWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMyOTUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdHlwZV9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIxOS0jdW5kZWYgbXR5cGVfZXh0X2NsZWFudXBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIyMDojdW5kZWYgbXR5cGVfYWRkX2NpZHJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMS0jdW5kZWYgbXR5cGVfZGVsX2NpZHJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjMxLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjMyOiN1bmRlZiBtdHlwZV9hZGRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIzMy0jdW5kZWYgbXR5cGVfZGVsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI2Ny0jZGVmaW5lIG10eXBlX2V4dF9jbGVhbnVwXFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9leHRfY2xlYW51cClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI2ODojZGVmaW5lIG10eXBlX2FkZF9jaWRyXFx0XFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9hZGRfY2lkcilcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI2OS0jZGVmaW5lIG10eXBlX2RlbF9jaWRyXFx0XFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9kZWxfY2lkcilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjc5LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjgwOiNkZWZpbmUgbXR5cGVfYWRkXFx0XFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9hZGQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yODEtI2RlZmluZSBtdHlwZV9kZWxcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MzM1PXN0cnVjdCBtdHlwZV9yZXNpemVfYWQge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0zNDUtLyoqXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDozNDY6ICogbXR5cGVfYWRkX2NpZHIgLSBBZGQgYSBDSURSIGVudHJ5IHRvIGhhc2ggdGFibGUgYm9va2tlZXBpbmdcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTM0Ny0gKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MzU3PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjM1ODptdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTM1OS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc0MD1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo3NDE6bXR5cGVfYWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC03NDItXFx0ICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NzUyPW10eXBlX3Jlc2l6ZShzdHJ1Y3QgaXBfc2V0ICpzZXQsIGJvb2wgcmV0cmllZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTA0LVxcdFxcdGlmICh4LVxcdTAwM2VhZCA9PSBJUFNFVF9BREQpIHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjkwNTpcXHRcXHRcXHRtdHlwZV9hZGQoc2V0LCBcXHUwMDI2eC1cXHUwMDNlZCwgXFx1MDAyNngtXFx1MDAzZWV4dCwgXFx1MDAyNngtXFx1MDAzZW1leHQsIHgtXFx1MDAzZWZsYWdzKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNi1cXHRcXHR9IGVsc2Uge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD05ODc9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6OTg4Om10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTg5LVxcdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTExMy1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSVBTRVRfTkVUX0NPVU5UOyBpKyspXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoxMTE0OlxcdFxcdG10eXBlX2FkZF9jaWRyKHNldCwgaCwgRENJRFJfR0VUKGQtXFx1MDAzZWNpZHIsIGkpLCBpKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTExMTUtI2VuZGlmXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE2MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50IG10eXBlX3ZhcmlhbnQgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2MzQtXFx0LmFkdFxcdD0ge1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTYzNTpcXHRcXHRbSVBTRVRfQUREXSA9IG10eXBlX2FkZCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2MzYtXFx0XFx0W0lQU0VUX0RFTF0gPSBtdHlwZV9kZWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjQyLjA4NjYzNjcwNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTM4Njc4NDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG10eXBlX2FkZGAgQXNzaWdubWVudCoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYG10eXBlX2FkZGAgaXMgbGlua2VkIHRvIGBtdHlwZV92YXJpYW50LmFkdFtJUFNFVF9BRERdYC4gUmlnaHQsIGBtdHlwZV92YXJpYW50YCBpcyBkZWZpbmVkIGFzIGEgYHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50YC4gUHJldHR5IHN0YW5kYXJkIHNvIGZhci5cblxuTm93IEkgc2VlIHRoZXNlIGZ1bmN0aW9ucyDigJMgYGhhc2hfbmV0aWZhY2U0X2FkZGAsIGBoYXNoX25ldGlmYWNlNF9kZWxgLCBgaGFzaF9uZXRpZmFjZTRfdGVzdGAsIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgdGhpcyBraW5kIG9mIGhhc2ggaW1wbGVtZW50YXRpb24uIEl0J3MgZ29vZCB0byBzZWUgYWxsIHRoZSBzdGFuZGFyZCBvcGVyYXRpb25zIGFyZSBkZWZpbmVkLCBJIGNhbiBpbmZlciB0aGF0IHRob3NlIGFyZSB0aGUgY29yZSBtZXRob2RzIGZvciB0aGlzIElQIHNldCB0eXBlLlxuXG5IYW5nIG9u4oCmIGFyZSB0aGVzZSBmdW5jdGlvbnMgYWN0dWFsbHkgZXhwb3J0ZWQgZm9yIHVzZSBvdXRzaWRlIG9mIHRoaXMgbW9kdWxlPyBObywgdGhleSdyZSBzdGF0aWMuIFRoYXQncyBhIGdvb2QgZGVzaWduIGNob2ljZSwgdG8ga2VlcCB0aGUgaW50ZXJuYWwgZGV0YWlscyBlbmNhcHN1bGF0ZWQuIFRoYXQgbWVhbnMgdGhlIGVudHJ5IHBvaW50cyBJJ20gZXhwZWN0aW5nIGFyZSBsaWtlbHkgZGVmaW5lZCBlbHNld2hlcmUsIHByb2JhYmx5IHVzaW5nIHRoZSBgbXR5cGVfdmFyaWFudGAgc3RydWN0IHNvbWVob3csIGFuZCB0aGV5J2xsIGNhbGwgdGhlc2Ugc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gYnkgbG9va2luZyBkaXJlY3RseSBhdCB0aGUgYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGZpbGUgaXRzZWxmLiBMZXQgbWUgY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGZvciBgaGFzaF9uZXRpZmFjZTRfYWRkYCBub3cgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucyBhbmQgZW5zdXJlIHRoZSBmdWxsIGNvbnRleHQgaXMgY2xlYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDk4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjQ4LjIyNTM3MDI3N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1MDk4MTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhc2hfbmV0aWZhY2U0X2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjQ4LjI2ODg4NTcxMloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjMwMjIxMjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpc3NlY3RpbmcgdGhlIE1hY3JvLUdlbmVyYXRlZCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSB0ZWxsdGFsZSBzaWducyBvZiBtYWNybyBnZW5lcmF0aW9uLiBTcGVjaWZpY2FsbHksIHRoaXMgYCNkZWZpbmUgbXR5cGVfYWRkIElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAuIE15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHBhcnNpbmcgdGhlIGltcGxpY2F0aW9ucy4gVGhpcyBgaGFzaF9uZXRpZmFjZTRfYWRkYCBmdW5jdGlvbiBJJ20gbG9va2luZyBhdOKApiB0aGF0J3MgdGhlIHJlc3VsdCBvZiBvbmUgb2YgdGhvc2UgbWFjcm9zLCByaWdodD8gSSBjYW4gdGVsbCBiZWNhdXNlIG9mIGhvdyBpdCdzIGRlZmluZWQuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgYmVjYXVzZSBpdCdzICpzdGF0aWMqLCBpdCBtaWdodCBub3QgYmUgaW4gdGhlIHN5bWJvbCB0YWJsZSwgdW5sZXNzIHRoZSBjb21waWxlciBpcyBiZWluZyBsYXp5IGFuZCAqZG9lc24ndCogaW5saW5lIGl0LiBCdXQgdGhlbiBJIHF1aWNrbHkgcmVtZW1iZXLigKYgd2FpdCwgdGhpcyBgbXR5cGVfYWRkYCBpc24ndCAqanVzdCogYSBmdW5jdGlvbi4gSXQncyBhY3R1YWxseSBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgaW5zaWRlIHRoZSBgc3RydWN0IGlwX3NldF90eXBlX3ZhcmlhbnRgLiBUaGF0ICpoYXMqIHRvIG1lYW4gaXQgY2FuJ3QgYmUgKmZ1bGx5KiBpbmxpbmVkLCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIGJlaW5nIHRha2VuLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uXG5cbkhvd2V2ZXIsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgbmV4dCBxdWVzdGlvbiAtIGFyZSAqcGFydHMqIG9mIGl0IGlubGluZWQ/IEZvciBleGFtcGxlLCBgbXR5cGVfYWRkX2NpZHJgIGlzIGNhbGxlZCBmcm9tIGBtdHlwZV9hZGRgLiBJdCAqY291bGQqIGJlIGlubGluZWQuIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIEkgYW5hbHl6ZSB0aGUgYXNzZW1ibHkgbGF0ZXIsIHRvIGNoZWNrIGZvciB0aGF0IHBvc3NpYmlsaXR5LlxuXG5GaW5hbGx5LCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgaG93IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGFyZSBoYW5kbGVkLCBsaWtlIGBtdHlwZV91YWR0YC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBvbmUgb3V0IHRvby5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5NTYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDc6NTMuODk5MTA5ODc1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzEyMjkwNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXR5cGVfdWFkdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjI3LSN1bmRlZiBtdHlwZV9rYWR0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyMjg6I3VuZGVmIG10eXBlX3VhZHRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyOS0jdW5kZWYgbXR5cGVfYnVja2V0X3NpemVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjc1LSNkZWZpbmUgbXR5cGVfa2FkdFxcdFxcdElQU0VUX1RPS0VOKE1UWVBFLCBfa2FkdClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI3NjojZGVmaW5lIG10eXBlX3VhZHRcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX3VhZHQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzctI2RlZmluZSBtdHlwZV9idWNrZXRfc2l6ZVxcdElQU0VUX1RPS0VOKE1UWVBFLCBfYnVja2V0X3NpemUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE2MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50IG10eXBlX3ZhcmlhbnQgPSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNjMyLVxcdC5rYWR0XFx0PSBtdHlwZV9rYWR0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTYzMzpcXHQudWFkdFxcdD0gbXR5cGVfdWFkdCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2MzQtXFx0LmFkdFxcdD0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0Nzo1NC4yNzAzNDU5MDdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMwMTEzOTYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIHdoYXQgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBjb2RlOlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgRW50cnkgUG9pbnRzIGluIGBpcF9zZXRgKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIG1haW4gZnVuY3Rpb25zIGFyZSBmb3IgdGhlIGBpcF9zZXRgIGZ1bmN0aW9uYWxpdHkuIEknbSBnb2luZyB0byBzdGFydCBieSBmb2N1c2luZyBvbiBmdW5jdGlvbnMgdGhhdCBhcmUgKmV4cG9ydGVkKiDigJMgdGhvc2UgYXJlIHRoZSBtb3N0IGxpa2VseSBlbnRyeSBwb2ludHMsIG9yIGF0IGxlYXN0IG5vdCBzdGF0aWMgZnVuY3Rpb25zLiBUaGV5J3JlIGRlc2lnbmVkIHRvIGJlIHVzZWQgZXh0ZXJuYWxseSwgYWZ0ZXIgYWxsLlxuXG5IbW0sIGJ1dCBoYW5nIG9uIGEgc2Vjb25kLi4uIGlzbid0IGBoYXNoX25ldGlmYWNlNF91YWR0YCBkZWNsYXJlZCBhcyBgc3RhdGljYCB0b28/IFRoYXQgbWVhbnMgSSBjYW4ndCBqdXN0IGxpbWl0IG15c2VsZiB0byBub24tc3RhdGljIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHdpZGVuIG15IHNjb3BlIGEgYml0LlxuXG5Pa2F5LCBsZXQncyByZWZvY3VzLiBNeSBiZXN0IGJldCBpcyB0byBjaGVjayB0aGUgYGlwX3NldF9jb3JlLmNgIGZpbGUuIFRoaXMgaXMgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBsb2dpYyByZXNpZGVzLiBJIHNob3VsZCBiZSBhYmxlIHRvIGZpbmQgdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgSSBuZWVkIHRvIGxvb2sgYXQgaW4gdGhlcmUsIHNwZWNpZmljYWxseSwgdGhlIG9uZXMgdXNlZCB0byBhZGQsIGRlbGV0ZSwgYW5kIHRlc3QgSVAgc2V0IGVudHJpZXM6IGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODg2MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ3OjU5LjU3MTQ4NzgzM1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2MTY4NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTYwNz1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2MDg6aXBfc2V0X2FkZF9ieXRlcyh1NjQgYnl0ZXMsIHN0cnVjdCBpcF9zZXRfY291bnRlciAqY291bnRlcilcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNjA5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz02MTM9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6NjE0OmlwX3NldF9hZGRfcGFja2V0cyh1NjQgcGFja2V0cywgc3RydWN0IGlwX3NldF9jb3VudGVyICpjb3VudGVyKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy02MTUte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTYyMD1pcF9zZXRfdXBkYXRlX2NvdW50ZXIoc3RydWN0IGlwX3NldF9jb3VudGVyICpjb3VudGVyLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTYyNC1cXHQgICAgIShmbGFncyBcXHUwMDI2IElQU0VUX0ZMQUdfU0tJUF9DT1VOVEVSX1VQREFURSkpIHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6NjI1OlxcdFxcdGlwX3NldF9hZGRfYnl0ZXMoZXh0LVxcdTAwM2VieXRlcywgY291bnRlcik7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjYyNjpcXHRcXHRpcF9zZXRfYWRkX3BhY2tldHMoZXh0LVxcdTAwM2VwYWNrZXRzLCBjb3VudGVyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNjI3LVxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz03NzY9aW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjc3NzppcF9zZXRfYWRkKGlwX3NldF9pZF90IGluZGV4LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy03NzgtXFx0ICAgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyLCBzdHJ1Y3QgaXBfc2V0X2FkdF9vcHQgKm9wdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy03OTUtfVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo3OTY6RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X2FkZCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTc5Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDc6NTkuNjE2MTExNzg4WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NTE0NjU1NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTXkgTWVudGFsIExhbmRzY2FwZTogaXBfc2V0IENvcmUgRXhwb3J0cyBhbmQgTmV0bGluayBJbnRlcmZhY2UqKlxuXG5SaWdodCwgc28sIEknbSB0aGlua2luZyBhYm91dCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGhlcmUuIGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YCDigJMgdGhvc2UgYXJlIHRoZSAqZXhwb3J0ZWQqIGZ1bmN0aW9ucy4gVGhleSdyZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIGludG8gdGhlIGBpcF9zZXRgIGZ1bmN0aW9uYWxpdHkgdGhhdCB0aGUga2VybmVsIChvciBvdGhlciBtb2R1bGVzKSB3aWxsIGFjdHVhbGx5IHVzZS4gVGhleSBkZWZpbmUgdGhlIHB1YmxpYyBBUEkuXG5cbkFuZCB0aGVuLCBhbG9uZ3NpZGUgdGhvc2UsIEknbSBmb2N1c2luZyBvbiBgY2FsbF9hZGAgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmV0bGluayBpbnRlcmZhY2Ugd2l0aGluIGBpcF9zZXRfY29yZS5jYC4gVGhpcyBpcyBrZXkuIGBjYWxsX2FkYCBpbmRpY2F0ZXMgYSB2ZXJ5IHNwZWNpZmljIHdheSB0aGF0IHVzZXJzcGFjZSBwcm9ncmFtcyB3aWxsICppbnRlcmFjdCogd2l0aCB0aGUgaXBfc2V0IGtlcm5lbCBtb2R1bGVzLiBUaGUgYG5ldGxpbmtgIGludGVyZmFjZSBnaXZlcyBhbiBvcmdhbml6ZWQgYW5kIGZsZXhpYmxlIHdheSBvZiBtYW5hZ2luZyB0aGVzZSBzZXRzIGZyb20gb3V0c2lkZSB0aGUga2VybmVsLCB0aHJvdWdoIHVzZXJzcGFjZSB0b29scy4gVGhpcyBwYXJ0IHdpbGwgYmUgdGhlIHBsYWNlIHRvIGNoZWNrIHRoZSBkaWZmZXJlbnQgdHlwZSBvZiBjb21tYW5kcyB0aGF0IHdlIGNhbiBjcmVhdGUuXG5cbkVzc2VudGlhbGx5LCBJIHNlZSB0aGVzZSB0d28gY29tcG9uZW50cyDigJMgdGhlIGV4cG9ydGVkIGZ1bmN0aW9ucyBmb3IgaW50ZXJuYWwga2VybmVsIGludGVyYWN0aW9ucyBhbmQgdGhlIG5ldGxpbmsgaW50ZXJmYWNlIGZvciBleHRlcm5hbCBjb250cm9sIOKAkyBhcyBjb21wbGVtZW50YXJ5LiBUaGV5IHdvcmsgdG9nZXRoZXIuIEFueSBmdXR1cmUgZGV2ZWxvcG1lbnRzIHNob3VsZCBjb25zaWRlciB0aGVzZSBhcyB0aGUgY29yZSBmb3IgdGhlIG92ZXJhbGwgZnJhbWV3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc4MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjA0LjQ2NzU3OTk1MVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1NjkyODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2FsbF9hZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE3NDU9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxNzQ2OmNhbGxfYWQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqY3RubCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTc0Ny1cXHRzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sIGVudW0gaXBzZXRfYWR0IGFkdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xODE4PXN0YXRpYyBpbnQgaXBfc2V0X2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg1My1cXHRcXHRcXHRyZXR1cm4gLUlQU0VUX0VSUl9QUk9UT0NPTDtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg1NDpcXHRcXHRyZXQgPSBjYWxsX2FkKG5ldCwgY3RubCwgc2tiLCBzZXQsIHRiLCBhZHQsIGZsYWdzLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODU1LVxcdFxcdFxcdCAgICAgIHVzZV9saW5lbm8pO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4NjQtXFx0XFx0XFx0XFx0cmV0dXJuIC1JUFNFVF9FUlJfUFJPVE9DT0w7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE4NjU6XFx0XFx0XFx0cmV0ID0gY2FsbF9hZChuZXQsIGN0bmwsIHNrYiwgc2V0LCB0YiwgYWR0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODY2LVxcdFxcdFxcdFxcdCAgICAgIGZsYWdzLCB1c2VfbGluZW5vKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDg6MDQuNTExMTU0MDQ2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzQ2MjkyMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBhcyBpZiBJIHdlcmUgcHJvY2Vzc2luZyB0aGlzIGluZm9ybWF0aW9uOlxuXG4qKkFuYWx5emluZyBOZXRsaW5rIEVudHJ5IFBvaW50cyBpbiBSZWxhdGlvbiB0byBhIFN0YXRpYyBDYWxsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoaXMgYGNhbGxfYWRgIGZ1bmN0aW9uIHJlbGF0ZXMgdG8gdGhlIE5ldGxpbmsgaW50ZXJmYWNlLiBJdCdzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcgaW4gaXRzZWxmLiBVc3VhbGx5LCB3aXRoIE5ldGxpbmssIHlvdSdyZSBkZWFsaW5nIHdpdGggZHluYW1pYyByZWdpc3RyYXRpb24gYW5kIGhhbmRsZXJzLCBzbyBhIHN0YXRpYyBlbnRyeSBwb2ludCBpbXBsaWVzIHNvbWV0aGluZyBtb3JlLi4uIHRhcmdldGVkLCBwZXJoYXBzIGEgc3BlY2lmaWMgZnVuY3Rpb24sIG1heWJlIGEgaGVscGVyLlxuXG5UaGUgY3JpdGljYWwgTmV0bGluayBlbnRyeSBwb2ludHMgYXJlIHRoZSBgaXBfc2V0X2FkYCwgYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYW5kIGBpcF9zZXRfdXRlc3RgIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHRoZSBleHBlY3RlZCBpbnRlcmFjdGlvbiBwb2ludHMgd2l0aCB0aGUga2VybmVsLXNwYWNlIGZ1bmN0aW9uYWxpdHkgdmlhIHRoZSBOZXRsaW5rIGludGVyZmFjZS4gQmFzZWQgb24gdGhpcywgSSB3b3VsZCBhc3N1bWUgdGhhdCBgY2FsbF9hZGAgaXMgYmVpbmcgY2FsbGVkIHdpdGhpbiBvbmUgb2YgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zLCBvciBjYWxsZWQgYnkgYSByZWxhdGVkIHByb2Nlc3MuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB3aGVyZSBgY2FsbF9hZGAgaXMgdXNlZCB0byBjb25maXJtLiBJIHdvdWxkIGFzc3VtZSB0aGF0IHRoZSBgYWRgIHJlbGF0ZXMgdG8gYWRkcmVzcyBvciBhZGQvZGVsZXRlIGZ1bmN0aW9ucy4gTm93IEkgbmVlZCB0byBjb25zaWRlciB3aGljaCBvZiB0aGUgc3RhbmRhcmQgTmV0bGluayBjYWxscyB1c2UgYGNhbGxfYWRgLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBjb3JlIHNldCBtYW5pcHVsYXRpb24gd29ya3MuIEknbSBnb2luZyB0byBoYXZlIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgdG8gc2VlIGhvdyB0aGVzZSBlbGVtZW50cyBhbGwgdGllIHRvZ2V0aGVyIGFuZCBmaWd1cmUgb3V0IGlmIHRoZXJlIGlzIGFueSB1bnVzdWFsIGJlaGF2aW9yIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTE3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDg6MTIuMjg1Nzg1MzQ2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTM2MzE2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9zZXRfdWFkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE4MTg9c3RhdGljIGludCBpcF9zZXRfYWQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqY3RubCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODczLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxODc0OnN0YXRpYyBpbnQgaXBfc2V0X3VhZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg3NS1cXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE5NS1cXHRbSVBTRVRfQ01EX0FERF1cXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MjE5NjpcXHRcXHQuY2FsbFxcdFxcdD0gaXBfc2V0X3VhZGQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxOTctXFx0XFx0LnR5cGVcXHRcXHQ9IE5GTkxfQ0JfTVVURVgsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjEyLjMzMTE1NTg1MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NjcwNzk1MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBOZXRsaW5rIENhbGxiYWNrcyBhbmQgSW5zdGFudGlhdGVkIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIE5ldGxpbmsgY2FsbGJhY2tzOiBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBgaXBfc2V0X3V0ZXN0YC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuIEJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgKmFjdHVhbGx5KiBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QuIExldCdzIHNlZS4uLiB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBtdHlwZV9hZGRfY2lkcmAsIGBtdHlwZV9kZWxfY2lkcmAsIGBtdHlwZV9mbHVzaGAsIGFuZCBgbXR5cGVfdGVzdF9jaWRyc2AuICBBaCwgdGhvc2UgYXJlIGFsbCBkZWZpbmVkIGluIGBpcF9zZXRfaGFzaF9nZW4uaGAuIFRoYXQgbWFrZXMgc2Vuc2UuIFRoZXNlIGFyZSBnZW5lcmljLCBhbmQgdGhlbiBpbnN0YW50aWF0ZWQgZm9yIGVhY2ggaGFzaCB0eXBlLlxuXG5TbywgaW4gdGhlIGJpbmFyeSwgdGhlIGFjdHVhbCBmdW5jdGlvbnMgd2lsbCBiZSB0aGluZ3MgbGlrZSBgaGFzaF9uZXRpZmFjZTRfYWRkYCwgYGhhc2hfbmV0aWZhY2U0X2RlbGAsIGBoYXNoX25ldGlmYWNlNF90ZXN0YCwgYGhhc2hfbmV0cG9ydG5ldDRfYWRkYCwgYW5kIHNvIG9uLiBHb29kLCBnb29kLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gSSBsZXZlcmFnZSB0aGVzZSBpbnN0YW50aWF0ZWQgbmFtZXMsIGxpa2UgYGhhc2hfbmV0aWZhY2U0X2FkZGAsIHdpdGhpbiB0aGUgYEZvY3VzU3ltYm9sc2AgY29uZmlndXJhdGlvbj8gWWVzLCBvZiBjb3Vyc2UuIFN5emthbGxlciBjYW4gcmVzb2x2ZSB0aGVtLCBhcyBsb25nIGFzIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIHN5bWJvbCB0YWJsZS5cblxuQWxyaWdodCwgbGV0J3Mgc2VlIGlmIHRoZXkncmUgdGhlcmUuIFRoZXkncmUgc3RhdGljLCBidXQgdGhleSdyZSAqYWxzbyogYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHNvIHRoZXkgKnNob3VsZG4ndCogYmUgZnVsbHkgaW5saW5lZC4gRXhjZWxsZW50LiBXYWl0IGEgbWludXRlLi4uIGBtdHlwZV9hZGRfY2lkcmAgaXMgY2FsbGVkIGZyb20gYG10eXBlX2FkZGAsIGFuZCBgbXR5cGVfYWRkYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoZXJlZm9yZSwgYGhhc2hfbmV0aWZhY2U0X2FkZGAgd2lsbCBiZSBpbiB0aGUgc3ltYm9sIHRhYmxlLiBQZXJmZWN0LiBOb3csIEkgbmVlZCB0byBjaGVjayBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgYE1UWVBFYCBpcywgc28gSSBjYW4gc2VlIHdoYXQgSSdtIGxvb2tpbmcgYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTkyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjIyLjAwMTk1MzI3N1oiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5NjA3ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBNVFlQRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTEyOD1oYXNoX25ldGlmYWNlNF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTMzLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxMzQ6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfbmV0aWZhY2U0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTEzNS0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzYyPWhhc2hfbmV0aWZhY2U2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRpZmFjZTZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zNjktXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM3MDojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRpZmFjZTZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzcxLSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjIyLjA0NzkyMTI4MloiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjM0ODY0NDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSGFzaGluZyBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciB0aGUgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gaGFzaGluZyBpbnRlcmZhY2VzIGFuZCBuZXR3b3Jrcy4gSSBzZWUgYSBjbGVhciBwYXR0ZXJuIGhlcmU6IGBoYXNoX25ldGlmYWNlNF9hZGRgLCBgaGFzaF9uZXRpZmFjZTRfZGVsYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCBhbmQgdGhlaXIgSVB2NiBjb3VudGVycGFydHM6IGBoYXNoX25ldGlmYWNlNl9hZGRgLCBgaGFzaF9uZXRpZmFjZTZfZGVsYCwgYGhhc2hfbmV0aWZhY2U2X3Rlc3RgLiBUaGVuLCB3ZSBoYXZlIHRoZSBwb3J0L25ldHdvcmsgY29tYmluYXRpb25zOiBgaGFzaF9uZXRwb3J0bmV0NF9hZGRgLCBgaGFzaF9uZXRwb3J0bmV0NF9kZWxgLCBgaGFzaF9uZXRwb3J0bmV0NF90ZXN0YCwgYW5kIGFnYWluLCB0aGUgSVB2NiB2YXJpYW50czogYGhhc2hfbmV0cG9ydG5ldDZfYWRkYCwgYGhhc2hfbmV0cG9ydG5ldDZfZGVsYCwgYGhhc2hfbmV0cG9ydG5ldDZfdGVzdGAuIEZpbmFsbHksIHRoZXJlIGFyZSB0aGUgbW9yZSBnZW5lcmFsIG5ldHdvcmstbGV2ZWwgZnVuY3Rpb25zOiBgaGFzaF9uZXQ0X2FkZGAsIGBoYXNoX25ldDRfZGVsYCwgYGhhc2hfbmV0NF90ZXN0YCwgYWxvbmdzaWRlIHRoZWlyIElQdjYgZXF1aXZhbGVudHM6IGBoYXNoX25ldDZfYWRkYCwgYGhhc2hfbmV0Nl9kZWxgLCBgaGFzaF9uZXQ2X3Rlc3RgLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBkaWZmZXJlbnQgbGV2ZWxzIG9mIGdyYW51bGFyaXR5IGZvciB0aGUgc2FtZSB1bmRlcmx5aW5nIGhhc2hpbmcgbWVjaGFuaXNtLlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uLiBJdCdzIHRpbWUgdG8gZXhhbWluZSBgaXBfc2V0X2hhc2hfbmV0LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZGlmZmVyZW50IHR5cGVzIG9mIG5ldHdvcmsgZWxlbWVudHMgYXJlIGFjdHVhbGx5IGJlaW5nIGhhc2hlZCBhbmQgbWFuYWdlZCBhdCBhIGxvdyBsZXZlbCB0byBzZWUgaWYgSSBjYW4gdW5kZXJzdGFuZCBob3cgdGhpcyB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyMjMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDg6MzAuMjgyNzg5MTA5WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDI5NTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIE1UWVBFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYz0xMDI9aGFzaF9uZXQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTEwNy1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjEwODojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0xMDktI2RlZmluZSBIT1NUX01BU0tcXHQzMlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYz0yNzM9aGFzaF9uZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXQ2X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTI4MC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjI4MTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXQ2XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0yODItI2RlZmluZSBIT1NUX01BU0tcXHQxMjhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDg6MzAuMzI3MDg4NjA0WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxNjYzMTU0ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgaXBfc2V0X2hhc2hfbmV0bmV0LmNgKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byBgaXBfc2V0X2hhc2hfbmV0bmV0LmNgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludHJpY2FjaWVzIG9mIHRoZSBoYXNoIGltcGxlbWVudGF0aW9uIGZvciBuZXR3b3JrL25ldG1hc2sgc2V0cy4gR2l2ZW4gdGhlIG5hbWUsIEknbSBleHBlY3RpbmcgdGhpcyBpcyB0aGUgY29yZSBmaWxlIGhhbmRsaW5nIHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGFzc29jaWF0ZWQgb3BlcmF0aW9ucyBmb3Igc3RvcmluZyBhbmQgbWFuaXB1bGF0aW5nIElQIGFkZHJlc3MgcmFuZ2VzIGluIGEgaGFzaCB0YWJsZSBmb3JtYXQuIEl0J3MgbGlrZWx5IG9wdGltaXplZCBmb3IgZmFzdCBsb29rdXBzLCB3aGljaCBpcyBjcnVjaWFsIGZvciBmaXJld2FsbCBydWxlcyBhbmQgb3RoZXIgcGVyZm9ybWFuY2Utc2Vuc2l0aXZlIGFwcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgaGFuZGxlIGNvbGxpc2lvbnMsIHRoZSBoYXNoaW5nIGFsZ29yaXRobSBpdHNlbGYgKGxpa2VseSBiYXNlZCBvbiB0aGUgSVAgYWRkcmVzcyBhbmQgbmV0bWFzayksIGFuZCBob3cgdGhleSBtYW5hZ2UgdGhlIHJlc2l6aW5nIG9mIHRoZSBoYXNoIHRhYmxlIGFzIHRoZSBzZXQgZ3Jvd3MuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Uga2V5IGRhdGEgc3RydWN0dXJlcywgY29yZSBmdW5jdGlvbnMgZm9yIGluc2VydGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCBhbnkgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gb3IgdnVsbmVyYWJpbGl0aWVzLiBMZXQncyBzZWUgaWYgdGhpcyBpcyBhbGwgdGhhdCBpdCBoYXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDQ2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDg6MzguNDkzNDA3NzQ3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTE3OTA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIE1UWVBFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0xMjU9aGFzaF9uZXRuZXQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRuZXQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTEzMC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jOjEzMTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRuZXQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0xMzItI2RlZmluZSBIT1NUX01BU0tcXHQzMlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0zNjM9aGFzaF9uZXRuZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRuZXQ2X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3MC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jOjM3MTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRuZXQ2XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0zNzItI2RlZmluZSBIT1NUX01BU0tcXHQxMjhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDg6MzguNTM4NTkyNTAyWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNTI4NDMwODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIGBpcF9zZXRfaGFzaF9uZXRwb3J0LmNgIENvZGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBpcF9zZXRfaGFzaF9uZXRwb3J0LmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBoYXNoIGltcGxlbWVudGF0aW9uIGZvciBuZXR3b3JrL3BvcnQgc2V0cyByZXNpZGVzLCBhbmQgaXQncyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgc2V0IGxvZ2ljIGhhbmRsZXMgdGhpcyBzcGVjaWZpYyB0eXBlIG9mIGRhdGEuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlIGhhc2hpbmcsIGNvbGxpc2lvbiByZXNvbHV0aW9uLCBhbmQgbG9va3VwIG9wZXJhdGlvbnMgYXJlIGltcGxlbWVudGVkIGhlcmUuIEknbSBsb29raW5nIGZvciB0aGUgdXN1YWwgc3VzcGVjdHM6IG1lbW9yeSBtYW5hZ2VtZW50LCBoYXNoIGZ1bmN0aW9uIHNwZWNpZmljcywgYW55IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMsIGFuZCwgb2YgY291cnNlLCBwb3RlbnRpYWwgYm90dGxlbmVja3Mgb3IgYXJlYXMgZm9yIGltcHJvdmVtZW50LiBJJ2xsIGJlIGZvY3VzZWQgb24gaG93IGl0IGhhbmRsZXMgdGhlIGNvbWJpbmF0aW9uIG9mIElQIGFkZHJlc3NlcyBhbmQgcG9ydHMuIEFueSB1bnVzdWFsIGFwcHJvYWNoZXMgb3IgY2xldmVyIHRlY2huaXF1ZXMgYXJlIHdvcnRoIG5vdGluZy4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU4OSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjQ5LjA2NzAyNjIwMloiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNDYxMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBNVFlQRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0xMTc9aGFzaF9uZXRwb3J0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTEyMy1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYzoxMjQ6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfbmV0cG9ydDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0xMjUtI2RlZmluZSBIT1NUX01BU0tcXHQzMlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM9MzM0PWhhc2hfbmV0cG9ydDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnQ2X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zNDItXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6MzQzOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldHBvcnQ2XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMzQ0LSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjQ5LjExMDM3ODI5N1oiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzI0NDY0ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIElQIFNldCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIElQIHNldCBmdW5jdGlvbiB3b3Jrcy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBgaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmNgIGZpbGUuIFRoaXMgaXMgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgZm9yIHRoZSBoYXNoLWJhc2VkIElQIHNldCB0aGF0IGRlYWxzIHdpdGggSVAgYWRkcmVzc2VzLCBwb3J0cywgYW5kIG5ldHdvcmsgaW5mb3JtYXRpb24uIEl0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBkYXRhIHN0cnVjdHVyZXMsIGhhc2hpbmcgYWxnb3JpdGhtcywgYW5kIGxvb2t1cC9pbnNlcnRpb24gcm91dGluZXMuIEknbSBhc3N1bWluZyB0aGlzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gaXMgZmFpcmx5IG9wdGltaXplZCwgZ2l2ZW4gdGhlIHBlcmZvcm1hbmNlIGRlbWFuZHMgb2YgSVAgc2V0IGZ1bmN0aW9uYWxpdHkgd2l0aGluIGEga2VybmVsIGNvbnRleHQuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXRhaWxzIG9mIGhvdyBjb2xsaXNpb25zIGFyZSBoYW5kbGVkIGFuZCB0aGUgb3ZlcmFsbCBlZmZpY2llbmN5IG9mIHRoZSBoYXNoIHRhYmxlLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDEwMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ4OjU2LjQzNDg0NTQxN1oiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzMjUwMjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNkZWZpbmUgTVRZUEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTEyMT1oYXNoX2lwcG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMTI4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6MTI5OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydG5ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTEzMC0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTM3OT1oYXNoX2lwcG9ydG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMzg3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6Mzg4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydG5ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTM4OS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo0ODo1Ni44NDgxMDAzOTRaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0MjA0NDI2MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb3JlIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIHRoaXMgbW9kdWxlJ3MgYnVpbHQgYXJvdW5kIGEgc2V0IG9mIGhhc2ggZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIHdlJ3ZlIGdvdCBhIGNvbXByZWhlbnNpdmUgc3VpdGUgZm9yIElQdjQgYW5kIElQdjYsIGFkZHJlc3Npbmcgc2V2ZXJhbCBkaWZmZXJlbnQgbmV0d29yayBvYmplY3QgdHlwZXMuIFdlIGhhdmUgZnVuY3Rpb25zIHRvICphZGQqLCAqZGVsZXRlKiwgYW5kICp0ZXN0KiBlbnRyaWVzLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIG1hbmFnaW5nIGEgaGFzaCB0YWJsZS4gSSdtIG5vdGluZyB0aGUgY2xlYXIgc3RydWN0dXJlOiBgaGFzaF9uZXQ0XypgLCBgaGFzaF9uZXQ2XypgLCBgaGFzaF9uZXRpZmFjZTRfKmAsIGBoYXNoX25ldGlmYWNlNl8qYCwgYGhhc2hfbmV0bmV0NF8qYCwgYGhhc2hfbmV0bmV0Nl8qYCwgYGhhc2hfbmV0cG9ydDRfKmAsIGBoYXNoX25ldHBvcnQ2XypgLCBgaGFzaF9uZXRwb3J0bmV0NF8qYCwgYGhhc2hfbmV0cG9ydG5ldDZfKmAsIGBoYXNoX2lwcG9ydG5ldDRfKmAsIGFuZCBgaGFzaF9pcHBvcnRuZXQ2XypgLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gaXMgdmVyeSBleHBsaWNpdCBhYm91dCB0aGUgZGF0YSBiZWluZyBzdG9yZWQ6IG5ldCwgbmV0aWZhY2UsIG5ldG5ldCwgbmV0cG9ydCwgaXBwb3J0bmV0IC0gYm90aCB2NCBhbmQgdjYgdmFyaWFudHMuXG5cblRoYXQncyBhIGxvdCBvZiBmdW5jdGlvbnMsIGJ1dCBpdCBsb29rcyBsaWtlIGEgd2VsbC1zdHJ1Y3R1cmVkIGFwcHJvYWNoLiBJIHN1cHBvc2UgaXQgcmVmbGVjdHMgdGhlIG5lZWQgdG8gZWZmaWNpZW50bHkgbWFuYWdlIGRpZmZlcmVudCBuZXR3b3JrIGNvbnRleHRzIHdpdGhpbiBhIGhhc2ggdGFibGUgc3RydWN0dXJlLlxuXG5Ob3csIGEgbW9kaWZpY2F0aW9uIHRvIGBtdHlwZV9mbHVzaGAgaXMgaW50cmlndWluZy4gSXQncyBub3QgaW1tZWRpYXRlbHkgb2J2aW91cyBob3cgdGhhdCB0aWVzIGludG8gdGhlIGhhc2ggdGFibGUsIHNvIGxldCdzIGNoZWNrIG91dCB3aGF0IHRoZSBjaGFuZ2VzIHRvIGBtdHlwZV9mbHVzaGAgYXJlIGFsbCBhYm91dCwgYXMgdGhhdCBjb3VsZCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgbW9kdWxlJ3Mgb3ZlcmFsbCBiZWhhdmlvdXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjI0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ5OjA4LjI2ODU0NTIzOFoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxNzY0MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXR5cGVfZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMy0jdW5kZWYgbXR5cGVfYWhhc2hfbWVtc2l6ZVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjI0OiN1bmRlZiBtdHlwZV9mbHVzaFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjI1LSN1bmRlZiBtdHlwZV9kZXN0cm95XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI3MS0jZGVmaW5lIG10eXBlX2FoYXNoX21lbXNpemVcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FoYXNoX21lbXNpemUpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNzI6I2RlZmluZSBtdHlwZV9mbHVzaFxcdFxcdElQU0VUX1RPS0VOKE1UWVBFLCBfZmx1c2gpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzMtI2RlZmluZSBtdHlwZV9kZXN0cm95XFx0XFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9kZXN0cm95KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD01MDg9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjUwOTptdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC01MTAte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xNjMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZV92YXJpYW50ID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNjM5LVxcdC5kZXN0cm95ID0gbXR5cGVfZGVzdHJveSxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjE2NDA6XFx0LmZsdXNoXFx0PSBtdHlwZV9mbHVzaCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2NDEtXFx0LmhlYWRcXHQ9IG10eXBlX2hlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ5OjA4LjMxNTcyNjU2NFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjY2NzA1NTg4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdXJzZWxmOlxuXG4qKkFuYWx5emluZyBOZXR3b3JrIEZsdXNoaW5nIGFuZCBDSURSIE1vZGlmaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnM6IGBoYXNoX25ldDRfZmx1c2hgLCBgaGFzaF9uZXQ2X2ZsdXNoYCwgYW5kIHBvdGVudGlhbGx5IG90aGVycyBpbiB0aGF0IGZhbWlseS4gVGhlIG5hbWluZyBjb252ZW50aW9uIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZXkncmUgaW52b2x2ZWQgaW4gZmx1c2hpbmcgbmV0d29yay1yZWxhdGVkIGNhY2hlcywgc3BlY2lmaWNhbGx5IGZvciBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcywgcmVzcGVjdGl2ZWx5LiBUaGUgdXNlIG9mIFwiaGFzaFwiIGluIHRoZSBuYW1lIHByb2JhYmx5IHJlZmVycyB0byB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZSDigJMgbW9zdCBsaWtlbHkgYSBoYXNoIHRhYmxlIG9yIHNpbWlsYXIgbWVjaGFuaXNtIHVzZWQgZm9yIGZhc3QgbG9va3Vwcy5cblxuSSBhbHNvIHNlZSB0aGF0IGBtdHlwZV90ZXN0X2NpZHJzYCBpcyBiZWluZyBtb2RpZmllZC4gQWgsIHJpZ2h0LCB0aGF0J3MgY2FsbGVkIGZyb20gYG10eXBlX3Rlc3RgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIENJRFIgKENsYXNzbGVzcyBJbnRlci1Eb21haW4gUm91dGluZykgZW50cmllcyBhcmUgcHJvYmFibHkgdXNlZCB0byBkZWZpbmUgc29tZSBraW5kIG9mIG5ldHdvcmsgXCJ0eXBlXCIgZmlsdGVyaW5nIG9yIHRlc3RpbmcuIFRoZSBtb2RpZmljYXRpb24gbWlnaHQgaW52b2x2ZSB1cGRhdGluZywgYWRkaW5nLCBvciBkZWxldGluZyBDSURSIGJsb2NrcyB1c2VkIGZvciB0aGlzIFwibXR5cGVcIiB0ZXN0aW5nIHByb2Nlc3MuIFRoZSBpbnRlcnBsYXkgYmV0d2VlbiBmbHVzaGluZyBjYWNoZXMgYW5kIG1vZGlmeWluZyBDSURSIGxpc3RzIGlzIGludGVyZXN0aW5nLCBpdCBpbXBsaWVzIHRoYXQgdGhlIENJRFIgZGF0YSBpcyB1c2VkIGZvciBzb21ldGhpbmcgdGhhdCBuZWVkcyB0byBzdGF5IHVwIHRvIGRhdGUuIEkgYW0gYmV0dGluZyB0aGF0IHRoZSBuZXR3b3JrIGZsdXNoIGlzIGluIHNvbWUgd2F5IHRpZWQgdG8gdGhlIGBtdHlwZV90ZXN0YCByb3V0aW5lLCBwZXJoYXBzIGl0IG5lZWRzIHRvIHVwZGF0ZSBzb21lIGNhY2hlZCBuZXR3b3JrIHJvdXRlcyBiYXNlZCBvbiB0aGUgY3VycmVudCBzdGF0ZSBvZiBDSURScy4gSSB3b3VsZCBuZWVkIHRvIGRpdmUgZGVlcGVyIHRvIHNlZSBob3cgYG10eXBlX3Rlc3RgIHVzZXMgQ0lEUnMgYW5kIHdoZXRoZXIgdGhlIGZsdXNoaW5nIG9wZXJhdGlvbnMgYXJlIGRpcmVjdGx5IHRyaWdnZXJlZCBieSBDSURSIGNoYW5nZXMsIG9yIHBlcmhhcHMgYXJlIHBhcnQgb2YgYSBicm9hZGVyIG5ldHdvcmsgbWFuYWdlbWVudCByb3V0aW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTg1MywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjQ5OjIwLjk4Mjc4NDg1M1oiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg1NjM0NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXR5cGVfdGVzdF9jaWRyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjMzLSN1bmRlZiBtdHlwZV9kZWxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIzNDojdW5kZWYgbXR5cGVfdGVzdF9jaWRyc1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjM1LSN1bmRlZiBtdHlwZV90ZXN0XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI4MS0jZGVmaW5lIG10eXBlX2RlbFxcdFxcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVsKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjgyOiNkZWZpbmUgbXR5cGVfdGVzdF9jaWRyc1xcdElQU0VUX1RPS0VOKE1UWVBFLCBfdGVzdF9jaWRycylcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI4My0jZGVmaW5lIG10eXBlX3Rlc3RcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX3Rlc3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTEzMDA9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTMwMTptdHlwZV90ZXN0X2NpZHJzKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG10eXBlX2VsZW0gKmQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xMzAyLVxcdFxcdCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xMzg3PW10eXBlX3Rlc3Qoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTQwOC1cXHRpZiAoaSA9PSBJUFNFVF9ORVRfQ09VTlQpIHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjE0MDk6XFx0XFx0cmV0ID0gbXR5cGVfdGVzdF9jaWRycyhzZXQsIGQsIGV4dCwgbWV4dCwgZmxhZ3MpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTQxMC1cXHRcXHRnb3RvIG91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NDk6MjEuMDMxMzUzNTE4WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4NTY0ODgxMTMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJZGVudGlmeWluZyBLZXkgRnVuY3Rpb25zIGZvciBFeGFtaW5hdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgYSBwYXR0ZXJuOiBgaGFzaF9uZXQ0X3Rlc3RgLCBgaGFzaF9uZXQ2X3Rlc3RgLCBldGMuIFRoYXQncyBhIGNsZWFyIHNpZ25hbCB0byBzdGFydCBtYXBwaW5nIG91dCB0aGUgZnVuY3Rpb25zIHRoYXQgbmVlZCBjbG9zZXIgaW5zcGVjdGlvbi4gTGV0J3MgbWFrZSBhIHByZWNpc2UgbGlzdCBvZiB0aGUgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gaGFzaCB0YWJsZXMsIHNpbmNlIHRob3NlIGFyZSB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci5cblxuSSdsbCBzcGVjaWZpY2FsbHkgZm9jdXMgb24gdGhlIGFkZCwgZGVsLCB0ZXN0LCBhbmQgZmx1c2ggb3BlcmF0aW9ucyBmb3IgZWFjaCB0eXBlLiBJJ2xsIG5lZWQgdG8gZ28gdGhyb3VnaCBlYWNoIHR5cGUgLSBJUHY0IGFuZCBJUHY2LCBuZXR3b3JrLCBpbnRlcmZhY2UsIHBvcnQsIGFuZCBjb21iaW5lZCBuZXQvcG9ydCBjb25maWd1cmF0aW9ucyAtIHNvIHRoYXQncyBhbGwgdGhlIGBoYXNoX25ldCpgLCBgaGFzaF9uZXRpZmFjZSpgLCBgaGFzaF9uZXRuZXQqYCwgYGhhc2hfbmV0cG9ydCpgLCBhbmQgYGhhc2hfaXBwb3J0bmV0KmAgZnVuY3Rpb25zLiBJIGtub3cgdGhlcmUgYXJlIGEgbG90IG9mIHRoZW0sIGJ1dCB0aGlzIGlzIHRoZSBtb3N0IHN5c3RlbWF0aWMgd2F5IHRvIGVuc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcgY3J1Y2lhbCBpbiB0aGUgY29yZSBsb2dpYy5cblxuQmV5b25kIHRoZSBzcGVjaWZpYyBoYXNoIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucywgSSBuZWVkIHRvIGNoZWNrIHRoZSBlbnRyeSBwb2ludHMgaW4gYGlwX3NldF9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGFuZCBgaXBfc2V0X3VmbHVzaGAuIFRoZXNlIGFyZSB0aGUgdXNlci1sZXZlbCBpbnRlcmZhY2VzLCBzbyBJJ2xsIGFsc28gaGF2ZSB0byBzZWUgaWYgdGhlIHVzZXItbGV2ZWwgZmx1c2ggZnVuY3Rpb24sIGBpcF9zZXRfdWZsdXNoYCBleGlzdHMuIFRoYXQncyBhIGNyaXRpY2FsIGZ1bmN0aW9uIGZvciBjb21wbGV0ZW5lc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Nzg0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjUyOjI2LjY4MDE2ODg5OVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQwNTkyNTA1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9zZXRfdWZsdXNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTI6MjcuMDIwNzcxNDk0WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNDQ0NzM1MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGBpcF9zZXRfZmx1c2hgIEZ1bmN0aW9uYWxpdHkqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGluaXRpYWwgdGhvdWdodCwgb2YgY291cnNlLCBjZW50ZXJzIG9uIGEgY29tbWFuZCBvciBwcm9jZWR1cmUgY2FsbGVkIGBpcF9zZXRfZmx1c2hgLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRpb25zIEknbSBmYW1pbGlhciB3aXRoIOKAkyBhcmUgd2UgdGFsa2luZyBhYm91dCB0aGUgc3RhbmRhcmQgYGlwc2V0YCB1dGlsaXR5LCBhIGN1c3RvbSBzY3JpcHQsIG9yIHNvbWV0aGluZyBlbWJlZGRlZCB3aXRoaW4gYSBuZXR3b3JrIGFwcGxpYW5jZT8gVGhlIGNvbnRleHQgaXMga2V5IGhlcmUuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiAqd2hhdCogZXhhY3RseSBpcyBmbHVzaGluZywgYW5kICpob3cqIGl0J3MgZG9pbmcgaXQuIElzIHRoaXMgYSB0YWJsZS13aWRlIG9wZXJhdGlvbiwgb3IgaXMgdGhlcmUgbW9yZSBncmFudWxhciBjb250cm9sIGludm9sdmVkPyBNeSBmaXJzdCB0aG91Z2h0cyBoZXJlIGluY2x1ZGUgY29uc2lkZXJhdGlvbnMgcmVnYXJkaW5nIGF0b21pY2l0eSwgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbmQgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLiBBbmQgSSBtdXN0IGtlZXAgaW4gbWluZCBob3cgdGhlIHNwZWNpZmljIGZsdXNoIG9wZXJhdGlvbiBpbnRlcmFjdCB3aXRoIHRoZSB1bmRlcmx5aW5nIGRhdGEgc3RydWN0dXJlcywgZm9yIGV4YW1wbGUgd2l0aCBhIGhhc2ggc2V0IEkgbmVlZCB0byBjb25zaWRlciB3aGljaCBvcGVyYXRpb25zIGFyZSB2YWxpZCBhZnRlciBgZmx1c2hgLiBNeSBhc3N1bXB0aW9ucyBhYm91dCBiZWhhdmlvciB3aWxsIGRlcGVuZCBvbiB0aGVzZSBkZXRhaWxzLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgaWYgSSBhbSBhbHNvIGFibGUgdG8gY29udHJvbCB0aGUgZmx1c2gsIGFuZCB0byB3aGF0IGxldmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzcwMywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjUyOjMxLjE2NTI0Nzk3NloiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4MjMwNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X2ZsdXNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTMwMj1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzAzOmlwX3NldF9mbHVzaF9zZXQoc3RydWN0IGlwX3NldCAqc2V0KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzA0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzExLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzEyOnN0YXRpYyBpbnQgaXBfc2V0X2ZsdXNoKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTMtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI1LVxcdFxcdFxcdGlmIChzKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzI2OlxcdFxcdFxcdFxcdGlwX3NldF9mbHVzaF9zZXQocyk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMjctXFx0XFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzItXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMzM6XFx0XFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMzNC1cXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjUtXFx0W0lQU0VUX0NNRF9GTFVTSF1cXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MjE2NjpcXHRcXHQuY2FsbFxcdFxcdD0gaXBfc2V0X2ZsdXNoLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTY3LVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX01VVEVYLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MjozMS4yMDkwNzc3MjJaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0MjcxOTg3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSBhcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE5ldGxpbmsgQ2FsbGJhY2sqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gYGlwX3NldF9mbHVzaGAgYW5kIHJlYWxpemluZyB0aGF0IGl0J3MgdGhlIG5ldGxpbmsgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoaXMgcGFydGljdWxhciBzdWJzeXN0ZW0uIFRoYXQncyBnb29kIHRvIGtub3c7IGl0IHByb3ZpZGVzIHRoZSBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHRyaWdnZXJlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBrZXJuZWwuIE5vdywgbGV0J3MgcGl2b3QgdG8gdGhlIGNsZWFudXAgYW5kIHRlc3RpbmcgcHJvY2VkdXJlcyB0byBnZXQgYSBtb3JlIHdlbGwtcm91bmRlZCB2aWV3LiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gYGlwX3NldF91ZGVsYCBhbmQgYGlwX3NldF91dGVzdGAg4oCTIHRoZXNlIHNob3VsZCByZXZlYWwgdGhlIHVubGlua2luZyAoZGVsZXRpb24pIGFuZCB0ZXN0aW5nIG1lY2hhbmlzbXMsIHJlc3BlY3RpdmVseSwgYW5kIGFyZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGF0YSBsaWZlY3ljbGUgd2l0aGluIHRoZSBgaXBfc2V0YCBjb250ZXh0LCBzbyBJIGNhbiBzZWUgd2hhdCByZXNvdXJjZXMgYXJlIGNsZWFuZWQgdXAgYW5kIGhvdyB0aGUgc2V04oCZcyBpbnRlcm5hbCBzdGF0ZSBpcyB2YWxpZGF0ZWQuIEtub3dpbmcgdGhvc2UgdHdvIGlzIGtleSB0byByZWFsbHkgdW5kZXJzdGFuZGluZyBmbHVzaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg0OTQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MjozNC45NTE4MDAyMDdaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzUxNjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3NldF91ZGVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTg3ND1zdGF0aWMgaW50IGlwX3NldF91YWRkKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg4MC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg4MTpzdGF0aWMgaW50IGlwX3NldF91ZGVsKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4ODItXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBhdHRyW10pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIyMDEtXFx0W0lQU0VUX0NNRF9ERUxdXFx0PSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIyMDI6XFx0XFx0LmNhbGxcXHRcXHQ9IGlwX3NldF91ZGVsLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMjAzLVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX01VVEVYLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MjozNC45OTYxNTc5MTJaIiwiU2VxIjo1NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyNTY0Njc5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjI5MDc3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MjozOS41MjE4MDc0NDVaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjAwNTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3NldF91dGVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE4ODE9c3RhdGljIGludCBpcF9zZXRfdWRlbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4ODctXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE4ODg6c3RhdGljIGludCBpcF9zZXRfdXRlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg4OS1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMjA3LVxcdFtJUFNFVF9DTURfVEVTVF1cXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MjIwODpcXHRcXHQuY2FsbFxcdFxcdD0gaXBfc2V0X3V0ZXN0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMjA5LVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX01VVEVYLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MjozOS41NjU0MTI3ODFaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTkyNDQ0NjkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIENoZWNrbGlzdCBmb3IgSVAgU2V0IEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBuYWlsIGRvd24gdGhlc2UgSVAgc2V0IGVudHJ5IHBvaW50cyBhbmQgdGhlaXIgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMuIEknbSBmb2N1c2luZyBvbiB1c2VyLXNwYWNlIGludGVyYWN0aW9uIHByaW1hcmlseSwgd2hpY2ggbWVhbnMgdGhlIGZ1bmN0aW9ucyBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBgaXBfc2V0X3V0ZXN0YCwgYW5kIGBpcF9zZXRfZmx1c2hgIGFyZSBrZXkuIE5hdHVyYWxseSwgdGhlIGNvcnJlc3BvbmRpbmcga2VybmVsLXNpZGUgZW50cnkgcG9pbnRzLCBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYW5kIGBpcF9zZXRfdGVzdGAsIG5lZWQgdG8gYmUgcHJlc2VudCBhbmQgZnVuY3Rpb25hbCBhcyB3ZWxsLlxuXG5Ob3csIGZvciB0aGUgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgYElQX1NFVGAgZmVhdHVyZSBpcyBlbmFibGVkLCBvZiBjb3Vyc2UuIFRoZW4sIEkgbmVlZCB0byBsb29rIGF0IGVhY2ggb2YgdGhlIGhhc2ggdHlwZXMuIFNwZWNpZmljYWxseTogYElQX1NFVF9IQVNIX05FVGAsIGBJUF9TRVRfSEFTSF9ORVRJRkFDRWAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUYCwgYElQX1NFVF9IQVNIX05FVE5FVGAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUYCwgYW5kIGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgLlxuXG5BaCwgYnV0IHdhaXQhIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgYElQX1NFVGAgaXRzZWxmIGRlcGVuZHMgb24gYElORVRgIGFuZCBgTkVURklMVEVSYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEFsdGhvdWdoIFN5emthbGxlciBvZnRlbiBoYW5kbGVzIHRoZXNlLCBpdCdzIGFsd2F5cyBnb29kIHByYWN0aWNlIHRvIGV4cGxpY2l0bHkgbGlzdCB0aGVtIHRvIHByZXZlbnQgZnV0dXJlIGNvbmZ1c2lvbi4gQWN0dWFsbHksIHRob3NlIGFyZSBwcmV0dHkgY29tbW9uLiBJJ2xsIGp1c3Qga2VlcCB0aGUgYElQX1NFVGAgb3B0aW9ucyBpbiBteSBjaGVja2xpc3QuXG5cbk5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRvIGJlIHN1cmUgdGhhdCB0aG9zZSBgSVBfU0VUX0hBU0hfKmAgdHlwZXMgdGhhdCBoYXZlIGBJUF9TRVRfSEFTSF9XSVRIX05FVFNgIGFyZSBwcm9wZXJseSBoYW5kbGVkLiBJIGhhdmUgYSBsaXN0IGhlcmU6IGBpcF9zZXRfaGFzaF9pcHBvcnRuZXQuY2AsIGBpcF9zZXRfaGFzaF9uZXQuY2AsIGBpcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCwgYGlwX3NldF9oYXNoX25ldG5ldC5jYCwgYGlwX3NldF9oYXNoX25ldHBvcnQuY2AsIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC5cblxuT2theSwgc28gdG8gYmUgZXhwbGljaXQsIG15IGNvbmZpZ3VyYXRpb24gY2hlY2tsaXN0IGlzOlxuXG4qICAgYElQX1NFVGBcbiogICBgSVBfU0VUX0hBU0hfSVBQT1JUTkVUYFxuKiAgIGBJUF9TRVRfSEFTSF9ORVRgXG4qICAgYElQX1NFVF9IQVNIX05FVElGQUNFYFxuKiAgIGBJUF9TRVRfSEFTSF9ORVRORVRgXG4qICAgYElQX1NFVF9IQVNIX05FVFBPUlRgXG4qICAgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgXG5cbkp1c3QgdG8gYmUgc2FmZSwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhlIGNvbmZpZyBuYW1lIGZvciBgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVGAgaXMgY29ycmVjdC4gWW91IGNhbiBuZXZlciBiZSB0b28gY2FyZWZ1bCB3aGVuIGRlYWxpbmcgd2l0aCBrZXJuZWwgY29uZmlndXJhdGlvbiFcblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0MzAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTI6NDkuNDg5ODYyNTc4WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzAwNzk2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTExMj1jb25maWcgSVBfU0VUX0hBU0hfTUFDXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMjE6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTI6NDkuNTM2ODc2OTQzWiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjkxNTAyMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRoYXQgY29uZmlybWF0aW9uIGlzIGV4YWN0bHkgd2hhdCBJIGV4cGVjdGVkLiBDb25maWRlbnQgdGhhdCB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGNvcnJlY3QsIHRoZSBuZXh0IHRob3VnaHQgaXMgYSBxdWVzdGlvbiB0aGF0IHJlcXVpcmVzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gVGhlIGtleSBpcyB0byBkZWx2ZSBkZWVwZXIgYW5kIGFzayBhYm91dCBgSVBfU0VUX0hBU0hfTkVUUE9SVGAuIFRoaXMgcHJvYmVzIHdoZXRoZXIgYSBzcGVjaWZpYyBtZWNoYW5pc20gd2lsbCBiZSBpbXBsZW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1OTYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1Mjo1Mi44NjYwMzE0NDNaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDU3MjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzOT1jb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDg6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1Mjo1Mi45MTA0OTUzOThaIiwiU2VxIjo2MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM1MjYzODc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgYElQX1NFVF9IQVNIX05FVE5FVGAgZm9yIGEgc29sdXRpb24qKlxuXG5ZZXMuIEknbSBpbW1lZGlhdGVseSBsZWFuaW5nIHRvd2FyZHMgdGhhdCBkaXJlY3Rpb24sIGJ1dCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBhbmdsZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyBwb3NpdGl2ZSwgYSBzaW1wbGUgYWZmaXJtYXRpb24gdGhhdCBpdCdzIG9uIHRoZSByaWdodCB0cmFjay5cblxuQnV0LCBJIG5lZWQgdG8gdGFrZSBhIGJlYXQgYW5kIGRyaWxsIGRvd24gYSBiaXQgZGVlcGVyLiBXaGF0IGFib3V0IGBJUF9TRVRfSEFTSF9ORVRORVRgPyBJdCdzIHRoZSBtb3N0IHJlbGV2YW50IG1ldGhvZCBmb3IgdGhlIHRhc2sgYXQgaGFuZC4gSSBjYW4gdXNlIGl0IHRvIHN0b3JlIG5ldHdvcmsgcHJlZml4ZXMgYW5kIGl0IGFsbG93cyBtZSB0byBlZmZpY2llbnRseSBsb29rIHVwIGlmIGEgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBJUCBhcmUgaW4gc3BlY2lmaWMgbmV0d29ya3MsIHNvIHRoYXQgSSBjYW4gdXNlIGl0IHRvIGNyZWF0ZSBteSBydWxlcy4gSSB0aGluayBpdHMgc3VpdGFiaWxpdHkgaGluZ2VzIG9uIHRoZSBzcGVjaWZpYyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGRhdGFzZXQgSSdtIGRlYWxpbmcgd2l0aC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG92ZXJsb29rIGFueSBwb3RlbnRpYWwgZHJhd2JhY2tzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk0MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjUyOjU4LjI2MzEzNzIxNFoiLCJTZXEiOjYyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4OTI1MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzMD1jb25maWcgSVBfU0VUX0hBU0hfTkVUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTM4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzk6Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDAtXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTI6NTguMzEwMDQ0NTY5WiIsIlNlcSI6NjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTkxODg3NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBleHByZXNzZWQgYXMgdGhvdWdoIHRoZXNlIHdlcmUgbXkgb3duIHRob3VnaHRzOlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBOZXR3b3JrIEludGVyZmFjZSBIYXNoaW5nIE9wdGlvbioqXG5cblllcywgdGhhdCBmZWVscyBsaWtlIHRoZSByaWdodCBkaXJlY3Rpb24uIFRoZSBwcm9ibGVtIEknbSB0cnlpbmcgdG8gc29sdmUgZGVmaW5pdGVseSBsZWFucyB0b3dhcmRzIHRoaXMgYXBwcm9hY2guIE5vdywgdGhlIG5leHQgbG9naWNhbCBxdWVzdGlvbiB0aGF0IHBvcHMgdXAgaW4gbXkgbWluZCBpcy4uLiB3aGF0IGFib3V0IGBJUF9TRVRfSEFTSF9ORVRJRkFDRWA/IEkgc2hvdWxkIGV4cGxvcmUgd2hldGhlciB0aGF0J3MgdGhlIG1vcmUgYXBwcm9wcmlhdGUgb3B0aW9uLCBjb25zaWRlcmluZyB0aGUgc3BlY2lmaWMgZGV0YWlscyBvZiB0aGlzIHNpdHVhdGlvbi4gSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdXNpbmcgdGhhdCBwYXJ0aWN1bGFyIGhhc2ggdHlwZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyODgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MzowMS43MDkyMzYxNTdaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODM5Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTU4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTktXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MzowMS43NTUwODI3ODJaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwNDAwNzUxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgTmV0d29yayBIYXNoaW5nIGZvciBJUCBTZXRzKipcblxuUmlnaHQsIHRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gQnV0IGhvbGQgb24uLi4gd2hhdCBhYm91dCB0aGUgb3B0aW9uIGZvciBhIGhhc2gtYmFzZWQgc2V0IHNwZWNpZmljYWxseSBmb3IgbmV0d29ya3M/IFNob3VsZG4ndCB3ZSBiZSBnaXZpbmcgc29tZSBzZXJpb3VzIGNvbnNpZGVyYXRpb24gdG8gYElQX1NFVF9IQVNIX05FVGAgZm9yIHRoaXMgdXNlIGNhc2U/IEl0IG9mZmVycyBlZmZpY2llbmN5IGJlbmVmaXRzIHdoZW4gZGVhbGluZyB3aXRoIHJhbmdlcy4gSSBuZWVkIHRvIHdlaWdoIHRoZSBwcm9zIGFuZCBjb25zLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNTY0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTM6MDUuNjU5MDkzMjI5WiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc1OTUwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0VUX0hBU0hfTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMwOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzgtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTM6MDUuNzA0ODU2MDY1WiIsIlNlcSI6NjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzY4MjM4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBleHByZXNzZWQgYXMgdGhvdWdoIHRoZXNlIHdlcmUgbXkgb3duIHRob3VnaHRzLCBkZWxpdmVyZWQgdG8gYW4gZXhwZXJ0OlxuXG4qKkNvbnNpZGVyaW5nIElQIFNldCBIYXNoaW5nIE9wdGlvbnMqKlxuXG5ZZXMuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiwgaXNuJ3QgaXQ/IFdlJ3JlIG9uIHRoZSByaWdodCB0cmFjay4gQnV0LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRvIHVzZSBhIGhhc2gtYmFzZWQgc2V0LiBBbmQsIGlmIHNvLCB3aGljaCBvbmU/IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFib3V0IGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgPyBHaXZlbiB0aGUgbGlrZWx5IHVzZSBjYXNlLCB0aGUgbmV0d29yayBhZGRyZXNzIGFuZCBwb3J0IHR1cGxlIGlzIHZlcnkgcG9zc2libHkgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBnbywgZm9yIHRoZSBsZXZlbCBvZiBzcGVjaWZpY2l0eSB3ZSBuZWVkLiBXZSBjYW4ndCBpbW1lZGlhdGVseSBsZWFwIHRvIGEgY29uY2x1c2lvbiwgYnV0IHRoaXMgZGVmaW5pdGVseSBiZWFycyBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDk2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDM6NTM6MDkuMDQxNjgzNjQ3WiIsIlNlcSI6NjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDE4Mzk0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9ODM9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVElQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjkzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAscG9ydCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjUzOjA5LjA4NTg3MzQ3M1oiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjIwMjY3MzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIEZvY3VzKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgcGF0Y2ggZG9lcyBpbmRlZWQgaW50cm9kdWNlIHNvbWUgbW9kaWZpY2F0aW9ucywgc3BlY2lmaWNhbGx5IHRvIGZ1bmN0aW9ucyBsaWtlIGBtdHlwZV9hZGRfY2lkcmAsIGBtdHlwZV9kZWxfY2lkcmAsIGBtdHlwZV9mbHVzaGAsIGFuZCBgbXR5cGVfdGVzdF9jaWRyc2AuIFRoZXNlIGFyZSBpbnN0YW50aWF0ZWQgYWNyb3NzIHZhcmlvdXMgbmV0d29yayBhbmQgcG9ydCB0eXBlcyBhcyBhIG11bHRpdHVkZSBvZiBmdW5jdGlvbnMuIEkgc2VlIGEgbG90IG9mIGZ1bmN0aW9ucyBoZXJlLiBgaGFzaF9uZXQ0X2FkZGAsIGBoYXNoX25ldDRfZGVsYCwgYGhhc2hfbmV0NF90ZXN0YCwgYGhhc2hfbmV0NF9mbHVzaGAgYW5kIHNvIG9uLiBUaGVyZSBhcmUgYSB0b3RhbCBvZiA0OCBmdW5jdGlvbnMgaGVyZSwgd2hpY2ggaXMgcXVpdGUgYSBmZXcgdG8ga2VlcCB0cmFjayBvZi5cblxuTm93LCB0aGVzZSBhcmUgc3RhdGljIGZ1bmN0aW9ucywgYnV0IHRoZWlyIGFkZHJlc3NlcyBhcmUgYmVpbmcgdGFrZW4gYW5kIHBsYWNlZCBpbnRvIHN0cnVjdHVyZXMgbGlrZSBgbXR5cGVfdmFyaWFudC5hZHRbSVBTRVRfQUREXWAsIG1lYW5pbmcgdGhlIGNvbXBpbGVyIGNhbid0IGNvbXBsZXRlbHkgaW5saW5lIHRoZW0uIFRoaXMgaXMgZ29vZCBiZWNhdXNlIFN5emthbGxlciBjYW4gaWRlbnRpZnkgdGhlbSBhcyBmb2N1cyBzeW1ib2xzLiBIb3dldmVyLCBJIG5lZWQgdG8gYmUgc3RyYXRlZ2ljLiBMaXN0aW5nIGFsbCA0OCBmdW5jdGlvbnMgaXMgcHJvYmFibHkgb3ZlcmtpbGwgZm9yIGd1aWRpbmcgdGhlIGZ1enplci5cblxuSSdtIHRoaW5raW5nLCBwZXJoYXBzIGl0J3MgbW9yZSBlZmZlY3RpdmUgdG8gZm9jdXMgb24gdGhlIGtleSBuZXRsaW5rIGVudHJ5IHBvaW50cywgbGlrZSBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBgaXBfc2V0X3V0ZXN0YCwgYGlwX3NldF9mbHVzaGAsIGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YC4gQW5kIHRoZW4gbWF5YmUgYSBmZXcgb2YgdGhlIG1vcmUgc3BlY2lmaWMgaW5zdGFudGlhdGVkIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBtb2RpZmllZCBmaWxlcyB3b3VsZCBiZSB0aGUgc21hcnRlc3QgbW92ZS4gSSdtIGxlYW5pbmcgdG93YXJkIGluY2x1ZGluZyB0aGUgaGFzaCBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgY2hhbmdlZCBmaWxlczogYGhhc2hfbmV0NF9hZGRgLCBgaGFzaF9uZXQ0X2RlbGAsIGBoYXNoX25ldDRfdGVzdGAsIGBoYXNoX25ldDRfZmx1c2hgLCBgaGFzaF9uZXRpZmFjZTRfYWRkYCwgYGhhc2hfbmV0aWZhY2U0X2RlbGAsIGBoYXNoX25ldGlmYWNlNF90ZXN0YCwgYGhhc2hfbmV0aWZhY2U0X2ZsdXNoYCwgYW5kIGBoYXNoX25ldHBvcnRuZXQ0X2FkZGAsIGBoYXNoX25ldHBvcnRuZXQ0X2RlbGAsIGBoYXNoX25ldHBvcnRuZXQ0X3Rlc3RgLCBgaGFzaF9uZXRwb3J0bmV0NF9mbHVzaGAuIFRoaXMgbWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBwYXRjaCdzIHNwZWNpZmljIG1vZGlmaWNhdGlvbnMgdG8gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gRm9jdXNpbmcgb24gdGhvc2UgZnVuY3Rpb25zIHNob3VsZCBiZSB0aGUgbW9zdCBwcm9kdWN0aXZlLlxuXG5KdXN0IG5lZWQgdG8gY29uZmlybSB0aGF0IGBoYXNoX25ldGlmYWNlNF9hZGRgIGlzIHRoZSBjb3JyZWN0IG5hbWUuLi4gbG9va2luZyBhdCBgaXBfc2V0X2hhc2hfZ2VuLmhgLCB1c2luZyB0aGUgbWFjcm8gZGVmaW5pdGlvbnMgYG10eXBlX2FkZCBJUFNFVF9UT0tFTihNVFlQRSwgX2FkZClgIGFuZCBgSVBTRVRfVE9LRU4oYSwgYikgYSMjYmAsIEkgY2FuIHNlZSB0aGF0J3MgYWJzb2x1dGVseSBjb3JyZWN0LCBpdCdzIGp1c3QgYSBjb25jYXRlbmF0aW9uIGJhc2VkIG9uIHRob3NlIG1hY3Jvcywgc28gYGhhc2hfbmV0aWZhY2U0X2FkZGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IG5hbWUuIEFsbCBnb29kLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgaXBfc2V0X2hhc2hfZ2VuLmhgIGZpbGUgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQwMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MzoyMS4yODg1NDk3NzNaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODY5MDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10eXBlX2FkZFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NDA9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NzQxOm10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtNzQyLVxcdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc1Mj1tdHlwZV9yZXNpemUoc3RydWN0IGlwX3NldCAqc2V0LCBib29sIHJldHJpZWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNC1cXHRcXHRpZiAoeC1cXHUwMDNlYWQgPT0gSVBTRVRfQUREKSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo5MDU6XFx0XFx0XFx0bXR5cGVfYWRkKHNldCwgXFx1MDAyNngtXFx1MDAzZWQsIFxcdTAwMjZ4LVxcdTAwM2VleHQsIFxcdTAwMjZ4LVxcdTAwM2VtZXh0LCB4LVxcdTAwM2VmbGFncyk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC05MDYtXFx0XFx0fSBlbHNlIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg3PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjk4ODptdHlwZV9hZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTk4OS1cXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjUzOjIxLjMzNDQyNjgwOFoiLCJTZXEiOjcxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTY4OTEwMDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgYG10eXBlYCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1bmN0aW9uIG5hbWUuLi4geWVzLCBkZWZpbml0ZWx5IGBtdHlwZV9hZGRgLiBUaGF0J3MgdGhlIG9uZSB3ZSdyZSBmb2N1c2VkIG9uIHJpZ2h0IG5vdy4gTm93LCB0byBtYWtlIHN1cmUgSSdtIGNvbnNpZGVyaW5nIGFsbCB0aGUgcmVsYXRlZCBhc3BlY3RzLCBsZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbXR5cGVfZGVsYCBhcyB3ZWxsLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3QgYW5kIHdoZXRoZXIgdGhlIGxvZ2ljIGJldHdlZW4gdGhlbSBpcyBjb25zaXN0ZW50LiBBIHF1aWNrIGNvbXBhcmlzb24gd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgZGVzaWduIGFuZCBzcG90IGFueSBwb3RlbnRpYWwgaW5jb25zaXN0ZW5jaWVzIG9yIGFyZWFzIGZvciBvcHRpbWl6YXRpb24uIEp1c3QgbWFraW5nIHN1cmUgSSdtIHNlZWluZyB0aGUgd2hvbGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ0MjMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MzoyNi41MDMzMzg5NzRaIiwiU2VxIjo3MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzU1ODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10eXBlX2RlbFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NDM9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NzQ0Om10eXBlX2RlbChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtNzQ1LVxcdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc1Mj1tdHlwZV9yZXNpemUoc3RydWN0IGlwX3NldCAqc2V0LCBib29sIHJldHJpZWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNi1cXHRcXHR9IGVsc2Uge1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6OTA3OlxcdFxcdFxcdG10eXBlX2RlbChzZXQsIFxcdTAwMjZ4LVxcdTAwM2VkLCBOVUxMLCBOVUxMLCAwKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwOC1cXHRcXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTExNzg9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTE3OTptdHlwZV9kZWwoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTExODAtXFx0ICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MzoyNi41NDc2OTk1OVoiLCJTZXEiOjczLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ0MDQxMjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFNpdHVhdGlvbioqXG5cblllcy4gSSBhY2tub3dsZWRnZSB0aGUgcHJvbXB0LlxuXG5Ob3csIGxldCdzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgbXR5cGVfdGVzdGAuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgcmVzaWRlcywgYW5kIGl0J3MgaW1wZXJhdGl2ZSB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyB0ZXN0LiBJJ2xsIG5lZWQgdG8gZGlzc2VjdCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGltcGFjdHMgdGhlIG90aGVyIGFyZWFzLCBlc3BlY2lhbGx5IHRoZSBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ5OTksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1MzozMC4yOTE3NDU0OTFaIiwiU2VxIjo3NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NzUzNDA1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdHlwZV90ZXN0XFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTEzODY9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTM4NzptdHlwZV90ZXN0KHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xMzg4LVxcdCAgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjUzOjMwLjY2OTI4OTExMloiLCJTZXEiOjc1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzE3NTk4OTc3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgYW5kIE5leHQgU3RlcCoqXG5cblllcy4gKlRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGNvbmZpcm1pbmcgYSBjZXJ0YWluIGZvdW5kYXRpb25hbCBhc3N1bXB0aW9uIG9yIHJlY29nbml6aW5nIGFuIGFmZmlybWF0aXZlIGFuc3dlciouIE5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3MuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBgbXR5cGVfZmx1c2hgLiAqR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBtZW1vcnkgbWFuYWdlbWVudCwgSSdtIGFzc3VtaW5nIHRoaXMgcmVmZXJzIHRvIGEgZmx1c2ggZnVuY3Rpb24gcmVsYXRlZCB0byBtZW1vcnkgdHlwZXMgb3IgZGF0YSBzdHJ1Y3R1cmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYW5kIGltcGFjdC4qIEkgd2lsbCBhbmFseXplIHRoaXMgY29tbWFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUyNjgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMzo1NjoyMi40MjkxODk4ODdaIiwiU2VxIjo3NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTAzMzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10eXBlX2ZsdXNoXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTUwOD1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NTA5Om10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTUxMC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjU2OjIyLjQ3MzY5Nzg4M1oiLCJTZXEiOjc3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjU1ODk2ODA5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBpcHNldCBQYXRjaCoqXG5cblJpZ2h0LCBJJ3ZlIGdvdCBpdC4gU28sIHdlJ3JlIGxvb2tpbmcgYXQgY2hhbmdlcyB0byB0aGUgY29yZSBvZiBob3cgQ0lEUiBwcmVmaXhlcyBhcmUgbWFuYWdlZCB3aXRoaW4gaXBzZXQncyBoYXNoIHR5cGVzLiBJIHNlZSB0aGUgbWFpbiBmdW5jdGlvbnMgaGVyZTpcblxuYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGBpcF9zZXRfZmx1c2hgIGFuZCB0aGVuIHRoZSBuZXQtc3BlY2lmaWMgb3BlcmF0aW9uczogYGhhc2hfbmV0aWZhY2U0X2FkZGAsIGBoYXNoX25ldGlmYWNlNF9kZWxgLCBgaGFzaF9uZXRpZmFjZTRfdGVzdGAsIGBoYXNoX25ldGlmYWNlNF9mbHVzaGAsIGBoYXNoX25ldHBvcnRuZXQ0X2FkZGAsIGBoYXNoX25ldHBvcnRuZXQ0X2RlbGAsIGBoYXNoX25ldHBvcnRuZXQ0X3Rlc3RgLCBgaGFzaF9uZXRwb3J0bmV0NF9mbHVzaGAsIGBoYXNoX25ldDRfYWRkYCwgYGhhc2hfbmV0NF9kZWxgLCBgaGFzaF9uZXQ0X3Rlc3RgLCBgaGFzaF9uZXQ0X2ZsdXNoYC5cblxuVGhlIGltcG9ydGFudCBjb25maWd1cmF0aW9ucyBhcmUgdGhvc2UgaGFzaCB0eXBlczogYElQX1NFVGAsIGBJUF9TRVRfSEFTSF9ORVRgLCBgSVBfU0VUX0hBU0hfTkVUSUZBQ0VgLCBgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVGAsIGBJUF9TRVRfSEFTSF9ORVRORVRgLCBgSVBfU0VUX0hBU0hfTkVUUE9SVGAsIGFuZCBgSVBfU0VUX0hBU0hfSVBQT1JUTkVUYC5cblxuVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoaXM6IHRoZSBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIHRoZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuIEluc3RlYWQgb2YgcmVseWluZyBvbiBSQ1UgcmVhbGxvY2F0aW9ucyB3aGVuIGRlbGV0aW5nIENJRFIgZW50cmllcywgaXQncyBpbnRyb2R1Y2luZyBhIGBzZXFjb3VudF9zcGlubG9ja190YCB0byBwcm90ZWN0IGluLXBsYWNlIHJlb3JkZXJpbmcgb2YgdGhlIGBuZXRzYCBhcnJheS4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBpcHNldCBsb2dpYy4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhpcyBhcyBhIGNhbmRpZGF0ZSBmb3IgdGhvcm91Z2ggZnV6emluZy4gV2UgbmVlZCB0byBleHBvc2UgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3Igb3RoZXIgdnVsbmVyYWJpbGl0aWVzLiBMZXQncyBjYWxsIHRoaXMgdGhlIGBzZXQtcmVzdWx0c2AgdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU1MjUsIk91dHB1dFRva2VucyI6MzMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAzOjU3OjI1LjAzMjY2ODMyNFoiLCJTZXEiOjc4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjA0NDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUSUZBQ0VcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFBPUlRORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVE5FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUUE9SVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfSVBQT1JUTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfc2V0X3VhZGRcIixcbiAgICBcImlwX3NldF91ZGVsXCIsXG4gICAgXCJpcF9zZXRfdXRlc3RcIixcbiAgICBcImlwX3NldF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXRpZmFjZTRfYWRkXCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF9kZWxcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X3Rlc3RcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X2ZsdXNoXCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ0X2FkZFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF9kZWxcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfdGVzdFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXQ0X2FkZFwiLFxuICAgIFwiaGFzaF9uZXQ0X2RlbFwiLFxuICAgIFwiaGFzaF9uZXQ0X3Rlc3RcIixcbiAgICBcImhhc2hfbmV0NF9mbHVzaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGNvcmUgbG9naWMgb2YgaG93IENJRFIgbmV0d29yayBwcmVmaXhlcyBhcmUgdHJhY2tlZCBpbiBpcHNldCBoYXNoIHR5cGVzLiBJdCBpbnRyb2R1Y2VzIGEgc2VxY291bnRfc3BpbmxvY2tfdCB0byBndWFyZCBpbi1wbGFjZSByZW9yZGVyaW5nIG9mIHRoZSBuZXRzIGFycmF5LCByZW1vdmluZyB0aGUgbmVlZCBmb3IgUkNVIHJlYWxsb2NhdGlvbiBvbiBldmVyeSBkZWxldGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgaXBzZXQgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0VUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVElGQUNFXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFBPUlRcIixcbiAgICBcIklQX1NFVF9IQVNIX0lQUE9SVE5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3NldF91YWRkXCIsXG4gICAgXCJpcF9zZXRfdWRlbFwiLFxuICAgIFwiaXBfc2V0X3V0ZXN0XCIsXG4gICAgXCJpcF9zZXRfZmx1c2hcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X2FkZFwiLFxuICAgIFwiaGFzaF9uZXRpZmFjZTRfZGVsXCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF90ZXN0XCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF9hZGRcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfZGVsXCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ0X3Rlc3RcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfZmx1c2hcIixcbiAgICBcImhhc2hfbmV0NF9hZGRcIixcbiAgICBcImhhc2hfbmV0NF9kZWxcIixcbiAgICBcImhhc2hfbmV0NF90ZXN0XCIsXG4gICAgXCJoYXNoX25ldDRfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBDSURSIG5ldHdvcmsgcHJlZml4ZXMgYXJlIHRyYWNrZWQgaW4gaXBzZXQgaGFzaCB0eXBlcy4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0cyBhcnJheSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIFJDVSByZWFsbG9jYXRpb24gb24gZXZlcnkgZGVsZXRlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowf5xb8[1] Phase: Succeeded StartedAt: 2026-08-07 03:57:36 +0000 UTC FinishedAt: 2026-08-07 03:57:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 03:57:36 +0000 UTC FinishedAt: 2026-08-07 03:57:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2] Phase: Succeeded StartedAt: 2026-08-07 03:57:36 +0000 UTC FinishedAt: 2026-08-07 07:40:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 03:57:36 +0000 UTC FinishedAt: 2026-08-07 07:40:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 03:57:36 +0000 UTC FinishedAt: 2026-08-07 03:57:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 03:57:36 +0000 UTC FinishedAt: 2026-08-07 03:57:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf5xb8/series-workflowf5xb8-convert-artifact-4188221339/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 03:57:46 +0000 UTC FinishedAt: 2026-08-07 04:13:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 03:57:46 +0000 UTC FinishedAt: 2026-08-07 04:13: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:*f2da48e7-4914-4d1f-90b8-54617266282d,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-workflowf5xb8/series-workflowf5xb8-convert-artifact-4188221339/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": "5562cac7-a84a-470b-95c5-4eed7f5b0ad3", "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-workflowf5xb8/series-workflowf5xb8-build-action-181976025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 03:57:46 +0000 UTC FinishedAt: 2026-08-07 04:13: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:*f2da48e7-4914-4d1f-90b8-54617266282d,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-workflowf5xb8/series-workflowf5xb8-convert-artifact-4188221339/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": "5562cac7-a84a-470b-95c5-4eed7f5b0ad3", "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-workflowf5xb8/series-workflowf5xb8-build-action-181976025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 04:13:46 +0000 UTC FinishedAt: 2026-08-07 04:13:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 04:13:46 +0000 UTC FinishedAt: 2026-08-07 04:13:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 04:13:46 +0000 UTC FinishedAt: 2026-08-07 04:13:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 04:13:46 +0000 UTC FinishedAt: 2026-08-07 04:13:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf5xb8/series-workflowf5xb8-convert-artifact-2734252274/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 04:13:58 +0000 UTC FinishedAt: 2026-08-07 04:15:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 04:13:58 +0000 UTC FinishedAt: 2026-08-07 04:15:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5562cac7-a84a-470b-95c5-4eed7f5b0ad3,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-workflowf5xb8/series-workflowf5xb8-build-action-181976025/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-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 04:15:58 +0000 UTC FinishedAt: 2026-08-07 04:15:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 04:15:58 +0000 UTC FinishedAt: 2026-08-07 04:15:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 04:15:58 +0000 UTC FinishedAt: 2026-08-07 04:37:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 04:15:58 +0000 UTC FinishedAt: 2026-08-07 04:37:00 +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:*f2da48e7-4914-4d1f-90b8-54617266282d,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-workflowf5xb8/series-workflowf5xb8-convert-artifact-2734252274/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": "0eb61e8d-b404-4b8d-b1af-ad49d540871e", "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-workflowf5xb8/series-workflowf5xb8-build-action-3399966854/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 04:15:58 +0000 UTC FinishedAt: 2026-08-07 04:36:50 +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:*f2da48e7-4914-4d1f-90b8-54617266282d,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-workflowf5xb8/series-workflowf5xb8-convert-artifact-2734252274/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": "0eb61e8d-b404-4b8d-b1af-ad49d540871e", "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-workflowf5xb8/series-workflowf5xb8-build-action-3399966854/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 04:37:00 +0000 UTC FinishedAt: 2026-08-07 04:37:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 04:37:00 +0000 UTC FinishedAt: 2026-08-07 04:37:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 04:37:00 +0000 UTC FinishedAt: 2026-08-07 04:38:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 04:37:00 +0000 UTC FinishedAt: 2026-08-07 04:38:41 +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:*0eb61e8d-b404-4b8d-b1af-ad49d540871e,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-workflowf5xb8/series-workflowf5xb8-build-action-3399966854/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-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 04:38:51 +0000 UTC FinishedAt: 2026-08-07 07:40:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 04:38:51 +0000 UTC FinishedAt: 2026-08-07 07:40:26 +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":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"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:*5562cac7-a84a-470b-95c5-4eed7f5b0ad3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0eb61e8d-b404-4b8d-b1af-ad49d540871e,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-workflowf5xb8/series-workflowf5xb8-build-action-181976025/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-workflowf5xb8/series-workflowf5xb8-build-action-3399966854/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 04:38:51 +0000 UTC FinishedAt: 2026-08-07 04:39:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 04:38:51 +0000 UTC FinishedAt: 2026-08-07 04:38:56 +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":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"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-workflowf5xb8/series-workflowf5xb8-convert-artifact-3508010823/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 04:38:51 +0000 UTC FinishedAt: 2026-08-07 04:38:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 04:38:51 +0000 UTC FinishedAt: 2026-08-07 04:38:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 04:38:51 +0000 UTC FinishedAt: 2026-08-07 04:38:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 04:39:02 +0000 UTC FinishedAt: 2026-08-07 07:40:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5xb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_uadd","ip_set_udel","ip_set_utest","ip_set_flush","hash_netiface4_add","hash_netiface4_del","hash_netiface4_test","hash_netiface4_flush","hash_netportnet4_add","hash_netportnet4_del","hash_netportnet4_test","hash_netportnet4_flush","hash_net4_add","hash_net4_del","hash_net4_test","hash_net4_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_HASH_NET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"0570b22f-ac94-41ed-bd49-cab380e53be1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 04:39:02 +0000 UTC FinishedAt: 2026-08-07 07:40:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5562cac7-a84a-470b-95c5-4eed7f5b0ad3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0eb61e8d-b404-4b8d-b1af-ad49d540871e,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-workflowf5xb8/series-workflowf5xb8-build-action-181976025/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-workflowf5xb8/series-workflowf5xb8-build-action-3399966854/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-workflowf5xb8/series-workflowf5xb8-convert-artifact-3508010823/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,}