Name: series-workflow65scf Phase: Succeeded StartedAt: 2026-08-06 21:01:05 +0000 UTC FinishedAt: 2026-08-07 01:16:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[0] Phase: Succeeded StartedAt: 2026-08-06 21:01:05 +0000 UTC FinishedAt: 2026-08-06 21:36:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 21:01:05 +0000 UTC FinishedAt: 2026-08-06 21:36:44 +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": [ "INET", "NETFILTER", "IP_SET", "IP_SET_HASH_NETIFACE", "IP_SET_HASH_NETPORTNET", "IP_SET_HASH_NET", "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": [ "INET", "NETFILTER", "IP_SET", "IP_SET_HASH_NETIFACE", "IP_SET_HASH_NETPORTNET", "IP_SET_HASH_NET", "IP_SET_HASH_NETNET", "IP_SET_HASH_NETPORT", "IP_SET_HASH_IPPORTNET" ], "series_id": "8eba1ea9-172f-4324-a5b7-72f72d4ccef1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_set_uadd", "ip_set_udel", "ip_set_utest", "ip_set_flush", "hash_net4_uadt", "hash_net6_uadt", "hash_netiface4_uadt", "hash_netiface6_uadt", "hash_netportnet4_uadt", "hash_netportnet6_uadt", "hash_netnet4_uadt", "hash_netnet6_uadt", "hash_netport4_uadt", "hash_netport6_uadt", "hash_ipportnet4_uadt", "hash_ipportnet6_uadt" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDssCiAgICAmIzM0O0lQX1NFVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRJRkFDRSYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRQT1JUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUUE9SVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9JUFBPUlRORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9zZXRfdWFkZCYjMzQ7LAogICAgJiMzNDtpcF9zZXRfdWRlbCYjMzQ7LAogICAgJiMzNDtpcF9zZXRfdXRlc3QmIzM0OywKICAgICYjMzQ7aXBfc2V0X2ZsdXNoJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTZfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldHBvcnRuZXQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0bmV0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0bmV0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydDRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldHBvcnQ2X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9pcHBvcnRuZXQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9pcHBvcnRuZXQ2X3VhZHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgQ0lEUiB0cmFja2luZyBsb2dpYyBpbiBpcHNldCBoYXNoIHR5cGVzIHRoYXQgc3VwcG9ydCBuZXR3b3JrcyAoZS5nLiwgaGFzaDpuZXQsIGhhc2g6bmV0LGlmYWNlKS4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0X3ByZWZpeGVzIGFycmF5LCByZXBsYWNpbmcgdGhlIHByZXZpb3VzIFJDVS1iYXNlZCByZWFsbG9jYXRpb24gYXBwcm9hY2ggZm9yIGRlbGV0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBpcHNldCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IG5ldHdvcmsgcHJlZml4ZXMgYXJlIGFkZGVkLCBkZWxldGVkLCB0ZXN0ZWQsIGFuZCBmbHVzaGVkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBlbnRyeSBwb2ludHMgZm9yIGFkZGluZywgZGVsZXRpbmcsIHRlc3RpbmcsIGFuZCBmbHVzaGluZyBlbGVtZW50cyBpbiB0aGVzZSBzcGVjaWZpYyBoYXNoIHR5cGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjkzNzNmN2NlMTZjNzU0MjI5ZGM5ZWRiM2YzZGFkNzEwZThkOTMwMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMjE6MzM6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaCBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcbmluZGV4IGYwMGM4MmFjZDdmMDUuLmIxZjQ1OThjMTQ2NzYgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXG5AQCAtOCw2ICYjNDM7OCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGVfd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvamhhc2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2VxbG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mbmV0bGluay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oXHUwMDNlXG4gXG5AQCAtOTgsMTQgJiM0Mzs5OSwzNCBAQCBzdHJ1Y3QgaHRhYmxlIHtcbiAjZGVmaW5lIElQU0VUX05FVF9DT1VOVFx0XHQxXG4gI2VuZGlmXG4gXG4tLyogQm9vay1rZWVwaW5nIG9mIHRoZSBwcmVmaXhlcyBhZGRlZCB0byB0aGUgc2V0ICovXG4mIzQzOy8qKlxuJiM0MzsgKiBzdHJ1Y3QgbmV0X3ByZWZpeCAtIFJlcHJlc2VudGF0aW9uIG9mIGEgbmV0d29yayBwcmVmaXguXG4mIzQzOyAqIEBjaWRyOiBUaGUgQ0lEUiBwcmVmaXggbGVuZ3RoLlxuJiM0MzsgKiBAY291bnQ6IE51bWJlciBvZiBvY2N1cnJlbmNlcy5cbiYjNDM7ICovXG4gc3RydWN0IG5ldF9wcmVmaXgge1xuLVx0dTggY2lkcjtcdFx0XHQvKiB0aGUgY2lkciB2YWx1ZSAqL1xuLVx0dTMyIGNvdW50O1x0XHRcdC8qIG51bWJlciBvZiBlbGVtZW50cyBvZiB0aGlzIGNpZHIgKi9cbiYjNDM7XHR1MzIgY2lkcjo4O1xuJiM0MztcdHUzMiBjb3VudDoyNDtcbiB9O1xuIFxuJiM0MzsjZGVmaW5lIENJRFJfTUFYX0NPVU5UICgoMSBcdTAwM2NcdTAwM2MgMjQpIC0gMSlcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIC0gQSBjb2xsZWN0aW9uIG9mIG5ldHdvcmsgcHJlZml4ZXMuXG4mIzQzOyAqIEByY3U6IFJDVSBoZWFkXG4mIzQzOyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0c1xuJiM0MzsgKiBAbGVuOiBOdW1iZXIgb2YgZW50cmllcyBpbiB0aGUgYXJyYXkuXG4mIzQzOyAqIEBuZXRzOiBBcnJheSBvZiBuZXRfcHJlZml4IHN0cnVjdHVyZXMgKHNvcnRlZCBieSBDSURSIGRlc2NlbmRpbmcpLlxuJiM0MzsgKlxuJiM0MzsgKiBAbmV0cyBlbnRyaWVzIGFyZSB1cGRhdGVkIGluIHBsYWNlIHVuZGVyIEBzZXQmIzM5O3MgbG9jay4gQSBzaW5nbGUgZW50cnkmIzM5O3NcbiYjNDM7ICogY2lkci9jb3VudCBwYWlyIGlzIGFsd2F5cyB1cGRhdGVkIGF0b21pY2FsbHkgdmlhIFJFQURfT05DRSgpL1dSSVRFX09OQ0UoKSxcbiYjNDM7ICogYnV0IHJlbW92aW5nIGFuIGVudHJ5IGFsc28gc2hpZnRzIGV2ZXJ5IGZvbGxvd2luZyBlbnRyeSBkb3duIGJ5IG9uZSBzbG90LlxuJiM0MzsgKiBMb2NrbGVzcyByZWFkZXJzIHRoYXQgc2NhbiB0aGUgd2hvbGUgYXJyYXkgKGkuZS4gbW9yZSB0aGFuIGEgc2luZ2xlXG4mIzQzOyAqIGluZGV4ZWQgc2xvdCkgbXVzdCB1c2UgQHNlcSB0byBkZXRlY3QgYW5kIHJldHJ5IGFjcm9zcyBzdWNoIGEgc2hpZnQuXG4mIzQzOyAqL1xuIHN0cnVjdCBuZXRfcHJlZml4ZXMge1xuIFx0c3RydWN0IHJjdV9oZWFkIHJjdTtcbiYjNDM7XHRzZXFjb3VudF9zcGlubG9ja190IHNlcTtcbiBcdHU4IGxlbjtcbiBcdHN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTtcbiB9O1xuQEAgLTE0Myw4ICYjNDM7MTY0LDExIEBAIGh0YWJsZV9zaXplKHU4IGhiaXRzKVxuICNlbmRpZlxuIFxuICNkZWZpbmUgSU5JVF9DSURSKG4sIGhvc3RfbWFzaykgKHtcdFx0XHRcdFxcXG4tXHRjb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7XHRcdFxcXG4tXHREQ0lEUl9QVVQoKF9fbiktXHUwMDNlbGVuID8gKF9fbiktXHUwMDNlbmV0c1swXS5jaWRyIDogaG9zdF9tYXNrKTtcXFxuJiM0MztcdGNvbnN0IHN0cnVjdCBuZXRfcHJlZml4ZXMgKl9fbiA9IHJjdV9kZXJlZmVyZW5jZShuKTtcdFxcXG4mIzQzO1x0c3RydWN0IG5ldF9wcmVmaXggX19wID1cdFx0XHRcdFx0XFxcbiYjNDM7XHRcdF9fbi1cdTAwM2VsZW4gPyBSRUFEX09OQ0UoX19uLVx1MDAzZW5ldHNbMF0pXHRcdFxcXG4mIzQzO1x0XHRcdCA6IChzdHJ1Y3QgbmV0X3ByZWZpeCl7fTtcdFx0XFxcbiYjNDM7XHREQ0lEUl9QVVQoX19wLmNvdW50ID8gX19wLmNpZHIgOiBob3N0X21hc2spO1x0XHRcXFxuIH0pXG4gXG4gI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqL1xuQEAgLTMxOCwyNyAmIzQzOzM0Miw0MyBAQCBzdHJ1Y3QgbXR5cGVfcmVzaXplX2FkIHtcbiB9O1xuIFxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbi0vKiBOZXR3b3JrIGNpZHIgc2l6ZSBib29rIGtlZXBpbmcgd2hlbiB0aGUgaGFzaCBzdG9yZXMgZGlmZmVyZW50XG4tICogc2l6ZWQgbmV0d29ya3MuIGNpZHIgPT0gcmVhbCBjaWRyICYjNDM7IDEgdG8gc3VwcG9ydCAvMC5cbiYjNDM7LyoqXG4mIzQzOyAqIG10eXBlX2FkZF9jaWRyIC0gQWRkIGEgQ0lEUiBlbnRyeSB0byBoYXNoIHRhYmxlIGJvb2trZWVwaW5nXG4mIzQzOyAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldFxuJiM0MzsgKiBAaDogUG9pbnRlciB0byB0aGUgaHR5cGVcbiYjNDM7ICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGhcbiYjNDM7ICogQG46IFRoZSBpbmRleCBvZiB0aGUgbmV0X3ByZWZpeCBhcnJheSB0byBhZGQgQGNpZHIgdG9cbiYjNDM7ICpcbiYjNDM7ICogUGVyZm9ybXMgYW4gdXBkYXRlIGlmIEBjaWRyIGlzIGZvdW5kLCBvdGhlcndpc2UgcGVyZm9ybXMgQ09XLXN0eWxlXG4mIzQzOyAqIGFsbG9jYXRpb24gYW5kIHJlcGxhY2VtZW50IHZpYSBSQ1UuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXG4gICovXG4gc3RhdGljIGludFxuIG10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxuIHtcbi1cdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XG4gXHRpbnQgaSwgaiwgZm91bmQsIGxlbiA9IDAsIHJldCA9IDA7XG4mIzQzO1x0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcbiYjNDM7XHRzdHJ1Y3QgbmV0X3ByZWZpeCBucDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdC8qIEFkZCBpbiBpbmNyZWFzaW5nIHByZWZpeCBvcmRlciwgc28gbGFyZ2VyIGNpZHIgZmlyc3QgKi9cbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAobmV0cy1cdTAwM2VuZXRzW2ldLmNvdW50KVxuJiM0MztcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbiYjNDM7XHRcdGlmIChucC5jb3VudClcbiBcdFx0XHRsZW4mIzQzOyYjNDM7O1xuIFx0XHRpZiAoZm91bmQgIT0gLTEpIHtcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0fSBlbHNlIGlmIChuZXRzLVx1MDAzZW5ldHNbaV0uY2lkciBcdTAwM2MgY2lkcikge1xuJiM0MztcdFx0fSBlbHNlIGlmIChucC5jaWRyIFx1MDAzYyBjaWRyKSB7XG4gXHRcdFx0Zm91bmQgPSBpO1xuLVx0XHR9IGVsc2UgaWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpIHtcbi1cdFx0XHRuZXRzLVx1MDAzZW5ldHNbaV0uY291bnQmIzQzOyYjNDM7O1xuJiM0MztcdFx0fSBlbHNlIGlmIChucC5jaWRyID09IGNpZHIpIHtcbiYjNDM7XHRcdFx0aWYgKG5wLmNvdW50IFx1MDAzYyBDSURSX01BWF9DT1VOVCkge1xuJiM0MztcdFx0XHRcdG5wLmNvdW50JiM0MzsmIzQzOztcbiYjNDM7XHRcdFx0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tpXSwgbnApO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdHJldCA9IC1FT1ZFUkZMT1c7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRnb3RvIHVubG9jaztcbiBcdFx0fVxuIFx0fVxuQEAgLTM1MCw2ICYjNDM7MzkwLDcgQEAgbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG4gXHR9XG4gXG4gXHR0bXAtXHUwMDNlbGVuID0gbGVuO1xuJiM0MztcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXHUwMDI2dG1wLVx1MDAzZXNlcSwgXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuIFx0Zm9yIChpID0gMCwgaiA9IDA7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpJiM0MzsmIzQzOykge1xuIFx0XHRpZiAoaSA9PSBmb3VuZCkge1xuIFx0XHRcdHRtcC1cdTAwM2VuZXRzW2pdLmNpZHIgPSBjaWRyO1xuQEAgLTM3MSw0MiAmIzQzOzQxMiw2MCBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuJiM0MzsvKipcbiYjNDM7ICogbXR5cGVfZGVsX2NpZHIgLSBSZW1vdmUgQ0lEUiBlbnRyeSBhbmQgbWFpbnRhaW4gYXJyYXkgaW50ZWdyaXR5LlxuJiM0MzsgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXQuXG4mIzQzOyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS5cbiYjNDM7ICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGguXG4mIzQzOyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gcmVtb3ZlIEBjaWRyIGZyb21cbiYjNDM7ICpcbiYjNDM7ICogSWYgQ0lEUiBlbnRyeSBjb3VudCBmYWxscyB0byAwLCB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgXCYjMzQ7c2hpZnQtbGVmdFwmIzM0O1xuJiM0MzsgKiBvcGVyYXRpb24gb24gYWxsIGZvbGxvd2luZyBlbGVtZW50cy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGFycmF5IHJlbWFpbnNcbiYjNDM7ICogY29udGlndW91cyBhbmQgbWFpbnRhaW5zIGl0cyBkZXNjZW5kaW5nIG9yZGVyIGJ5IENJRFIuIFRoZSB2YWNhdGVkIHNsb3RcbiYjNDM7ICogYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkgaXMgemVyb2VkIG91dCAoY2lkcj0wLCBjb3VudD0wKS5cbiYjNDM7ICovXG4gc3RhdGljIHZvaWRcbiBtdHlwZV9kZWxfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcbiB7XG4tXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wO1xuLVx0dTggaSwgaiwgbGVuID0gMDtcbiYjNDM7XHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzO1xuJiM0MztcdHN0cnVjdCBuZXRfcHJlZml4IG5wO1xuIFx0aW50IGZvdW5kO1xuJiM0MztcdHU4IGksIGo7XG4mIzQzO1xuJiM0MztcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IG5ldF9wcmVmaXgpICE9IHNpemVvZih1MzIpKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAobmV0cy1cdTAwM2VuZXRzW2ldLmNvdW50KVxuLVx0XHRcdGxlbiYjNDM7JiM0Mzs7XG4tXHRcdGlmIChuZXRzLVx1MDAzZW5ldHNbaV0uY2lkciA9PSBjaWRyKVxuJiM0MztcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbiYjNDM7XHRcdGlmIChucC5jb3VudCBcdTAwMjZcdTAwMjYgbnAuY2lkciA9PSBjaWRyKSB7XG4mIzQzO1x0XHRcdG5wLmNvdW50LS07XG4gXHRcdFx0Zm91bmQgPSBpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdH1cbiBcdGlmICh1bmxpa2VseShmb3VuZCA9PSAtMSkpXG4gXHRcdGdvdG8gdW5sb2NrO1xuIFxuLVx0bmV0cy1cdTAwM2VuZXRzW2ZvdW5kXS5jb3VudC0tO1xuLVx0aWYgKG5ldHMtXHUwMDNlbmV0c1tmb3VuZF0uY291bnQpXG4tXHRcdGdvdG8gdW5sb2NrO1xuLVx0bGVuLS07XG4tXHR0bXAgPSBremFsbG9jX2ZsZXgoKnRtcCwgbmV0cywgbGVuLCBHRlBfQVRPTUlDKTtcbi1cdGlmICghdG1wKVxuLVx0XHQvKiBMZWF2ZSBhIGhvbGUgKi9cbiYjNDM7XHRpZiAobnAuY291bnQpIHtcbiYjNDM7XHRcdFdSSVRFX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ZvdW5kXSwgbnApO1xuIFx0XHRnb3RvIHVubG9jaztcbiYjNDM7XHR9XG4gXG4tXHR0bXAtXHUwMDNlbGVuID0gbGVuO1xuJiM0MztcdHdyaXRlX3NlcWNvdW50X2JlZ2luKFx1MDAyNm5ldHMtXHUwMDNlc2VxKTtcbiBcdGZvciAoaSA9IDAsIGogPSAwOyBpIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaSYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKCFuZXRzLVx1MDAzZW5ldHNbaV0uY291bnQgfHwgaSA9PSBmb3VuZClcbiYjNDM7XHRcdGlmIChpID09IGZvdW5kKVxuIFx0XHRcdGNvbnRpbnVlO1xuLVx0XHR0bXAtXHUwMDNlbmV0c1tqXS5jaWRyID0gbmV0cy1cdTAwM2VuZXRzW2ldLmNpZHI7XG4tXHRcdHRtcC1cdTAwM2VuZXRzW2omIzQzOyYjNDM7XS5jb3VudCA9IG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudDtcbiYjNDM7XG4mIzQzO1x0XHRucCA9IFJFQURfT05DRShuZXRzLVx1MDAzZW5ldHNbaV0pO1xuJiM0MztcdFx0aWYgKGkgIT0gailcbiYjNDM7XHRcdFx0V1JJVEVfT05DRShuZXRzLVx1MDAzZW5ldHNbal0sIG5wKTtcbiYjNDM7XHRcdGomIzQzOyYjNDM7O1xuIFx0fVxuLVx0cmN1X2Fzc2lnbl9wb2ludGVyKGgtXHUwMDNlcm5ldHNbbl0sIHRtcCk7XG4tXHRrZnJlZV9yY3UobmV0cywgcmN1KTtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuKVxuJiM0MztcdFx0V1JJVEVfT05DRShuZXRzLVx1MDAzZW5ldHNbaiYjNDM7JiM0MztdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xuJiM0MztcdHdyaXRlX3NlcWNvdW50X2VuZChcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4gdW5sb2NrOlxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuIH1cbkBAIC00NTEsNyAmIzQzOzUxMCw3IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbiB7XG4gXHRzdHJ1Y3QgaHR5cGUgKmggPSBzZXQtXHUwMDNlZGF0YTtcbiAjaWZkZWYgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4tXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wO1xuJiM0MztcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHM7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgaHRhYmxlICp0O1xuIFx0c3RydWN0IGhidWNrZXQgKm47XG5AQCAtNDc3LDE3ICYjNDM7NTM2LDE1IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbiBcdH1cbiAjaWZkZWYgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBJUFNFVF9ORVRfQ09VTlQ7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdG5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtXHUwMDNlcm5ldHNbaV0pO1xuLVx0XHR0bXAgPSBremFsbG9jX29iaigqdG1wLCBHRlBfQVRPTUlDKTtcbi1cdFx0aWYgKCF0bXApIHtcbi1cdFx0XHR1OCBqO1xuJiM0MztcdFx0dTggajtcbiBcbi1cdFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaiYjNDM7JiM0MzspXG4tXHRcdFx0XHRuZXRzLVx1MDAzZW5ldHNbal0uY291bnQgPSAwO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihoLVx1MDAzZXJuZXRzW2ldLCB0bXApO1xuLVx0XHRcdGtmcmVlX3JjdShuZXRzLCByY3UpO1xuLVx0XHR9XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuJiM0MztcdFx0bmV0cyA9IGlwc2V0X2RlcmVmZXJlbmNlX25mbmwoaC1cdTAwM2VybmV0c1tpXSk7XG4mIzQzO1x0XHR3cml0ZV9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4mIzQzO1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaiYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdFdSSVRFX09OQ0UobmV0cy1cdTAwM2VuZXRzW2omIzQzOyYjNDM7XSwgKHN0cnVjdCBuZXRfcHJlZml4KXt9KTtcbiYjNDM7XHRcdHdyaXRlX3NlcWNvdW50X2VuZChcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHR9XG4gI2VuZGlmXG4gfVxuQEAgLTEyNTMsMzEgJiM0MzsxMzEwLDQxIEBAIG10eXBlX3Rlc3RfY2lkcnMoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbXR5cGVfZWxlbSAqZCxcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcbiBcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMxO1xuIFx0c3RydWN0IG10eXBlX2VsZW0gb3JpZyA9ICpkO1xuJiM0MztcdHVuc2lnbmVkIGludCBzZXExO1xuIFx0aW50IHJldCwgaSwgaiwgaztcbiAjZWxzZVxuIFx0aW50IHJldCwgaSwgajtcbiAjZW5kaWZcbi1cdHUzMiBrZXksIG11bHRpID0gMDtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgc2VxMDtcbiYjNDM7XHR1MzIga2V5LCBtdWx0aTtcbiBcdHU4IHBvcztcbiBcbiBcdHByX2RlYnVnKFwmIzM0O3Rlc3QgYnkgbmV0c1xcblwmIzM0Oyk7XG4gXHRyY3VfcmVhZF9sb2NrX2JoKCk7XG4mIzQzO3JldHJ5OlxuJiM0MztcdG11bHRpID0gMDtcbiBcdG5ldHMwID0gcmN1X2RlcmVmZXJlbmNlX2JoKGgtXHUwMDNlcm5ldHNbMF0pO1xuJiM0MztcdHNlcTAgPSByZWFkX3NlcWNvdW50X2JlZ2luKFx1MDAyNm5ldHMwLVx1MDAzZXNlcSk7XG4gI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXG4gXHRuZXRzMSA9IHJjdV9kZXJlZmVyZW5jZV9iaChoLVx1MDAzZXJuZXRzWzFdKTtcbiYjNDM7XHRzZXExID0gcmVhZF9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzMS1cdTAwM2VzZXEpO1xuICNlbmRpZlxuIFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgbmV0czAtXHUwMDNlbGVuIFx1MDAyNlx1MDAyNiAhbXVsdGk7IGomIzQzOyYjNDM7KSB7XG4tXHRcdGlmICghbmV0czAtXHUwMDNlbmV0c1tqXS5jb3VudClcbiYjNDM7XHRcdHN0cnVjdCBuZXRfcHJlZml4IHAwID0gUkVBRF9PTkNFKG5ldHMwLVx1MDAzZW5ldHNbal0pO1xuJiM0MztcbiYjNDM7XHRcdGlmICghcDAuY291bnQpXG4gXHRcdFx0Y29udGludWU7XG4gI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXG4gXHRcdG10eXBlX2RhdGFfcmVzZXRfZWxlbShkLCBcdTAwMjZvcmlnKTtcbi1cdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMwLVx1MDAzZW5ldHNbal0uY2lkciwgZmFsc2UpO1xuJiM0MztcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAwLmNpZHIsIGZhbHNlKTtcbiBcdFx0Zm9yIChrID0gMDsgayBcdTAwM2MgbmV0czEtXHUwMDNlbGVuIFx1MDAyNlx1MDAyNiAhbXVsdGk7IGsmIzQzOyYjNDM7KSB7XG4tXHRcdFx0aWYgKCFuZXRzMS1cdTAwM2VuZXRzW2tdLmNvdW50KVxuJiM0MztcdFx0XHRzdHJ1Y3QgbmV0X3ByZWZpeCBwMSA9IFJFQURfT05DRShuZXRzMS1cdTAwM2VuZXRzW2tdKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmICghcDEuY291bnQpXG4gXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czEtXHUwMDNlbmV0c1trXS5jaWRyLCB0cnVlKTtcbiYjNDM7XHRcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAxLmNpZHIsIHRydWUpO1xuICNlbHNlXG4tXHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMC1cdTAwM2VuZXRzW2pdLmNpZHIpO1xuJiM0MztcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAwLmNpZHIpO1xuICNlbmRpZlxuIFx0XHRrZXkgPSBIS0VZKGQsIGgtXHUwMDNlaW5pdHZhbCwgdC1cdTAwM2VodGFibGVfYml0cyk7XG4gXHRcdG4gPSByY3VfZGVyZWZlcmVuY2VfYmgoaGJ1Y2tldCh0LCBrZXkpKTtcbkBAIC0xMzAyLDYgJiM0MzsxMzY5LDEzIEBAIG10eXBlX3Rlc3RfY2lkcnMoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbXR5cGVfZWxlbSAqZCxcbiBcdFx0fVxuICNlbmRpZlxuIFx0fVxuJiM0MztcbiYjNDM7XHRpZiAocmVhZF9zZXFjb3VudF9yZXRyeShcdTAwMjZuZXRzMC1cdTAwM2VzZXEsIHNlcTApKVxuJiM0MztcdFx0Z290byByZXRyeTtcbiYjNDM7I2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXG4mIzQzO1x0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXHUwMDI2bmV0czEtXHUwMDNlc2VxLCBzZXExKSlcbiYjNDM7XHRcdGdvdG8gcmV0cnk7XG4mIzQzOyNlbmRpZlxuIFx0cmV0ID0gMDtcbiB1bmxvY2s6XG4gXHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcbkBAIC0xNzA3LDYgJiM0MzsxNzgxLDcgQEAgSVBTRVRfVE9LRU4oSFRZUEUsIF9jcmVhdGUpKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGlwX3NldCAqc2V0LFxuIFx0XHRcdFx0a2ZyZWUocmN1X2RlcmVmZXJlbmNlX3JhdyhoLVx1MDAzZXJuZXRzWy0taV0pKTtcbiBcdFx0XHRnb3RvIGZyZWVfaHJlZ2lvbjtcbiBcdFx0fVxuJiM0MztcdFx0c2VxY291bnRfc3BpbmxvY2tfaW5pdChcdTAwMjZuZXRzLVx1MDAzZXNlcSwgXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuIFx0XHRSQ1VfSU5JVF9QT0lOVEVSKGgtXHUwMDNlcm5ldHNbaV0sIG5ldHMpO1xuIFx0fVxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xuaW5kZXggYjQ0Yjk1Zjc2NmI3YS4uYjYwMmNjNDM1NjVkZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXG5AQCAtMzgsNyAmIzQzOzM4LDYgQEAgTU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOm5ldCxpZmFjZVwmIzM0Oyk7XG4gI2RlZmluZSBIVFlQRVx0XHRoYXNoX25ldGlmYWNlXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTVVMVElcbi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMFxuIFxuICNkZWZpbmUgU1RSU0NQWShhLCBiKVx0c3Ryc2NweShhLCBiLCBJRk5BTVNJWilcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jXG5pbmRleCA2MjkxNTMyYmU3YTVhLi42MWFmMWNlMjcxMjc5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jXG5AQCAtMzYsNyAmIzQzOzM2LDYgQEAgTU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOm5ldCxwb3J0LG5ldFwmIzM0Oyk7XG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX1BST1RPXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbiAjZGVmaW5lIElQU0VUX05FVF9DT1VOVCAyXG4tI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVDBcbiBcbiAvKiBJUHY0IHZhcmlhbnQgKi9cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtORVRGSUxURVImIzM0OywKICAgICYjMzQ7SVBfU0VUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVElGQUNFJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVE5FVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRQT1JUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX0lQUE9SVE5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3NldF91YWRkJiMzNDssCiAgICAmIzM0O2lwX3NldF91ZGVsJiMzNDssCiAgICAmIzM0O2lwX3NldF91dGVzdCYjMzQ7LAogICAgJiMzNDtpcF9zZXRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXQ2X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldGlmYWNlNl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydG5ldDRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldHBvcnRuZXQ2X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRuZXQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRuZXQ2X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydDZfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX2lwcG9ydG5ldDRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX2lwcG9ydG5ldDZfdWFkdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBDSURSIHRyYWNraW5nIGxvZ2ljIGluIGlwc2V0IGhhc2ggdHlwZXMgdGhhdCBzdXBwb3J0IG5ldHdvcmtzIChlLmcuLCBoYXNoOm5ldCwgaGFzaDpuZXQsaWZhY2UpLiBJdCBpbnRyb2R1Y2VzIGEgc2VxY291bnRfc3BpbmxvY2tfdCB0byBndWFyZCBpbi1wbGFjZSByZW9yZGVyaW5nIG9mIHRoZSBuZXRfcHJlZml4ZXMgYXJyYXksIHJlcGxhY2luZyB0aGUgcHJldmlvdXMgUkNVLWJhc2VkIHJlYWxsb2NhdGlvbiBhcHByb2FjaCBmb3IgZGVsZXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgbmV0d29yayBwcmVmaXhlcyBhcmUgYWRkZWQsIGRlbGV0ZWQsIHRlc3RlZCwgYW5kIGZsdXNoZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGVudHJ5IHBvaW50cyBmb3IgYWRkaW5nLCBkZWxldGluZywgdGVzdGluZywgYW5kIGZsdXNoaW5nIGVsZW1lbnRzIGluIHRoZXNlIHNwZWNpZmljIGhhc2ggdHlwZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OTM3M2Y3Y2UxNmM3NTQyMjlkYzllZGIzZjNkYWQ3MTBlOGQ5MzAwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAyMTozMzoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmggYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oCmluZGV4IGYwMGM4MmFjZDdmMDUuLmIxZjQ1OThjMTQ2NzYgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaApAQCAtOCw2ICYjNDM7OCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvcmN1cGRhdGVfd2FpdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2poYXNoLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2VxbG9jay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmsuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmgmZ3Q7CiAKQEAgLTk4LDE0ICYjNDM7OTksMzQgQEAgc3RydWN0IGh0YWJsZSB7CiAjZGVmaW5lIElQU0VUX05FVF9DT1VOVAkJMQogI2VuZGlmCiAKLS8qIEJvb2sta2VlcGluZyBvZiB0aGUgcHJlZml4ZXMgYWRkZWQgdG8gdGhlIHNldCAqLwomIzQzOy8qKgomIzQzOyAqIHN0cnVjdCBuZXRfcHJlZml4IC0gUmVwcmVzZW50YXRpb24gb2YgYSBuZXR3b3JrIHByZWZpeC4KJiM0MzsgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC4KJiM0MzsgKiBAY291bnQ6IE51bWJlciBvZiBvY2N1cnJlbmNlcy4KJiM0MzsgKi8KIHN0cnVjdCBuZXRfcHJlZml4IHsKLQl1OCBjaWRyOwkJCS8qIHRoZSBjaWRyIHZhbHVlICovCi0JdTMyIGNvdW50OwkJCS8qIG51bWJlciBvZiBlbGVtZW50cyBvZiB0aGlzIGNpZHIgKi8KJiM0MzsJdTMyIGNpZHI6ODsKJiM0MzsJdTMyIGNvdW50OjI0OwogfTsKIAomIzQzOyNkZWZpbmUgQ0lEUl9NQVhfQ09VTlQgKCgxICZsdDsmbHQ7IDI0KSAtIDEpCiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogc3RydWN0IG5ldF9wcmVmaXhlcyAtIEEgY29sbGVjdGlvbiBvZiBuZXR3b3JrIHByZWZpeGVzLgomIzQzOyAqIEByY3U6IFJDVSBoZWFkCiYjNDM7ICogQHNlcTogU2VxdWVuY2UgY291bnRlciBndWFyZGluZyBpbi1wbGFjZSByZW9yZGVyaW5nIG9mIEBuZXRzCiYjNDM7ICogQGxlbjogTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGFycmF5LgomIzQzOyAqIEBuZXRzOiBBcnJheSBvZiBuZXRfcHJlZml4IHN0cnVjdHVyZXMgKHNvcnRlZCBieSBDSURSIGRlc2NlbmRpbmcpLgomIzQzOyAqCiYjNDM7ICogQG5ldHMgZW50cmllcyBhcmUgdXBkYXRlZCBpbiBwbGFjZSB1bmRlciBAc2V0JiMzOTtzIGxvY2suIEEgc2luZ2xlIGVudHJ5JiMzOTtzCiYjNDM7ICogY2lkci9jb3VudCBwYWlyIGlzIGFsd2F5cyB1cGRhdGVkIGF0b21pY2FsbHkgdmlhIFJFQURfT05DRSgpL1dSSVRFX09OQ0UoKSwKJiM0MzsgKiBidXQgcmVtb3ZpbmcgYW4gZW50cnkgYWxzbyBzaGlmdHMgZXZlcnkgZm9sbG93aW5nIGVudHJ5IGRvd24gYnkgb25lIHNsb3QuCiYjNDM7ICogTG9ja2xlc3MgcmVhZGVycyB0aGF0IHNjYW4gdGhlIHdob2xlIGFycmF5IChpLmUuIG1vcmUgdGhhbiBhIHNpbmdsZQomIzQzOyAqIGluZGV4ZWQgc2xvdCkgbXVzdCB1c2UgQHNlcSB0byBkZXRlY3QgYW5kIHJldHJ5IGFjcm9zcyBzdWNoIGEgc2hpZnQuCiYjNDM7ICovCiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIHsKIAlzdHJ1Y3QgcmN1X2hlYWQgcmN1OwomIzQzOwlzZXFjb3VudF9zcGlubG9ja190IHNlcTsKIAl1OCBsZW47CiAJc3RydWN0IG5ldF9wcmVmaXggbmV0c1tdIF9fY291bnRlZF9ieShsZW4pOwogfTsKQEAgLTE0Myw4ICYjNDM7MTY0LDExIEBAIGh0YWJsZV9zaXplKHU4IGhiaXRzKQogI2VuZGlmCiAKICNkZWZpbmUgSU5JVF9DSURSKG4sIGhvc3RfbWFzaykgKHsJCQkJXAotCWNvbnN0IHN0cnVjdCBuZXRfcHJlZml4ZXMgKl9fbiA9IHJjdV9kZXJlZmVyZW5jZShuKTsJCVwKLQlEQ0lEUl9QVVQoKF9fbiktJmd0O2xlbiA/IChfX24pLSZndDtuZXRzWzBdLmNpZHIgOiBob3N0X21hc2spO1wKJiM0MzsJY29uc3Qgc3RydWN0IG5ldF9wcmVmaXhlcyAqX19uID0gcmN1X2RlcmVmZXJlbmNlKG4pOwlcCiYjNDM7CXN0cnVjdCBuZXRfcHJlZml4IF9fcCA9CQkJCQlcCiYjNDM7CQlfX24tJmd0O2xlbiA/IFJFQURfT05DRShfX24tJmd0O25ldHNbMF0pCQlcCiYjNDM7CQkJIDogKHN0cnVjdCBuZXRfcHJlZml4KXt9OwkJXAomIzQzOwlEQ0lEUl9QVVQoX19wLmNvdW50ID8gX19wLmNpZHIgOiBob3N0X21hc2spOwkJXAogfSkKIAogI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqLwpAQCAtMzE4LDI3ICYjNDM7MzQyLDQzIEBAIHN0cnVjdCBtdHlwZV9yZXNpemVfYWQgewogfTsKIAogI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUUwotLyogTmV0d29yayBjaWRyIHNpemUgYm9vayBrZWVwaW5nIHdoZW4gdGhlIGhhc2ggc3RvcmVzIGRpZmZlcmVudAotICogc2l6ZWQgbmV0d29ya3MuIGNpZHIgPT0gcmVhbCBjaWRyICYjNDM7IDEgdG8gc3VwcG9ydCAvMC4KJiM0MzsvKioKJiM0MzsgKiBtdHlwZV9hZGRfY2lkciAtIEFkZCBhIENJRFIgZW50cnkgdG8gaGFzaCB0YWJsZSBib29ra2VlcGluZwomIzQzOyAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldAomIzQzOyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZQomIzQzOyAqIEBjaWRyOiBUaGUgQ0lEUiBwcmVmaXggbGVuZ3RoCiYjNDM7ICogQG46IFRoZSBpbmRleCBvZiB0aGUgbmV0X3ByZWZpeCBhcnJheSB0byBhZGQgQGNpZHIgdG8KJiM0MzsgKgomIzQzOyAqIFBlcmZvcm1zIGFuIHVwZGF0ZSBpZiBAY2lkciBpcyBmb3VuZCwgb3RoZXJ3aXNlIHBlcmZvcm1zIENPVy1zdHlsZQomIzQzOyAqIGFsbG9jYXRpb24gYW5kIHJlcGxhY2VtZW50IHZpYSBSQ1UuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgogICovCiBzdGF0aWMgaW50CiBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbikKIHsKLQlzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wOwogCWludCBpLCBqLCBmb3VuZCwgbGVuID0gMCwgcmV0ID0gMDsKJiM0MzsJc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDsKJiM0MzsJc3RydWN0IG5ldF9wcmVmaXggbnA7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtzZXQtJmd0O2xvY2spOwogCW5ldHMgPSBfX2lwc2V0X2RlcmVmZXJlbmNlKGgtJmd0O3JuZXRzW25dKTsKIAkvKiBBZGQgaW4gaW5jcmVhc2luZyBwcmVmaXggb3JkZXIsIHNvIGxhcmdlciBjaWRyIGZpcnN0ICovCiAJZm9yIChpID0gMCwgZm91bmQgPSAtMTsgaSAmbHQ7IG5ldHMtJmd0O2xlbjsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKG5ldHMtJmd0O25ldHNbaV0uY291bnQpCiYjNDM7CQlucCA9IFJFQURfT05DRShuZXRzLSZndDtuZXRzW2ldKTsKJiM0MzsJCWlmIChucC5jb3VudCkKIAkJCWxlbiYjNDM7JiM0Mzs7CiAJCWlmIChmb3VuZCAhPSAtMSkgewogCQkJY29udGludWU7Ci0JCX0gZWxzZSBpZiAobmV0cy0mZ3Q7bmV0c1tpXS5jaWRyICZsdDsgY2lkcikgewomIzQzOwkJfSBlbHNlIGlmIChucC5jaWRyICZsdDsgY2lkcikgewogCQkJZm91bmQgPSBpOwotCQl9IGVsc2UgaWYgKG5ldHMtJmd0O25ldHNbaV0uY2lkciA9PSBjaWRyKSB7Ci0JCQluZXRzLSZndDtuZXRzW2ldLmNvdW50JiM0MzsmIzQzOzsKJiM0MzsJCX0gZWxzZSBpZiAobnAuY2lkciA9PSBjaWRyKSB7CiYjNDM7CQkJaWYgKG5wLmNvdW50ICZsdDsgQ0lEUl9NQVhfQ09VTlQpIHsKJiM0MzsJCQkJbnAuY291bnQmIzQzOyYjNDM7OwomIzQzOwkJCQlXUklURV9PTkNFKG5ldHMtJmd0O25ldHNbaV0sIG5wKTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQlyZXQgPSAtRU9WRVJGTE9XOwomIzQzOwkJCX0KIAkJCWdvdG8gdW5sb2NrOwogCQl9CiAJfQpAQCAtMzUwLDYgJiM0MzszOTAsNyBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbikKIAl9CiAKIAl0bXAtJmd0O2xlbiA9IGxlbjsKJiM0MzsJc2VxY291bnRfc3BpbmxvY2tfaW5pdCgmYW1wO3RtcC0mZ3Q7c2VxLCAmYW1wO3NldC0mZ3Q7bG9jayk7CiAJZm9yIChpID0gMCwgaiA9IDA7IGkgJmx0OyBuZXRzLSZndDtsZW47IGkmIzQzOyYjNDM7KSB7CiAJCWlmIChpID09IGZvdW5kKSB7CiAJCQl0bXAtJmd0O25ldHNbal0uY2lkciA9IGNpZHI7CkBAIC0zNzEsNDIgJiM0Mzs0MTIsNjAgQEAgbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIG10eXBlX2RlbF9jaWRyIC0gUmVtb3ZlIENJRFIgZW50cnkgYW5kIG1haW50YWluIGFycmF5IGludGVncml0eS4KJiM0MzsgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXQuCiYjNDM7ICogQGg6IFBvaW50ZXIgdG8gdGhlIGh0eXBlLgomIzQzOyAqIEBjaWRyOiBUaGUgQ0lEUiBwcmVmaXggbGVuZ3RoLgomIzQzOyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gcmVtb3ZlIEBjaWRyIGZyb20KJiM0MzsgKgomIzQzOyAqIElmIENJRFIgZW50cnkgY291bnQgZmFsbHMgdG8gMCwgdGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBhICYjMzQ7c2hpZnQtbGVmdCYjMzQ7CiYjNDM7ICogb3BlcmF0aW9uIG9uIGFsbCBmb2xsb3dpbmcgZWxlbWVudHMuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBhcnJheSByZW1haW5zCiYjNDM7ICogY29udGlndW91cyBhbmQgbWFpbnRhaW5zIGl0cyBkZXNjZW5kaW5nIG9yZGVyIGJ5IENJRFIuIFRoZSB2YWNhdGVkIHNsb3QKJiM0MzsgKiBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheSBpcyB6ZXJvZWQgb3V0IChjaWRyPTAsIGNvdW50PTApLgomIzQzOyAqLwogc3RhdGljIHZvaWQKIG10eXBlX2RlbF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKQogewotCXN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7Ci0JdTggaSwgaiwgbGVuID0gMDsKJiM0MzsJc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0czsKJiM0MzsJc3RydWN0IG5ldF9wcmVmaXggbnA7CiAJaW50IGZvdW5kOwomIzQzOwl1OCBpLCBqOwomIzQzOwomIzQzOwlCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBuZXRfcHJlZml4KSAhPSBzaXplb2YodTMyKSk7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtzZXQtJmd0O2xvY2spOwogCW5ldHMgPSBfX2lwc2V0X2RlcmVmZXJlbmNlKGgtJmd0O3JuZXRzW25dKTsKIAlmb3IgKGkgPSAwLCBmb3VuZCA9IC0xOyBpICZsdDsgbmV0cy0mZ3Q7bGVuOyBpJiM0MzsmIzQzOykgewotCQlpZiAobmV0cy0mZ3Q7bmV0c1tpXS5jb3VudCkKLQkJCWxlbiYjNDM7JiM0Mzs7Ci0JCWlmIChuZXRzLSZndDtuZXRzW2ldLmNpZHIgPT0gY2lkcikKJiM0MzsJCW5wID0gUkVBRF9PTkNFKG5ldHMtJmd0O25ldHNbaV0pOwomIzQzOwkJaWYgKG5wLmNvdW50ICZhbXA7JmFtcDsgbnAuY2lkciA9PSBjaWRyKSB7CiYjNDM7CQkJbnAuY291bnQtLTsKIAkJCWZvdW5kID0gaTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KIAl9CiAJaWYgKHVubGlrZWx5KGZvdW5kID09IC0xKSkKIAkJZ290byB1bmxvY2s7CiAKLQluZXRzLSZndDtuZXRzW2ZvdW5kXS5jb3VudC0tOwotCWlmIChuZXRzLSZndDtuZXRzW2ZvdW5kXS5jb3VudCkKLQkJZ290byB1bmxvY2s7Ci0JbGVuLS07Ci0JdG1wID0ga3phbGxvY19mbGV4KCp0bXAsIG5ldHMsIGxlbiwgR0ZQX0FUT01JQyk7Ci0JaWYgKCF0bXApCi0JCS8qIExlYXZlIGEgaG9sZSAqLwomIzQzOwlpZiAobnAuY291bnQpIHsKJiM0MzsJCVdSSVRFX09OQ0UobmV0cy0mZ3Q7bmV0c1tmb3VuZF0sIG5wKTsKIAkJZ290byB1bmxvY2s7CiYjNDM7CX0KIAotCXRtcC0mZ3Q7bGVuID0gbGVuOwomIzQzOwl3cml0ZV9zZXFjb3VudF9iZWdpbigmYW1wO25ldHMtJmd0O3NlcSk7CiAJZm9yIChpID0gMCwgaiA9IDA7IGkgJmx0OyBuZXRzLSZndDtsZW47IGkmIzQzOyYjNDM7KSB7Ci0JCWlmICghbmV0cy0mZ3Q7bmV0c1tpXS5jb3VudCB8fCBpID09IGZvdW5kKQomIzQzOwkJaWYgKGkgPT0gZm91bmQpCiAJCQljb250aW51ZTsKLQkJdG1wLSZndDtuZXRzW2pdLmNpZHIgPSBuZXRzLSZndDtuZXRzW2ldLmNpZHI7Ci0JCXRtcC0mZ3Q7bmV0c1tqJiM0MzsmIzQzO10uY291bnQgPSBuZXRzLSZndDtuZXRzW2ldLmNvdW50OwomIzQzOwomIzQzOwkJbnAgPSBSRUFEX09OQ0UobmV0cy0mZ3Q7bmV0c1tpXSk7CiYjNDM7CQlpZiAoaSAhPSBqKQomIzQzOwkJCVdSSVRFX09OQ0UobmV0cy0mZ3Q7bmV0c1tqXSwgbnApOwomIzQzOwkJaiYjNDM7JiM0Mzs7CiAJfQotCXJjdV9hc3NpZ25fcG9pbnRlcihoLSZndDtybmV0c1tuXSwgdG1wKTsKLQlrZnJlZV9yY3UobmV0cywgcmN1KTsKJiM0MzsKJiM0MzsJd2hpbGUgKGogJmx0OyBuZXRzLSZndDtsZW4pCiYjNDM7CQlXUklURV9PTkNFKG5ldHMtJmd0O25ldHNbaiYjNDM7JiM0MztdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pOwomIzQzOwl3cml0ZV9zZXFjb3VudF9lbmQoJmFtcDtuZXRzLSZndDtzZXEpOwogdW5sb2NrOgogCXNwaW5fdW5sb2NrX2JoKCZhbXA7c2V0LSZndDtsb2NrKTsKIH0KQEAgLTQ1MSw3ICYjNDM7NTEwLDcgQEAgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KQogewogCXN0cnVjdCBodHlwZSAqaCA9IHNldC0mZ3Q7ZGF0YTsKICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFMKLQlzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wOwomIzQzOwlzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzOwogI2VuZGlmCiAJc3RydWN0IGh0YWJsZSAqdDsKIAlzdHJ1Y3QgaGJ1Y2tldCAqbjsKQEAgLTQ3NywxNyAmIzQzOzUzNiwxNSBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpCiAJfQogI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUUwogCWZvciAoaSA9IDA7IGkgJmx0OyBJUFNFVF9ORVRfQ09VTlQ7IGkmIzQzOyYjNDM7KSB7Ci0JCW5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtJmd0O3JuZXRzW2ldKTsKLQkJdG1wID0ga3phbGxvY19vYmooKnRtcCwgR0ZQX0FUT01JQyk7Ci0JCWlmICghdG1wKSB7Ci0JCQl1OCBqOwomIzQzOwkJdTggajsKIAotCQkJZm9yIChqID0gMDsgaiAmbHQ7IG5ldHMtJmd0O2xlbjsgaiYjNDM7JiM0MzspCi0JCQkJbmV0cy0mZ3Q7bmV0c1tqXS5jb3VudCA9IDA7Ci0JCX0gZWxzZSB7Ci0JCQlyY3VfYXNzaWduX3BvaW50ZXIoaC0mZ3Q7cm5ldHNbaV0sIHRtcCk7Ci0JCQlrZnJlZV9yY3UobmV0cywgcmN1KTsKLQkJfQomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7c2V0LSZndDtsb2NrKTsKJiM0MzsJCW5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtJmd0O3JuZXRzW2ldKTsKJiM0MzsJCXdyaXRlX3NlcWNvdW50X2JlZ2luKCZhbXA7bmV0cy0mZ3Q7c2VxKTsKJiM0MzsJCWZvciAoaiA9IDA7IGogJmx0OyBuZXRzLSZndDtsZW47IGomIzQzOyYjNDM7KQomIzQzOwkJCVdSSVRFX09OQ0UobmV0cy0mZ3Q7bmV0c1tqJiM0MzsmIzQzO10sIChzdHJ1Y3QgbmV0X3ByZWZpeCl7fSk7CiYjNDM7CQl3cml0ZV9zZXFjb3VudF9lbmQoJmFtcDtuZXRzLSZndDtzZXEpOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDtzZXQtJmd0O2xvY2spOwogCX0KICNlbmRpZgogfQpAQCAtMTI1MywzMSAmIzQzOzEzMTAsNDEgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLAogI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyCiAJc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0czE7CiAJc3RydWN0IG10eXBlX2VsZW0gb3JpZyA9ICpkOwomIzQzOwl1bnNpZ25lZCBpbnQgc2VxMTsKIAlpbnQgcmV0LCBpLCBqLCBrOwogI2Vsc2UKIAlpbnQgcmV0LCBpLCBqOwogI2VuZGlmCi0JdTMyIGtleSwgbXVsdGkgPSAwOwomIzQzOwl1bnNpZ25lZCBpbnQgc2VxMDsKJiM0MzsJdTMyIGtleSwgbXVsdGk7CiAJdTggcG9zOwogCiAJcHJfZGVidWcoJiMzNDt0ZXN0IGJ5IG5ldHNcbiYjMzQ7KTsKIAlyY3VfcmVhZF9sb2NrX2JoKCk7CiYjNDM7cmV0cnk6CiYjNDM7CW11bHRpID0gMDsKIAluZXRzMCA9IHJjdV9kZXJlZmVyZW5jZV9iaChoLSZndDtybmV0c1swXSk7CiYjNDM7CXNlcTAgPSByZWFkX3NlcWNvdW50X2JlZ2luKCZhbXA7bmV0czAtJmd0O3NlcSk7CiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDIKIAluZXRzMSA9IHJjdV9kZXJlZmVyZW5jZV9iaChoLSZndDtybmV0c1sxXSk7CiYjNDM7CXNlcTEgPSByZWFkX3NlcWNvdW50X2JlZ2luKCZhbXA7bmV0czEtJmd0O3NlcSk7CiAjZW5kaWYKIAlmb3IgKGogPSAwOyBqICZsdDsgbmV0czAtJmd0O2xlbiAmYW1wOyZhbXA7ICFtdWx0aTsgaiYjNDM7JiM0MzspIHsKLQkJaWYgKCFuZXRzMC0mZ3Q7bmV0c1tqXS5jb3VudCkKJiM0MzsJCXN0cnVjdCBuZXRfcHJlZml4IHAwID0gUkVBRF9PTkNFKG5ldHMwLSZndDtuZXRzW2pdKTsKJiM0MzsKJiM0MzsJCWlmICghcDAuY291bnQpCiAJCQljb250aW51ZTsKICNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMgogCQltdHlwZV9kYXRhX3Jlc2V0X2VsZW0oZCwgJmFtcDtvcmlnKTsKLQkJbXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMwLSZndDtuZXRzW2pdLmNpZHIsIGZhbHNlKTsKJiM0MzsJCW10eXBlX2RhdGFfbmV0bWFzayhkLCBwMC5jaWRyLCBmYWxzZSk7CiAJCWZvciAoayA9IDA7IGsgJmx0OyBuZXRzMS0mZ3Q7bGVuICZhbXA7JmFtcDsgIW11bHRpOyBrJiM0MzsmIzQzOykgewotCQkJaWYgKCFuZXRzMS0mZ3Q7bmV0c1trXS5jb3VudCkKJiM0MzsJCQlzdHJ1Y3QgbmV0X3ByZWZpeCBwMSA9IFJFQURfT05DRShuZXRzMS0mZ3Q7bmV0c1trXSk7CiYjNDM7CiYjNDM7CQkJaWYgKCFwMS5jb3VudCkKIAkJCQljb250aW51ZTsKLQkJCW10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMS0mZ3Q7bmV0c1trXS5jaWRyLCB0cnVlKTsKJiM0MzsJCQltdHlwZV9kYXRhX25ldG1hc2soZCwgcDEuY2lkciwgdHJ1ZSk7CiAjZWxzZQotCQltdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czAtJmd0O25ldHNbal0uY2lkcik7CiYjNDM7CQltdHlwZV9kYXRhX25ldG1hc2soZCwgcDAuY2lkcik7CiAjZW5kaWYKIAkJa2V5ID0gSEtFWShkLCBoLSZndDtpbml0dmFsLCB0LSZndDtodGFibGVfYml0cyk7CiAJCW4gPSByY3VfZGVyZWZlcmVuY2VfYmgoaGJ1Y2tldCh0LCBrZXkpKTsKQEAgLTEzMDIsNiAmIzQzOzEzNjksMTMgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLAogCQl9CiAjZW5kaWYKIAl9CiYjNDM7CiYjNDM7CWlmIChyZWFkX3NlcWNvdW50X3JldHJ5KCZhbXA7bmV0czAtJmd0O3NlcSwgc2VxMCkpCiYjNDM7CQlnb3RvIHJldHJ5OwomIzQzOyNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMgomIzQzOwlpZiAocmVhZF9zZXFjb3VudF9yZXRyeSgmYW1wO25ldHMxLSZndDtzZXEsIHNlcTEpKQomIzQzOwkJZ290byByZXRyeTsKJiM0MzsjZW5kaWYKIAlyZXQgPSAwOwogdW5sb2NrOgogCXJjdV9yZWFkX3VubG9ja19iaCgpOwpAQCAtMTcwNyw2ICYjNDM7MTc4MSw3IEBAIElQU0VUX1RPS0VOKEhUWVBFLCBfY3JlYXRlKShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpcF9zZXQgKnNldCwKIAkJCQlrZnJlZShyY3VfZGVyZWZlcmVuY2VfcmF3KGgtJmd0O3JuZXRzWy0taV0pKTsKIAkJCWdvdG8gZnJlZV9ocmVnaW9uOwogCQl9CiYjNDM7CQlzZXFjb3VudF9zcGlubG9ja19pbml0KCZhbXA7bmV0cy0mZ3Q7c2VxLCAmYW1wO3NldC0mZ3Q7bG9jayk7CiAJCVJDVV9JTklUX1BPSU5URVIoaC0mZ3Q7cm5ldHNbaV0sIG5ldHMpOwogCX0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jCmluZGV4IGI0NGI5NWY3NjZiN2EuLmI2MDJjYzQzNTY1ZGQgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMKQEAgLTM4LDcgJiM0MzszOCw2IEBAIE1PRFVMRV9BTElBUygmIzM0O2lwX3NldF9oYXNoOm5ldCxpZmFjZSYjMzQ7KTsKICNkZWZpbmUgSFRZUEUJCWhhc2hfbmV0aWZhY2UKICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTCiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTVVMVEkKLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVQwCiAKICNkZWZpbmUgU1RSU0NQWShhLCBiKQlzdHJzY3B5KGEsIGIsIElGTkFNU0laKQogCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jCmluZGV4IDYyOTE1MzJiZTdhNWEuLjYxYWYxY2UyNzEyNzkgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jCkBAIC0zNiw3ICYjNDM7MzYsNiBAQCBNT0RVTEVfQUxJQVMoJiMzNDtpcF9zZXRfaGFzaDpuZXQscG9ydCxuZXQmIzM0Oyk7CiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE8KICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTCiAjZGVmaW5lIElQU0VUX05FVF9DT1VOVCAyCi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMAogCiAvKiBJUHY0IHZhcmlhbnQgKi8KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDQxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVBzZXQgSGFzaCBUeXBlIE9wdGltaXphdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlISBJdCB0b3VjaGVzIGNyaXRpY2FsIGZpbGVzIOKAkyBgaXBfc2V0X2hhc2hfZ2VuLmhgLCBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AsIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYCDigJMgbWVhbmluZyBpdCBhZmZlY3RzIGhvdyBgbmV0X3ByZWZpeGVzYCBhcmUgbWFuYWdlZCB3aXRoaW4gdmFyaW91cyBpcHNldCBoYXNoIHR5cGVzLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhYm91dCB0aGUgaGFuZGxpbmcgb2YgQ0lEUnMuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBzZXFjb3VudF9zcGlubG9ja190IHNlcWAgaW4gYHN0cnVjdCBuZXRfcHJlZml4ZXNgIGZvciBzb21lIGtpbmQgb2YgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBgbmV0c2AuCgpNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQmIzM5O3MgYWltaW5nIHRvIG9wdGltaXplIGhvdyBDSURScyBhcmUgdHJhY2tlZCwgYnV0IHRoZSBjaGFuZ2UgaXRzZWxmIGlzIGZhaXJseSBsYXJnZSwgdG91Y2hpbmcgb24gdGhlIGNvcmUgb2YgdGhlIGlwc2V0IGhhc2ggZnVuY3Rpb25hbGl0eS4gRnJvbSB0aGUgZGVzY3JpcHRpb24sIGBtdHlwZV9hZGRfY2lkcmAgYW5kIGBtdHlwZV9kZWxfY2lkcmAgYXJlIGJlaW5nIG1vZGlmaWVkIHRvIGRvIGluLXBsYWNlIHVwZGF0ZXMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGV5IGFyZSB1cGRhdGluZyBlbnRyaWVzIGluLXBsYWNlIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIG5ldyBgbmV0X3ByZWZpeGVzYCBhcnJheSDigJMgZXhjZXB0IHdoZW4gYWRkaW5nIGEgQ0lEUiB3aGljaCByZXF1aXJlcyBleHBhbmRpbmcgdGhlIGFycmF5IGFuZCwgZXZlbiB0aGVuLCBgbXR5cGVfYWRkX2NpZHJgIGlzIHN0aWxsIGFsbG9jYXRpbmcgYSBuZXcgYXJyYXkgaWYgdGhlIENJRFIgaXMgbm90IGZvdW5kLiBUaGUgYG10eXBlX2RlbF9jaWRyYCBmdW5jdGlvbiBpcyBub3cgc2hpZnRpbmcgZWxlbWVudHMgaW4tcGxhY2UgYW5kIHVzaW5nIGB3cml0ZV9zZXFjb3VudF9iZWdpbi9lbmRgLCB3aGljaCBpcyBncmVhdCBmb3IgY29uY3VycmVuY3kuIEFuZCBgbXR5cGVfdGVzdF9jaWRyc2AgaXMgdXNpbmcgYHJlYWRfc2VxY291bnRfYmVnaW4vcmV0cnlgIHRvIGhhbmRsZSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMuIFRoaXMgaXMgcmVhbGx5IGltcG9ydGFudC4KCk9rYXksIHNvIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGFyZSB0aGUgbWFjcm9zL3RlbXBsYXRlcyBpbiBgaXBfc2V0X2hhc2hfZ2VuLmhgLiBUaGV5JiMzOTtyZSBpbnN0YW50aWF0ZWQgZm9yIGRpZmZlcmVudCBoYXNoIHR5cGVzIGxpa2UgYGhhc2hfbmV0aWZhY2U0X2FkZGAsIGBoYXNoX25ldGlmYWNlNF9kZWxgLCBhbmQgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgbXR5cGVfYWRkX2NpZHJgIGlzIHVzZWQuIEkgc2VlIGl0JiMzOTtzIHVzZWQgd2l0aGluIGBtdHlwZV9hZGRgIChsaWtlIGBoYXNoX25ldDRfYWRkYCwgYGhhc2hfbmV0cG9ydG5ldDRfYWRkYCwgZXRjLikuIFJpZ2h0LCBzbyBpdCBjYWxscyBgbXR5cGVfYWRkX2NpZHJgLiBJIG5lZWQgdG8gemVybyBpbiBvbiBob3cgdGhlc2UgYXJlIHVzZWQuIExldCBtZSBncmVwIGZvciBgbXR5cGVfYWRkX2NpZHJgIHdpdGhpbiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaGAuIE9rYXksIGxldCYjMzk7cyBnZXQgdG8gd29yayBhbmQgZmluZCB0aGUga2V5IGFyZWFzIHRvIGludmVzdGlnYXRlLiBUaGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgd29ydGggYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduIHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHJlZ3Jlc3Npb25zIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdHlwZV9hZGRfY2lkciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xODg9c3RhdGljIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciB6ZXJvbWFzayA9IHt9O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjE5LSN1bmRlZiBtdHlwZV9leHRfY2xlYW51cFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyMjA6I3VuZGVmIG10eXBlX2FkZF9jaWRyXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMS0jdW5kZWYgbXR5cGVfZGVsX2NpZHJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI2Ny0jZGVmaW5lIG10eXBlX2V4dF9jbGVhbnVwXHRJUFNFVF9UT0tFTihNVFlQRSwgX2V4dF9jbGVhbnVwKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNjg6I2RlZmluZSBtdHlwZV9hZGRfY2lkclx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZF9jaWRyKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNjktI2RlZmluZSBtdHlwZV9kZWxfY2lkclx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbF9jaWRyKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MzM1PXN0cnVjdCBtdHlwZV9yZXNpemVfYWQge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzQ1LS8qKlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDozNDY6ICogbXR5cGVfYWRkX2NpZHIgLSBBZGQgYSBDSURSIGVudHJ5IHRvIGhhc2ggdGFibGUgYm9va2tlZXBpbmdcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzQ3LSAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MzU3PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MzU4Om10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0zNTkte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg4PW10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTExMy1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIElQU0VUX05FVF9DT1VOVDsgaSYjNDM7JiM0MzspXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjExMTQ6XHRcdG10eXBlX2FkZF9jaWRyKHNldCwgaCwgRENJRFJfR0VUKGQtXHUwMDNlY2lkciwgaSksIGkpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xMTE1LSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NDkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgSVBTRVQgVG9rZW4gSW5zdGFudGlhdGlvbioqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgaG93IHRoZXNlIElQU0VUIGZ1bmN0aW9ucyBhcmUgYmVpbmcgYnJvdWdodCB0byBsaWZlLCBhbmQgaXQmIzM5O3MgaGFwcGVuaW5nIHRocm91Z2ggdGhlIGBJUFNFVF9UT0tFTihNVFlQRSwgX2FkZF9jaWRyKWAgbWFjcm8uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGF0IGBNVFlQRWAgcGFyYW1ldGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIGBNVFlQRWAgdmFsdWVzIGFyZSBiZWluZyB1c2VkIGZvciB0aGUgYGhhc2hfbmV0aWZhY2VgIGFuZCBgaGFzaF9uZXRwb3J0bmV0YCB0eXBlcy4gS25vd2luZyB0aG9zZSB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEgc3RydWN0dXJlcyBhbmQgcG90ZW50aWFsIG9wdGltaXphdGlvbnMgYmVpbmcgbGV2ZXJhZ2VkIGR1cmluZyB0aGUgQ0lEUiBhZGRpdGlvbiBwcm9jZXNzLiBJJiMzOTttIGFzc3VtaW5nIHRoZXJlJiMzOTtzIHNvbWUgc29ydCBvZiBzcGVjaWFsaXphdGlvbiBvciBjb25maWd1cmF0aW9uIGhhcHBlbmluZyBhdCBjb21waWxlIHRpbWUgYmFzZWQgb24gYE1UWVBFYCwgYW5kIEkgbmVlZCB0byBzZWUgaWYgdGhhdCBpbXBhY3RzIHBlcmZvcm1hbmNlIG9yIG1lbW9yeSB1c2FnZSBpbiBhbnkgc2lnbmlmaWNhbnQgd2F5LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBkZWZpbml0aW9ucyBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4gVGhpcyBpcyB3aGVyZSB0aGUgZGV2aWwmIzM5O3MgaW4gdGhlIGRldGFpbHMsIHNvIGxldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBNVFlQRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jPTMzPU1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfYml0bWFwOmlwXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jLTM0LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwLmM6MzU6I2RlZmluZSBNVFlQRVx0XHRiaXRtYXBfaXBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jLTM2LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcG1hYy5jPTMzPU1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfYml0bWFwOmlwLG1hY1wmIzM0Oyk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXBtYWMuYy0zNC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcG1hYy5jOjM1OiNkZWZpbmUgTVRZUEVcdFx0Yml0bWFwX2lwbWFjXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXBtYWMuYy0zNi0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfcG9ydC5jPTI3PU1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfYml0bWFwOnBvcnRcJiMzNDspO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX3BvcnQuYy0yOC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9wb3J0LmM6Mjk6I2RlZmluZSBNVFlQRVx0XHRiaXRtYXBfcG9ydFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX3BvcnQuYy0zMC1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmM9NzA9aGFzaF9pcDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwNF9lbGVtICpuZXh0LCBjb25zdCBzdHJ1Y3QgaGFzaF9pcDRfZWxlbSAqZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmMtNzQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmM6NzU6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwNFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jLTc2LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYz0yMDI9aGFzaF9pcDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwNl9lbGVtICpuZXh0LCBjb25zdCBzdHJ1Y3QgaGFzaF9pcDZfZWxlbSAqZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmMtMjA4LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jOjIwOTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXA2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmMtMjEwLSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmM9NzI9aGFzaF9pcG1hYzRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwbWFjNF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYy03Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYzo3ODojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBtYWM0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtNzktI2RlZmluZSBQRlx0XHQ0XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jPTE4MD1oYXNoX2lwbWFjNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYWM2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jLTE4OS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYzoxOTA6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwbWFjNlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jLTE5MS0jZGVmaW5lIFBGXHRcdDZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jPTY5PWhhc2hfaXBtYXJrNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYXJrNF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtNzQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jOjc1OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcG1hcms0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jLTc2LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmM9MjA1PWhhc2hfaXBtYXJrNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYXJrNl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtMjEyLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYzoyMTM6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwbWFyazZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtMjE0LSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jPTc5PWhhc2hfaXBwb3J0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBwb3J0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtODUtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jOjg2OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcHBvcnQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jLTg3LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmM9MjQ5PWhhc2hfaXBwb3J0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBwb3J0Nl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtMjU3LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYzoyNTg6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwcG9ydDZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtMjU5LSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmM9Nzc9aGFzaF9pcHBvcnRpcDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydGlwNF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy04NC0vKiBDb21tb24gZnVuY3Rpb25zICovXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmM6ODU6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwcG9ydGlwNFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jLTg2LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYz0yNDg9aGFzaF9pcHBvcnRpcDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydGlwNl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy0yNTYtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmM6MjU3OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcHBvcnRpcDZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy0yNTgtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM9MTIxPWhhc2hfaXBwb3J0bmV0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBwb3J0bmV0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMTI4LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYzoxMjk6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwcG9ydG5ldDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMTMwLSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM9Mzc5PWhhc2hfaXBwb3J0bmV0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBwb3J0bmV0Nl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMzg3LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYzozODg6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwcG9ydG5ldDZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMzg5LSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX21hYy5jPTYxPWhhc2hfbWFjNF9kYXRhX25leHQoc3RydWN0IGhhc2hfbWFjNF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbWFjLmMtNjUtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX21hYy5jOjY2OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9tYWM0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX21hYy5jLTY3LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MTAyPWhhc2hfbmV0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMTA3LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYzoxMDg6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMTA5LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MjczPWhhc2hfbmV0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0Nl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMjgwLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYzoyODE6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldDZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMjgyLSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MTI4PWhhc2hfbmV0aWZhY2U0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRpZmFjZTRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTMzLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjEzNDojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0aWZhY2U0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTM1LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0zNjI9aGFzaF9uZXRpZmFjZTZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldGlmYWNlNl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zNjktXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6MzcwOiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRpZmFjZTZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zNzEtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM9MTI1PWhhc2hfbmV0bmV0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0bmV0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMTMwLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYzoxMzE6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldG5ldDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMTMyLSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM9MzYzPWhhc2hfbmV0bmV0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0bmV0Nl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzcwLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYzozNzE6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldG5ldDZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzcyLSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0xMTc9aGFzaF9uZXRwb3J0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydDRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0xMjMtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYzoxMjQ6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldHBvcnQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0xMjUtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM9MzM0PWhhc2hfbmV0cG9ydDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMzQyLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6MzQzOiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRwb3J0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMzQ0LSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYz0xMzE9aGFzaF9uZXRwb3J0bmV0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydG5ldDRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzoxMzg6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldHBvcnRuZXQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzktI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9NDI1PWhhc2hfbmV0cG9ydG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnRuZXQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDMzLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM6NDM0OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRwb3J0bmV0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDM1LSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ2OQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipNYWNybyBNYWdpYyBhbmQgSVAgU2V0IE9wZXJhdGlvbnMqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgaG93IHRoZXNlIElQIHNldCBmdW5jdGlvbmFsaXRpZXMgYXJlIGNyZWF0ZWQgaGluZ2VzIG9uIG1hY3Jvcy4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYXBwcm9hY2gsIHZlcnkgY29tbW9uIGZvciBnZW5lcmF0aW5nIHJlcGV0aXRpdmUgY29kZSBvciBjb25maWd1cmF0aW9ucy4gTXkgcHJpbWFyeSBjb25jZXJuLCB0aGVyZWZvcmUsIGlzIHdoZXJlIHRoZXNlIG1hY3JvcyBhcmUgZGVmaW5lZCBhbmQgaG93IHRoZXkgYXJlIHVzZWQsIGJlY2F1c2UgKnRoYXQqIGlzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBsb2dpYyB3aWxsIHJlc2lkZS4KCkZyb20gbXkgdW5kZXJzdGFuZGluZywgdGhlIHJlYWwgbWVhdCBvZiB0aGUgSVAgc2V0IG9wZXJhdGlvbiwgdGhlIHBhcnRzIHRoYXQgZ2V0IGV4cG9ydGVkIGFuZCByZWdpc3RlcmVkIHdpdGggdGhlIGtlcm5lbCwgYXJlIHRoZSBgaXBfc2V0X3R5cGVgIG9wZXJhdGlvbnMgdGhlbXNlbHZlcy4gVGhhdCYjMzk7cyB0aGUgdml0YWwgaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBzZXRzLiBTbywgdGhlIHF1ZXN0aW9uIGlzIG5vdCAqd2hhdCogYXJlIHdlIHdvcmtpbmcgd2l0aCwgYnV0IHJhdGhlciAqaG93KiBhcmUgd2UgY3JlYXRpbmcgdGhlIGlwX3NldF90eXBlIG9iamVjdHMuCgpJJiMzOTtsbCBkaXZlIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNgIGZpbGUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBjb25jcmV0ZSBleGFtcGxlIG9mIGhvdyB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3Mgd29ya3MuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgbWFjcm9zIHRyYW5zbGF0ZSBpbnRvIHRoZXNlIHJlZ2lzdGVyZWQgZnVuY3Rpb25zIGFuZCB3aGF0IHRoZSBjcml0aWNhbCBgaXBfc2V0X3R5cGVgIHN0cnVjdHVyZSBsb29rcyBsaWtlIGluIHByYWN0aWNlLiBPbmNlIEkgdW5kZXJzdGFuZCB0aGF0LCBJIGNhbiBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb25hbGl0eSBtb3JlIGdlbmVyYWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfdHlwZV9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9NTExPWhhc2hfbmV0aWZhY2VfaW5pdCh2b2lkKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTUxMi17XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6NTEzOlx0cmV0dXJuIGlwX3NldF90eXBlX3JlZ2lzdGVyKFx1MDAyNmhhc2hfbmV0aWZhY2VfdHlwZSk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNTE0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTk2MQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkV4YW1pbmluZyB0aGUgYGhhc2hfbmV0aWZhY2VfdHlwZWAgT3BlcmF0aW9ucyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhpcyBgaGFzaF9uZXRpZmFjZV90eXBlYCBzdHJ1Y3R1cmUsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEga2V5IGRhdGEgc3RydWN0dXJlIGhhbmRsaW5nIG5ldHdvcmsgaW50ZXJmYWNlIHR5cGVzLiBUaGUgY29yZSBvcGVyYXRpb25zIGRlZmluZWQgYXJlIGBrYWR0YCwgYHVhZHRgLCBgYWRkYCwgYGRlbGAsIGFuZCBgdGVzdGAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hhdCBzcGVjaWZpYyBmdW5jdGlvbnMgYXJlICpib3VuZCogdG8gZWFjaCBvZiB0aGVzZSBvcGVyYXRpb25zPyBga2FkdGAgYW5kIGB1YWR0YCBzdWdnZXN0IGtlcm5lbCBhbmQgdXNlci1zcGFjZSBvcGVyYXRpb25zIHJlc3BlY3RpdmVseSwgb24gdGhlIHR5cGUgdGFibGUsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCBlYWNoIGxldmVsLiAmIzM5O0FkZCYjMzk7IGFuZCAmIzM5O0RlbCYjMzk7IG9mIGNvdXJzZSwgYXJlIHRhYmxlIG1hbmFnZW1lbnQgb3BlcmF0aW9ucy4gSSByZWFsbHkgbmVlZCB0byBkcmlsbCBkb3duIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGV5IGRvLiBBbmQgbmF0dXJhbGx5LCAmIzM5O3Rlc3QmIzM5OyBpbmRpY2F0ZXMgc29tZSBmb3JtIG9mIHZhbGlkYXRpb24gb3IgY2hlY2tpbmcgb24gdGhlIGRhdGEuIEkgbmVlZCB0byBub3cgZXhhbWluZSB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBlYWNoIG9mIHRob3NlIGZ1bmN0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBtZWNoYW5pY3Mgb2YgdGhpcyBtb2R1bGUuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgaW50ZXJlc3Rpbmcgc3R1ZmYgaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhc2hfbmV0aWZhY2VfdHlwZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9NDE2PWhhc2hfbmV0aWZhY2U2X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00NjgtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6NDY5OnN0YXRpYyBzdHJ1Y3QgaXBfc2V0X3R5cGUgaGFzaF9uZXRpZmFjZV90eXBlIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNDcwLVx0Lm5hbWVcdFx0PSBcJiMzNDtoYXNoOm5ldCxpZmFjZVwmIzM0Oyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9NTExPWhhc2hfbmV0aWZhY2VfaW5pdCh2b2lkKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTUxMi17XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6NTEzOlx0cmV0dXJuIGlwX3NldF90eXBlX3JlZ2lzdGVyKFx1MDAyNmhhc2hfbmV0aWZhY2VfdHlwZSk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNTE0LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9NTE3PWhhc2hfbmV0aWZhY2VfZmluaSh2b2lkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy01MTktXHRyY3VfYmFycmllcigpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjUyMDpcdGlwX3NldF90eXBlX3VucmVnaXN0ZXIoXHUwMDI2aGFzaF9uZXRpZmFjZV90eXBlKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy01MjEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjcwNQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBpcF9zZXRfaGFzaF9uZXRpZmFjZWAgQ29kZSoqCgpPa2F5LCBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYGlwX3NldF9oYXNoX25ldGlmYWNlYCBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDQ2OSBvZiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jYC4gTXkgaHVuY2ggaXMgdGhhdCB0aGVyZSYjMzk7cyBzb21ldGhpbmcgc3BlY2lmaWMgdGhlcmUgSSYjMzk7bSBsb29raW5nIGZvciAtIG1heWJlIHJlbGF0ZWQgdG8gYSByZWNlbnQgYnVnIHJlcG9ydCBvciBwZXJmb3JtYW5jZSBpc3N1ZSBJJiMzOTt2ZSBiZWVuIHRyYWNraW5nLCBvciBwZXJoYXBzIEkmIzM5O20gdHJ5aW5nIHRvIG9wdGltaXplIGEgc3BlY2lmaWMgZmxvdy4gVGltZSB0byBkcmlsbCBkb3duLiBJJiMzOTttIHByb2JhYmx5IGxvb2tpbmcgZm9yIHRoZSBmdW5jdGlvbiB3aGVyZSB0aGUgaW50ZXJmYWNlIG9yIG5ldHdvcmsgYWRkcmVzcyBoYXNoaW5nIGlzIGltcGxlbWVudGVkLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUga2V5IGlzIGNvbnN0cnVjdGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGhhc2ggdmFsdWVzIGFyZSBnZW5lcmF0ZWQgZm9yIGRpZmZlcmVudCBuZXRpZmFjZSBrZXlzLiBLbm93aW5nIGhvdyB0aGlzIHBhcnRpY3VsYXIgaGFzaCBzZXQgdHlwZSB3b3JrcyBpbiByZWxhdGlvbiB0byBpdHMga2V5IGNvbnN0cnVjdGlvbiBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgYmVoYXZpb3IgYXQgc2NhbGUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZyBpbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDYwOlx0XHRcdFx0ZS53aWxkY2FyZCA9IDE7XG4gNDYxOlx0XHR9XG4gNDYyOlx0XG4gNDYzOlx0XHRyZXQgPSBhZHRmbihzZXQsIFx1MDAyNmUsIFx1MDAyNmV4dCwgXHUwMDI2ZXh0LCBmbGFncyk7XG4gNDY0Olx0XG4gNDY1Olx0XHRyZXR1cm4gaXBfc2V0X2Vub21hdGNoKHJldCwgZmxhZ3MsIGFkdCwgc2V0KSA/IC1yZXQgOlxuIDQ2NjpcdFx0ICAgICAgIGlwX3NldF9lZXhpc3QocmV0LCBmbGFncykgPyAwIDogcmV0O1xuIDQ2NzpcdH1cbiA0Njg6XHRcbiA0Njk6XHRzdGF0aWMgc3RydWN0IGlwX3NldF90eXBlIGhhc2hfbmV0aWZhY2VfdHlwZSBfX3JlYWRfbW9zdGx5ID0ge1xuIDQ3MDpcdFx0Lm5hbWVcdFx0PSBcJiMzNDtoYXNoOm5ldCxpZmFjZVwmIzM0OyxcbiA0NzE6XHRcdC5wcm90b2NvbFx0PSBJUFNFVF9QUk9UT0NPTCxcbiA0NzI6XHRcdC5mZWF0dXJlc1x0PSBJUFNFVF9UWVBFX0lQIHwgSVBTRVRfVFlQRV9JRkFDRSB8XG4gNDczOlx0XHRcdFx0ICBJUFNFVF9UWVBFX05PTUFUQ0gsXG4gNDc0Olx0XHQuZGltZW5zaW9uXHQ9IElQU0VUX0RJTV9UV08sXG4gNDc1Olx0XHQuZmFtaWx5XHRcdD0gTkZQUk9UT19VTlNQRUMsXG4gNDc2Olx0XHQucmV2aXNpb25fbWluXHQ9IElQU0VUX1RZUEVfUkVWX01JTixcbiA0Nzc6XHRcdC5yZXZpc2lvbl9tYXhcdD0gSVBTRVRfVFlQRV9SRVZfTUFYLFxuIDQ3ODpcdFx0LmNyZWF0ZV9mbGFnc1tJUFNFVF9UWVBFX1JFVl9NQVhdID0gSVBTRVRfQ1JFQVRFX0ZMQUdfQlVDS0VUU0laRSxcbiA0Nzk6XHRcdC5jcmVhdGVcdFx0PSBoYXNoX25ldGlmYWNlX2NyZWF0ZSxcbiA0ODA6XHRcdC5jcmVhdGVfcG9saWN5XHQ9IHtcbiA0ODE6XHRcdFx0W0lQU0VUX0FUVFJfSEFTSFNJWkVdXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4gNDgyOlx0XHRcdFtJUFNFVF9BVFRSX01BWEVMRU1dXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4gNDgzOlx0XHRcdFtJUFNFVF9BVFRSX0lOSVRWQUxdXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4gNDg0Olx0XHRcdFtJUFNFVF9BVFRSX0JVQ0tFVFNJWkVdXHQ9IHsgLnR5cGUgPSBOTEFfVTggfSxcbiA0ODU6XHRcdFx0W0lQU0VUX0FUVFJfUkVTSVpFXVx0PSB7IC50eXBlID0gTkxBX1U4ICB9LFxuIDQ4NjpcdFx0XHRbSVBTRVRfQVRUUl9QUk9UT11cdD0geyAudHlwZSA9IE5MQV9VOCB9LFxuIDQ4NzpcdFx0XHRbSVBTRVRfQVRUUl9USU1FT1VUXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIDQ4ODpcdFx0XHRbSVBTRVRfQVRUUl9DQURUX0ZMQUdTXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIDQ4OTpcdFx0fSxcbiA0OTA6XHRcdC5hZHRfcG9saWN5XHQ9IHtcbiA0OTE6XHRcdFx0W0lQU0VUX0FUVFJfSVBdXHRcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcbiA0OTI6XHRcdFx0W0lQU0VUX0FUVFJfSVBfVE9dXHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gNDkzOlx0XHRcdFtJUFNFVF9BVFRSX0lGQUNFXVx0PSB7IC50eXBlID0gTkxBX05VTF9TVFJJTkcsXG4gNDk0Olx0XHRcdFx0XHRcdCAgICAubGVuICA9IElGTkFNU0laIC0gMSB9LFxuIDQ5NTpcdFx0XHRbSVBTRVRfQVRUUl9DQURUX0ZMQUdTXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIDQ5NjpcdFx0XHRbSVBTRVRfQVRUUl9DSURSXVx0PSB7IC50eXBlID0gTkxBX1U4IH0sXG4gNDk3Olx0XHRcdFtJUFNFVF9BVFRSX1RJTUVPVVRdXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4gNDk4Olx0XHRcdFtJUFNFVF9BVFRSX0xJTkVOT11cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiA0OTk6XHRcdFx0W0lQU0VUX0FUVFJfQllURVNdXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG4gNTAwOlx0XHRcdFtJUFNFVF9BVFRSX1BBQ0tFVFNdXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG4gNTAxOlx0XHRcdFtJUFNFVF9BVFRSX0NPTU1FTlRdXHQ9IHsgLnR5cGUgPSBOTEFfTlVMX1NUUklORyxcbiA1MDI6XHRcdFx0XHRcdFx0ICAgIC5sZW4gID0gSVBTRVRfTUFYX0NPTU1FTlRfU0laRSB9LFxuIDUwMzpcdFx0XHRbSVBTRVRfQVRUUl9TS0JNQVJLXVx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxuIDUwNDpcdFx0XHRbSVBTRVRfQVRUUl9TS0JQUklPXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIDUwNTpcdFx0XHRbSVBTRVRfQVRUUl9TS0JRVUVVRV1cdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcbiA1MDY6XHRcdH0sXG4gNTA3Olx0XHQubWVcdFx0PSBUSElTX01PRFVMRSxcbiA1MDg6XHR9O1xuIDUwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDA4MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBJUCBTZXQgSGFzaCBDcmVhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBJUCBzZXRzIGFyZSBjcmVhdGVkLCBzcGVjaWZpY2FsbHkgdGhlIGhhc2ggaW1wbGVtZW50YXRpb24uICBJIGtub3cgdGhlIGNvcmUgZnVuY3Rpb25zIGFyZW4mIzM5O3QgZGlyZWN0bHkgd3JpdHRlbiBvdXQsIHRoZXkmIzM5O3JlIGdlbmVyYXRlZCB2aWEgbWFjcm9zLiBUaGUga2V5IGhlcmUgaXMgdG8gZmluZCB0aGUgbWFjcm8gZGVmaW5pdGlvbnMuIFRoZSBwbGFjZSB0byBzdGFydCBpcyBgaXBfc2V0X2hhc2hfZ2VuLmhgLCB0aGF0JiMzOTtzIHdoZXJlIHRoZSBtYWdpYyBwcm9iYWJseSBoYXBwZW5zLiBOb3csIHRoZSBtYWluIGNyZWF0aW9uIGZ1bmN0aW9uIGlzIGBoYXNoX25ldGlmYWNlX2NyZWF0ZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyAqaXQqIHdvcmtzIGFuZCBob3cgdGhhdCBtYWNybyBnZW5lcmF0aW9uIHByb2Nlc3MgYWZmZWN0cyBpdC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhc2hfbmV0aWZhY2VfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTQ2OT1zdGF0aWMgc3RydWN0IGlwX3NldF90eXBlIGhhc2hfbmV0aWZhY2VfdHlwZSBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00NzgtXHQuY3JlYXRlX2ZsYWdzW0lQU0VUX1RZUEVfUkVWX01BWF0gPSBJUFNFVF9DUkVBVEVfRkxBR19CVUNLRVRTSVpFLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjQ3OTpcdC5jcmVhdGVcdFx0PSBoYXNoX25ldGlmYWNlX2NyZWF0ZSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00ODAtXHQuY3JlYXRlX3BvbGljeVx0PSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDc4CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqRGlzc2VjdGluZyB0aGUgYGhhc2hfbmV0aWZhY2VfY3JlYXRlYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBoYXNoX25ldGlmYWNlX2NyZWF0ZWAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBsb29raW5nIGEgbGl0dGxlLi4uZ2VuZXJhdGVkLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgcHJvYmFibHkgY29taW5nIGZyb20gc29tZXRoaW5nIGxpa2UgYSBtYWNybywgcHJvYmFibHkgaW4gdGhlIGBpcF9zZXRfaGFzaF9nZW4uaGAgZmlsZS4gSSYjMzk7dmUgZ290IGEgZmVlbGluZyBpdCYjMzk7cyB0aGUgYElQU0VUX1RPS0VOKEhUWVBFLCBfY3JlYXRlKWAgbWFjcm8gdGhhdCYjMzk7cyBkb2luZyB0aGUgZGlydHkgd29yay4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gVGltZSB0byBjcmFjayBvcGVuIGBpcF9zZXRfaGFzaF9nZW4uaGAgYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IHVuZGVyIHRoZSBob29kIG9mIGBJUFNFVF9UT0tFTihIVFlQRSwgX2NyZWF0ZSlgLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIHRoaW5nIGlzIHB1dCB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVBTRVRfVE9LRU5cXChIVFlQRSwgX2NyZWF0ZVxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xNjUyPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTY1MzpJUFNFVF9UT0tFTihIVFlQRSwgX2NyZWF0ZSkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaXBfc2V0ICpzZXQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2NTQtXHRcdFx0ICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHUzMiBmbGFncylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4ODIKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHZW5lcmF0ZWQgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdlbmVyYXRlZCB0aGVzZSBmdW5jdGlvbnM6IGBoYXNoX25ldGlmYWNlNF9hZGRgLCBgaGFzaF9uZXRpZmFjZTRfZGVsYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCBgaGFzaF9uZXRpZmFjZTZfYWRkYCwgYGhhc2hfbmV0aWZhY2U2X2RlbGAsIGBoYXNoX25ldGlmYWNlNl90ZXN0YC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlbiwgd2UgaGF2ZSBgaGFzaF9uZXRwb3J0bmV0NF9hZGRgLCBgaGFzaF9uZXRwb3J0bmV0NF9kZWxgLCBgaGFzaF9uZXRwb3J0bmV0NF90ZXN0YCwgYGhhc2hfbmV0cG9ydG5ldDZfYWRkYCwgYGhhc2hfbmV0cG9ydG5ldDZfZGVsYCwgYW5kIGBoYXNoX25ldHBvcnRuZXQ2X3Rlc3RgLiBSaWdodCwgYWxsIHRoZSBzdGFuZGFyZCBoYXNoIGZ1bmN0aW9ucyBmb3IgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBwb3J0cyBhY3Jvc3MgSVB2NCBhbmQgSVB2Ni4KCkJ1dCB3YWl0IGEgbWludXRlLCBJIHNlZSBgbXR5cGVfYWRkX2NpZHJgIGFuZCBgbXR5cGVfZGVsX2NpZHJgIGFyZSBpbiBgaXBfc2V0X2hhc2hfZ2VuLmhgLCBtYXJrZWQgYXMgc3RhdGljIGlubGluZSBvciBzdGF0aWMuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayDigJMgYXJlIHRoZXkgKmV4cG9ydGVkKiBvciBqdXN0IGxvY2FsPyBIbW0sIHllYWgsIHRoZXkmIzM5O3JlIGRlZmluaXRlbHkgc3RhdGljLiBPa2F5LCBzbyB0aGVzZSBhcmUgaW50ZXJuYWwgaGVscGVycy4KCk5vdywgaWYgSSByZWNhbGwgY29ycmVjdGx5LCB0aGUgZnVuY3Rpb25zIHRoYXQgKnVzZSogdGhlc2Ugc3RhdGljIGhlbHBlcnMgYXJlIGBtdHlwZV9hZGRgIGFuZCBgbXR5cGVfZGVsYC4gSG1tLCByaWdodC4uLiBhbmQgaXMgYG10eXBlX2FkZGAgZ2VuZXJhdGVkIGludG8gc29tZXRoaW5nIGxpa2UgYGhhc2hfbmV0aWZhY2U0X2FkZGAuLi4gSSBuZWVkIHRvIGJlIHN1cmUuIExldCBtZSB0cmFjZSBiYWNrIGFuZCBjaGVjayBob3cgZXhhY3RseSBgbXR5cGVfYWRkYCBpcyBkZWZpbmVkIGluIHJlbGF0aW9uIHRvIHRoZSBjb2RlIGdlbmVyYXRpb24uIFRoYXTigJlzIHRoZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210eXBlX2FkZFxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NDA9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo3NDE6bXR5cGVfYWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTc0Mi1cdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NTI9bXR5cGVfcmVzaXplKHN0cnVjdCBpcF9zZXQgKnNldCwgYm9vbCByZXRyaWVkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTA0LVx0XHRpZiAoeC1cdTAwM2VhZCA9PSBJUFNFVF9BREQpIHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6OTA1Olx0XHRcdG10eXBlX2FkZChzZXQsIFx1MDAyNngtXHUwMDNlZCwgXHUwMDI2eC1cdTAwM2VleHQsIFx1MDAyNngtXHUwMDNlbWV4dCwgeC1cdTAwM2VmbGFncyk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNi1cdFx0fSBlbHNlIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTk4Nz1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjk4ODptdHlwZV9hZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTg5LVx0ICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTg5NQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyB0aGlzIGBtdHlwZV9hZGRgIE1hY3JvKioKCk9rYXksIHNvIEkgc2VlIGBtdHlwZV9hZGRgIGFuZCBteSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMsICYjMzQ7SG1tLCB3aGF0JiMzOTtzIGdvaW5nIG9uIGhlcmU/JiMzNDsgSXQmIzM5O3MgY2xlYXJseSBhIG1hY3JvLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGV4cGFuc2lvbi4gVGhlIHRleHQgc3RhdGVzIGBtdHlwZV9hZGRgIGlzIGRlZmluZWQgYXMgYElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAuIE15IGluc3RpbmN0IGlzIHRvIGNvbmZpcm0gdGhhdCBleHBhbnNpb24gZXhpc3RzIHdpdGhpbiB0aGUgY29kZS4gTGV0IG1lIHF1aWNrbHkgc2NhbiBmb3IgdGhhdCBgI2RlZmluZSBtdHlwZV9hZGQgSVBTRVRfVE9LRU4oTVRZUEUsIF9hZGQpYCBzdGF0ZW1lbnQuIFRoYXQmIzM5O3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgd2hhdCBgbXR5cGVfYWRkYCBhY3R1YWxseSByZXByZXNlbnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IG1hY3JvIHN1YnN0aXR1dGlvbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBtdHlwZV9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI2Ny0jZGVmaW5lIG10eXBlX2V4dF9jbGVhbnVwXHRJUFNFVF9UT0tFTihNVFlQRSwgX2V4dF9jbGVhbnVwKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNjg6I2RlZmluZSBtdHlwZV9hZGRfY2lkclx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZF9jaWRyKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNjktI2RlZmluZSBtdHlwZV9kZWxfY2lkclx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbF9jaWRyKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjc5LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyODA6I2RlZmluZSBtdHlwZV9hZGRcdFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9hZGQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI4MS0jZGVmaW5lIG10eXBlX2RlbFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY0MTgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4KCioqRGVjb2RpbmcgdGhlIGBJUFNFVF9UT0tFTmAgTWFjcm8qKgoKUmlnaHQsIHNvIGBtdHlwZV9hZGRgIGlzIGRlZmluZWQgYXMgYElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAuIFRoYXQmIzM5O3MgdGhlIGtleS4gU28sIGZvciB0aGUgYGhhc2hfbmV0aWZhY2U0YCB0eXBlLCB0aGUgY29ycmVzcG9uZGluZyAmIzM0O2FkZCYjMzQ7IGZ1bmN0aW9uIG11c3QgYmUgYGhhc2hfbmV0aWZhY2U0X2FkZGAuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEFuZCBieSBleHRlbnNpb24sIGBoYXNoX25ldHBvcnRuZXQ0YCB3b3VsZCB0aGVuIGhhdmUgaXRzICYjMzQ7YWRkJiMzNDsgZnVuY3Rpb24gYXMgYGhhc2hfbmV0cG9ydG5ldDRfYWRkYC4gU2ltcGxlLCBjb25zaXN0ZW50IG5hbWluZyBjb252ZW50aW9uLCBub3RoaW5nIHVuZXhwZWN0ZWQgaGVyZS4gSG9sZCBvbiB0aG91Z2gsIEkgc2VlIHRoaXMgcGF0Y2ggYWxzbyB0b3VjaGVzIGBtdHlwZV90ZXN0X2NpZHJzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBwaWVjZSBvZiBpdCwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBvbmUmIzM5O3MgYWxsIGFib3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIG10eXBlX3Rlc3RfY2lkcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI4MS0jZGVmaW5lIG10eXBlX2RlbFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjgyOiNkZWZpbmUgbXR5cGVfdGVzdF9jaWRyc1x0SVBTRVRfVE9LRU4oTVRZUEUsIF90ZXN0X2NpZHJzKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yODMtI2RlZmluZSBtdHlwZV90ZXN0XHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfdGVzdClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY5MDMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBJUCBTZXQgSGFzaCBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBzZWVpbmcgYSBwYXR0ZXJuIHdpdGggdGhlc2UgYGhhc2hfbmV0aWZhY2U0YCBmdW5jdGlvbnM6IGBoYXNoX25ldGlmYWNlNF90ZXN0X2NpZHJzYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCBgaGFzaF9uZXRpZmFjZTRfYWRkYCwgYW5kIGBoYXNoX25ldGlmYWNlNF9kZWxgLiBUaGV5JiMzOTtyZSBhbGwgdmFyaWF0aW9ucyBvbiB0ZXN0aW5nLCBhZGRpbmcsIGFuZCBkZWxldGluZyBuZXR3b3JrIGludGVyZmFjZXMsIGFuZCB1c2luZyBDSURScywgcHJlc3VtYWJseSBmb3IgSVB2NC4gQW5kLCBpdCBsb29rcyBsaWtlIHRoaXMgc2FtZSBuYW1pbmcgc2NoZW1lIGlzIGFwcGxpZWQgdG8gdGhlIGBuZXRwb3J0bmV0NGAsIGBuZXQ0YCwgYG5ldG5ldDRgLCBhbmQgYG5ldHBvcnQ0YCB2YXJpYW50cy4gSXQmIzM5O3MgYSBjbGVhbiBhbmQgY29uc2lzdGVudCBhcHByb2FjaCwgZ29vZC4KCk5vdywgaG9sZCBvbi4uLiBgSVBfU0VUX0hBU0hfV0lUSF9ORVRTYCBpcyBkZWZpbmVkIGZvciAqbXVsdGlwbGUqIGhhc2ggdHlwZXM/IFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoaWNoIG9uZXMsIHNwZWNpZmljYWxseSwgYXJlIGxldmVyYWdpbmcgdGhpcy4gSSBuZWVkIHRvIGNoZWNrIHdoaWNoIHNwZWNpZmljIGhhc2ggdHlwZXMgdXRpbGl6ZSB0aGlzIG1hY3JvLiBUaW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIgYW5kIHNlZSB3aGljaCBzcGVjaWZpYyBoYXNoIHR5cGVzIHJlcXVpcmUgdGhhdCBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM9MzY9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOmlwLHBvcnQsbmV0XCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTQ0LSAqL1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYzo0NTojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU19QQUNLRURcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtNDYtI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX1BST1RPXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jOjQ3OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTQ4LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MzM9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOm5ldFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0zNi0jZGVmaW5lIEhUWVBFXHRcdGhhc2hfbmV0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjM3OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTM4LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0zNT1NT0RVTEVfQUxJQVMoXCYjMzQ7aXBfc2V0X2hhc2g6bmV0LGlmYWNlXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzgtI2RlZmluZSBIVFlQRVx0XHRoYXNoX25ldGlmYWNlXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6Mzk6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00MC0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTVVMVElcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTMyPU1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfaGFzaDpuZXQsbmV0XCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM1LSNkZWZpbmUgSFRZUEVcdFx0aGFzaF9uZXRuZXRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MzY6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzctI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVE1BU0tcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0zNT1NT0RVTEVfQUxJQVMoXCYjMzQ7aXBfc2V0X2hhc2g6bmV0LHBvcnRcJiMzNDspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTM5LSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6NDA6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTQxLVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTQ1LSAqL1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6NDY6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNfUEFDS0VEXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy00Ny1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYz0zMj1NT0RVTEVfQUxJQVMoXCYjMzQ7aXBfc2V0X2hhc2g6bmV0LHBvcnQsbmV0XCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0zNi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jOjM3OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0zOC0jZGVmaW5lIElQU0VUX05FVF9DT1VOVCAyXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjQyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBIYXNoIFNldCBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGVzZSBoYXNoIHNldCB0eXBlcyB0aGF0IHV0aWxpemUgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2A6IHNwZWNpZmljYWxseSBgaGFzaF9pcHBvcnRuZXRgLCBgaGFzaF9uZXRgLCBgaGFzaF9uZXRpZmFjZWAsIGBoYXNoX25ldG5ldGAsIGBoYXNoX25ldHBvcnRgLCBhbmQgYGhhc2hfbmV0cG9ydG5ldGAuIEl0IGxvb2tzIGxpa2UgdGhlIHByaW1hcnkgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBgI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVDBgIG1hY3JvIGZyb20gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2h5PyYjMzQ7IFdoYXQmIzM5O3MgdGhlIGRyaXZpbmcgZm9yY2UgYmVoaW5kIHRoaXMgcmVtb3ZhbD8KCkFoYSwgSSBzZWUgdGhhdCBgSVBfU0VUX0hBU0hfV0lUSF9ORVQwYCB3YXMgbGlua2VkIHRvIHRoZSBoYW5kbGluZyBvZiBgLzBgIG5ldHdvcmtzLiBTbywgdGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaG93IGFyZSBgLzBgIG5ldHdvcmtzIGJlaW5nIGhhbmRsZWQgbm93PyBJcyBpdCBuYXRpdmVseSBzdXBwb3J0ZWQsIG9yIGhhcyB0aGUgbG9naWMgY2hhbmdlZCBzaWduaWZpY2FudGx5PwoKTGV0IG1lIGxvb2sgYXQgdGhlIGNvbW1lbnRzLCBhcyB0aGV5IG9mdGVuIHByb3ZpZGUgdGhlIGNsdWUgaGVyZS4gQWgsIGhlcmUgaXQgaXM6IHRoZSBjb21tZW50IG1lbnRpb25zIHRoZSBgY2lkcmAgZmllbGQgaW4gYHN0cnVjdCBuZXRfcHJlZml4YCBhbmQgaXRzIHJvbGUgaW4gJiMzNDtuZXR3b3JrIGNpZHIgc2l6ZSBib29rIGtlZXBpbmcmIzM0Oy4gVGhlIGNvZGUgc2F5cyB0aGUgYGNpZHJgIGlzIG5vdyB1c2luZyBgdTMyIGNpZHI6ODtgIGluc3RlYWQgb2YgYSBzaW1wbGUgYHU4IGNpZHI7YCBUaGlzIHN1Z2dlc3RzIGEgY2hhbmdlIGluIGhvdyB0aGlzIGNpZHIgdmFsdWUgaXMgc3RvcmVkLiBQcmV2aW91c2x5LCB0aGUgY29tbWVudCBzYWlkIHRoZSBjaWRyIHZhbHVlIHdhcyBgcmVhbCBjaWRyICYjNDM7IDFgIHRvIGFjY291bnQgZm9yIGAvMGAgbmV0d29ya3MuIAoKT2theSwgaWYgYGNpZHJgIGlzIHN0aWxsIGByZWFsIGNpZHIgJiM0MzsgMWAsIHRoZW4gdGhlIHJlbW92YWwgb2YgYElQX1NFVF9IQVNIX1dJVEhfTkVUMGAgbWlnaHQgbm90IG1ha2Ugc2Vuc2UuIEJ1dCB0aGUgcGF0Y2ggKmRvZXMqIHJlbW92ZSBpdC4gU28sIHRoYXQgbWVhbnMgaXQmIzM5O3MgcHJvYmFibHkgbm8gbG9uZ2VyIHRoZSBjYXNlLiBJIG5lZWQgdG8gZGlnIGRlZXBlci4gV2FpdCBhIG1pbnV0ZS4uLiB0aGUgcGF0Y2ggYWxzbyByZW1vdmVzIGBJUF9TRVRfSEFTSF9XSVRIX05FVDBgIGZyb20gdGhvc2Ugc3BlY2lmaWMgZmlsZXMuIFdoZXJlIGVsc2UgaXMgaXQgdXNlZD8gSSYjMzk7bGwgY2hlY2sgYGlwX3NldF9oYXNoX2dlbi5oYCBiZWNhdXNlIHRoYXQmIzM5O3MgYSBjZW50cmFsIGhlYWRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9TRVRfSEFTSF9XSVRIX05FVDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MTA3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIGNvbnNjaW91c25lc3M6CgoqKkludmVzdGlnYXRpbmcgYSBSZW1vdmVkIFN5bWJvbCoqCgpBbHJpZ2h0LCB0aGlzIGlzIGludGVyZXN0aW5nLiBUaGUgY29kZSBJIHdhcyByZXZpZXdpbmcgc2VlbXMgdG8gaGF2ZSBjb21wbGV0ZWx5IHJlbW92ZWQgYElQX1NFVF9IQVNIX1dJVEhfTkVUMGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGdvbmUuLi4gYnV0ICp3aHkqPyYjMzQ7IExldCYjMzk7cyBtYWtlIHN1cmUgdGhpcyB3YXNuJiMzOTt0IHNvbWUgaW5hZHZlcnRlbnQgZGVsZXRpb24gdGhhdCBicmVha3Mgc29tZXRoaW5nIGVsc2UuIEZpcnN0LCBsZXQmIzM5O3MgcnVuIGEgcXVpY2sgZ2xvYmFsIHNlYXJjaC4gSSYjMzk7bGwgdXNlIGBncmVwYCB0byBzY2FuIHRoZSBjb2RlYmFzZSBmb3IgYW55IHJlbWFpbmluZyB1c2VzIG9mIHRoYXQgc3ltYm9sLiAqUmlnaHQqLCBpdCYjMzk7cyBnb29kIHRoYXQgdGhlIGBncmVwYCByZXR1cm5lZCBubyBtYXRjaGVzLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGlzdG9yeSBvZiB0aGlzLiBXYXMgdGhpcyBzeW1ib2wgb25seSBldmVyIHVzZWQgaW4gdGhvc2Ugc3BlY2lmaWMgZmlsZXMsIG9yIHdhcyBpdCB1c2VkIGluIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlIGF0IHNvbWUgcG9pbnQgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZD8gTGV0JiMzOTtzIGNoZWNrIHRoZSBoaXN0b3J5IG9mIGBpcF9zZXRfaGFzaF9nZW4uaGAgdG8gc2VlIGlmIHRoZSBzeW1ib2wgd2FzIHJlbW92ZWQgaW4gYSBwcmlvciBjb21taXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVBfU0VUX0hBU0hfV0lUSF9ORVQwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQzOAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBSZW1vdmFsIG9mIGBJUF9TRVRfSEFTSF9XSVRIX05FVDBgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgbWFjcm8sIGBJUF9TRVRfSEFTSF9XSVRIX05FVDBgLCB3YXMgdXNlZCBiZWZvcmUgaXQgd2FzIHJpcHBlZCBvdXQgaW4gdGhpcyBwYXRjaC4gSSBjYW4mIzM5O3QganVzdCBgZ3JlcGAgdGhlIGN1cnJlbnQgY29kZWJhc2UgZm9yIGl0LCBiZWNhdXNlLCB3ZWxsLCBpdCYjMzk7cyAqZ29uZSouICBSaWdodCwgb2YgY291cnNlLCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgcGFyZW50IGNvbW1pdCBvciB0aGUgcGF0Y2ggZGlmZiBpdHNlbGYuIExldCYjMzk7cyBzZWUuLi4gQWgsIGhlcmUgaXQgaXMgaW4gdGhlIGRpZmY6CgpgYGBjCi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMApgYGAKClNvLCBpdCBsb29rcyBsaWtlIGl0IHdhcyByZW1vdmVkIGZyb20gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IHdhcyB0aGlzIHVzZWQgYW55d2hlcmUgKmVsc2UqPyBJIHNob3VsZCBjaGVjayBgaXBfc2V0X2hhc2hfZ2VuLmhgIC0gdGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxpa2VseSBwbGFjZSBmb3IgYSBjZW50cmFsIGRlZmluaXRpb24gb3IgdXNhZ2UuIFRpbWUgdG8gZGlnIGludG8gdGhhdCBoZWFkZXIgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9TRVRfSEFTSF9XSVRIX05FVDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODIwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBJUCBTZXQgQ29kZSoqCgpPa2F5LCBzbyBJIGNhbiYjMzk7dCBqdXN0IGBncmVwYCBmb3IgdGhlIHNwZWNpZmljIGNvZGUgSSYjMzk7bSBhZnRlciBiZWNhdXNlIGl0JiMzOTtzIGxpa2VseSBub3QgZXZlbiBwcmVzZW50IGluIHRoZSBjdXJyZW50IHZpZXcgb2YgdGhlIGZpbGUgc3lzdGVtIHRyZWUuIFRoYXQmIzM5O3Mgbm90IGEgbWFqb3Igc2V0YmFjaywgdGhvdWdoLiBUaGUga2V5IGZvY3VzIGhlcmUgaXMgb24gdGhlIGZ1bmN0aW9ucyBgbXR5cGVfYWRkX2NpZHJgLCBgbXR5cGVfZGVsX2NpZHJgLCBhbmQgYG10eXBlX3Rlc3RfY2lkcnNgLiBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRob3NlIGFyZSB0aGUgb25lcyB0aGF0IGhhdmUgY2hhbmdlZC4gTm93LCB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IGluc3RhbnRpYXRlZCBmb3IgdmFyaW91cyBkaWZmZXJlbnQgaGFzaCB0eXBlcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFVsdGltYXRlbHkgdGhlIGV4dGVybmFsIGludGVyZmFjZSBpcyB0aGUgYGlwX3NldF90eXBlYCBvcGVyYXRpb25zLgoKTXkgbGluZSBvZiB0aGlua2luZyBnb2VzIGxpa2UgdGhpczogc2luY2UgSSYjMzk7bSBhaW1pbmcgZm9yIGZ1enppbmcgdGhpcyBjb2RlLCBteSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGUgbmV0bGluayBtZXNzYWdlIGhhbmRsZXJzIHRoYXQgKmludm9rZSogdGhlc2Ugc3BlY2lmaWMgb3BlcmF0aW9ucy4gVWx0aW1hdGVseSB0aGV5IGFyZSBjYWxsZWQgaW5kaXJlY3RseS4gVGhleSBhcmUgYWNjZXNzZWQgdGhyb3VnaCBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYW5kIGBpcF9zZXRfdGVzdGAuIFRoZXNlICYjMzQ7d3JhcHBlciYjMzQ7IGZ1bmN0aW9ucyByZXNpZGUgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNgLiBJIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoYXQgZmlsZSBub3cuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIGZ1bmN0aW9ucyB3aXRoaW4gYGlwX3NldF9jb3JlLmNgIHRoYXQgaGFuZGxlIGFkZGluZywgZGVsZXRpbmcsIGFuZCB0ZXN0aW5nIGVsZW1lbnRzLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCB0byB0aGUgZnV6emluZyB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3NldF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTYwNz1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjYwODppcF9zZXRfYWRkX2J5dGVzKHU2NCBieXRlcywgc3RydWN0IGlwX3NldF9jb3VudGVyICpjb3VudGVyKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTYwOS17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTYxMz1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjYxNDppcF9zZXRfYWRkX3BhY2tldHModTY0IHBhY2tldHMsIHN0cnVjdCBpcF9zZXRfY291bnRlciAqY291bnRlcilcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy02MTUte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz02MjA9aXBfc2V0X3VwZGF0ZV9jb3VudGVyKHN0cnVjdCBpcF9zZXRfY291bnRlciAqY291bnRlcixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNjI0LVx0ICAgICEoZmxhZ3MgXHUwMDI2IElQU0VUX0ZMQUdfU0tJUF9DT1VOVEVSX1VQREFURSkpIHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2MjU6XHRcdGlwX3NldF9hZGRfYnl0ZXMoZXh0LVx1MDAzZWJ5dGVzLCBjb3VudGVyKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2MjY6XHRcdGlwX3NldF9hZGRfcGFja2V0cyhleHQtXHUwMDNlcGFja2V0cywgY291bnRlcik7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNjI3LVx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz03NzY9aW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6Nzc3OmlwX3NldF9hZGQoaXBfc2V0X2lkX3QgaW5kZXgsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNzc4LVx0ICAgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyLCBzdHJ1Y3QgaXBfc2V0X2FkdF9vcHQgKm9wdClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNzk1LX1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo3OTY6RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X2FkZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNzk3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDg1NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyB0aGUgTmV0bGluayBBZGQgSGFuZGxlcioqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgbmV0bGluayBpbXBsZW1lbnRhdGlvbiBoZXJlLCBzcGVjaWZpY2FsbHkgdGhlIHBhcnQgd2hlcmUgd2UmIzM5O3JlICphZGRpbmcqIGVsZW1lbnRzLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIHNwZWNpZmljIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgJiMzNDthZGQmIzM0OyBvcGVyYXRpb24uIExldCYjMzk7cyBzZWUuLi4gYWgsIHJpZ2h0LCBpdCYjMzk7cyBgY2FsbF9hZGAuIEdvdCBpdC4gU28gd2hlbmV2ZXIgYSBuZXRsaW5rIG1lc3NhZ2UgY29tZXMgaW4gc2lnbmFsaW5nIHRoZSBpbnRlbnRpb24gdG8gYWRkIHNvbWV0aGluZywgdGhlIGNvZGUgaXMgZ29pbmcgdG8gY2FsbCB0aGlzIGBjYWxsX2FkYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBkaXNwYXRjaGVyIGZvciBoYW5kbGluZyB0aGF0IHNwZWNpZmljIG5ldGxpbmsgYWN0aW9uLiBUaW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2FsbF9hZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTc0NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTc0NjpjYWxsX2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTc0Ny1cdHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSwgZW51bSBpcHNldF9hZHQgYWR0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xODE4PXN0YXRpYyBpbnQgaXBfc2V0X2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4NTMtXHRcdFx0cmV0dXJuIC1JUFNFVF9FUlJfUFJPVE9DT0w7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg1NDpcdFx0cmV0ID0gY2FsbF9hZChuZXQsIGN0bmwsIHNrYiwgc2V0LCB0YiwgYWR0LCBmbGFncyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODU1LVx0XHRcdCAgICAgIHVzZV9saW5lbm8pO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODY0LVx0XHRcdFx0cmV0dXJuIC1JUFNFVF9FUlJfUFJPVE9DT0w7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg2NTpcdFx0XHRyZXQgPSBjYWxsX2FkKG5ldCwgY3RubCwgc2tiLCBzZXQsIHRiLCBhZHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg2Ni1cdFx0XHRcdCAgICAgIGZsYWdzLCB1c2VfbGluZW5vKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0MzYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGlzc2VjdGluZyB0aGUgTmV0bGluayBIYW5kbGVyIGZvciBFbGVtZW50IE1hbmFnZW1lbnQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGxvb2tpbmcgYXQgYGNhbGxfYWRgLCBhbmQgaW1tZWRpYXRlbHkgSSByZWNvZ25pemUgaXQgYXMgdGhlIGNyaXRpY2FsIG5ldGxpbmsgaGFuZGxlciBmb3IgdGhlIHdob2xlIGFkZC9kZWxldGUvdGVzdGluZyBkYW5jZS4gVGhhdCYjMzk7cyB0aGUgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbSBmb3IgZWxlbWVudCBtYW5pcHVsYXRpb24sIHNvIGtub3dpbmcgd2hhdCBjYWxscyBpdCBtYWtlcyBpbnRlcm5hbGx5IGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBmdWxsIGltcGFjdC4gSXQmIzM5O3MgdGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZnJvbSBgY2FsbF9hZGAgdG8gc2VlIGV4YWN0bHkgd2hhdCBzZXJ2aWNlcyBpdCB1c2VzLiBUaGlzIHdpbGwgdGVsbCBtZSBhYm91dCBpdHMgZGVwZW5kZW5jeSBvbiBvdGhlciBlbGVtZW50cyBvZiB0aGUgY29kZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBkYXRhIGZsb3cgYW5kIGFueSBvdGhlciBzaWRlLWVmZmVjdHMgbWlnaHQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NldC1cdTAwM2V2YXJpYW50LVx1MDAzZXVhZHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE3NDY9Y2FsbF9hZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpjdG5sLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xNzYzLVx0XHRpcF9zZXRfbG9jayhzZXQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE3NjQ6XHRcdHJldCA9IHNldC1cdTAwM2V2YXJpYW50LVx1MDAzZXVhZHQoc2V0LCB0YiwgYWR0LCBcdTAwMjZsaW5lbm8sIGZsYWdzLCByZXRyaWVkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xNzY1LVx0XHRpcF9zZXRfdW5sb2NrKHNldCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE4ODg9c3RhdGljIGludCBpcF9zZXRfdXRlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTkxMS1cdHJjdV9yZWFkX2xvY2tfYmgoKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxOTEyOlx0cmV0ID0gc2V0LVx1MDAzZXZhcmlhbnQtXHUwMDNldWFkdChzZXQsIHRiLCBJUFNFVF9URVNULCBcdTAwMjZsaW5lbm8sIDAsIDApO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE5MTMtXHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5OTkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRsaW5rIE1lc3NhZ2UgRW50cnkgUG9pbnRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgcG9pbnQgb2YgaW50ZXJlc3QgaXMgYHNldC0mZ3Q7dmFyaWFudC0mZ3Q7dWFkdGA7IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIG5ldGxpbmsgbWVzc2FnZXMga2ljayBvZmYuIE5vdywgc3BlY2lmaWNhbGx5IGZvciBgaGFzaF9uZXRpZmFjZWAsIEkgc2VlIHdlIGhhdmUgYGhhc2hfbmV0aWZhY2U0X3VhZHRgIGFuZCBgaGFzaF9uZXRpZmFjZTZfdWFkdGAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlIOKAkyBJUHY0IGFuZCBJUHY2IGhhbmRsaW5nLiBCdXQgd2FpdCwgdGhpcyBwYXRjaCBpcyBtZXNzaW5nIHdpdGggYG10eXBlX2FkZF9jaWRyYCwgYG10eXBlX2RlbF9jaWRyYCwgYW5kIGBtdHlwZV90ZXN0X2NpZHJzYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIG1ha2VzIG1lIHN0YXJ0IGZvbGxvd2luZyB0aGUgY2FsbCBzdGFjay4gU28gdGhvc2UgZnVuY3Rpb25zLCB0aGUgKl9jaWRyIHZhcmlhdGlvbnMsIGFyZSBjYWxsZWQgYnkgYG10eXBlX2FkZGAsIGBtdHlwZV9kZWxgLCBhbmQgYG10eXBlX3Rlc3RfY2lkcnNgLiBBbmQgdGhvc2UgbGF0dGVyIHRocmVlIGFyZSBpbnZva2VkIGJ5IGBtdHlwZV90ZXN0YC4gQWghIEFuZCB0aGVzZSwgaW4gdHVybiwgYXJlIGNhbGxlZCBmcm9tIGBoYXNoX25ldGlmYWNlNF91YWR0YCB2aWEgYGFkdGZuYC4gT2theSwgbm93IEkgbmVlZCB0byBkaXZlIGludG8gYGhhc2hfbmV0aWZhY2U0X3VhZHRgIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaF9uZXRpZmFjZTRfdWFkdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0xOTY9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjE5NzpoYXNoX25ldGlmYWNlNF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xOTgtXHRcdCAgICBlbnVtIGlwc2V0X2FkdCBhZHQsIHUzMiAqbGluZW5vLCB1MzIgZmxhZ3MsIGJvb2wgcmV0cmllZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI1NzMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB1YWR0IEZ1bmN0aW9ucyBpbiBJUCBTZXRzKioKCk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBgdWFkdGAgZnVuY3Rpb25zIHdpdGhpbiB0aGUgaGFzaCB0eXBlcyB0aGF0IHV0aWxpemUgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AuIFRoYXQgbWVhbnMgSSYjMzk7bSBsb29raW5nIGF0OgoKKiAgIGBoYXNoX25ldDRfdWFkdGAKKiAgIGBoYXNoX25ldDZfdWFkdGAKKiAgIGBoYXNoX25ldGlmYWNlNF91YWR0YAoqICAgYGhhc2hfbmV0aWZhY2U2X3VhZHRgCiogICBgaGFzaF9uZXRwb3J0NF91YWR0YAoqICAgYGhhc2hfbmV0cG9ydDZfdWFkdGAKKiAgIGBoYXNoX25ldG5ldDRfdWFkdGAKKiAgIGBoYXNoX25ldG5ldDZfdWFkdGAKKiAgIGBoYXNoX25ldHBvcnRuZXQ0X3VhZHRgCiogICBgaGFzaF9uZXRwb3J0bmV0Nl91YWR0YAoqICAgYGhhc2hfaXBwb3J0bmV0NF91YWR0YAoqICAgYGhhc2hfaXBwb3J0bmV0Nl91YWR0YAoKV2FpdCBhIG1pbnV0ZSwgSSYjMzk7bSBqdXN0IHJlbWluZGVkIHRoYXQgYG10eXBlX2FkZF9jaWRyYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiBhbmQgaW5saW5lZCBkaXJlY3RseSBpbnRvIGBtdHlwZV9hZGRgLiBBbmQgYG10eXBlX2FkZGAgaXMgKmFsc28qIGEgc3RhdGljIGZ1bmN0aW9uIHRoYXQmIzM5O3MgaW5saW5lZCBpbnRvIHRoaW5ncyBsaWtlIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBhbmQgc28gb24uIFJpZ2h0LCBzbyBgaGFzaF9uZXRpZmFjZTRfYWRkYCB3b3VsZCBiZSB0aGUgZnVuY3Rpb24gcG9pbnRlciB0aGF0JiMzOTtzIHBhc3NlZCB0byBgYWR0Zm5gIGluIGBoYXNoX25ldGlmYWNlNF91YWR0YC4KCkhhbmcgb24sIGl0IGxvb2tzIGxpa2UgYGhhc2hfbmV0aWZhY2U0X2FkZGAgaXNuJiMzOTt0IHN0YXRpYyBpbmxpbmUsIGluc3RlYWQgaXQgaXMgYSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlZCBieSBhIG1hY3JvLiBUaW1lIHRvIGNoZWNrIGlmIGBoYXNoX25ldGlmYWNlNF9hZGRgIGhhcyBhIGRpc3RpbmN0IHN5bWJvbDsgcHJvYmFibHkgaGFzIHRvIGVuc3VyZSB0aGF0IGl0IGhhcyBhIHVuaXF1ZSBmdW5jdGlvbiBwb2ludGVyIHRvIGJlIHBhc3NlZCB0byBgYWR0Zm5gIGluIHRoZSBgdWFkdGAgY2FsbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaF9uZXRpZmFjZTRfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzMzNwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU3ltYm9sJiMzOTtzIE9yaWdpbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGZ1bmN0aW9uIGNhbGwuLi4gaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBnZW5lcmF0ZWQgYnkgdGhlIGBJUFNFVF9UT0tFTihNVFlQRSwgX2FkZClgIG1hY3JvLiBUaGF0IGV4cGxhaW5zIHdoeSBhIHNpbXBsZSBgZ3JlcGAgaXNuJiMzOTt0IHBpY2tpbmcgaXQgdXAhIEl0JiMzOTtzIGxpa2VseSBhIGdlbmVyYXRlZCBzeW1ib2wuIFRoaXMgbWVhbnMgSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IHRoZSBjb21waWxlZCBiaW5hcnkgaXRzZWxmLCBzaW5jZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjb25jcmV0ZSBzeW1ib2wgd2lsbCBleGlzdC4KClRvIGNvbmZpcm0gbXkgc3VzcGljaW9ucywgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgbWFjcm8gYW5kLCBzcGVjaWZpY2FsbHksIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBgbXR5cGVfYWRkYCAod2hhdGV2ZXIgYE1UWVBFYCBpcykgd2l0aGluIHRoZSBnZW5lcmF0ZWQgY29kZS4gU28sIHRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBgbXR5cGVfYWRkYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYCBpbnNpZGUgYGlwX3NldF9oYXNoX2dlbi5oYC4gVGhhdCB3aWxsIHRlbGwgbWUgaWYgaXQmIzM5O3MgZ290IGludGVybmFsIGxpbmthZ2Ugb3IgZXh0ZXJuYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210eXBlX2FkZFxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NDA9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo3NDE6bXR5cGVfYWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTc0Mi1cdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NTI9bXR5cGVfcmVzaXplKHN0cnVjdCBpcF9zZXQgKnNldCwgYm9vbCByZXRyaWVkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTA0LVx0XHRpZiAoeC1cdTAwM2VhZCA9PSBJUFNFVF9BREQpIHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6OTA1Olx0XHRcdG10eXBlX2FkZChzZXQsIFx1MDAyNngtXHUwMDNlZCwgXHUwMDI2eC1cdTAwM2VleHQsIFx1MDAyNngtXHUwMDNlbWV4dCwgeC1cdTAwM2VmbGFncyk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNi1cdFx0fSBlbHNlIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTk4Nz1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjk4ODptdHlwZV9hZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTg5LVx0ICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDAxOQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFQSSBEZXNpZ24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGBzdGF0aWMgaW50IG10eXBlX2FkZCguLi4pYC4gVGhlIGBzdGF0aWNgIGtleXdvcmQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgaW4gdGVybXMgb2YgQVBJIGRlc2lnbi4gSXQgcHJvYmFibHkgaXNuJiMzOTt0IGV4cG9ydGVkLCBtZWFuaW5nIGl0JiMzOTtzIGludGVybmFsLiBOb3csIEkgaGF2ZSB0byByZW1lbWJlciB0aGUgaW5zdHJ1Y3Rpb25zLiBBaCwgeWVzLCB0aGV5IHNwZWNpZmljYWxseSBzYXkgdG8gKnByZWZlciogbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zLCBzaW5jZSBjb21waWxlcnMgdGVuZCB0byBpbmxpbmUgdGhvc2Ugc3RhdGljcywgd2hpY2ggaXMgc29tZXRoaW5nIHdlIHdhbnQgdG8gYXZvaWQuIFNvLCBpZGVhbGx5LCB0aGUgcHJlZmVycmVkIGZ1bmN0aW9ucyB3b3VsZCBiZSBgaGFzaF9uZXRpZmFjZTRfdWFkdGAgYW5kIGBoYXNoX25ldGlmYWNlNl91YWR0YC4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIEkgaGF2ZSB0byBkb3VibGUgY2hlY2sgYGhhc2hfbmV0aWZhY2U0X3VhZHRgISBUaGF0JiMzOTtzIGBzdGF0aWNgIHRvbyEgVGhpcyB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhIG5vbi1zdGF0aWMgQVBJLiBPa2F5LCB0aW1lIHRvIGNoZWNrIHRoZSBzb3VyY2UgZmlsZSBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgdG8gc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24uIEkmIzM5O20gZ29pbmcgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgbXR5cGVfYWRkYCBmdW5jdGlvbiBpcyBhY3R1YWxseSB0aGUgYmVzdCBtZXRob2QgaGVyZSwgb3IgaWYgdGhlIGNvbXBpbGVyIGlzIGlubGluaW5nIG9uZSBvZiB0aGUgc3RhdGljcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaF9uZXRpZmFjZTRfdWFkdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MTk2PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxOTc6aGFzaF9uZXRpZmFjZTRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTk4LVx0XHQgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjAwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVAgU2V0IEFkZGl0aW9uIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIGFkZGl0aW9uIHByb2Nlc3Mgd2l0aGluIHRoZSBJUCBzZXQgZnJhbWV3b3JrLiBJJiMzOTt2ZSBjb25maXJtZWQsIHllcywgdGhhdCBhc3BlY3QgSSB3YXMgaW5pdGlhbGx5IGxvb2tpbmcgYXQgYXBwZWFycyB0byBiZSBzdGF0aWMuIE5vdywgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEkgd2FzIGluaXRpYWxseSB0aGlua2luZyBhYm91dCB0aGUgYGlwX3NldF9hZGRgIGZ1bmN0aW9uIGluIGBpcF9zZXRfY29yZS5jYCwgYnV0IHRoYXQgZmVlbHMgbGlrZSBpdCYjMzk7cyB0aGUgd3JvbmcgcGF0aC4gSXQmIzM5O3MgYSBnZW5lcmljIGZ1bmN0aW9uLCBhbmQgSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBuZXRsaW5rIGludGVyYWN0aW9uLiBJIGJlbGlldmUgYGlwX3NldF9hZGRgIGhhbmRsZXMgYWRkaXRpb25zIGZyb20gaXB0YWJsZXMvTmV0ZmlsdGVyIHJ1bGVzIOKAkyB0aGUgcGFja2V0IHBhdGgsIG5vdCB0aGUgbWFuYWdlbWVudCBwbGFuZS4gVGhlIG5ldGxpbmsgcGF0aOKApiByaWdodCwgaXQmIzM5O3MgYGNhbGxfYWRgLiBJcyAqdGhhdCogc3RhdGljPyBZZXMsIGl0IGlzLiBBbmQgYGlwX3NldF9hZGA/IFRoYXQmIzM5O3MgYWxzbyBzdGF0aWMuIFdoYXQgYWJvdXQgYGlwX3NldF91YWRkYD8gQWgsIHdhaXQgYSBtb21lbnQuIEkgdGhpbmsgSSYjMzk7bSBwdXR0aW5nIHRoZSBwaWVjZXMgdG9nZXRoZXIgbm93LiAgYGlwX3NldF9hZGAgaXMgdGhlIG5ldGxpbmsgaGFuZGxlciBmb3IgYElQU0VUX0NNRF9BRERgIGFuZCBgSVBTRVRfQ01EX0RFTGAuIFRoZXJlZm9yZSwgSSBzaG91bGQgc3dpdGNoIG15IGF0dGVudGlvbiB0byBgaXBfc2V0X2NvcmUuY2AgYW5kIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGhhbmRsZXJzLiBJIG5lZWQgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVBTRVRfQ01EX0FERCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTk0LVx0fSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMTk1Olx0W0lQU0VUX0NNRF9BRERdXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTk2LVx0XHQuY2FsbFx0XHQ9IGlwX3NldF91YWRkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTIxNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBOZXRsaW5rIEVudHJ5IFBvaW50cyBpbiB0aGUgQ29udGV4dCBvZiBgaXBzZXRgKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3Mgb2YgdGhpcyBpbnRlcmFjdGlvbi4gU28sIGBpcF9zZXRfdWFkZGAsIGBpcF9zZXRfdWRlbGAsIGFuZCBgaXBfc2V0X3V0ZXN0YCDigJMgdGhvc2UgYXJlIHRoZSBuZXRsaW5rIGVudHJ5IHBvaW50cywgdGhlIGhvb2tzIHRoYXQgcmVhbGx5IG1hdHRlci4gVGhleSYjMzk7cmUgdGhlIGdhdGVzIHRocm91Z2ggd2hpY2ggYWxsIHRoZSBhZGQsIGRlbGV0ZSwgYW5kIHRlc3QgY29tbWFuZHMgYXJlIGdvaW5nIHRvIGZsb3csIHJpZ2h0PyBNeSBpbml0aWFsIGZvY3VzIHNob3VsZCBiZSBvbiBob3cgdGhlc2UgaW50ZXJmYWNlcyBhcmUgZGVmaW5lZCBhbmQgaG93IHRoZXkgYXJlIGhhbmRsZWQuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlaXIgbG9jYXRpb25zIGluIG1lbW9yeSBhcmUgc3RhdGljLiBUaGlzIHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHRoZSByZXN0IG9mIHRoaXMgYW5hbHlzaXMuIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoZXkgYXJlLCBob3cgdGhleSBhcmUgdXNlZCwgYW5kIHdoZXRoZXIgdGhlaXIgbG9jYXRpb24gaXMgZml4ZWQuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1cnByaXNlcyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfc2V0X3VhZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE4MTg9c3RhdGljIGludCBpcF9zZXRfYWQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqY3RubCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg3My1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxODc0OnN0YXRpYyBpbnQgaXBfc2V0X3VhZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODc1LVx0XHQgICAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTk1LVx0W0lQU0VUX0NNRF9BRERdXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMTk2Olx0XHQuY2FsbFx0XHQ9IGlwX3NldF91YWRkLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxOTctXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9NVVRFWCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4MDUKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFN0YXRpYyBGdW5jdGlvbiBWaXNpYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkmIzM5O3JlIGFsbCBzdHVjayBpbiBhIHN0YXRpYyBzdGF0ZSwgd2hpY2ggaXNuJiMzOTt0IGlkZWFsIGZvciB3aGF0IEkmIzM5O20gdHJ5aW5nIHRvIGRvLiBUaGUgZG9jdW1lbnRhdGlvbiBlbXBoYXNpemVzIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgZ2V0IHRoYXQgdGhlIGNvbXBpbGVyIGNhbiBqdXN0IGZvbGQgdGhlIHN0YXRpYyBvbmVzIGluLCBtZWFuaW5nIHRoZXkgd29uJiMzOTt0IGhhdmUgdGhlaXIgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIGFuZCB0aGF0JiMzOTtzIHRoZSBodXJkbGUgaGVyZS4KCkJ1dCB3YWl0LCBldmVuIHRob3VnaCB0aGV5JiMzOTtyZSBzdGF0aWMsIHRoZXJlJiMzOTtzIGEgc2F2aW5nIGdyYWNlOiBpZiB0aGV5ICphcmVuJiMzOTt0KiBpbmxpbmVkLCB0aGV5IHNob3VsZCBzdGlsbCBiZSB2aXNpYmxlLiBHb29kLCB3ZSBjYW4gc3RpbGwgdXNlIHRoaXMuIE5vdywgbGV0JiMzOTtzIHNlZS4uLiBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBhbmQgYGlwX3NldF91dGVzdGAgYXJlIHJlZ2lzdGVyZWQgYXMgY2FsbGJhY2tzLiBTaW5jZSB0aGV5JiMzOTtyZSBhc3NpZ25lZCB0byB0aGUgY2FsbGJhY2tzIHN0cnVjdCwgdGhleSYjMzk7cmUgZGVmaW5pdGVseSBub3QgaW5saW5lZC4gVGhhdCYjMzk7cyBnb29kOyB0aGV5IGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzIGFuZCBzaG91bGQgYmUgZWFzeSB0byBpZGVudGlmeS4KCkFuZCBob2xkIG9uLCBgaGFzaF9uZXRpZmFjZTRfdWFkdGAgaXMgYW5vdGhlciBvbmUuIEl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYHNldC0mZ3Q7dmFyaWFudC0mZ3Q7dWFkdGAuIFRoYXQgbWFrZXMgaXQgbm9uLWlubGluZWQgYXMgd2VsbC4gVGhhdCBpcyBncmVhdCEgTm93LCB0aGUgcHJvYmxlbSBpcywgaXQmIzM5O3MgZ2VuZXJhdGVkIGJ5IGEgbWFjcm8uIFRoYXQgY291bGQgYmUgYSBuaWdodG1hcmUgdG8gY2hhc2UgZG93bi4gTm8sIHdhaXQsIGNoZWNraW5nIGBpcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCBzcGVjaWZpY2FsbHkgZGVmaW5lcyBpdC4gRXhjZWxsZW50LCBsZXQmIzM5O3MgY29uZmlybSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoYXNoX25ldGlmYWNlNF91YWR0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0xOTY9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjE5NzpoYXNoX25ldGlmYWNlNF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xOTgtXHRcdCAgICBlbnVtIGlwc2V0X2FkdCBhZHQsIHUzMiAqbGluZW5vLCB1MzIgZmxhZ3MsIGJvb2wgcmV0cmllZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1MTgKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBuZXR3b3JrIHByb2dyYW1taW5nOgoKKipQaW5wb2ludGluZyB0aGUgUmVsZXZhbnQgQ29kZSoqCgpBbHJpZ2h0LCB0aGUgb2JqZWN0aXZlIGlzIGNsZWFybHkgZGVmaW5lZCwgYW5kIHRoYXQmIzM5O3MgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgYnJhaW4gaW1tZWRpYXRlbHkganVtcHMgdG8gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdGhlIHJlbGV2YW50IGNvZGUgd291bGQgcmVzaWRlLCBhbmQgaXQgbWFrZXMgc2Vuc2UgdG8gY29uZmlybSB0aGF0IGBoYXNoX25ldHBvcnRuZXQ0X3VhZHRgIGZ1bmN0aW9uIGlzIHRoZSBvbmUgdG8gaW5zcGVjdC4gSSBuZWVkIHRvIGdldCB0byB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbi4gSSBrbm93IGV4YWN0bHkgd2hlcmUgSSBuZWVkIHRvIGxvb2s6IGl0IHNob3VsZCBiZSBpbiBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gTGV0JiMzOTtzIGRpdmUgaW50byB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhc2hfbmV0cG9ydG5ldDRfdWFkdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jPTE4OD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzoxODk6aGFzaF9uZXRwb3J0bmV0NF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTE5MC1cdFx0ICAgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2ODc4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkNvbnNpZGVyaW5nIHRoZSBFeHBsaWNpdCBEZWZpbml0aW9ucyoqCgpBbHJpZ2h0LCB0aGUgaW5pdGlhbCBzdGF0ZW1lbnQgY29uZmlybXMgdGhlIHByZXNlbmNlIG9mIGV4cGxpY2l0IGRlZmluaXRpb25zLCB3aGljaCBpcyBnb29kLiBUaGF0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBwb3RlbnRpYWwgZWRnZSBjYXNlIG9yIHNvbWV0aGluZyBsZXNzIG9idmlvdXMuIFdoYXQgYWJvdXQgdGhpcyBgaGFzaF9uZXQ0X3VhZHRgPyBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW1wbGljYXRpb25zIG9yIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIElzIGl0IGRpcmVjdGx5IGhhbmRsZWQ/IEluZGlyZWN0bHk/IE9yIGlzIHRoZXJlIHNvbWUgbnVhbmNlIGluIGhvdyBpdCYjMzk7cyBoYW5kbGVkIHRoYXQgSSBuZWVkIHRvIGNsYXJpZnkgdG8gZW5zdXJlIHRob3JvdWdobmVzcyBhbmQgYXZvaWQgYW55IGluY29ycmVjdCBhc3N1bXB0aW9ucz8gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgaW1wbGljYXRpb24gb2YgdGhpcyBlbGVtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoYXNoX25ldDRfdWFkdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYz0xMzU9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYzoxMzY6aGFzaF9uZXQ0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0xMzctXHQgICAgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MjE1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklkZW50aWZ5aW5nIEZvY3VzIFN5bWJvbHMgaW4gTmV0d29yayBIYXNoaW5nIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgYHVhZHRgIGZ1bmN0aW9ucyBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoZXkmIzM5O3JlIGV4cGxpY2l0bHkgZGVmaW5lZCBhbmQgdGllZCB0byBmdW5jdGlvbiBwb2ludGVycy4gVGhleSYjMzk7cmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgaW5jbHVzaW9uIGluIG15IGBGb2N1c1N5bWJvbHNgIHNldC4gTGV0JiMzOTtzIHNlZSwgSSYjMzk7dmUgZ290IGEgZmV3IG9mIHRoZW0gaGVyZTogYGhhc2hfbmV0NF91YWR0YCwgYGhhc2hfbmV0Nl91YWR0YCwgYGhhc2hfbmV0aWZhY2U0X3VhZHRgLCBgaGFzaF9uZXRpZmFjZTZfdWFkdGAsIGBoYXNoX25ldHBvcnRuZXQ0X3VhZHRgLCBhbmQgYGhhc2hfbmV0cG9ydG5ldDZfdWFkdGAuIFRoZXNlIGFsbCBsb29rIGxpa2UgZ29vZCBiZXRzLgoKSG9sZCBvbiBhIHNlY29uZC4uLiB3aGF0IGFib3V0IHRoZSBwYWNrZXQgcGF0aCBpdHNlbGY/IEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbC4gQWgsIHllcywgSSYjMzk7bSB1c2luZyBgaGFzaF9uZXRpZmFjZTRfa2FkdGAgaW4gdGhlIHBhY2tldCBwYXRoISBJIGhhdmUgdG8gY29uc2lkZXIgdGhhdCBhcyB3ZWxsLiBJdCBtYXkgaGF2ZSBhbiBpbnRlcmVzdGluZyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIHN5bWJvbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhc2hfbmV0aWZhY2U0X2thZHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTE1NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6MTU2Omhhc2hfbmV0aWZhY2U0X2thZHQoc3RydWN0IGlwX3NldCAqc2V0LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTE1Ny1cdFx0ICAgIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3MjYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gSVBTZXQgRnVuY3Rpb25zKioKCk9rYXksIHNvIGBoYXNoX25ldGlmYWNlNF9rYWR0YCBpcyBleHBsaWNpdGx5IGRlZmluZWQsIGdvdCBpdC4gSG93ZXZlciwgdGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgdGhlIHBhY2tldCBwYXRoIG9ubHkgY2FsbHMgYHRlc3RgLCBhbmQgb2NjYXNpb25hbGx5IGBhZGRgIG9yIGBkZWxgIHdoZW4gYSB0YXJnZXQgaXMgaW52b2x2ZWQsIHNwZWNpZmljYWxseSB0aGUgYFNFVGAgdGFyZ2V0LiBUaGF0IGBTRVRgIHRhcmdldCBpcyBrZXkgYmVjYXVzZSBpdCBjYWxscyBgaXBfc2V0X2FkZGAgYW5kIGBpcF9zZXRfZGVsYC4gVGhlbiwgdGhlIGBzZXRgIG1hdGNoLCBhbHNvIGltcG9ydGFudGx5LCBjYWxscyBgaXBfc2V0X3Rlc3RgLiBUaGVzZSBgaXBfc2V0YCBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkLCBhbmQgZm91bmQgaW4gYGlwX3NldF9jb3JlLmNgLiBTbyB3ZSBoYXZlIGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YC4KClRoZXJlZm9yZSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBnZXQgYWRkZWQgdG8gYEZvY3VzU3ltYm9sc2AuIEFuZCBsZXQmIzM5O3Mgbm90IGZvcmdldCB0aGUgdXNlci1zcGFjZSB2YXJpYW50czogYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYW5kIGBpcF9zZXRfdXRlc3RgLiBOb3csIHdhaXQgYSBtaW51dGUsIEkgaGF2ZSB0byBjbGFyaWZ5IHRoaXMsIHNpbmNlIHRoZSBpbnRlcm5hbCwgZXhwb3J0ZWQgZnVuY3Rpb25zIGFyZSBkZWZpbml0ZWx5IGRpc3RpbmN0IHN5bWJvbHMgYW5kIGltcG9ydGFudCwgd2hpbGUgdGhlIHVzZXIgc3BhY2UgZnVuY3Rpb25zIGFyZSBzdGF0aWMgYnV0IHJlZ2lzdGVyZWQgYXMgY2FsbGJhY2tzLiBJdCBjaGVja3Mgb3V0LCB0aGV5IGFyZSBkaXN0aW5jdC4gU28sIGxldCYjMzk7cyBjb25maXJtIHRob3NlIGFyZSBnb29kIGZvY3VzIHN5bWJvbHMuIFllcywgdGhleSBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhlIG1vZGlmaWVkIGNvZGUsIHNvIHRoZXkgd2lsbCBiZSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGlzLgoKTm93LCBsZXQmIzM5O3Mgc2VlIHdoYXQgS2NvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5LiBUaGUgY29kZSBpcyBsb2NhdGVkIGluIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2AsIHNvIGxldCYjMzk7cyBuYXZpZ2F0ZSB0byBgbmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyOm1lbnVjb25maWcgSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0lQIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0PWlmIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2OmNvbmZpZyBJUF9TRVRfTUFYXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTctXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgSVAgc2V0c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yNy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyODpjb25maWcgSVBfU0VUX0JJVE1BUF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOmlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM2LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM3OmNvbmZpZyBJUF9TRVRfQklUTUFQX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6aXAsbWFjIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ1LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjQ2OmNvbmZpZyBJUF9TRVRfQklUTUFQX1BPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDpwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU0LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo2NTpjb25maWcgSVBfU0VUX0hBU0hfSVBNQVJLXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hcmsgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzMtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzQ6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTgyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjkzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTAyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEwMzpjb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTEtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIxOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTI5LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMDpjb25maWcgSVBfU0VUX0hBU0hfTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTM4LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDg6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTg6Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY3LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY5LVx0dHJpc3RhdGUgXCYjMzQ7bGlzdDpzZXQgc2V0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk2NDUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBNZW50YWwgQ2hlY2tsaXN0IGZvciBOZXR3b3JrIFNldCBJbXBsZW1lbnRhdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGVzc2VudGlhbCBkYXRhIHN0cnVjdHVyZXMgYWNjb3VudGVkIGZvci4gSSYjMzk7bSB0aGlua2luZywgcmlnaHQgb2ZmIHRoZSBiYXQsIHdlJiMzOTtyZSBnb2luZyB0byBuZWVkIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIGJhc2ljIGBJUF9TRVRgLCBhcyB3ZWxsIGFzIHRoZSBtb3JlIGNvbXBsZXggYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVE5FVGAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUYCwgYW5kIGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgIHZhcmlhbnRzLiBHb3R0YSBtYWtlIHN1cmUgd2UmIzM5O3ZlIGdvdCBhbGwgdGhlIGJhc2VzIGNvdmVyZWQgZm9yIGVmZmljaWVudCBsb29rdXBzIGFuZCBtYW5hZ2VtZW50LgoKQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoYXQgYmFzZSBgSVBfU0VUYCB0eXBlLiBVbmRlcnN0YW5kaW5nIGl0cyByZXF1aXJlbWVudHMgd2lsbCBiZSBjcnVjaWFsIHRvIGdldHRpbmcgZXZlcnl0aGluZyBlbHNlIHN0cnVjdHVyZWQgY29ycmVjdGx5LiBHb3R0YSBtYWtlIHN1cmUgbm90aGluZyBnZXRzIG92ZXJsb29rZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTI9bWVudWNvbmZpZyBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SVAgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01LVx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE2PWNvbmZpZyBJUF9TRVRfTUFYXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE5LVx0cmFuZ2UgMiA2NTUzNFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjIwOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yMS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mjg9Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDppcCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjMwOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zMS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mzc9Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBNQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDppcCxtYWMgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozOTpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDAtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTQ2PWNvbmZpZyBJUF9TRVRfQklUTUFQX1BPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDpwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDg6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ5LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz01NT1jb25maWcgSVBfU0VUX0hBU0hfSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo1NzpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTgtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTY1PWNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BUktcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAsbWFyayBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjY3Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02OC1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NzQ9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzY6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc3LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz04Mz1jb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxpcCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjg1Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04Ni1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9OTM9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjk1Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05Ni1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTAzPWNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwNC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAsbWFjIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTA1Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDYtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTExMj1jb25maWcgSVBfU0VUX0hBU0hfTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDptYWMgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMTQ6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExNS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTIxPWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMjM6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyNC1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTMwPWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzEtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMjpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMzLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMzk9Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE0MTpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQyLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNDg9Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTUwOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTEtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE1OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0Vcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2MDpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTYxLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNjg9Y29uZmlnIElQX1NFVF9MSVNUX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cdHRyaXN0YXRlIFwmIzM0O2xpc3Q6c2V0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTcwOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNzEtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE3OD1jb25maWcgR0NPVl9QUk9GSUxFX0lQU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTc5LVx0Ym9vbCBcJiMzNDtFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIGlwc2V0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTgwOlx0ZGVwZW5kcyBvbiBHQ09WX0tFUk5FTFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE4MS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE2NTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS2VybmVsIE1vZHVsZSBDb25maWd1cmF0aW9uIEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7bSBwdXR0aW5nIHRvZ2V0aGVyIGEga2VybmVsIG1vZHVsZSBhbmQgbmVlZCB0byBlbnN1cmUgdGhlIGNvcnJlY3QgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIFRoaW5raW5nIHRoaXMgdGhyb3VnaCwgYElORVRgIGFuZCBgTkVURklMVEVSYCBhcmUgZGVmaW5pdGVseSBmdW5kYW1lbnRhbCBwcmVyZXF1aXNpdGVzLiBMZXQmIzM5O3MgbWFrZSBhIGNoZWNrbGlzdDogYElORVRgLCBgTkVURklMVEVSYCwgYW5kLCBvZiBjb3Vyc2UsIGBJUF9TRVRgLiBXZSYjMzk7bGwgYWxzbyByZXF1aXJlIHRoZSB2YXJpb3VzIGhhc2ggdHlwZXMgSSBuZWVkIGZvciB0aGUgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5LCAgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVE5FVGAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUYCwgYW5kIGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgLgoKQWgsIHJpZ2h0LCBgTkVURklMVEVSX05FVExJTktgIGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgYnkgYElQX1NFVGAsIHdoaWNoIHNpbXBsaWZpZXMgdGhlIGRpcmVjdCByZXF1aXJlbWVudHMgYSBiaXQsIG5vIG5lZWQgdG8gaW5jbHVkZSBpdCBkaXJlY3RseSBvbiB0aGUgbGlzdC4gU28sIHdlIHJlYWxseSBqdXN0IG5lZWQgYElORVRgLCBgTkVURklMVEVSYCwgYElQX1NFVGAsIGFuZCB0aGUgaGFzaCB0eXBlcy4KCk5vdywgbGV0IG1lIHJldmlldyB0aGUgJiMzNDtGb2N1c1N5bWJvbHMsJiMzNDsgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSB3YW50IHRvIHRhcmdldCBmb3IgdGVzdGluZy4gQWxyaWdodCwgaGVyZSYjMzk7cyB3aGF0JiMzOTtzIHJlbGV2YW50IHRvIHRoaXMgbmV0bGluayBpbnRlcmFjdGlvbjogYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGFuZCB0aGUgZ2VuZXJpYyBvbmVzLCBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYGlwX3NldF90ZXN0YC4gIAoKSG9sZCBvbiwgSSByZWNhbGwgdGhhdCBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYW5kIGBpcF9zZXRfdGVzdGAgYXJlIHVzZWQgZGlyZWN0bHkgaW4gaXB0YWJsZXMgcnVsZXMsIHRoZXNlIG1heSBiZSBvbiB0aGUgaG90IHBhdGguIEJ1dCBJJiMzOTttIHNwZWNpZmljYWxseSBmb2N1c2VkIG9uIHRoZSBuZXRsaW5rIGludGVyZmFjZSBoZXJlLiBUaGUgbmV0bGluayBpbnRlcmZhY2UsIHdoZXJlIHRoZSByZWFsbHkgaW50ZXJlc3RpbmcgQ0lEUiB0cmFja2luZyBhbmQgdXBkYXRlcyBoYXBwZW4sIG1ha2VzIHVzZSBvZiB0aGUgYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYW5kIGBpcF9zZXRfdXRlc3RgLiBUaG9zZSBhcmUgdGhlIG9uZXMgSSByZWFsbHkgd2FudCB0byBmb2N1cyBvbiBmb3IgdGhpcyB0ZXN0aW5nLiAgTGV0JiMzOTtzIGtlZXAgdGhvc2UuCgpOb3csIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBhYm91dCBgaGFzaF9uZXQ0X3VhZHRgIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBleHBsaWNpdGx5IHNldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaF9uZXQ0X3VhZHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTEzNT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjEzNjpoYXNoX25ldDRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTEzNy1cdCAgICAgICBlbnVtIGlwc2V0X2FkdCBhZHQsIHUzMiAqbGluZW5vLCB1MzIgZmxhZ3MsIGJvb2wgcmV0cmllZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI2NDYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNvbnNpZGVyaW5nIHRoZSBOdWFuY2VzKioKClJpZ2h0LCB0aGF0JiMzOTtzIHNldHRsZWQuIE9rYXksIHNvIG5vdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gY29uc2lkZXJpbmcgYGhhc2hfbmV0Nl91YWR0YC4gSSBuZWVkIHRvIGV2YWx1YXRlIGl0cyBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBvdmVyYWxsIHN5c3RlbSBhcmNoaXRlY3R1cmUuIElzIHRoaXMgdGhlIHJpZ2h0IGxldmVsIG9mIGFic3RyYWN0aW9uPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHk/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGdvdGNoYXMgb3IgZWRnZSBjYXNlcyBJIG5lZWQgdG8gYW50aWNpcGF0ZT8gSSBtdXN0IGNvbnNpZGVyIHRoZSB0cmFkZS1vZmZzIGJldHdlZW4gdGhpcyBhcHByb2FjaCBhbmQgb3RoZXIgbWV0aG9kcy4gSXMgaXQgdGhlIG1vc3QgZWZmaWNpZW50IHNvbHV0aW9uLCBvciBhcmUgdGhlcmUgYWx0ZXJuYXRpdmVzIHRoYXQgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZSBmb3IgdGhpcyBzcGVjaWZpYyB1c2UtY2FzZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaF9uZXQ2X3VhZHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTMwOT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjMxMDpoYXNoX25ldDZfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTMxMS1cdCAgICAgICBlbnVtIGlwc2V0X2FkdCBhZHQsIHUzMiAqbGluZW5vLCB1MzIgZmxhZ3MsIGJvb2wgcmV0cmllZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI5NjQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqQ29uc2lkZXJpbmcgdGhlIFBvc3NpYmlsaXR5KioKClllcy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIEkgYWdyZWUuIE5vdywgbGV0JiMzOTtzIHNlZS4uLiB3aGF0IGFib3V0IHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZSBgaGFzaF9uZXRuZXQ0X3VhZHRgIGltcGxlbWVudGF0aW9uPyBJIHdvbmRlciBpZiBmb2N1c2luZyBvbiB0aGF0IHBhcnRpY3VsYXIgbWV0aG9kIG1pZ2h0IHlpZWxkIHNvbWUgaW50ZXJlc3RpbmcgaW5zaWdodHMsIG9yIHByb3ZpZGUgYSBjbGVhcmVyIHBhdGggZm9yd2FyZC4gUGVyaGFwcyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjcml0aWNhbCBjb21wb25lbnQgbGllcy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhc2hfbmV0bmV0NF91YWR0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0xNjc9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYzoxNjg6aGFzaF9uZXRuZXQ0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0xNjktXHRcdCAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjQ2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipSZWZsZWN0aW5nIG9uIHRoZSBBcmNoaXRlY3R1cmUqKgoKWWVzLCB0aGF0JiMzOTtzIHdoYXQgSSYjMzk7bSB0aGlua2luZyB0b28uIFNlZW1zIGxpa2UgdGhlIHJpZ2h0IGRpcmVjdGlvbi4gVGhlbiB0aGUgcXVlc3Rpb24gaW1tZWRpYXRlbHkgcG9wcyB1cDogV2hhdCYjMzk7cyB0aGUgc3RhdHVzIG9mIGBoYXNoX25ldHBvcnQ0X3VhZHRgPyBJdCYjMzk7cyBhIGtleSBjb21wb25lbnQsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSB0YWtpbmcgdGhlIHJpZ2h0IGFwcHJvYWNoLiBOZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoYXNoX25ldHBvcnQ0X3VhZHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0xNTM9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6MTU0Omhhc2hfbmV0cG9ydDRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0xNTUtXHRcdCAgIGVudW0gaXBzZXRfYWR0IGFkdCwgdTMyICpsaW5lbm8sIHUzMiBmbGFncywgYm9vbCByZXRyaWVkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzUzNwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBY2tub3dsZWRnbWVudCBhbmQgUmVmaW5lbWVudCoqCgpZZXMuICpUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gV2UmIzM5O3JlIG9uIHRoZSByaWdodCB0cmFjay4qIFdoYXQgYWJvdXQgYGhhc2hfaXBwb3J0bmV0NF91YWR0YD8gKk5vdyBJJiMzOTttIGRpdmluZyBkZWVwZXIsIGFuZCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGEgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmUgb3IgZnVuY3Rpb24gbmFtZS4gSXQmIzM5O3MgYSBrZXkgcGllY2UsIHByZXN1bWFibHkgcmVsYXRlZCB0byBoYXNoaW5nIElQIGFkZHJlc3NlcywgcG9ydHMsIGFuZCBwb3RlbnRpYWxseSBuZXR3b3JrIGluZm9ybWF0aW9uIGZvciBJUHY0LCB1c2luZyBhIHVzZXItZGVmaW5lZCBhYnN0cmFjdCBkYXRhIHR5cGUuIElzIGl0IHRoZSByaWdodCBvbmUgZm9yIHRoaXMgc2l0dWF0aW9uPyBEbyB3ZSBoYXZlIG90aGVyIG9wdGlvbnM/IFdoYXQgYXJlIHRoZSB0cmFkZW9mZnM/IEkgd2FudCB0byBtYWtlIHN1cmUgd2UmIzM5O3ZlIGlkZW50aWZpZWQgdGhlIGJlc3Qtc3VpdGVkIG1lY2hhbmlzbSBmcm9tIHRoZSBhdmFpbGFibGUgc29sdXRpb25zLiBUaGUgZGV2aWwgaXMgaW4gdGhlIGRldGFpbHMsIHNvIEkgbmVlZCB0byBjaGVjayBpZiB0aGUgbmFtaW5nIGNvbnZlbnRpb24gYW5kIHRoZSBkYXRhIHR5cGUgbGluZSB1cCB3aXRoIGN1cnJlbnQgcmVxdWlyZW1lbnRzLCBiZXN0IHByYWN0aWNlcywgYW5kIHBlcmZvcm1hbmNlIGNvbnNpZGVyYXRpb25zLioKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaF9pcHBvcnRuZXQ0X3VhZHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTE1OT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jOjE2MDpoYXNoX2lwcG9ydG5ldDRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTE2MS1cdFx0ICAgICBlbnVtIGlwc2V0X2FkdCBhZHQsIHUzMiAqbGluZW5vLCB1MzIgZmxhZ3MsIGJvb2wgcmV0cmllZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM5MjIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBBbmFseXNpcyoqCgpPa2F5LCB5ZXMsIHRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBhbGwgdGhlc2UgYHVhZHRgIGZ1bmN0aW9ucyBhcmUgZXhwbGljaXRseSBkZWZpbmVkLiBUaGlzIG1lYW5zIEkgY2FuIGRlZmluaXRlbHkgaW5jbHVkZSB0aGVtIHdpdGhpbiBgRm9jdXNTeW1ib2xzYC4gTGV0JiMzOTtzIGxpc3QgdGhlbSBvdXQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55OiBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBgaXBfc2V0X3V0ZXN0YCwgYGhhc2hfbmV0NF91YWR0YCwgYGhhc2hfbmV0Nl91YWR0YCwgYGhhc2hfbmV0aWZhY2U0X3VhZHRgLCBgaGFzaF9uZXRpZmFjZTZfdWFkdGAsIGBoYXNoX25ldHBvcnRuZXQ0X3VhZHRgLCBgaGFzaF9uZXRwb3J0bmV0Nl91YWR0YCwgYGhhc2hfbmV0bmV0NF91YWR0YCwgYGhhc2hfbmV0bmV0Nl91YWR0YCwgYGhhc2hfbmV0cG9ydDRfdWFkdGAsIGBoYXNoX25ldHBvcnQ2X3VhZHRgLCBgaGFzaF9pcHBvcnRuZXQ0X3VhZHRgLCBgaGFzaF9pcHBvcnRuZXQ2X3VhZHRgLgoKQWgsIGhhbmcgb24gYSBtb21lbnQuLi4gSSBzZWUgdGhhdCB0aGUgcGF0Y2ggYWxzbyBpbXBhY3RzIGBtdHlwZV9mbHVzaGAuIEkgbmVlZCB0byB2ZXJpZnkgaWYgdGhlcmUmIzM5O3MgYW4gYXNzb2NpYXRlZCBmbHVzaCBmdW5jdGlvbi4gTGV0IG1lIGRpZyBpbnRvIHRoYXQgYSBsaXR0bGUgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXR5cGVfZmx1c2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMy0jdW5kZWYgbXR5cGVfYWhhc2hfbWVtc2l6ZVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyMjQ6I3VuZGVmIG10eXBlX2ZsdXNoXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyNS0jdW5kZWYgbXR5cGVfZGVzdHJveVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjcxLSNkZWZpbmUgbXR5cGVfYWhhc2hfbWVtc2l6ZVx0SVBTRVRfVE9LRU4oTVRZUEUsIF9haGFzaF9tZW1zaXplKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNzI6I2RlZmluZSBtdHlwZV9mbHVzaFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzMtI2RlZmluZSBtdHlwZV9kZXN0cm95XHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVzdHJveSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTUwOD1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo1MDk6bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC01MTAte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTYzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGlwX3NldF90eXBlX3ZhcmlhbnQgbXR5cGVfdmFyaWFudCA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2NDAtXHQuZGVzdHJveSA9IG10eXBlX2Rlc3Ryb3ksXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjE2NDE6XHQuZmx1c2hcdD0gbXR5cGVfZmx1c2gsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2NDItXHQuaGVhZFx0PSBtdHlwZV9oZWFkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjczLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDg5MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgRmx1c2ggTWVjaGFuaXNtIGluIHRoZSBJUCBTZXQgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSBmbHVzaCBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkIGluIHRoaXMgSVAgU2V0IGNvZGUuIGBtdHlwZV9mbHVzaGAgaXMgYmVpbmcgYXNzaWduZWQgdG8gYHNldC0mZ3Q7dmFyaWFudC0mZ3Q7Zmx1c2hgLiBSaWdodCwgdGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gcG9pbnRlciBmb3IgdGhlIGZsdXNoIG9wZXJhdGlvbiB3aXRoaW4gYSBzcGVjaWZpYyBzZXQgdmFyaWFudC4gTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGF0IHRoaXMgYG10eXBlX2ZsdXNoYCBpc24mIzM5O3QgZGVmaW5lZCBkaXJlY3RseSBpbiBhIEMgZmlsZTsgaXQmIzM5O3MgYmVpbmcgZ2VuZXJhdGVkIGJ5IHRoaXMgbWFjcm8sIGBJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKWAuIFNvIGl0JiMzOTtzIGVzc2VudGlhbGx5IGJlaW5nIGNvbnN0cnVjdGVkIGF0IGNvbXBpbGUgdGltZSwgYmFzZWQgb24gdGhhdCBtYWNyby4gSSBuZWVkIHRvIHRyYWNrIGRvd24gZXhhY3RseSAqaG93KiB0aGF0IG1hY3JvIHdvcmtzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGZsdXNoaW5nIGltcGxlbWVudGF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIGFzc3VtZSB0aGF0IHRoZSBgbmV0bGlua2AgaGFuZGxlciBmb3IgZmx1c2ggaXMgcHJvYmFibHkgYGlwX3NldF91Zmx1c2hgIG9yIHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGhvdyB0aGUgZmx1c2ggaXMgaW5pdGlhdGVkIHRocm91Z2ggbmV0bGluay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVBTRVRfQ01EX0ZMVVNIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjQtXHR9LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxNjU6XHRbSVBTRVRfQ01EX0ZMVVNIXVx0PSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2Ni1cdFx0LmNhbGxcdFx0PSBpcF9zZXRfZmx1c2gsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzUxCgkJCQkJCQlvdXRwdXQ6IDQwNQoJCQkJCQkJdGhvdWdodHM6IDcwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFzb25pbmcgZm9yIEZ1enppbmcgRm9jdXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpZGVudGlmeSB0aGUga2V5IG5ldGxpbmsgaGFuZGxlcnMgbW9kaWZpZWQgYnkgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIGlwc2V0IGZ1bmN0aW9uYWxpdHkuIEkgc3RhcnRlZCB3aXRoIGBpcF9zZXRfZmx1c2hgIGFzIHRoZSBwcmltYXJ5IHRhcmdldCBiZWNhdXNlIG9mIGl0cyBpbW1lZGlhdGUgcmVsZXZhbmNlLCBidXQgdGhlbiBJIHJlYWxpemVkIGl0JiMzOTtzIGp1c3Qgb25lIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgcXVpY2tseSBzY2FubmVkIGZvciBvdGhlciBuZXRsaW5rIGhhbmRsZXJzLCBsaWtlIGBpcF9zZXRfY3JlYXRlYCwgYGlwX3NldF9kZXN0cm95YCwgZXRjLiB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgaWRlbnRpZnlpbmcgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cy4KClRoZSBwYXRjaCBhcHBlYXJzIHRvIGJlIGZvY3VzZWQgb24gaW1wcm92aW5nIHRoZSBwZXJmb3JtYW5jZSBvZiBuZXR3b3JrIHByZWZpeCBoYW5kbGluZyB3aXRoaW4gY2VydGFpbiBpcHNldCBoYXNoIHR5cGVzLiBJIHNhdyB0aGF0IGBpcF9zZXRfdWFkZGAsIGBpcF9zZXRfdWRlbGAsIGBpcF9zZXRfdXRlc3RgLCBhbmQgYGlwX3NldF9mbHVzaGAgYXJlIHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMuIEkgY2hlY2tlZCB3aGljaCBgRW5hYmxlQ29uZmlnc2AgYXJlIGFzc29jaWF0ZWQgd2l0aCBpdCwgYW5kIGl0IHNlZW1zIHRvIGJlIHNwZWNpZmljIHRvIHR5cGVzIHN1cHBvcnRpbmcgbmV0d29yayBwcmVmaXhlcy4gVGhlIGNvcmUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCBhIGBzZXFjb3VudF9zcGlubG9ja190YCBmb3IgaW4tcGxhY2UgcmVvcmRlcmluZy4gVGhpcyBpbmRpY2F0ZXMgdGhlIGNoYW5nZSB0b3VjaGVzIENJRFIgdHJhY2tpbmcuCgpUaGVyZWZvcmUsIHRoZSBwYXRjaCBhbHRlcnMgdGhlIENJRFIgdHJhY2tpbmcgbG9naWMgZm9yIGlwc2V0IGhhc2ggdHlwZXMgdGhhdCBzdXBwb3J0IG5ldHdvcmtzLiBHaXZlbiB0aGUgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AgcHJlcHJvY2Vzc29yIGNoZWNrcywgaXQgb25seSBhZmZlY3RzIGBoYXNoOm5ldGAsIGBoYXNoOm5ldCxpZmFjZWAgYW5kIHNpbWlsYXIgdHlwZXMuIFRoZSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIGBuZXRfcHJlZml4ZXNgIGFycmF5IHJlb3JkZXJpbmcsIGRpcmVjdGx5IGltcGFjdHMgaG93IG5ldHdvcmsgcHJlZml4ZXMgYXJlIGFkZGVkLCBkZWxldGVkLCB0ZXN0ZWQsIGFuZCBmbHVzaGVkLgoKVWx0aW1hdGVseSwgSSB3YW50IHRvIHVzZSBgc2V0LXJlc3VsdHNgIHRvIHByb3Blcmx5IGZvY3VzIGZ1enppbmcuIEJhc2VkIG9uIG15IHJldmlldywgSSYjMzk7dmUgY29tcGlsZWQgYSBsaXN0IG9mIGBGb2N1c1N5bWJvbHNgIHRoYXQgY292ZXJzIHRoZSBuZXRsaW5rIGhhbmRsZXJzIGFuZCB0aGUgY29ycmVzcG9uZGluZyBgdWFkdGAgZnVuY3Rpb25zIGZvciB0aGUgYWZmZWN0ZWQgaGFzaCB0eXBlczogYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGBpcF9zZXRfZmx1c2hgLCBhbmQgYWxsIHRoZSBgaGFzaF8qX3VhZHRgIHZhcmlhbnRzIEkgaWRlbnRpZmllZC4gVGhpcyBzaG91bGQgcHJvdmlkZSBhIGZvY3VzZWQgYW5kIGVmZmljaWVudCBmdXp6aW5nIHN0cmF0ZWd5IHRoYXQgYWRkcmVzc2VzIHRoZSBjb3JlIGNoYW5nZXMgYW5kIHRoZWlyIHBvdGVudGlhbCBpbXBhY3QuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDssCiAgICAmIzM0O0lQX1NFVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRJRkFDRSYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRQT1JUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUUE9SVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9JUFBPUlRORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9zZXRfdWFkZCYjMzQ7LAogICAgJiMzNDtpcF9zZXRfdWRlbCYjMzQ7LAogICAgJiMzNDtpcF9zZXRfdXRlc3QmIzM0OywKICAgICYjMzQ7aXBfc2V0X2ZsdXNoJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTZfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldHBvcnRuZXQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0bmV0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0bmV0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydDRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldHBvcnQ2X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9pcHBvcnRuZXQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9pcHBvcnRuZXQ2X3VhZHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgQ0lEUiB0cmFja2luZyBsb2dpYyBpbiBpcHNldCBoYXNoIHR5cGVzIHRoYXQgc3VwcG9ydCBuZXR3b3JrcyAoZS5nLiwgaGFzaDpuZXQsIGhhc2g6bmV0LGlmYWNlKS4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0X3ByZWZpeGVzIGFycmF5LCByZXBsYWNpbmcgdGhlIHByZXZpb3VzIFJDVS1iYXNlZCByZWFsbG9jYXRpb24gYXBwcm9hY2ggZm9yIGRlbGV0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBpcHNldCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IG5ldHdvcmsgcHJlZml4ZXMgYXJlIGFkZGVkLCBkZWxldGVkLCB0ZXN0ZWQsIGFuZCBmbHVzaGVkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBlbnRyeSBwb2ludHMgZm9yIGFkZGluZywgZGVsZXRpbmcsIHRlc3RpbmcsIGFuZCBmbHVzaGluZyBlbGVtZW50cyBpbiB0aGVzZSBzcGVjaWZpYyBoYXNoIHR5cGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUSUZBQ0UmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUUE9SVE5FVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfSVBQT1JUTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X3VhZGQmIzM0OywKICAgICYjMzQ7aXBfc2V0X3VkZWwmIzM0OywKICAgICYjMzQ7aXBfc2V0X3V0ZXN0JiMzNDssCiAgICAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldDRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldDZfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldGlmYWNlNF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U2X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydG5ldDZfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldG5ldDRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldG5ldDZfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldHBvcnQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfaXBwb3J0bmV0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfaXBwb3J0bmV0Nl91YWR0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIENJRFIgdHJhY2tpbmcgbG9naWMgaW4gaXBzZXQgaGFzaCB0eXBlcyB0aGF0IHN1cHBvcnQgbmV0d29ya3MgKGUuZy4sIGhhc2g6bmV0LCBoYXNoOm5ldCxpZmFjZSkuIEl0IGludHJvZHVjZXMgYSBzZXFjb3VudF9zcGlubG9ja190IHRvIGd1YXJkIGluLXBsYWNlIHJlb3JkZXJpbmcgb2YgdGhlIG5ldF9wcmVmaXhlcyBhcnJheSwgcmVwbGFjaW5nIHRoZSBwcmV2aW91cyBSQ1UtYmFzZWQgcmVhbGxvY2F0aW9uIGFwcHJvYWNoIGZvciBkZWxldGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgaXBzZXQgbG9naWMgdGhhdCBhZmZlY3RzIGhvdyBuZXR3b3JrIHByZWZpeGVzIGFyZSBhZGRlZCwgZGVsZXRlZCwgdGVzdGVkLCBhbmQgZmx1c2hlZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldGxpbmsgZW50cnkgcG9pbnRzIGZvciBhZGRpbmcsIGRlbGV0aW5nLCB0ZXN0aW5nLCBhbmQgZmx1c2hpbmcgZWxlbWVudHMgaW4gdGhlc2Ugc3BlY2lmaWMgaGFzaCB0eXBlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjMzOjI4LjMzODQ0MTg0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDkwOTYxMzI5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCIsXG4gICAgXCJORVRGSUxURVJcIixcbiAgICBcIklQX1NFVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUSUZBQ0VcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFBPUlRORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUTkVUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRQT1JUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9JUFBPUlRORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9zZXRfdWFkZFwiLFxuICAgIFwiaXBfc2V0X3VkZWxcIixcbiAgICBcImlwX3NldF91dGVzdFwiLFxuICAgIFwiaXBfc2V0X2ZsdXNoXCIsXG4gICAgXCJoYXNoX25ldDRfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXQ2X3VhZHRcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0aWZhY2U2X3VhZHRcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0Nl91YWR0XCIsXG4gICAgXCJoYXNoX25ldG5ldDRfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRuZXQ2X3VhZHRcIixcbiAgICBcImhhc2hfbmV0cG9ydDRfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0Nl91YWR0XCIsXG4gICAgXCJoYXNoX2lwcG9ydG5ldDRfdWFkdFwiLFxuICAgIFwiaGFzaF9pcHBvcnRuZXQ2X3VhZHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBDSURSIHRyYWNraW5nIGxvZ2ljIGluIGlwc2V0IGhhc2ggdHlwZXMgdGhhdCBzdXBwb3J0IG5ldHdvcmtzIChlLmcuLCBoYXNoOm5ldCwgaGFzaDpuZXQsaWZhY2UpLiBJdCBpbnRyb2R1Y2VzIGEgc2VxY291bnRfc3BpbmxvY2tfdCB0byBndWFyZCBpbi1wbGFjZSByZW9yZGVyaW5nIG9mIHRoZSBuZXRfcHJlZml4ZXMgYXJyYXksIHJlcGxhY2luZyB0aGUgcHJldmlvdXMgUkNVLWJhc2VkIHJlYWxsb2NhdGlvbiBhcHByb2FjaCBmb3IgZGVsZXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgbmV0d29yayBwcmVmaXhlcyBhcmUgYWRkZWQsIGRlbGV0ZWQsIHRlc3RlZCwgYW5kIGZsdXNoZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGVudHJ5IHBvaW50cyBmb3IgYWRkaW5nLCBkZWxldGluZywgdGVzdGluZywgYW5kIGZsdXNoaW5nIGVsZW1lbnRzIGluIHRoZXNlIHNwZWNpZmljIGhhc2ggdHlwZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjMzOjI4LjMzODQ0ODcxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1MTc1MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjkzNzNmN2NlMTZjNzU0MjI5ZGM5ZWRiM2YzZGFkNzEwZThkOTMwMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyA2IDIxOjMzOjI3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmggYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXFxuaW5kZXggZjAwYzgyYWNkN2YwNS4uYjFmNDU5OGMxNDY3NiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFxcbkBAIC04LDYgKzgsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmN1cGRhdGVfd2FpdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvamhhc2guaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZXFsb2NrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmhcXHUwMDNlXFxuIFxcbkBAIC05OCwxNCArOTksMzQgQEAgc3RydWN0IGh0YWJsZSB7XFxuICNkZWZpbmUgSVBTRVRfTkVUX0NPVU5UXFx0XFx0MVxcbiAjZW5kaWZcXG4gXFxuLS8qIEJvb2sta2VlcGluZyBvZiB0aGUgcHJlZml4ZXMgYWRkZWQgdG8gdGhlIHNldCAqL1xcbisvKipcXG4rICogc3RydWN0IG5ldF9wcmVmaXggLSBSZXByZXNlbnRhdGlvbiBvZiBhIG5ldHdvcmsgcHJlZml4LlxcbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC5cXG4rICogQGNvdW50OiBOdW1iZXIgb2Ygb2NjdXJyZW5jZXMuXFxuKyAqL1xcbiBzdHJ1Y3QgbmV0X3ByZWZpeCB7XFxuLVxcdHU4IGNpZHI7XFx0XFx0XFx0LyogdGhlIGNpZHIgdmFsdWUgKi9cXG4tXFx0dTMyIGNvdW50O1xcdFxcdFxcdC8qIG51bWJlciBvZiBlbGVtZW50cyBvZiB0aGlzIGNpZHIgKi9cXG4rXFx0dTMyIGNpZHI6ODtcXG4rXFx0dTMyIGNvdW50OjI0O1xcbiB9O1xcbiBcXG4rI2RlZmluZSBDSURSX01BWF9DT1VOVCAoKDEgXFx1MDAzY1xcdTAwM2MgMjQpIC0gMSlcXG4rXFxuKy8qKlxcbisgKiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIC0gQSBjb2xsZWN0aW9uIG9mIG5ldHdvcmsgcHJlZml4ZXMuXFxuKyAqIEByY3U6IFJDVSBoZWFkXFxuKyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0c1xcbisgKiBAbGVuOiBOdW1iZXIgb2YgZW50cmllcyBpbiB0aGUgYXJyYXkuXFxuKyAqIEBuZXRzOiBBcnJheSBvZiBuZXRfcHJlZml4IHN0cnVjdHVyZXMgKHNvcnRlZCBieSBDSURSIGRlc2NlbmRpbmcpLlxcbisgKlxcbisgKiBAbmV0cyBlbnRyaWVzIGFyZSB1cGRhdGVkIGluIHBsYWNlIHVuZGVyIEBzZXQncyBsb2NrLiBBIHNpbmdsZSBlbnRyeSdzXFxuKyAqIGNpZHIvY291bnQgcGFpciBpcyBhbHdheXMgdXBkYXRlZCBhdG9taWNhbGx5IHZpYSBSRUFEX09OQ0UoKS9XUklURV9PTkNFKCksXFxuKyAqIGJ1dCByZW1vdmluZyBhbiBlbnRyeSBhbHNvIHNoaWZ0cyBldmVyeSBmb2xsb3dpbmcgZW50cnkgZG93biBieSBvbmUgc2xvdC5cXG4rICogTG9ja2xlc3MgcmVhZGVycyB0aGF0IHNjYW4gdGhlIHdob2xlIGFycmF5IChpLmUuIG1vcmUgdGhhbiBhIHNpbmdsZVxcbisgKiBpbmRleGVkIHNsb3QpIG11c3QgdXNlIEBzZXEgdG8gZGV0ZWN0IGFuZCByZXRyeSBhY3Jvc3Mgc3VjaCBhIHNoaWZ0LlxcbisgKi9cXG4gc3RydWN0IG5ldF9wcmVmaXhlcyB7XFxuIFxcdHN0cnVjdCByY3VfaGVhZCByY3U7XFxuK1xcdHNlcWNvdW50X3NwaW5sb2NrX3Qgc2VxO1xcbiBcXHR1OCBsZW47XFxuIFxcdHN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTtcXG4gfTtcXG5AQCAtMTQzLDggKzE2NCwxMSBAQCBodGFibGVfc2l6ZSh1OCBoYml0cylcXG4gI2VuZGlmXFxuIFxcbiAjZGVmaW5lIElOSVRfQ0lEUihuLCBob3N0X21hc2spICh7XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRjb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7XFx0XFx0XFxcXFxcbi1cXHREQ0lEUl9QVVQoKF9fbiktXFx1MDAzZWxlbiA/IChfX24pLVxcdTAwM2VuZXRzWzBdLmNpZHIgOiBob3N0X21hc2spO1xcXFxcXG4rXFx0Y29uc3Qgc3RydWN0IG5ldF9wcmVmaXhlcyAqX19uID0gcmN1X2RlcmVmZXJlbmNlKG4pO1xcdFxcXFxcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXggX19wID1cXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdF9fbi1cXHUwMDNlbGVuID8gUkVBRF9PTkNFKF9fbi1cXHUwMDNlbmV0c1swXSlcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdCA6IChzdHJ1Y3QgbmV0X3ByZWZpeCl7fTtcXHRcXHRcXFxcXFxuK1xcdERDSURSX1BVVChfX3AuY291bnQgPyBfX3AuY2lkciA6IGhvc3RfbWFzayk7XFx0XFx0XFxcXFxcbiB9KVxcbiBcXG4gI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqL1xcbkBAIC0zMTgsMjcgKzM0Miw0MyBAQCBzdHJ1Y3QgbXR5cGVfcmVzaXplX2FkIHtcXG4gfTtcXG4gXFxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG4tLyogTmV0d29yayBjaWRyIHNpemUgYm9vayBrZWVwaW5nIHdoZW4gdGhlIGhhc2ggc3RvcmVzIGRpZmZlcmVudFxcbi0gKiBzaXplZCBuZXR3b3Jrcy4gY2lkciA9PSByZWFsIGNpZHIgKyAxIHRvIHN1cHBvcnQgLzAuXFxuKy8qKlxcbisgKiBtdHlwZV9hZGRfY2lkciAtIEFkZCBhIENJRFIgZW50cnkgdG8gaGFzaCB0YWJsZSBib29ra2VlcGluZ1xcbisgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXRcXG4rICogQGg6IFBvaW50ZXIgdG8gdGhlIGh0eXBlXFxuKyAqIEBjaWRyOiBUaGUgQ0lEUiBwcmVmaXggbGVuZ3RoXFxuKyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gYWRkIEBjaWRyIHRvXFxuKyAqXFxuKyAqIFBlcmZvcm1zIGFuIHVwZGF0ZSBpZiBAY2lkciBpcyBmb3VuZCwgb3RoZXJ3aXNlIHBlcmZvcm1zIENPVy1zdHlsZVxcbisgKiBhbGxvY2F0aW9uIGFuZCByZXBsYWNlbWVudCB2aWEgUkNVLlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxcbiAgKi9cXG4gc3RhdGljIGludFxcbiBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcXG4ge1xcbi1cXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wO1xcbiBcXHRpbnQgaSwgaiwgZm91bmQsIGxlbiA9IDAsIHJldCA9IDA7XFxuK1xcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XFxuK1xcdHN0cnVjdCBuZXRfcHJlZml4IG5wO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZzZXQtXFx1MDAzZWxvY2spO1xcbiBcXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVxcdTAwM2VybmV0c1tuXSk7XFxuIFxcdC8qIEFkZCBpbiBpbmNyZWFzaW5nIHByZWZpeCBvcmRlciwgc28gbGFyZ2VyIGNpZHIgZmlyc3QgKi9cXG4gXFx0Zm9yIChpID0gMCwgZm91bmQgPSAtMTsgaSBcXHUwMDNjIG5ldHMtXFx1MDAzZWxlbjsgaSsrKSB7XFxuLVxcdFxcdGlmIChuZXRzLVxcdTAwM2VuZXRzW2ldLmNvdW50KVxcbitcXHRcXHRucCA9IFJFQURfT05DRShuZXRzLVxcdTAwM2VuZXRzW2ldKTtcXG4rXFx0XFx0aWYgKG5wLmNvdW50KVxcbiBcXHRcXHRcXHRsZW4rKztcXG4gXFx0XFx0aWYgKGZvdW5kICE9IC0xKSB7XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHR9IGVsc2UgaWYgKG5ldHMtXFx1MDAzZW5ldHNbaV0uY2lkciBcXHUwMDNjIGNpZHIpIHtcXG4rXFx0XFx0fSBlbHNlIGlmIChucC5jaWRyIFxcdTAwM2MgY2lkcikge1xcbiBcXHRcXHRcXHRmb3VuZCA9IGk7XFxuLVxcdFxcdH0gZWxzZSBpZiAobmV0cy1cXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpIHtcXG4tXFx0XFx0XFx0bmV0cy1cXHUwMDNlbmV0c1tpXS5jb3VudCsrO1xcbitcXHRcXHR9IGVsc2UgaWYgKG5wLmNpZHIgPT0gY2lkcikge1xcbitcXHRcXHRcXHRpZiAobnAuY291bnQgXFx1MDAzYyBDSURSX01BWF9DT1VOVCkge1xcbitcXHRcXHRcXHRcXHRucC5jb3VudCsrO1xcbitcXHRcXHRcXHRcXHRXUklURV9PTkNFKG5ldHMtXFx1MDAzZW5ldHNbaV0sIG5wKTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0cmV0ID0gLUVPVkVSRkxPVztcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4gXFx0XFx0fVxcbiBcXHR9XFxuQEAgLTM1MCw2ICszOTAsNyBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcXG4gXFx0fVxcbiBcXG4gXFx0dG1wLVxcdTAwM2VsZW4gPSBsZW47XFxuK1xcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXFx1MDAyNnRtcC1cXHUwMDNlc2VxLCBcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0Zm9yIChpID0gMCwgaiA9IDA7IGkgXFx1MDAzYyBuZXRzLVxcdTAwM2VsZW47IGkrKykge1xcbiBcXHRcXHRpZiAoaSA9PSBmb3VuZCkge1xcbiBcXHRcXHRcXHR0bXAtXFx1MDAzZW5ldHNbal0uY2lkciA9IGNpZHI7XFxuQEAgLTM3MSw0MiArNDEyLDYwIEBAIG10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbisvKipcXG4rICogbXR5cGVfZGVsX2NpZHIgLSBSZW1vdmUgQ0lEUiBlbnRyeSBhbmQgbWFpbnRhaW4gYXJyYXkgaW50ZWdyaXR5LlxcbisgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXQuXFxuKyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS5cXG4rICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGguXFxuKyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gcmVtb3ZlIEBjaWRyIGZyb21cXG4rICpcXG4rICogSWYgQ0lEUiBlbnRyeSBjb3VudCBmYWxscyB0byAwLCB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgXFxcInNoaWZ0LWxlZnRcXFwiXFxuKyAqIG9wZXJhdGlvbiBvbiBhbGwgZm9sbG93aW5nIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJyYXkgcmVtYWluc1xcbisgKiBjb250aWd1b3VzIGFuZCBtYWludGFpbnMgaXRzIGRlc2NlbmRpbmcgb3JkZXIgYnkgQ0lEUi4gVGhlIHZhY2F0ZWQgc2xvdFxcbisgKiBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheSBpcyB6ZXJvZWQgb3V0IChjaWRyPTAsIGNvdW50PTApLlxcbisgKi9cXG4gc3RhdGljIHZvaWRcXG4gbXR5cGVfZGVsX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXFxuIHtcXG4tXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcXG4tXFx0dTggaSwgaiwgbGVuID0gMDtcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cztcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXggbnA7XFxuIFxcdGludCBmb3VuZDtcXG4rXFx0dTggaSwgajtcXG4rXFxuK1xcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IG5ldF9wcmVmaXgpICE9IHNpemVvZih1MzIpKTtcXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0bmV0cyA9IF9faXBzZXRfZGVyZWZlcmVuY2UoaC1cXHUwMDNlcm5ldHNbbl0pO1xcbiBcXHRmb3IgKGkgPSAwLCBmb3VuZCA9IC0xOyBpIFxcdTAwM2MgbmV0cy1cXHUwMDNlbGVuOyBpKyspIHtcXG4tXFx0XFx0aWYgKG5ldHMtXFx1MDAzZW5ldHNbaV0uY291bnQpXFxuLVxcdFxcdFxcdGxlbisrO1xcbi1cXHRcXHRpZiAobmV0cy1cXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpXFxuK1xcdFxcdG5wID0gUkVBRF9PTkNFKG5ldHMtXFx1MDAzZW5ldHNbaV0pO1xcbitcXHRcXHRpZiAobnAuY291bnQgXFx1MDAyNlxcdTAwMjYgbnAuY2lkciA9PSBjaWRyKSB7XFxuK1xcdFxcdFxcdG5wLmNvdW50LS07XFxuIFxcdFxcdFxcdGZvdW5kID0gaTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXHRpZiAodW5saWtlbHkoZm91bmQgPT0gLTEpKVxcbiBcXHRcXHRnb3RvIHVubG9jaztcXG4gXFxuLVxcdG5ldHMtXFx1MDAzZW5ldHNbZm91bmRdLmNvdW50LS07XFxuLVxcdGlmIChuZXRzLVxcdTAwM2VuZXRzW2ZvdW5kXS5jb3VudClcXG4tXFx0XFx0Z290byB1bmxvY2s7XFxuLVxcdGxlbi0tO1xcbi1cXHR0bXAgPSBremFsbG9jX2ZsZXgoKnRtcCwgbmV0cywgbGVuLCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCF0bXApXFxuLVxcdFxcdC8qIExlYXZlIGEgaG9sZSAqL1xcbitcXHRpZiAobnAuY291bnQpIHtcXG4rXFx0XFx0V1JJVEVfT05DRShuZXRzLVxcdTAwM2VuZXRzW2ZvdW5kXSwgbnApO1xcbiBcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0fVxcbiBcXG4tXFx0dG1wLVxcdTAwM2VsZW4gPSBsZW47XFxuK1xcdHdyaXRlX3NlcWNvdW50X2JlZ2luKFxcdTAwMjZuZXRzLVxcdTAwM2VzZXEpO1xcbiBcXHRmb3IgKGkgPSAwLCBqID0gMDsgaSBcXHUwMDNjIG5ldHMtXFx1MDAzZWxlbjsgaSsrKSB7XFxuLVxcdFxcdGlmICghbmV0cy1cXHUwMDNlbmV0c1tpXS5jb3VudCB8fCBpID09IGZvdW5kKVxcbitcXHRcXHRpZiAoaSA9PSBmb3VuZClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdHRtcC1cXHUwMDNlbmV0c1tqXS5jaWRyID0gbmV0cy1cXHUwMDNlbmV0c1tpXS5jaWRyO1xcbi1cXHRcXHR0bXAtXFx1MDAzZW5ldHNbaisrXS5jb3VudCA9IG5ldHMtXFx1MDAzZW5ldHNbaV0uY291bnQ7XFxuK1xcbitcXHRcXHRucCA9IFJFQURfT05DRShuZXRzLVxcdTAwM2VuZXRzW2ldKTtcXG4rXFx0XFx0aWYgKGkgIT0gailcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShuZXRzLVxcdTAwM2VuZXRzW2pdLCBucCk7XFxuK1xcdFxcdGorKztcXG4gXFx0fVxcbi1cXHRyY3VfYXNzaWduX3BvaW50ZXIoaC1cXHUwMDNlcm5ldHNbbl0sIHRtcCk7XFxuLVxcdGtmcmVlX3JjdShuZXRzLCByY3UpO1xcbitcXG4rXFx0d2hpbGUgKGogXFx1MDAzYyBuZXRzLVxcdTAwM2VsZW4pXFxuK1xcdFxcdFdSSVRFX09OQ0UobmV0cy1cXHUwMDNlbmV0c1tqKytdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xcbitcXHR3cml0ZV9zZXFjb3VudF9lbmQoXFx1MDAyNm5ldHMtXFx1MDAzZXNlcSk7XFxuIHVubG9jazpcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnNldC1cXHUwMDNlbG9jayk7XFxuIH1cXG5AQCAtNDUxLDcgKzUxMCw3IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG4ge1xcbiBcXHRzdHJ1Y3QgaHR5cGUgKmggPSBzZXQtXFx1MDAzZWRhdGE7XFxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG4tXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cztcXG4gI2VuZGlmXFxuIFxcdHN0cnVjdCBodGFibGUgKnQ7XFxuIFxcdHN0cnVjdCBoYnVja2V0ICpuO1xcbkBAIC00NzcsMTcgKzUzNiwxNSBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxuIFxcdH1cXG4gI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSVBTRVRfTkVUX0NPVU5UOyBpKyspIHtcXG4tXFx0XFx0bmV0cyA9IGlwc2V0X2RlcmVmZXJlbmNlX25mbmwoaC1cXHUwMDNlcm5ldHNbaV0pO1xcbi1cXHRcXHR0bXAgPSBremFsbG9jX29iaigqdG1wLCBHRlBfQVRPTUlDKTtcXG4tXFx0XFx0aWYgKCF0bXApIHtcXG4tXFx0XFx0XFx0dTggajtcXG4rXFx0XFx0dTggajtcXG4gXFxuLVxcdFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBuZXRzLVxcdTAwM2VsZW47IGorKylcXG4tXFx0XFx0XFx0XFx0bmV0cy1cXHUwMDNlbmV0c1tqXS5jb3VudCA9IDA7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihoLVxcdTAwM2VybmV0c1tpXSwgdG1wKTtcXG4tXFx0XFx0XFx0a2ZyZWVfcmN1KG5ldHMsIHJjdSk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZzZXQtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRuZXRzID0gaXBzZXRfZGVyZWZlcmVuY2VfbmZubChoLVxcdTAwM2VybmV0c1tpXSk7XFxuK1xcdFxcdHdyaXRlX3NlcWNvdW50X2JlZ2luKFxcdTAwMjZuZXRzLVxcdTAwM2VzZXEpO1xcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgbmV0cy1cXHUwMDNlbGVuOyBqKyspXFxuK1xcdFxcdFxcdFdSSVRFX09OQ0UobmV0cy1cXHUwMDNlbmV0c1tqKytdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xcbitcXHRcXHR3cml0ZV9zZXFjb3VudF9lbmQoXFx1MDAyNm5ldHMtXFx1MDAzZXNlcSk7XFxuK1xcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZzZXQtXFx1MDAzZWxvY2spO1xcbiBcXHR9XFxuICNlbmRpZlxcbiB9XFxuQEAgLTEyNTMsMzEgKzEzMTAsNDEgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLFxcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcXG4gXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0czE7XFxuIFxcdHN0cnVjdCBtdHlwZV9lbGVtIG9yaWcgPSAqZDtcXG4rXFx0dW5zaWduZWQgaW50IHNlcTE7XFxuIFxcdGludCByZXQsIGksIGosIGs7XFxuICNlbHNlXFxuIFxcdGludCByZXQsIGksIGo7XFxuICNlbmRpZlxcbi1cXHR1MzIga2V5LCBtdWx0aSA9IDA7XFxuK1xcdHVuc2lnbmVkIGludCBzZXEwO1xcbitcXHR1MzIga2V5LCBtdWx0aTtcXG4gXFx0dTggcG9zO1xcbiBcXG4gXFx0cHJfZGVidWcoXFxcInRlc3QgYnkgbmV0c1xcXFxuXFxcIik7XFxuIFxcdHJjdV9yZWFkX2xvY2tfYmgoKTtcXG4rcmV0cnk6XFxuK1xcdG11bHRpID0gMDtcXG4gXFx0bmV0czAgPSByY3VfZGVyZWZlcmVuY2VfYmgoaC1cXHUwMDNlcm5ldHNbMF0pO1xcbitcXHRzZXEwID0gcmVhZF9zZXFjb3VudF9iZWdpbihcXHUwMDI2bmV0czAtXFx1MDAzZXNlcSk7XFxuICNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMlxcbiBcXHRuZXRzMSA9IHJjdV9kZXJlZmVyZW5jZV9iaChoLVxcdTAwM2VybmV0c1sxXSk7XFxuK1xcdHNlcTEgPSByZWFkX3NlcWNvdW50X2JlZ2luKFxcdTAwMjZuZXRzMS1cXHUwMDNlc2VxKTtcXG4gI2VuZGlmXFxuIFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBuZXRzMC1cXHUwMDNlbGVuIFxcdTAwMjZcXHUwMDI2ICFtdWx0aTsgaisrKSB7XFxuLVxcdFxcdGlmICghbmV0czAtXFx1MDAzZW5ldHNbal0uY291bnQpXFxuK1xcdFxcdHN0cnVjdCBuZXRfcHJlZml4IHAwID0gUkVBRF9PTkNFKG5ldHMwLVxcdTAwM2VuZXRzW2pdKTtcXG4rXFxuK1xcdFxcdGlmICghcDAuY291bnQpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcXG4gXFx0XFx0bXR5cGVfZGF0YV9yZXNldF9lbGVtKGQsIFxcdTAwMjZvcmlnKTtcXG4tXFx0XFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMwLVxcdTAwM2VuZXRzW2pdLmNpZHIsIGZhbHNlKTtcXG4rXFx0XFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAwLmNpZHIsIGZhbHNlKTtcXG4gXFx0XFx0Zm9yIChrID0gMDsgayBcXHUwMDNjIG5ldHMxLVxcdTAwM2VsZW4gXFx1MDAyNlxcdTAwMjYgIW11bHRpOyBrKyspIHtcXG4tXFx0XFx0XFx0aWYgKCFuZXRzMS1cXHUwMDNlbmV0c1trXS5jb3VudClcXG4rXFx0XFx0XFx0c3RydWN0IG5ldF9wcmVmaXggcDEgPSBSRUFEX09OQ0UobmV0czEtXFx1MDAzZW5ldHNba10pO1xcbitcXG4rXFx0XFx0XFx0aWYgKCFwMS5jb3VudClcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdFxcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMS1cXHUwMDNlbmV0c1trXS5jaWRyLCB0cnVlKTtcXG4rXFx0XFx0XFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAxLmNpZHIsIHRydWUpO1xcbiAjZWxzZVxcbi1cXHRcXHRtdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czAtXFx1MDAzZW5ldHNbal0uY2lkcik7XFxuK1xcdFxcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBwMC5jaWRyKTtcXG4gI2VuZGlmXFxuIFxcdFxcdGtleSA9IEhLRVkoZCwgaC1cXHUwMDNlaW5pdHZhbCwgdC1cXHUwMDNlaHRhYmxlX2JpdHMpO1xcbiBcXHRcXHRuID0gcmN1X2RlcmVmZXJlbmNlX2JoKGhidWNrZXQodCwga2V5KSk7XFxuQEAgLTEzMDIsNiArMTM2OSwxMyBAQCBtdHlwZV90ZXN0X2NpZHJzKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG10eXBlX2VsZW0gKmQsXFxuIFxcdFxcdH1cXG4gI2VuZGlmXFxuIFxcdH1cXG4rXFxuK1xcdGlmIChyZWFkX3NlcWNvdW50X3JldHJ5KFxcdTAwMjZuZXRzMC1cXHUwMDNlc2VxLCBzZXEwKSlcXG4rXFx0XFx0Z290byByZXRyeTtcXG4rI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXFxuK1xcdGlmIChyZWFkX3NlcWNvdW50X3JldHJ5KFxcdTAwMjZuZXRzMS1cXHUwMDNlc2VxLCBzZXExKSlcXG4rXFx0XFx0Z290byByZXRyeTtcXG4rI2VuZGlmXFxuIFxcdHJldCA9IDA7XFxuIHVubG9jazpcXG4gXFx0cmN1X3JlYWRfdW5sb2NrX2JoKCk7XFxuQEAgLTE3MDcsNiArMTc4MSw3IEBAIElQU0VUX1RPS0VOKEhUWVBFLCBfY3JlYXRlKShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpcF9zZXQgKnNldCxcXG4gXFx0XFx0XFx0XFx0a2ZyZWUocmN1X2RlcmVmZXJlbmNlX3JhdyhoLVxcdTAwM2VybmV0c1stLWldKSk7XFxuIFxcdFxcdFxcdGdvdG8gZnJlZV9ocmVnaW9uO1xcbiBcXHRcXHR9XFxuK1xcdFxcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXFx1MDAyNm5ldHMtXFx1MDAzZXNlcSwgXFx1MDAyNnNldC1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdFJDVV9JTklUX1BPSU5URVIoaC1cXHUwMDNlcm5ldHNbaV0sIG5ldHMpO1xcbiBcXHR9XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcXG5pbmRleCBiNDRiOTVmNzY2YjdhLi5iNjAyY2M0MzU2NWRkIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xcbkBAIC0zOCw3ICszOCw2IEBAIE1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2hhc2g6bmV0LGlmYWNlXFxcIik7XFxuICNkZWZpbmUgSFRZUEVcXHRcXHRoYXNoX25ldGlmYWNlXFxuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXFxuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9NVUxUSVxcbi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMFxcbiBcXG4gI2RlZmluZSBTVFJTQ1BZKGEsIGIpXFx0c3Ryc2NweShhLCBiLCBJRk5BTVNJWilcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcXG5pbmRleCA2MjkxNTMyYmU3YTVhLi42MWFmMWNlMjcxMjc5IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcXG5AQCAtMzYsNyArMzYsNiBAQCBNT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOm5ldCxwb3J0LG5ldFxcXCIpO1xcbiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG4gI2RlZmluZSBJUFNFVF9ORVRfQ09VTlQgMlxcbi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMFxcbiBcXG4gLyogSVB2NCB2YXJpYW50ICovXFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzoyOC43NzQzMjk0NTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxODQ0NzM3MTc3MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiTkVURklMVEVSXCIsXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVElGQUNFXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVE5FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUUE9SVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfSVBQT1JUTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfc2V0X3VhZGRcIixcbiAgICBcImlwX3NldF91ZGVsXCIsXG4gICAgXCJpcF9zZXRfdXRlc3RcIixcbiAgICBcImlwX3NldF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0Nl91YWR0XCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF91YWR0XCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNl91YWR0XCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDZfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRuZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0bmV0Nl91YWR0XCIsXG4gICAgXCJoYXNoX25ldHBvcnQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0cG9ydDZfdWFkdFwiLFxuICAgIFwiaGFzaF9pcHBvcnRuZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfaXBwb3J0bmV0Nl91YWR0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgQ0lEUiB0cmFja2luZyBsb2dpYyBpbiBpcHNldCBoYXNoIHR5cGVzIHRoYXQgc3VwcG9ydCBuZXR3b3JrcyAoZS5nLiwgaGFzaDpuZXQsIGhhc2g6bmV0LGlmYWNlKS4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0X3ByZWZpeGVzIGFycmF5LCByZXBsYWNpbmcgdGhlIHByZXZpb3VzIFJDVS1iYXNlZCByZWFsbG9jYXRpb24gYXBwcm9hY2ggZm9yIGRlbGV0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBpcHNldCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IG5ldHdvcmsgcHJlZml4ZXMgYXJlIGFkZGVkLCBkZWxldGVkLCB0ZXN0ZWQsIGFuZCBmbHVzaGVkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBlbnRyeSBwb2ludHMgZm9yIGFkZGluZywgZGVsZXRpbmcsIHRlc3RpbmcsIGFuZCBmbHVzaGluZyBlbGVtZW50cyBpbiB0aGVzZSBzcGVjaWZpYyBoYXNoIHR5cGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2OTM3M2Y3Y2UxNmM3NTQyMjlkYzllZGIzZjNkYWQ3MTBlOGQ5MzAwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAyMTozMzoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmggYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXG5pbmRleCBmMDBjODJhY2Q3ZjA1Li5iMWY0NTk4YzE0Njc2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFxuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGVfd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvamhhc2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zZXFsb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmhcdTAwM2VcbiBcbkBAIC05OCwxNCArOTksMzQgQEAgc3RydWN0IGh0YWJsZSB7XG4gI2RlZmluZSBJUFNFVF9ORVRfQ09VTlRcdFx0MVxuICNlbmRpZlxuIFxuLS8qIEJvb2sta2VlcGluZyBvZiB0aGUgcHJlZml4ZXMgYWRkZWQgdG8gdGhlIHNldCAqL1xuKy8qKlxuKyAqIHN0cnVjdCBuZXRfcHJlZml4IC0gUmVwcmVzZW50YXRpb24gb2YgYSBuZXR3b3JrIHByZWZpeC5cbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC5cbisgKiBAY291bnQ6IE51bWJlciBvZiBvY2N1cnJlbmNlcy5cbisgKi9cbiBzdHJ1Y3QgbmV0X3ByZWZpeCB7XG4tXHR1OCBjaWRyO1x0XHRcdC8qIHRoZSBjaWRyIHZhbHVlICovXG4tXHR1MzIgY291bnQ7XHRcdFx0LyogbnVtYmVyIG9mIGVsZW1lbnRzIG9mIHRoaXMgY2lkciAqL1xuK1x0dTMyIGNpZHI6ODtcbitcdHUzMiBjb3VudDoyNDtcbiB9O1xuIFxuKyNkZWZpbmUgQ0lEUl9NQVhfQ09VTlQgKCgxIFx1MDAzY1x1MDAzYyAyNCkgLSAxKVxuK1xuKy8qKlxuKyAqIHN0cnVjdCBuZXRfcHJlZml4ZXMgLSBBIGNvbGxlY3Rpb24gb2YgbmV0d29yayBwcmVmaXhlcy5cbisgKiBAcmN1OiBSQ1UgaGVhZFxuKyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0c1xuKyAqIEBsZW46IE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBhcnJheS5cbisgKiBAbmV0czogQXJyYXkgb2YgbmV0X3ByZWZpeCBzdHJ1Y3R1cmVzIChzb3J0ZWQgYnkgQ0lEUiBkZXNjZW5kaW5nKS5cbisgKlxuKyAqIEBuZXRzIGVudHJpZXMgYXJlIHVwZGF0ZWQgaW4gcGxhY2UgdW5kZXIgQHNldCdzIGxvY2suIEEgc2luZ2xlIGVudHJ5J3NcbisgKiBjaWRyL2NvdW50IHBhaXIgaXMgYWx3YXlzIHVwZGF0ZWQgYXRvbWljYWxseSB2aWEgUkVBRF9PTkNFKCkvV1JJVEVfT05DRSgpLFxuKyAqIGJ1dCByZW1vdmluZyBhbiBlbnRyeSBhbHNvIHNoaWZ0cyBldmVyeSBmb2xsb3dpbmcgZW50cnkgZG93biBieSBvbmUgc2xvdC5cbisgKiBMb2NrbGVzcyByZWFkZXJzIHRoYXQgc2NhbiB0aGUgd2hvbGUgYXJyYXkgKGkuZS4gbW9yZSB0aGFuIGEgc2luZ2xlXG4rICogaW5kZXhlZCBzbG90KSBtdXN0IHVzZSBAc2VxIHRvIGRldGVjdCBhbmQgcmV0cnkgYWNyb3NzIHN1Y2ggYSBzaGlmdC5cbisgKi9cbiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIHtcbiBcdHN0cnVjdCByY3VfaGVhZCByY3U7XG4rXHRzZXFjb3VudF9zcGlubG9ja190IHNlcTtcbiBcdHU4IGxlbjtcbiBcdHN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTtcbiB9O1xuQEAgLTE0Myw4ICsxNjQsMTEgQEAgaHRhYmxlX3NpemUodTggaGJpdHMpXG4gI2VuZGlmXG4gXG4gI2RlZmluZSBJTklUX0NJRFIobiwgaG9zdF9tYXNrKSAoe1x0XHRcdFx0XFxcbi1cdGNvbnN0IHN0cnVjdCBuZXRfcHJlZml4ZXMgKl9fbiA9IHJjdV9kZXJlZmVyZW5jZShuKTtcdFx0XFxcbi1cdERDSURSX1BVVCgoX19uKS1cdTAwM2VsZW4gPyAoX19uKS1cdTAwM2VuZXRzWzBdLmNpZHIgOiBob3N0X21hc2spO1xcXG4rXHRjb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7XHRcXFxuK1x0c3RydWN0IG5ldF9wcmVmaXggX19wID1cdFx0XHRcdFx0XFxcbitcdFx0X19uLVx1MDAzZWxlbiA/IFJFQURfT05DRShfX24tXHUwMDNlbmV0c1swXSlcdFx0XFxcbitcdFx0XHQgOiAoc3RydWN0IG5ldF9wcmVmaXgpe307XHRcdFxcXG4rXHREQ0lEUl9QVVQoX19wLmNvdW50ID8gX19wLmNpZHIgOiBob3N0X21hc2spO1x0XHRcXFxuIH0pXG4gXG4gI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqL1xuQEAgLTMxOCwyNyArMzQyLDQzIEBAIHN0cnVjdCBtdHlwZV9yZXNpemVfYWQge1xuIH07XG4gXG4gI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xuLS8qIE5ldHdvcmsgY2lkciBzaXplIGJvb2sga2VlcGluZyB3aGVuIHRoZSBoYXNoIHN0b3JlcyBkaWZmZXJlbnRcbi0gKiBzaXplZCBuZXR3b3Jrcy4gY2lkciA9PSByZWFsIGNpZHIgKyAxIHRvIHN1cHBvcnQgLzAuXG4rLyoqXG4rICogbXR5cGVfYWRkX2NpZHIgLSBBZGQgYSBDSURSIGVudHJ5IHRvIGhhc2ggdGFibGUgYm9va2tlZXBpbmdcbisgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXRcbisgKiBAaDogUG9pbnRlciB0byB0aGUgaHR5cGVcbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aFxuKyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gYWRkIEBjaWRyIHRvXG4rICpcbisgKiBQZXJmb3JtcyBhbiB1cGRhdGUgaWYgQGNpZHIgaXMgZm91bmQsIG90aGVyd2lzZSBwZXJmb3JtcyBDT1ctc3R5bGVcbisgKiBhbGxvY2F0aW9uIGFuZCByZXBsYWNlbWVudCB2aWEgUkNVLlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbiAgKi9cbiBzdGF0aWMgaW50XG4gbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG4ge1xuLVx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcbiBcdGludCBpLCBqLCBmb3VuZCwgbGVuID0gMCwgcmV0ID0gMDtcbitcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XG4rXHRzdHJ1Y3QgbmV0X3ByZWZpeCBucDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdC8qIEFkZCBpbiBpbmNyZWFzaW5nIHByZWZpeCBvcmRlciwgc28gbGFyZ2VyIGNpZHIgZmlyc3QgKi9cbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpKyspIHtcbi1cdFx0aWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudClcbitcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbitcdFx0aWYgKG5wLmNvdW50KVxuIFx0XHRcdGxlbisrO1xuIFx0XHRpZiAoZm91bmQgIT0gLTEpIHtcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0fSBlbHNlIGlmIChuZXRzLVx1MDAzZW5ldHNbaV0uY2lkciBcdTAwM2MgY2lkcikge1xuK1x0XHR9IGVsc2UgaWYgKG5wLmNpZHIgXHUwMDNjIGNpZHIpIHtcbiBcdFx0XHRmb3VuZCA9IGk7XG4tXHRcdH0gZWxzZSBpZiAobmV0cy1cdTAwM2VuZXRzW2ldLmNpZHIgPT0gY2lkcikge1xuLVx0XHRcdG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudCsrO1xuK1x0XHR9IGVsc2UgaWYgKG5wLmNpZHIgPT0gY2lkcikge1xuK1x0XHRcdGlmIChucC5jb3VudCBcdTAwM2MgQ0lEUl9NQVhfQ09VTlQpIHtcbitcdFx0XHRcdG5wLmNvdW50Kys7XG4rXHRcdFx0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tpXSwgbnApO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRyZXQgPSAtRU9WRVJGTE9XO1xuK1x0XHRcdH1cbiBcdFx0XHRnb3RvIHVubG9jaztcbiBcdFx0fVxuIFx0fVxuQEAgLTM1MCw2ICszOTAsNyBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcbiBcdH1cbiBcbiBcdHRtcC1cdTAwM2VsZW4gPSBsZW47XG4rXHRzZXFjb3VudF9zcGlubG9ja19pbml0KFx1MDAyNnRtcC1cdTAwM2VzZXEsIFx1MDAyNnNldC1cdTAwM2Vsb2NrKTtcbiBcdGZvciAoaSA9IDAsIGogPSAwOyBpIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaSsrKSB7XG4gXHRcdGlmIChpID09IGZvdW5kKSB7XG4gXHRcdFx0dG1wLVx1MDAzZW5ldHNbal0uY2lkciA9IGNpZHI7XG5AQCAtMzcxLDQyICs0MTIsNjAgQEAgbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbisvKipcbisgKiBtdHlwZV9kZWxfY2lkciAtIFJlbW92ZSBDSURSIGVudHJ5IGFuZCBtYWludGFpbiBhcnJheSBpbnRlZ3JpdHkuXG4rICogQHNldDogUG9pbnRlciB0byB0aGUgaXBfc2V0LlxuKyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS5cbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC5cbisgKiBAbjogVGhlIGluZGV4IG9mIHRoZSBuZXRfcHJlZml4IGFycmF5IHRvIHJlbW92ZSBAY2lkciBmcm9tXG4rICpcbisgKiBJZiBDSURSIGVudHJ5IGNvdW50IGZhbGxzIHRvIDAsIHRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSBcInNoaWZ0LWxlZnRcIlxuKyAqIG9wZXJhdGlvbiBvbiBhbGwgZm9sbG93aW5nIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJyYXkgcmVtYWluc1xuKyAqIGNvbnRpZ3VvdXMgYW5kIG1haW50YWlucyBpdHMgZGVzY2VuZGluZyBvcmRlciBieSBDSURSLiBUaGUgdmFjYXRlZCBzbG90XG4rICogYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkgaXMgemVyb2VkIG91dCAoY2lkcj0wLCBjb3VudD0wKS5cbisgKi9cbiBzdGF0aWMgdm9pZFxuIG10eXBlX2RlbF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxuIHtcbi1cdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XG4tXHR1OCBpLCBqLCBsZW4gPSAwO1xuK1x0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cztcbitcdHN0cnVjdCBuZXRfcHJlZml4IG5wO1xuIFx0aW50IGZvdW5kO1xuK1x0dTggaSwgajtcbitcbitcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IG5ldF9wcmVmaXgpICE9IHNpemVvZih1MzIpKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpKyspIHtcbi1cdFx0aWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudClcbi1cdFx0XHRsZW4rKztcbi1cdFx0aWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpXG4rXHRcdG5wID0gUkVBRF9PTkNFKG5ldHMtXHUwMDNlbmV0c1tpXSk7XG4rXHRcdGlmIChucC5jb3VudCBcdTAwMjZcdTAwMjYgbnAuY2lkciA9PSBjaWRyKSB7XG4rXHRcdFx0bnAuY291bnQtLTtcbiBcdFx0XHRmb3VuZCA9IGk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdH1cbiBcdGlmICh1bmxpa2VseShmb3VuZCA9PSAtMSkpXG4gXHRcdGdvdG8gdW5sb2NrO1xuIFxuLVx0bmV0cy1cdTAwM2VuZXRzW2ZvdW5kXS5jb3VudC0tO1xuLVx0aWYgKG5ldHMtXHUwMDNlbmV0c1tmb3VuZF0uY291bnQpXG4tXHRcdGdvdG8gdW5sb2NrO1xuLVx0bGVuLS07XG4tXHR0bXAgPSBremFsbG9jX2ZsZXgoKnRtcCwgbmV0cywgbGVuLCBHRlBfQVRPTUlDKTtcbi1cdGlmICghdG1wKVxuLVx0XHQvKiBMZWF2ZSBhIGhvbGUgKi9cbitcdGlmIChucC5jb3VudCkge1xuK1x0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tmb3VuZF0sIG5wKTtcbiBcdFx0Z290byB1bmxvY2s7XG4rXHR9XG4gXG4tXHR0bXAtXHUwMDNlbGVuID0gbGVuO1xuK1x0d3JpdGVfc2VxY291bnRfYmVnaW4oXHUwMDI2bmV0cy1cdTAwM2VzZXEpO1xuIFx0Zm9yIChpID0gMCwgaiA9IDA7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpKyspIHtcbi1cdFx0aWYgKCFuZXRzLVx1MDAzZW5ldHNbaV0uY291bnQgfHwgaSA9PSBmb3VuZClcbitcdFx0aWYgKGkgPT0gZm91bmQpXG4gXHRcdFx0Y29udGludWU7XG4tXHRcdHRtcC1cdTAwM2VuZXRzW2pdLmNpZHIgPSBuZXRzLVx1MDAzZW5ldHNbaV0uY2lkcjtcbi1cdFx0dG1wLVx1MDAzZW5ldHNbaisrXS5jb3VudCA9IG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudDtcbitcbitcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbitcdFx0aWYgKGkgIT0gailcbitcdFx0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tqXSwgbnApO1xuK1x0XHRqKys7XG4gXHR9XG4tXHRyY3VfYXNzaWduX3BvaW50ZXIoaC1cdTAwM2VybmV0c1tuXSwgdG1wKTtcbi1cdGtmcmVlX3JjdShuZXRzLCByY3UpO1xuK1xuK1x0d2hpbGUgKGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuKVxuK1x0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tqKytdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xuK1x0d3JpdGVfc2VxY291bnRfZW5kKFx1MDAyNm5ldHMtXHUwMDNlc2VxKTtcbiB1bmxvY2s6XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gfVxuQEAgLTQ1MSw3ICs1MTAsNyBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG4ge1xuIFx0c3RydWN0IGh0eXBlICpoID0gc2V0LVx1MDAzZWRhdGE7XG4gI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xuLVx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcbitcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHM7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgaHRhYmxlICp0O1xuIFx0c3RydWN0IGhidWNrZXQgKm47XG5AQCAtNDc3LDE3ICs1MzYsMTUgQEAgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxuIFx0fVxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIElQU0VUX05FVF9DT1VOVDsgaSsrKSB7XG4tXHRcdG5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtXHUwMDNlcm5ldHNbaV0pO1xuLVx0XHR0bXAgPSBremFsbG9jX29iaigqdG1wLCBHRlBfQVRPTUlDKTtcbi1cdFx0aWYgKCF0bXApIHtcbi1cdFx0XHR1OCBqO1xuK1x0XHR1OCBqO1xuIFxuLVx0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBqKyspXG4tXHRcdFx0XHRuZXRzLVx1MDAzZW5ldHNbal0uY291bnQgPSAwO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihoLVx1MDAzZXJuZXRzW2ldLCB0bXApO1xuLVx0XHRcdGtmcmVlX3JjdShuZXRzLCByY3UpO1xuLVx0XHR9XG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4rXHRcdG5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtXHUwMDNlcm5ldHNbaV0pO1xuK1x0XHR3cml0ZV9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4rXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBqKyspXG4rXHRcdFx0V1JJVEVfT05DRShuZXRzLVx1MDAzZW5ldHNbaisrXSwgKHN0cnVjdCBuZXRfcHJlZml4KXt9KTtcbitcdFx0d3JpdGVfc2VxY291bnRfZW5kKFx1MDAyNm5ldHMtXHUwMDNlc2VxKTtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuIFx0fVxuICNlbmRpZlxuIH1cbkBAIC0xMjUzLDMxICsxMzEwLDQxIEBAIG10eXBlX3Rlc3RfY2lkcnMoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbXR5cGVfZWxlbSAqZCxcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcbiBcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMxO1xuIFx0c3RydWN0IG10eXBlX2VsZW0gb3JpZyA9ICpkO1xuK1x0dW5zaWduZWQgaW50IHNlcTE7XG4gXHRpbnQgcmV0LCBpLCBqLCBrO1xuICNlbHNlXG4gXHRpbnQgcmV0LCBpLCBqO1xuICNlbmRpZlxuLVx0dTMyIGtleSwgbXVsdGkgPSAwO1xuK1x0dW5zaWduZWQgaW50IHNlcTA7XG4rXHR1MzIga2V5LCBtdWx0aTtcbiBcdHU4IHBvcztcbiBcbiBcdHByX2RlYnVnKFwidGVzdCBieSBuZXRzXFxuXCIpO1xuIFx0cmN1X3JlYWRfbG9ja19iaCgpO1xuK3JldHJ5OlxuK1x0bXVsdGkgPSAwO1xuIFx0bmV0czAgPSByY3VfZGVyZWZlcmVuY2VfYmgoaC1cdTAwM2VybmV0c1swXSk7XG4rXHRzZXEwID0gcmVhZF9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzMC1cdTAwM2VzZXEpO1xuICNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMlxuIFx0bmV0czEgPSByY3VfZGVyZWZlcmVuY2VfYmgoaC1cdTAwM2VybmV0c1sxXSk7XG4rXHRzZXExID0gcmVhZF9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzMS1cdTAwM2VzZXEpO1xuICNlbmRpZlxuIFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgbmV0czAtXHUwMDNlbGVuIFx1MDAyNlx1MDAyNiAhbXVsdGk7IGorKykge1xuLVx0XHRpZiAoIW5ldHMwLVx1MDAzZW5ldHNbal0uY291bnQpXG4rXHRcdHN0cnVjdCBuZXRfcHJlZml4IHAwID0gUkVBRF9PTkNFKG5ldHMwLVx1MDAzZW5ldHNbal0pO1xuK1xuK1x0XHRpZiAoIXAwLmNvdW50KVxuIFx0XHRcdGNvbnRpbnVlO1xuICNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMlxuIFx0XHRtdHlwZV9kYXRhX3Jlc2V0X2VsZW0oZCwgXHUwMDI2b3JpZyk7XG4tXHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMC1cdTAwM2VuZXRzW2pdLmNpZHIsIGZhbHNlKTtcbitcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAwLmNpZHIsIGZhbHNlKTtcbiBcdFx0Zm9yIChrID0gMDsgayBcdTAwM2MgbmV0czEtXHUwMDNlbGVuIFx1MDAyNlx1MDAyNiAhbXVsdGk7IGsrKykge1xuLVx0XHRcdGlmICghbmV0czEtXHUwMDNlbmV0c1trXS5jb3VudClcbitcdFx0XHRzdHJ1Y3QgbmV0X3ByZWZpeCBwMSA9IFJFQURfT05DRShuZXRzMS1cdTAwM2VuZXRzW2tdKTtcbitcbitcdFx0XHRpZiAoIXAxLmNvdW50KVxuIFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMxLVx1MDAzZW5ldHNba10uY2lkciwgdHJ1ZSk7XG4rXHRcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAxLmNpZHIsIHRydWUpO1xuICNlbHNlXG4tXHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMC1cdTAwM2VuZXRzW2pdLmNpZHIpO1xuK1x0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgcDAuY2lkcik7XG4gI2VuZGlmXG4gXHRcdGtleSA9IEhLRVkoZCwgaC1cdTAwM2Vpbml0dmFsLCB0LVx1MDAzZWh0YWJsZV9iaXRzKTtcbiBcdFx0biA9IHJjdV9kZXJlZmVyZW5jZV9iaChoYnVja2V0KHQsIGtleSkpO1xuQEAgLTEzMDIsNiArMTM2OSwxMyBAQCBtdHlwZV90ZXN0X2NpZHJzKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG10eXBlX2VsZW0gKmQsXG4gXHRcdH1cbiAjZW5kaWZcbiBcdH1cbitcbitcdGlmIChyZWFkX3NlcWNvdW50X3JldHJ5KFx1MDAyNm5ldHMwLVx1MDAzZXNlcSwgc2VxMCkpXG4rXHRcdGdvdG8gcmV0cnk7XG4rI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXG4rXHRpZiAocmVhZF9zZXFjb3VudF9yZXRyeShcdTAwMjZuZXRzMS1cdTAwM2VzZXEsIHNlcTEpKVxuK1x0XHRnb3RvIHJldHJ5O1xuKyNlbmRpZlxuIFx0cmV0ID0gMDtcbiB1bmxvY2s6XG4gXHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcbkBAIC0xNzA3LDYgKzE3ODEsNyBAQCBJUFNFVF9UT0tFTihIVFlQRSwgX2NyZWF0ZSkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaXBfc2V0ICpzZXQsXG4gXHRcdFx0XHRrZnJlZShyY3VfZGVyZWZlcmVuY2VfcmF3KGgtXHUwMDNlcm5ldHNbLS1pXSkpO1xuIFx0XHRcdGdvdG8gZnJlZV9ocmVnaW9uO1xuIFx0XHR9XG4rXHRcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXHUwMDI2bmV0cy1cdTAwM2VzZXEsIFx1MDAyNnNldC1cdTAwM2Vsb2NrKTtcbiBcdFx0UkNVX0lOSVRfUE9JTlRFUihoLVx1MDAzZXJuZXRzW2ldLCBuZXRzKTtcbiBcdH1cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcbmluZGV4IGI0NGI5NWY3NjZiN2EuLmI2MDJjYzQzNTY1ZGQgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xuQEAgLTM4LDcgKzM4LDYgQEAgTU9EVUxFX0FMSUFTKFwiaXBfc2V0X2hhc2g6bmV0LGlmYWNlXCIpO1xuICNkZWZpbmUgSFRZUEVcdFx0aGFzaF9uZXRpZmFjZVxuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX01VTFRJXG4tI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVDBcbiBcbiAjZGVmaW5lIFNUUlNDUFkoYSwgYilcdHN0cnNjcHkoYSwgYiwgSUZOQU1TSVopXG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xuaW5kZXggNjI5MTUzMmJlN2E1YS4uNjFhZjFjZTI3MTI3OSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xuQEAgLTM2LDcgKzM2LDYgQEAgTU9EVUxFX0FMSUFTKFwiaXBfc2V0X2hhc2g6bmV0LHBvcnQsbmV0XCIpO1xuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4gI2RlZmluZSBJUFNFVF9ORVRfQ09VTlQgMlxuLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVQwXG4gXG4gLyogSVB2NCB2YXJpYW50ICovXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzoyOC43NzQzMzIwODRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzU3NDM2NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVBzZXQgSGFzaCBUeXBlIE9wdGltaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSEgSXQgdG91Y2hlcyBjcml0aWNhbCBmaWxlcyDigJMgYGlwX3NldF9oYXNoX2dlbi5oYCwgYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgLCBhbmQgYGlwX3NldF9oYXNoX25ldHBvcnRuZXQuY2Ag4oCTIG1lYW5pbmcgaXQgYWZmZWN0cyBob3cgYG5ldF9wcmVmaXhlc2AgYXJlIG1hbmFnZWQgd2l0aGluIHZhcmlvdXMgaXBzZXQgaGFzaCB0eXBlcy4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWJvdXQgdGhlIGhhbmRsaW5nIG9mIENJRFJzLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBgc2VxY291bnRfc3BpbmxvY2tfdCBzZXFgIGluIGBzdHJ1Y3QgbmV0X3ByZWZpeGVzYCBmb3Igc29tZSBraW5kIG9mIGluLXBsYWNlIHJlb3JkZXJpbmcgb2YgYG5ldHNgLlxuXG5NeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQncyBhaW1pbmcgdG8gb3B0aW1pemUgaG93IENJRFJzIGFyZSB0cmFja2VkLCBidXQgdGhlIGNoYW5nZSBpdHNlbGYgaXMgZmFpcmx5IGxhcmdlLCB0b3VjaGluZyBvbiB0aGUgY29yZSBvZiB0aGUgaXBzZXQgaGFzaCBmdW5jdGlvbmFsaXR5LiBGcm9tIHRoZSBkZXNjcmlwdGlvbiwgYG10eXBlX2FkZF9jaWRyYCBhbmQgYG10eXBlX2RlbF9jaWRyYCBhcmUgYmVpbmcgbW9kaWZpZWQgdG8gZG8gaW4tcGxhY2UgdXBkYXRlcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZXkgYXJlIHVwZGF0aW5nIGVudHJpZXMgaW4tcGxhY2UgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGEgbmV3IGBuZXRfcHJlZml4ZXNgIGFycmF5IOKAkyBleGNlcHQgd2hlbiBhZGRpbmcgYSBDSURSIHdoaWNoIHJlcXVpcmVzIGV4cGFuZGluZyB0aGUgYXJyYXkgYW5kLCBldmVuIHRoZW4sIGBtdHlwZV9hZGRfY2lkcmAgaXMgc3RpbGwgYWxsb2NhdGluZyBhIG5ldyBhcnJheSBpZiB0aGUgQ0lEUiBpcyBub3QgZm91bmQuIFRoZSBgbXR5cGVfZGVsX2NpZHJgIGZ1bmN0aW9uIGlzIG5vdyBzaGlmdGluZyBlbGVtZW50cyBpbi1wbGFjZSBhbmQgdXNpbmcgYHdyaXRlX3NlcWNvdW50X2JlZ2luL2VuZGAsIHdoaWNoIGlzIGdyZWF0IGZvciBjb25jdXJyZW5jeS4gQW5kIGBtdHlwZV90ZXN0X2NpZHJzYCBpcyB1c2luZyBgcmVhZF9zZXFjb3VudF9iZWdpbi9yZXRyeWAgdG8gaGFuZGxlIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucy4gVGhpcyBpcyByZWFsbHkgaW1wb3J0YW50LlxuXG5Pa2F5LCBzbyB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBhcmUgdGhlIG1hY3Jvcy90ZW1wbGF0ZXMgaW4gYGlwX3NldF9oYXNoX2dlbi5oYC4gVGhleSdyZSBpbnN0YW50aWF0ZWQgZm9yIGRpZmZlcmVudCBoYXNoIHR5cGVzIGxpa2UgYGhhc2hfbmV0aWZhY2U0X2FkZGAsIGBoYXNoX25ldGlmYWNlNF9kZWxgLCBhbmQgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgbXR5cGVfYWRkX2NpZHJgIGlzIHVzZWQuIEkgc2VlIGl0J3MgdXNlZCB3aXRoaW4gYG10eXBlX2FkZGAgKGxpa2UgYGhhc2hfbmV0NF9hZGRgLCBgaGFzaF9uZXRwb3J0bmV0NF9hZGRgLCBldGMuKS4gUmlnaHQsIHNvIGl0IGNhbGxzIGBtdHlwZV9hZGRfY2lkcmAuIEkgbmVlZCB0byB6ZXJvIGluIG9uIGhvdyB0aGVzZSBhcmUgdXNlZC4gTGV0IG1lIGdyZXAgZm9yIGBtdHlwZV9hZGRfY2lkcmAgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oYC4gT2theSwgbGV0J3MgZ2V0IHRvIHdvcmsgYW5kIGZpbmQgdGhlIGtleSBhcmVhcyB0byBpbnZlc3RpZ2F0ZS4gVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgdGhvcm91Z2ggZnV6emluZyBjYW1wYWlnbiB0byBjYXRjaCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciByZWdyZXNzaW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNDEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzozNi41MzE3NzE3NTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA4MjcwNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXR5cGVfYWRkX2NpZHJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIxOS0jdW5kZWYgbXR5cGVfZXh0X2NsZWFudXBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIyMDojdW5kZWYgbXR5cGVfYWRkX2NpZHJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMS0jdW5kZWYgbXR5cGVfZGVsX2NpZHJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY3LSNkZWZpbmUgbXR5cGVfZXh0X2NsZWFudXBcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2V4dF9jbGVhbnVwKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjY4OiNkZWZpbmUgbXR5cGVfYWRkX2NpZHJcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZF9jaWRyKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY5LSNkZWZpbmUgbXR5cGVfZGVsX2NpZHJcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbF9jaWRyKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0zMzU9c3RydWN0IG10eXBlX3Jlc2l6ZV9hZCB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTM0NS0vKipcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjM0NjogKiBtdHlwZV9hZGRfY2lkciAtIEFkZCBhIENJRFIgZW50cnkgdG8gaGFzaCB0YWJsZSBib29ra2VlcGluZ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzQ3LSAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0zNTc9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MzU4Om10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzU5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg4PW10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xMTEzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBJUFNFVF9ORVRfQ09VTlQ7IGkrKylcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjExMTQ6XFx0XFx0bXR5cGVfYWRkX2NpZHIoc2V0LCBoLCBEQ0lEUl9HRVQoZC1cXHUwMDNlY2lkciwgaSksIGkpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTExNS0jZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzM6MzYuNTgyNjE2MjM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MDE1MjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIElQU0VUIFRva2VuIEluc3RhbnRpYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBob3cgdGhlc2UgSVBTRVQgZnVuY3Rpb25zIGFyZSBiZWluZyBicm91Z2h0IHRvIGxpZmUsIGFuZCBpdCdzIGhhcHBlbmluZyB0aHJvdWdoIHRoZSBgSVBTRVRfVE9LRU4oTVRZUEUsIF9hZGRfY2lkcilgIG1hY3JvLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhhdCBgTVRZUEVgIHBhcmFtZXRlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBgTVRZUEVgIHZhbHVlcyBhcmUgYmVpbmcgdXNlZCBmb3IgdGhlIGBoYXNoX25ldGlmYWNlYCBhbmQgYGhhc2hfbmV0cG9ydG5ldGAgdHlwZXMuIEtub3dpbmcgdGhvc2Ugd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZXMgYW5kIHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIGJlaW5nIGxldmVyYWdlZCBkdXJpbmcgdGhlIENJRFIgYWRkaXRpb24gcHJvY2Vzcy4gSSdtIGFzc3VtaW5nIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIHNwZWNpYWxpemF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gaGFwcGVuaW5nIGF0IGNvbXBpbGUgdGltZSBiYXNlZCBvbiBgTVRZUEVgLCBhbmQgSSBuZWVkIHRvIHNlZSBpZiB0aGF0IGltcGFjdHMgcGVyZm9ybWFuY2Ugb3IgbWVtb3J5IHVzYWdlIGluIGFueSBzaWduaWZpY2FudCB3YXkuIFRpbWUgdG8gZGlnIGludG8gdGhlIGRlZmluaXRpb25zIGFuZCBzZWUgd2hhdCdzIHdoYXQuIFRoaXMgaXMgd2hlcmUgdGhlIGRldmlsJ3MgaW4gdGhlIGRldGFpbHMsIHNvIGxldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc0OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjMzOjQwLjAyMjc3MTMzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDE3OTU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIE1UWVBFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jPTMzPU1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2JpdG1hcDppcFxcXCIpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jLTM0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jOjM1OiNkZWZpbmUgTVRZUEVcXHRcXHRiaXRtYXBfaXBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXAuYy0zNi0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXBtYWMuYz0zMz1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9iaXRtYXA6aXAsbWFjXFxcIik7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmMtMzQtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmM6MzU6I2RlZmluZSBNVFlQRVxcdFxcdGJpdG1hcF9pcG1hY1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcG1hYy5jLTM2LSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9wb3J0LmM9Mjc9TU9EVUxFX0FMSUFTKFxcXCJpcF9zZXRfYml0bWFwOnBvcnRcXFwiKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfcG9ydC5jLTI4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9wb3J0LmM6Mjk6I2RlZmluZSBNVFlQRVxcdFxcdGJpdG1hcF9wb3J0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX3BvcnQuYy0zMC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYz03MD1oYXNoX2lwNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXA0X2VsZW0gKm5leHQsIGNvbnN0IHN0cnVjdCBoYXNoX2lwNF9lbGVtICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jLTc0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYzo3NTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmMtNzYtI2RlZmluZSBIT1NUX01BU0tcXHQzMlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jPTIwMj1oYXNoX2lwNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXA2X2VsZW0gKm5leHQsIGNvbnN0IHN0cnVjdCBoYXNoX2lwNl9lbGVtICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jLTIwOC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmM6MjA5OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwNlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYy0yMTAtI2RlZmluZSBIT1NUX01BU0tcXHQxMjhcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYz03Mj1oYXNoX2lwbWFjNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYWM0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtNzctXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jOjc4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwbWFjNFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYy03OS0jZGVmaW5lIFBGXFx0XFx0NFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jPTE4MD1oYXNoX2lwbWFjNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYWM2X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtMTg5LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYzoxOTA6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfaXBtYWM2XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jLTE5MS0jZGVmaW5lIFBGXFx0XFx0Nlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYz02OT1oYXNoX2lwbWFyazRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwbWFyazRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtNzQtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYzo3NTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcG1hcms0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYy03Ni0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jPTIwNT1oYXNoX2lwbWFyazZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwbWFyazZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtMjEyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmM6MjEzOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwbWFyazZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jLTIxNC0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYz03OT1oYXNoX2lwcG9ydDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtODUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYzo4NjojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcHBvcnQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYy04Ny0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jPTI0OT1oYXNoX2lwcG9ydDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtMjU3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmM6MjU4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jLTI1OS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jPTc3PWhhc2hfaXBwb3J0aXA0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnRpcDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy04NC0vKiBDb21tb24gZnVuY3Rpb25zICovXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jOjg1OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydGlwNFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy04Ni0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmM9MjQ4PWhhc2hfaXBwb3J0aXA2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnRpcDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy0yNTYtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jOjI1NzojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcHBvcnRpcDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmMtMjU4LSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTEyMT1oYXNoX2lwcG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMTI4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6MTI5OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydG5ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTEzMC0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTM3OT1oYXNoX2lwcG9ydG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMzg3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6Mzg4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydG5ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTM4OS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYz02MT1oYXNoX21hYzRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX21hYzRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbWFjLmMtNjUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYzo2NjojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9tYWM0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYy02Ny0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTEwMj1oYXNoX25ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMTA3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM6MTA4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTEwOS0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTI3Mz1oYXNoX25ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMjgwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM6MjgxOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTI4Mi0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTEyOD1oYXNoX25ldGlmYWNlNF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTMzLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxMzQ6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfbmV0aWZhY2U0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTEzNS0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzYyPWhhc2hfbmV0aWZhY2U2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRpZmFjZTZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zNjktXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM3MDojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRpZmFjZTZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzcxLSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTEyNT1oYXNoX25ldG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldG5ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMTMwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MTMxOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldG5ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTEzMi0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTM2Mz1oYXNoX25ldG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldG5ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzcwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MzcxOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldG5ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3Mi0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM9MTE3PWhhc2hfbmV0cG9ydDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0xMjMtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6MTI0OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldHBvcnQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMTI1LSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jPTMzND1oYXNoX25ldHBvcnQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0Nl9lbGVtICpuZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMzQyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjM0MzojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRwb3J0Nlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTM0NC0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9MTMxPWhhc2hfbmV0cG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnRuZXQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzctXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM6MTM4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldHBvcnRuZXQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtMTM5LSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jPTQyNT1oYXNoX25ldHBvcnRuZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0bmV0Nl9lbGVtICpuZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDMzLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jOjQzNDojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRwb3J0bmV0Nlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTQzNS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzo0MC4wNjY5NTk0MjFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjI3MjgwOTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqTWFjcm8gTWFnaWMgYW5kIElQIFNldCBPcGVyYXRpb25zKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgaG93IHRoZXNlIElQIHNldCBmdW5jdGlvbmFsaXRpZXMgYXJlIGNyZWF0ZWQgaGluZ2VzIG9uIG1hY3Jvcy4gVGhhdCdzIGEgY2xhc3NpYyBhcHByb2FjaCwgdmVyeSBjb21tb24gZm9yIGdlbmVyYXRpbmcgcmVwZXRpdGl2ZSBjb2RlIG9yIGNvbmZpZ3VyYXRpb25zLiBNeSBwcmltYXJ5IGNvbmNlcm4sIHRoZXJlZm9yZSwgaXMgd2hlcmUgdGhlc2UgbWFjcm9zIGFyZSBkZWZpbmVkIGFuZCBob3cgdGhleSBhcmUgdXNlZCwgYmVjYXVzZSAqdGhhdCogaXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIGxvZ2ljIHdpbGwgcmVzaWRlLlxuXG5Gcm9tIG15IHVuZGVyc3RhbmRpbmcsIHRoZSByZWFsIG1lYXQgb2YgdGhlIElQIHNldCBvcGVyYXRpb24sIHRoZSBwYXJ0cyB0aGF0IGdldCBleHBvcnRlZCBhbmQgcmVnaXN0ZXJlZCB3aXRoIHRoZSBrZXJuZWwsIGFyZSB0aGUgYGlwX3NldF90eXBlYCBvcGVyYXRpb25zIHRoZW1zZWx2ZXMuIFRoYXQncyB0aGUgdml0YWwgaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBzZXRzLiBTbywgdGhlIHF1ZXN0aW9uIGlzIG5vdCAqd2hhdCogYXJlIHdlIHdvcmtpbmcgd2l0aCwgYnV0IHJhdGhlciAqaG93KiBhcmUgd2UgY3JlYXRpbmcgdGhlIGlwX3NldF90eXBlIG9iamVjdHMuXG5cbkknbGwgZGl2ZSBpbnRvIHRoZSBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCBmaWxlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY29uY3JldGUgZXhhbXBsZSBvZiBob3cgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHdvcmtzLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgbWFjcm9zIHRyYW5zbGF0ZSBpbnRvIHRoZXNlIHJlZ2lzdGVyZWQgZnVuY3Rpb25zIGFuZCB3aGF0IHRoZSBjcml0aWNhbCBgaXBfc2V0X3R5cGVgIHN0cnVjdHVyZSBsb29rcyBsaWtlIGluIHByYWN0aWNlLiBPbmNlIEkgdW5kZXJzdGFuZCB0aGF0LCBJIGNhbiBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb25hbGl0eSBtb3JlIGdlbmVyYWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NjksIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzo0NC42OTQyNDI1NDFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyMjQxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X3R5cGVfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz01MTE9aGFzaF9uZXRpZmFjZV9pbml0KHZvaWQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTUxMi17XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjUxMzpcXHRyZXR1cm4gaXBfc2V0X3R5cGVfcmVnaXN0ZXIoXFx1MDAyNmhhc2hfbmV0aWZhY2VfdHlwZSk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTUxNC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjMzOjQ0LjczOTQ3MTgzOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTYwNjAzMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyB0aGUgYGhhc2hfbmV0aWZhY2VfdHlwZWAgT3BlcmF0aW9ucyoqXG5cbkFscmlnaHQsIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYGhhc2hfbmV0aWZhY2VfdHlwZWAgc3RydWN0dXJlLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIGEga2V5IGRhdGEgc3RydWN0dXJlIGhhbmRsaW5nIG5ldHdvcmsgaW50ZXJmYWNlIHR5cGVzLiBUaGUgY29yZSBvcGVyYXRpb25zIGRlZmluZWQgYXJlIGBrYWR0YCwgYHVhZHRgLCBgYWRkYCwgYGRlbGAsIGFuZCBgdGVzdGAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hhdCBzcGVjaWZpYyBmdW5jdGlvbnMgYXJlICpib3VuZCogdG8gZWFjaCBvZiB0aGVzZSBvcGVyYXRpb25zPyBga2FkdGAgYW5kIGB1YWR0YCBzdWdnZXN0IGtlcm5lbCBhbmQgdXNlci1zcGFjZSBvcGVyYXRpb25zIHJlc3BlY3RpdmVseSwgb24gdGhlIHR5cGUgdGFibGUsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGF0IGVhY2ggbGV2ZWwuICdBZGQnIGFuZCAnRGVsJyBvZiBjb3Vyc2UsIGFyZSB0YWJsZSBtYW5hZ2VtZW50IG9wZXJhdGlvbnMuIEkgcmVhbGx5IG5lZWQgdG8gZHJpbGwgZG93biB0byB1bmRlcnN0YW5kIHdoYXQgdGhleSBkby4gQW5kIG5hdHVyYWxseSwgJ3Rlc3QnIGluZGljYXRlcyBzb21lIGZvcm0gb2YgdmFsaWRhdGlvbiBvciBjaGVja2luZyBvbiB0aGUgZGF0YS4gSSBuZWVkIHRvIG5vdyBleGFtaW5lIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIGVhY2ggb2YgdGhvc2UgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIG1lY2hhbmljcyBvZiB0aGlzIG1vZHVsZS4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBpbnRlcmVzdGluZyBzdHVmZiBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NjEsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzo0OC4yOTU1MzM5NDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDQ1NDIyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX25ldGlmYWNlX3R5cGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz00MTY9aGFzaF9uZXRpZmFjZTZfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNDY4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzo0Njk6c3RhdGljIHN0cnVjdCBpcF9zZXRfdHlwZSBoYXNoX25ldGlmYWNlX3R5cGUgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNDcwLVxcdC5uYW1lXFx0XFx0PSBcXFwiaGFzaDpuZXQsaWZhY2VcXFwiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTUxMT1oYXNoX25ldGlmYWNlX2luaXQodm9pZClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNTEyLXtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6NTEzOlxcdHJldHVybiBpcF9zZXRfdHlwZV9yZWdpc3RlcihcXHUwMDI2aGFzaF9uZXRpZmFjZV90eXBlKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNTE0LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz01MTc9aGFzaF9uZXRpZmFjZV9maW5pKHZvaWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNTE5LVxcdHJjdV9iYXJyaWVyKCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjUyMDpcXHRpcF9zZXRfdHlwZV91bnJlZ2lzdGVyKFxcdTAwMjZoYXNoX25ldGlmYWNlX3R5cGUpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy01MjEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzo0OC41NjU5OTI4NzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4NTM4NjYxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYGlwX3NldF9oYXNoX25ldGlmYWNlYCBDb2RlKipcblxuT2theSwgSSdtIHRoaW5raW5nIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYGlwX3NldF9oYXNoX25ldGlmYWNlYCBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDQ2OSBvZiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jYC4gTXkgaHVuY2ggaXMgdGhhdCB0aGVyZSdzIHNvbWV0aGluZyBzcGVjaWZpYyB0aGVyZSBJJ20gbG9va2luZyBmb3IgLSBtYXliZSByZWxhdGVkIHRvIGEgcmVjZW50IGJ1ZyByZXBvcnQgb3IgcGVyZm9ybWFuY2UgaXNzdWUgSSd2ZSBiZWVuIHRyYWNraW5nLCBvciBwZXJoYXBzIEknbSB0cnlpbmcgdG8gb3B0aW1pemUgYSBzcGVjaWZpYyBmbG93LiBUaW1lIHRvIGRyaWxsIGRvd24uIEknbSBwcm9iYWJseSBsb29raW5nIGZvciB0aGUgZnVuY3Rpb24gd2hlcmUgdGhlIGludGVyZmFjZSBvciBuZXR3b3JrIGFkZHJlc3MgaGFzaGluZyBpcyBpbXBsZW1lbnRlZC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGtleSBpcyBjb25zdHJ1Y3RlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBoYXNoIHZhbHVlcyBhcmUgZ2VuZXJhdGVkIGZvciBkaWZmZXJlbnQgbmV0aWZhY2Uga2V5cy4gS25vd2luZyBob3cgdGhpcyBwYXJ0aWN1bGFyIGhhc2ggc2V0IHR5cGUgd29ya3MgaW4gcmVsYXRpb24gdG8gaXRzIGtleSBjb25zdHJ1Y3Rpb24gaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW9yIGF0IHNjYWxlLiBJJ20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZyBpbi4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjcwNSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjMzOjUzLjE1MTM4MjU0NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDYwOlxcdFxcdFxcdFxcdGUud2lsZGNhcmQgPSAxO1xcbiA0NjE6XFx0XFx0fVxcbiA0NjI6XFx0XFxuIDQ2MzpcXHRcXHRyZXQgPSBhZHRmbihzZXQsIFxcdTAwMjZlLCBcXHUwMDI2ZXh0LCBcXHUwMDI2ZXh0LCBmbGFncyk7XFxuIDQ2NDpcXHRcXG4gNDY1OlxcdFxcdHJldHVybiBpcF9zZXRfZW5vbWF0Y2gocmV0LCBmbGFncywgYWR0LCBzZXQpID8gLXJldCA6XFxuIDQ2NjpcXHRcXHQgICAgICAgaXBfc2V0X2VleGlzdChyZXQsIGZsYWdzKSA/IDAgOiByZXQ7XFxuIDQ2NzpcXHR9XFxuIDQ2ODpcXHRcXG4gNDY5OlxcdHN0YXRpYyBzdHJ1Y3QgaXBfc2V0X3R5cGUgaGFzaF9uZXRpZmFjZV90eXBlIF9fcmVhZF9tb3N0bHkgPSB7XFxuIDQ3MDpcXHRcXHQubmFtZVxcdFxcdD0gXFxcImhhc2g6bmV0LGlmYWNlXFxcIixcXG4gNDcxOlxcdFxcdC5wcm90b2NvbFxcdD0gSVBTRVRfUFJPVE9DT0wsXFxuIDQ3MjpcXHRcXHQuZmVhdHVyZXNcXHQ9IElQU0VUX1RZUEVfSVAgfCBJUFNFVF9UWVBFX0lGQUNFIHxcXG4gNDczOlxcdFxcdFxcdFxcdCAgSVBTRVRfVFlQRV9OT01BVENILFxcbiA0NzQ6XFx0XFx0LmRpbWVuc2lvblxcdD0gSVBTRVRfRElNX1RXTyxcXG4gNDc1OlxcdFxcdC5mYW1pbHlcXHRcXHQ9IE5GUFJPVE9fVU5TUEVDLFxcbiA0NzY6XFx0XFx0LnJldmlzaW9uX21pblxcdD0gSVBTRVRfVFlQRV9SRVZfTUlOLFxcbiA0Nzc6XFx0XFx0LnJldmlzaW9uX21heFxcdD0gSVBTRVRfVFlQRV9SRVZfTUFYLFxcbiA0Nzg6XFx0XFx0LmNyZWF0ZV9mbGFnc1tJUFNFVF9UWVBFX1JFVl9NQVhdID0gSVBTRVRfQ1JFQVRFX0ZMQUdfQlVDS0VUU0laRSxcXG4gNDc5OlxcdFxcdC5jcmVhdGVcXHRcXHQ9IGhhc2hfbmV0aWZhY2VfY3JlYXRlLFxcbiA0ODA6XFx0XFx0LmNyZWF0ZV9wb2xpY3lcXHQ9IHtcXG4gNDgxOlxcdFxcdFxcdFtJUFNFVF9BVFRSX0hBU0hTSVpFXVxcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4gNDgyOlxcdFxcdFxcdFtJUFNFVF9BVFRSX01BWEVMRU1dXFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbiA0ODM6XFx0XFx0XFx0W0lQU0VUX0FUVFJfSU5JVFZBTF1cXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuIDQ4NDpcXHRcXHRcXHRbSVBTRVRfQVRUUl9CVUNLRVRTSVpFXVxcdD0geyAudHlwZSA9IE5MQV9VOCB9LFxcbiA0ODU6XFx0XFx0XFx0W0lQU0VUX0FUVFJfUkVTSVpFXVxcdD0geyAudHlwZSA9IE5MQV9VOCAgfSxcXG4gNDg2OlxcdFxcdFxcdFtJUFNFVF9BVFRSX1BST1RPXVxcdD0geyAudHlwZSA9IE5MQV9VOCB9LFxcbiA0ODc6XFx0XFx0XFx0W0lQU0VUX0FUVFJfVElNRU9VVF1cXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuIDQ4ODpcXHRcXHRcXHRbSVBTRVRfQVRUUl9DQURUX0ZMQUdTXVxcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4gNDg5OlxcdFxcdH0sXFxuIDQ5MDpcXHRcXHQuYWR0X3BvbGljeVxcdD0ge1xcbiA0OTE6XFx0XFx0XFx0W0lQU0VUX0FUVFJfSVBdXFx0XFx0PSB7IC50eXBlID0gTkxBX05FU1RFRCB9LFxcbiA0OTI6XFx0XFx0XFx0W0lQU0VUX0FUVFJfSVBfVE9dXFx0PSB7IC50eXBlID0gTkxBX05FU1RFRCB9LFxcbiA0OTM6XFx0XFx0XFx0W0lQU0VUX0FUVFJfSUZBQ0VdXFx0PSB7IC50eXBlID0gTkxBX05VTF9TVFJJTkcsXFxuIDQ5NDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgLmxlbiAgPSBJRk5BTVNJWiAtIDEgfSxcXG4gNDk1OlxcdFxcdFxcdFtJUFNFVF9BVFRSX0NBRFRfRkxBR1NdXFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbiA0OTY6XFx0XFx0XFx0W0lQU0VUX0FUVFJfQ0lEUl1cXHQ9IHsgLnR5cGUgPSBOTEFfVTggfSxcXG4gNDk3OlxcdFxcdFxcdFtJUFNFVF9BVFRSX1RJTUVPVVRdXFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbiA0OTg6XFx0XFx0XFx0W0lQU0VUX0FUVFJfTElORU5PXVxcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4gNDk5OlxcdFxcdFxcdFtJUFNFVF9BVFRSX0JZVEVTXVxcdD0geyAudHlwZSA9IE5MQV9VNjQgfSxcXG4gNTAwOlxcdFxcdFxcdFtJUFNFVF9BVFRSX1BBQ0tFVFNdXFx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxcbiA1MDE6XFx0XFx0XFx0W0lQU0VUX0FUVFJfQ09NTUVOVF1cXHQ9IHsgLnR5cGUgPSBOTEFfTlVMX1NUUklORyxcXG4gNTAyOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAubGVuICA9IElQU0VUX01BWF9DT01NRU5UX1NJWkUgfSxcXG4gNTAzOlxcdFxcdFxcdFtJUFNFVF9BVFRSX1NLQk1BUktdXFx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxcbiA1MDQ6XFx0XFx0XFx0W0lQU0VUX0FUVFJfU0tCUFJJT11cXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuIDUwNTpcXHRcXHRcXHRbSVBTRVRfQVRUUl9TS0JRVUVVRV1cXHQ9IHsgLnR5cGUgPSBOTEFfVTE2IH0sXFxuIDUwNjpcXHRcXHR9LFxcbiA1MDc6XFx0XFx0Lm1lXFx0XFx0PSBUSElTX01PRFVMRSxcXG4gNTA4OlxcdH07XFxuIDUwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzM6NTMuMTUxNDgzMjY0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTIxODMxNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknbSB0aGlua2luZyBhYm91dCBpdDpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgSVAgU2V0IEhhc2ggQ3JlYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgaG93IElQIHNldHMgYXJlIGNyZWF0ZWQsIHNwZWNpZmljYWxseSB0aGUgaGFzaCBpbXBsZW1lbnRhdGlvbi4gIEkga25vdyB0aGUgY29yZSBmdW5jdGlvbnMgYXJlbid0IGRpcmVjdGx5IHdyaXR0ZW4gb3V0LCB0aGV5J3JlIGdlbmVyYXRlZCB2aWEgbWFjcm9zLiBUaGUga2V5IGhlcmUgaXMgdG8gZmluZCB0aGUgbWFjcm8gZGVmaW5pdGlvbnMuIFRoZSBwbGFjZSB0byBzdGFydCBpcyBgaXBfc2V0X2hhc2hfZ2VuLmhgLCB0aGF0J3Mgd2hlcmUgdGhlIG1hZ2ljIHByb2JhYmx5IGhhcHBlbnMuIE5vdywgdGhlIG1haW4gY3JlYXRpb24gZnVuY3Rpb24gaXMgYGhhc2hfbmV0aWZhY2VfY3JlYXRlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93ICppdCogd29ya3MgYW5kIGhvdyB0aGF0IG1hY3JvIGdlbmVyYXRpb24gcHJvY2VzcyBhZmZlY3RzIGl0LiBMZXQncyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDgyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzo1Ni40NDM2Njg1OTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjc0OTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhc2hfbmV0aWZhY2VfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz00Njk9c3RhdGljIHN0cnVjdCBpcF9zZXRfdHlwZSBoYXNoX25ldGlmYWNlX3R5cGUgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00NzgtXFx0LmNyZWF0ZV9mbGFnc1tJUFNFVF9UWVBFX1JFVl9NQVhdID0gSVBTRVRfQ1JFQVRFX0ZMQUdfQlVDS0VUU0laRSxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6NDc5OlxcdC5jcmVhdGVcXHRcXHQ9IGhhc2hfbmV0aWZhY2VfY3JlYXRlLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00ODAtXFx0LmNyZWF0ZV9wb2xpY3lcXHQ9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzM6NTYuNDg3MzQ3ODIyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODMzOTQ4NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIGBoYXNoX25ldGlmYWNlX2NyZWF0ZWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGhhc2hfbmV0aWZhY2VfY3JlYXRlYCBmdW5jdGlvbiwgYW5kIGl0J3MgbG9va2luZyBhIGxpdHRsZS4uLmdlbmVyYXRlZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0aGF0IGl0J3MgcHJvYmFibHkgY29taW5nIGZyb20gc29tZXRoaW5nIGxpa2UgYSBtYWNybywgcHJvYmFibHkgaW4gdGhlIGBpcF9zZXRfaGFzaF9nZW4uaGAgZmlsZS4gSSd2ZSBnb3QgYSBmZWVsaW5nIGl0J3MgdGhlIGBJUFNFVF9UT0tFTihIVFlQRSwgX2NyZWF0ZSlgIG1hY3JvIHRoYXQncyBkb2luZyB0aGUgZGlydHkgd29yay4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gVGltZSB0byBjcmFjayBvcGVuIGBpcF9zZXRfaGFzaF9nZW4uaGAgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgdW5kZXIgdGhlIGhvb2Qgb2YgYElQU0VUX1RPS0VOKEhUWVBFLCBfY3JlYXRlKWAuIExldCdzIHNlZSBob3cgdGhpcyB0aGluZyBpcyBwdXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDc4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MDAuNTcwNzQ0ODc4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzIyNzY1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJUFNFVF9UT0tFTlxcXFwoSFRZUEUsIF9jcmVhdGVcXFxcKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTY1Mj1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoxNjUzOklQU0VUX1RPS0VOKEhUWVBFLCBfY3JlYXRlKShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpcF9zZXQgKnNldCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2NTQtXFx0XFx0XFx0ICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHUzMiBmbGFncylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MDAuNjEzOTc3NzM3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MDgxMjE3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHZW5lcmF0ZWQgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSd2ZSBnZW5lcmF0ZWQgdGhlc2UgZnVuY3Rpb25zOiBgaGFzaF9uZXRpZmFjZTRfYWRkYCwgYGhhc2hfbmV0aWZhY2U0X2RlbGAsIGBoYXNoX25ldGlmYWNlNF90ZXN0YCwgYGhhc2hfbmV0aWZhY2U2X2FkZGAsIGBoYXNoX25ldGlmYWNlNl9kZWxgLCBgaGFzaF9uZXRpZmFjZTZfdGVzdGAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIFRoZW4sIHdlIGhhdmUgYGhhc2hfbmV0cG9ydG5ldDRfYWRkYCwgYGhhc2hfbmV0cG9ydG5ldDRfZGVsYCwgYGhhc2hfbmV0cG9ydG5ldDRfdGVzdGAsIGBoYXNoX25ldHBvcnRuZXQ2X2FkZGAsIGBoYXNoX25ldHBvcnRuZXQ2X2RlbGAsIGFuZCBgaGFzaF9uZXRwb3J0bmV0Nl90ZXN0YC4gUmlnaHQsIGFsbCB0aGUgc3RhbmRhcmQgaGFzaCBmdW5jdGlvbnMgZm9yIG5ldHdvcmsgaW50ZXJmYWNlcyBhbmQgcG9ydHMgYWNyb3NzIElQdjQgYW5kIElQdjYuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBJIHNlZSBgbXR5cGVfYWRkX2NpZHJgIGFuZCBgbXR5cGVfZGVsX2NpZHJgIGFyZSBpbiBgaXBfc2V0X2hhc2hfZ2VuLmhgLCBtYXJrZWQgYXMgc3RhdGljIGlubGluZSBvciBzdGF0aWMuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayDigJMgYXJlIHRoZXkgKmV4cG9ydGVkKiBvciBqdXN0IGxvY2FsPyBIbW0sIHllYWgsIHRoZXkncmUgZGVmaW5pdGVseSBzdGF0aWMuIE9rYXksIHNvIHRoZXNlIGFyZSBpbnRlcm5hbCBoZWxwZXJzLlxuXG5Ob3csIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgdGhlIGZ1bmN0aW9ucyB0aGF0ICp1c2UqIHRoZXNlIHN0YXRpYyBoZWxwZXJzIGFyZSBgbXR5cGVfYWRkYCBhbmQgYG10eXBlX2RlbGAuIEhtbSwgcmlnaHQuLi4gYW5kIGlzIGBtdHlwZV9hZGRgIGdlbmVyYXRlZCBpbnRvIHNvbWV0aGluZyBsaWtlIGBoYXNoX25ldGlmYWNlNF9hZGRgLi4uIEkgbmVlZCB0byBiZSBzdXJlLiBMZXQgbWUgdHJhY2UgYmFjayBhbmQgY2hlY2sgaG93IGV4YWN0bHkgYG10eXBlX2FkZGAgaXMgZGVmaW5lZCBpbiByZWxhdGlvbiB0byB0aGUgY29kZSBnZW5lcmF0aW9uLiBUaGF04oCZcyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg4MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDowNi4wMjIxMDI0NTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2ODQzMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10eXBlX2FkZFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NDA9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NzQxOm10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtNzQyLVxcdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc1Mj1tdHlwZV9yZXNpemUoc3RydWN0IGlwX3NldCAqc2V0LCBib29sIHJldHJpZWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNC1cXHRcXHRpZiAoeC1cXHUwMDNlYWQgPT0gSVBTRVRfQUREKSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo5MDU6XFx0XFx0XFx0bXR5cGVfYWRkKHNldCwgXFx1MDAyNngtXFx1MDAzZWQsIFxcdTAwMjZ4LVxcdTAwM2VleHQsIFxcdTAwMjZ4LVxcdTAwM2VtZXh0LCB4LVxcdTAwM2VmbGFncyk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC05MDYtXFx0XFx0fSBlbHNlIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg3PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjk4ODptdHlwZV9hZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTk4OS1cXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjA2LjEwODk1NDQyOVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE2NDg1ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhpcyBgbXR5cGVfYWRkYCBNYWNybyoqXG5cbk9rYXksIHNvIEkgc2VlIGBtdHlwZV9hZGRgIGFuZCBteSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMsIFwiSG1tLCB3aGF0J3MgZ29pbmcgb24gaGVyZT9cIiBJdCdzIGNsZWFybHkgYSBtYWNybywgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBleHBhbnNpb24uIFRoZSB0ZXh0IHN0YXRlcyBgbXR5cGVfYWRkYCBpcyBkZWZpbmVkIGFzIGBJUFNFVF9UT0tFTihNVFlQRSwgX2FkZClgLiBNeSBpbnN0aW5jdCBpcyB0byBjb25maXJtIHRoYXQgZXhwYW5zaW9uIGV4aXN0cyB3aXRoaW4gdGhlIGNvZGUuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIHRoYXQgYCNkZWZpbmUgbXR5cGVfYWRkIElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAgc3RhdGVtZW50LiBUaGF0J3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgd2hhdCBgbXR5cGVfYWRkYCBhY3R1YWxseSByZXByZXNlbnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IG1hY3JvIHN1YnN0aXR1dGlvbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MTU4OTUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDowOS42MjU0NDQyMjNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTMzMDI5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIG10eXBlX2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY3LSNkZWZpbmUgbXR5cGVfZXh0X2NsZWFudXBcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2V4dF9jbGVhbnVwKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjY4OiNkZWZpbmUgbXR5cGVfYWRkX2NpZHJcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZF9jaWRyKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY5LSNkZWZpbmUgbXR5cGVfZGVsX2NpZHJcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbF9jaWRyKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzktXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyODA6I2RlZmluZSBtdHlwZV9hZGRcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI4MS0jZGVmaW5lIG10eXBlX2RlbFxcdFxcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVsKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDowOS43MzA3Nzk3N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODIwOTYxODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRlY29kaW5nIHRoZSBgSVBTRVRfVE9LRU5gIE1hY3JvKipcblxuUmlnaHQsIHNvIGBtdHlwZV9hZGRgIGlzIGRlZmluZWQgYXMgYElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAuIFRoYXQncyB0aGUga2V5LiBTbywgZm9yIHRoZSBgaGFzaF9uZXRpZmFjZTRgIHR5cGUsIHRoZSBjb3JyZXNwb25kaW5nIFwiYWRkXCIgZnVuY3Rpb24gbXVzdCBiZSBgaGFzaF9uZXRpZmFjZTRfYWRkYC4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gQW5kIGJ5IGV4dGVuc2lvbiwgYGhhc2hfbmV0cG9ydG5ldDRgIHdvdWxkIHRoZW4gaGF2ZSBpdHMgXCJhZGRcIiBmdW5jdGlvbiBhcyBgaGFzaF9uZXRwb3J0bmV0NF9hZGRgLiBTaW1wbGUsIGNvbnNpc3RlbnQgbmFtaW5nIGNvbnZlbnRpb24sIG5vdGhpbmcgdW5leHBlY3RlZCBoZXJlLiBIb2xkIG9uIHRob3VnaCwgSSBzZWUgdGhpcyBwYXRjaCBhbHNvIHRvdWNoZXMgYG10eXBlX3Rlc3RfY2lkcnNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHBpZWNlIG9mIGl0LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMuIExldCdzIHNlZSB3aGF0IHRoYXQgb25lJ3MgYWxsIGFib3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQxOCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjEzLjU1MTc0NDE4NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYyNzQ3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBtdHlwZV90ZXN0X2NpZHJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xODg9c3RhdGljIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciB6ZXJvbWFzayA9IHt9O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yODEtI2RlZmluZSBtdHlwZV9kZWxcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI4MjojZGVmaW5lIG10eXBlX3Rlc3RfY2lkcnNcXHRJUFNFVF9UT0tFTihNVFlQRSwgX3Rlc3RfY2lkcnMpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yODMtI2RlZmluZSBtdHlwZV90ZXN0XFx0XFx0SVBTRVRfVE9LRU4oTVRZUEUsIF90ZXN0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDoxMy42MzgwMjM1NDFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMxNDgzODI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIElQIFNldCBIYXNoIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSdtIHNlZWluZyBhIHBhdHRlcm4gd2l0aCB0aGVzZSBgaGFzaF9uZXRpZmFjZTRgIGZ1bmN0aW9uczogYGhhc2hfbmV0aWZhY2U0X3Rlc3RfY2lkcnNgLCBgaGFzaF9uZXRpZmFjZTRfdGVzdGAsIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBhbmQgYGhhc2hfbmV0aWZhY2U0X2RlbGAuIFRoZXkncmUgYWxsIHZhcmlhdGlvbnMgb24gdGVzdGluZywgYWRkaW5nLCBhbmQgZGVsZXRpbmcgbmV0d29yayBpbnRlcmZhY2VzLCBhbmQgdXNpbmcgQ0lEUnMsIHByZXN1bWFibHkgZm9yIElQdjQuIEFuZCwgaXQgbG9va3MgbGlrZSB0aGlzIHNhbWUgbmFtaW5nIHNjaGVtZSBpcyBhcHBsaWVkIHRvIHRoZSBgbmV0cG9ydG5ldDRgLCBgbmV0NGAsIGBuZXRuZXQ0YCwgYW5kIGBuZXRwb3J0NGAgdmFyaWFudHMuIEl0J3MgYSBjbGVhbiBhbmQgY29uc2lzdGVudCBhcHByb2FjaCwgZ29vZC5cblxuTm93LCBob2xkIG9uLi4uIGBJUF9TRVRfSEFTSF9XSVRIX05FVFNgIGlzIGRlZmluZWQgZm9yICptdWx0aXBsZSogaGFzaCB0eXBlcz8gVGhhdCdzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGljaCBvbmVzLCBzcGVjaWZpY2FsbHksIGFyZSBsZXZlcmFnaW5nIHRoaXMuIEkgbmVlZCB0byBjaGVjayB3aGljaCBzcGVjaWZpYyBoYXNoIHR5cGVzIHV0aWxpemUgdGhpcyBtYWNyby4gVGltZSB0byBkaWcgYSBiaXQgZGVlcGVyIGFuZCBzZWUgd2hpY2ggc3BlY2lmaWMgaGFzaCB0eXBlcyByZXF1aXJlIHRoYXQgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY5MDMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MTkuOTUyODY0NDY5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzE0MTU2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTM2PU1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2hhc2g6aXAscG9ydCxuZXRcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtNDQtICovXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYzo0NTojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU19QQUNLRURcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTQ2LSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6NDc6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTQ4LVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYz0zMz1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOm5ldFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0zNi0jZGVmaW5lIEhUWVBFXFx0XFx0aGFzaF9uZXRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjM3OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0zOC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0zNT1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOm5ldCxpZmFjZVxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTM4LSNkZWZpbmUgSFRZUEVcXHRcXHRoYXNoX25ldGlmYWNlXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM5OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTQwLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9NVUxUSVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0zMj1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOm5ldCxuZXRcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzUtI2RlZmluZSBIVFlQRVxcdFxcdGhhc2hfbmV0bmV0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYzozNjojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzctI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVE1BU0tcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jPTM1PU1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2hhc2g6bmV0LHBvcnRcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTM5LSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjQwOiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtNDEtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy00NS0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYzo0NjojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU19QQUNLRURcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy00Ny1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jPTMyPU1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2hhc2g6bmV0LHBvcnQsbmV0XFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0zNi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzozNzojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTM4LSNkZWZpbmUgSVBTRVRfTkVUX0NPVU5UIDJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MjAuMDM2MDEwMzE3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMzk0MjgzNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIEhhc2ggU2V0IENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGVzZSBoYXNoIHNldCB0eXBlcyB0aGF0IHV0aWxpemUgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2A6IHNwZWNpZmljYWxseSBgaGFzaF9pcHBvcnRuZXRgLCBgaGFzaF9uZXRgLCBgaGFzaF9uZXRpZmFjZWAsIGBoYXNoX25ldG5ldGAsIGBoYXNoX25ldHBvcnRgLCBhbmQgYGhhc2hfbmV0cG9ydG5ldGAuIEl0IGxvb2tzIGxpa2UgdGhlIHByaW1hcnkgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBgI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVDBgIG1hY3JvIGZyb20gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2h5P1wiIFdoYXQncyB0aGUgZHJpdmluZyBmb3JjZSBiZWhpbmQgdGhpcyByZW1vdmFsP1xuXG5BaGEsIEkgc2VlIHRoYXQgYElQX1NFVF9IQVNIX1dJVEhfTkVUMGAgd2FzIGxpbmtlZCB0byB0aGUgaGFuZGxpbmcgb2YgYC8wYCBuZXR3b3Jrcy4gU28sIHRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IGhvdyBhcmUgYC8wYCBuZXR3b3JrcyBiZWluZyBoYW5kbGVkIG5vdz8gSXMgaXQgbmF0aXZlbHkgc3VwcG9ydGVkLCBvciBoYXMgdGhlIGxvZ2ljIGNoYW5nZWQgc2lnbmlmaWNhbnRseT9cblxuTGV0IG1lIGxvb2sgYXQgdGhlIGNvbW1lbnRzLCBhcyB0aGV5IG9mdGVuIHByb3ZpZGUgdGhlIGNsdWUgaGVyZS4gQWgsIGhlcmUgaXQgaXM6IHRoZSBjb21tZW50IG1lbnRpb25zIHRoZSBgY2lkcmAgZmllbGQgaW4gYHN0cnVjdCBuZXRfcHJlZml4YCBhbmQgaXRzIHJvbGUgaW4gXCJuZXR3b3JrIGNpZHIgc2l6ZSBib29rIGtlZXBpbmdcIi4gVGhlIGNvZGUgc2F5cyB0aGUgYGNpZHJgIGlzIG5vdyB1c2luZyBgdTMyIGNpZHI6ODtgIGluc3RlYWQgb2YgYSBzaW1wbGUgYHU4IGNpZHI7YCBUaGlzIHN1Z2dlc3RzIGEgY2hhbmdlIGluIGhvdyB0aGlzIGNpZHIgdmFsdWUgaXMgc3RvcmVkLiBQcmV2aW91c2x5LCB0aGUgY29tbWVudCBzYWlkIHRoZSBjaWRyIHZhbHVlIHdhcyBgcmVhbCBjaWRyICsgMWAgdG8gYWNjb3VudCBmb3IgYC8wYCBuZXR3b3Jrcy4gXG5cbk9rYXksIGlmIGBjaWRyYCBpcyBzdGlsbCBgcmVhbCBjaWRyICsgMWAsIHRoZW4gdGhlIHJlbW92YWwgb2YgYElQX1NFVF9IQVNIX1dJVEhfTkVUMGAgbWlnaHQgbm90IG1ha2Ugc2Vuc2UuIEJ1dCB0aGUgcGF0Y2ggKmRvZXMqIHJlbW92ZSBpdC4gU28sIHRoYXQgbWVhbnMgaXQncyBwcm9iYWJseSBubyBsb25nZXIgdGhlIGNhc2UuIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBXYWl0IGEgbWludXRlLi4uIHRoZSBwYXRjaCBhbHNvIHJlbW92ZXMgYElQX1NFVF9IQVNIX1dJVEhfTkVUMGAgZnJvbSB0aG9zZSBzcGVjaWZpYyBmaWxlcy4gV2hlcmUgZWxzZSBpcyBpdCB1c2VkPyBJJ2xsIGNoZWNrIGBpcF9zZXRfaGFzaF9nZW4uaGAgYmVjYXVzZSB0aGF0J3MgYSBjZW50cmFsIGhlYWRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyNDIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MjguMDc1NDQxNjgzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTQwMzc0OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVBfU0VUX0hBU0hfV0lUSF9ORVQwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDoyOC4xNDQ4NTMwNjFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc2MDY1NjkwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiBjb25zY2lvdXNuZXNzOlxuXG4qKkludmVzdGlnYXRpbmcgYSBSZW1vdmVkIFN5bWJvbCoqXG5cbkFscmlnaHQsIHRoaXMgaXMgaW50ZXJlc3RpbmcuIFRoZSBjb2RlIEkgd2FzIHJldmlld2luZyBzZWVtcyB0byBoYXZlIGNvbXBsZXRlbHkgcmVtb3ZlZCBgSVBfU0VUX0hBU0hfV0lUSF9ORVQwYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgZ29uZS4uLiBidXQgKndoeSo/XCIgTGV0J3MgbWFrZSBzdXJlIHRoaXMgd2Fzbid0IHNvbWUgaW5hZHZlcnRlbnQgZGVsZXRpb24gdGhhdCBicmVha3Mgc29tZXRoaW5nIGVsc2UuIEZpcnN0LCBsZXQncyBydW4gYSBxdWljayBnbG9iYWwgc2VhcmNoLiBJJ2xsIHVzZSBgZ3JlcGAgdG8gc2NhbiB0aGUgY29kZWJhc2UgZm9yIGFueSByZW1haW5pbmcgdXNlcyBvZiB0aGF0IHN5bWJvbC4gKlJpZ2h0KiwgaXQncyBnb29kIHRoYXQgdGhlIGBncmVwYCByZXR1cm5lZCBubyBtYXRjaGVzLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoaXN0b3J5IG9mIHRoaXMuIFdhcyB0aGlzIHN5bWJvbCBvbmx5IGV2ZXIgdXNlZCBpbiB0aG9zZSBzcGVjaWZpYyBmaWxlcywgb3Igd2FzIGl0IHVzZWQgaW4gb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUgYXQgc29tZSBwb2ludCB0aGF0IGhhdmUgYmVlbiByZW1vdmVkPyBMZXQncyBjaGVjayB0aGUgaGlzdG9yeSBvZiBgaXBfc2V0X2hhc2hfZ2VuLmhgIHRvIHNlZSBpZiB0aGUgc3ltYm9sIHdhcyByZW1vdmVkIGluIGEgcHJpb3IgY29tbWl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTEwNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjMyLjkwNTUxMzU1NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0MDkzNDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklQX1NFVF9IQVNIX1dJVEhfTkVUMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MzIuOTU5OTMwMjc1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4OTc4MTc4MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgUmVtb3ZhbCBvZiBgSVBfU0VUX0hBU0hfV0lUSF9ORVQwYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgbWFjcm8sIGBJUF9TRVRfSEFTSF9XSVRIX05FVDBgLCB3YXMgdXNlZCBiZWZvcmUgaXQgd2FzIHJpcHBlZCBvdXQgaW4gdGhpcyBwYXRjaC4gSSBjYW4ndCBqdXN0IGBncmVwYCB0aGUgY3VycmVudCBjb2RlYmFzZSBmb3IgaXQsIGJlY2F1c2UsIHdlbGwsIGl0J3MgKmdvbmUqLiAgUmlnaHQsIG9mIGNvdXJzZSwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIHBhcmVudCBjb21taXQgb3IgdGhlIHBhdGNoIGRpZmYgaXRzZWxmLiBMZXQncyBzZWUuLi4gQWgsIGhlcmUgaXQgaXMgaW4gdGhlIGRpZmY6XG5cbmBgYGNcbi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMFxuYGBgXG5cblNvLCBpdCBsb29rcyBsaWtlIGl0IHdhcyByZW1vdmVkIGZyb20gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IHdhcyB0aGlzIHVzZWQgYW55d2hlcmUgKmVsc2UqPyBJIHNob3VsZCBjaGVjayBgaXBfc2V0X2hhc2hfZ2VuLmhgIC0gdGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxpa2VseSBwbGFjZSBmb3IgYSBjZW50cmFsIGRlZmluaXRpb24gb3IgdXNhZ2UuIFRpbWUgdG8gZGlnIGludG8gdGhhdCBoZWFkZXIgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0MzgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MzguODU3NzUwNTY2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjQ2ODcyNywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVBfU0VUX0hBU0hfV0lUSF9ORVQwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDozOC45NDAyMjc1MzNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0NzY5OTcyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVAgU2V0IENvZGUqKlxuXG5Pa2F5LCBzbyBJIGNhbid0IGp1c3QgYGdyZXBgIGZvciB0aGUgc3BlY2lmaWMgY29kZSBJJ20gYWZ0ZXIgYmVjYXVzZSBpdCdzIGxpa2VseSBub3QgZXZlbiBwcmVzZW50IGluIHRoZSBjdXJyZW50IHZpZXcgb2YgdGhlIGZpbGUgc3lzdGVtIHRyZWUuIFRoYXQncyBub3QgYSBtYWpvciBzZXRiYWNrLCB0aG91Z2guIFRoZSBrZXkgZm9jdXMgaGVyZSBpcyBvbiB0aGUgZnVuY3Rpb25zIGBtdHlwZV9hZGRfY2lkcmAsIGBtdHlwZV9kZWxfY2lkcmAsIGFuZCBgbXR5cGVfdGVzdF9jaWRyc2AuIEknbSBjb25maWRlbnQgdGhhdCB0aG9zZSBhcmUgdGhlIG9uZXMgdGhhdCBoYXZlIGNoYW5nZWQuIE5vdywgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBpbnN0YW50aWF0ZWQgZm9yIHZhcmlvdXMgZGlmZmVyZW50IGhhc2ggdHlwZXMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBVbHRpbWF0ZWx5IHRoZSBleHRlcm5hbCBpbnRlcmZhY2UgaXMgdGhlIGBpcF9zZXRfdHlwZWAgb3BlcmF0aW9ucy5cblxuTXkgbGluZSBvZiB0aGlua2luZyBnb2VzIGxpa2UgdGhpczogc2luY2UgSSdtIGFpbWluZyBmb3IgZnV6emluZyB0aGlzIGNvZGUsIG15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZSBuZXRsaW5rIG1lc3NhZ2UgaGFuZGxlcnMgdGhhdCAqaW52b2tlKiB0aGVzZSBzcGVjaWZpYyBvcGVyYXRpb25zLiBVbHRpbWF0ZWx5IHRoZXkgYXJlIGNhbGxlZCBpbmRpcmVjdGx5LiBUaGV5IGFyZSBhY2Nlc3NlZCB0aHJvdWdoIGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YC4gVGhlc2UgXCJ3cmFwcGVyXCIgZnVuY3Rpb25zIHJlc2lkZSB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY2AuIEkgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhhdCBmaWxlIG5vdy4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBmdW5jdGlvbnMgd2l0aGluIGBpcF9zZXRfY29yZS5jYCB0aGF0IGhhbmRsZSBhZGRpbmcsIGRlbGV0aW5nLCBhbmQgdGVzdGluZyBlbGVtZW50cy4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCB0byB0aGUgZnV6emluZyB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODIwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjQ0LjQ4NzkzMTQ1NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYxMjM3MDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3NldF9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz02MDc9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6NjA4OmlwX3NldF9hZGRfYnl0ZXModTY0IGJ5dGVzLCBzdHJ1Y3QgaXBfc2V0X2NvdW50ZXIgKmNvdW50ZXIpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTYwOS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9NjEzPXN0YXRpYyB2b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjYxNDppcF9zZXRfYWRkX3BhY2tldHModTY0IHBhY2tldHMsIHN0cnVjdCBpcF9zZXRfY291bnRlciAqY291bnRlcilcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNjE1LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz02MjA9aXBfc2V0X3VwZGF0ZV9jb3VudGVyKHN0cnVjdCBpcF9zZXRfY291bnRlciAqY291bnRlcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy02MjQtXFx0ICAgICEoZmxhZ3MgXFx1MDAyNiBJUFNFVF9GTEFHX1NLSVBfQ09VTlRFUl9VUERBVEUpKSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjYyNTpcXHRcXHRpcF9zZXRfYWRkX2J5dGVzKGV4dC1cXHUwMDNlYnl0ZXMsIGNvdW50ZXIpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2MjY6XFx0XFx0aXBfc2V0X2FkZF9wYWNrZXRzKGV4dC1cXHUwMDNlcGFja2V0cywgY291bnRlcik7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTYyNy1cXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9Nzc2PWludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo3Nzc6aXBfc2V0X2FkZChpcF9zZXRfaWRfdCBpbmRleCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNzc4LVxcdCAgIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhciwgc3RydWN0IGlwX3NldF9hZHRfb3B0ICpvcHQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNzk1LX1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6Nzk2OkVYUE9SVF9TWU1CT0xfR1BMKGlwX3NldF9hZGQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy03OTctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjQ0Ljc0OTE3MzQ2N1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDIwMTgwMTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqVW5kZXJzdGFuZGluZyB0aGUgTmV0bGluayBBZGQgSGFuZGxlcioqXG5cblJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIG5ldGxpbmsgaW1wbGVtZW50YXRpb24gaGVyZSwgc3BlY2lmaWNhbGx5IHRoZSBwYXJ0IHdoZXJlIHdlJ3JlICphZGRpbmcqIGVsZW1lbnRzLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIHNwZWNpZmljIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgXCJhZGRcIiBvcGVyYXRpb24uIExldCdzIHNlZS4uLiBhaCwgcmlnaHQsIGl0J3MgYGNhbGxfYWRgLiBHb3QgaXQuIFNvIHdoZW5ldmVyIGEgbmV0bGluayBtZXNzYWdlIGNvbWVzIGluIHNpZ25hbGluZyB0aGUgaW50ZW50aW9uIHRvIGFkZCBzb21ldGhpbmcsIHRoZSBjb2RlIGlzIGdvaW5nIHRvIGNhbGwgdGhpcyBgY2FsbF9hZGAgZnVuY3Rpb24uIFRoYXQncyB0aGUgZW50cnkgcG9pbnQsIHRoZSBkaXNwYXRjaGVyIGZvciBoYW5kbGluZyB0aGF0IHNwZWNpZmljIG5ldGxpbmsgYWN0aW9uLiBUaW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4NTQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDo0Ny43NjkzNTY4MTVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NzU2NTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbGxfYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xNzQ1PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTc0NjpjYWxsX2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE3NDctXFx0c3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLCBlbnVtIGlwc2V0X2FkdCBhZHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTgxOD1zdGF0aWMgaW50IGlwX3NldF9hZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpjdG5sLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4NTMtXFx0XFx0XFx0cmV0dXJuIC1JUFNFVF9FUlJfUFJPVE9DT0w7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE4NTQ6XFx0XFx0cmV0ID0gY2FsbF9hZChuZXQsIGN0bmwsIHNrYiwgc2V0LCB0YiwgYWR0LCBmbGFncyxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg1NS1cXHRcXHRcXHQgICAgICB1c2VfbGluZW5vKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODY0LVxcdFxcdFxcdFxcdHJldHVybiAtSVBTRVRfRVJSX1BST1RPQ09MO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxODY1OlxcdFxcdFxcdHJldCA9IGNhbGxfYWQobmV0LCBjdG5sLCBza2IsIHNldCwgdGIsIGFkdCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg2Ni1cXHRcXHRcXHRcXHQgICAgICBmbGFncywgdXNlX2xpbmVubyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjQ3Ljg0ODExOTU0MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDM5ODIwMjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXNzZWN0aW5nIHRoZSBOZXRsaW5rIEhhbmRsZXIgZm9yIEVsZW1lbnQgTWFuYWdlbWVudCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gbG9va2luZyBhdCBgY2FsbF9hZGAsIGFuZCBpbW1lZGlhdGVseSBJIHJlY29nbml6ZSBpdCBhcyB0aGUgY3JpdGljYWwgbmV0bGluayBoYW5kbGVyIGZvciB0aGUgd2hvbGUgYWRkL2RlbGV0ZS90ZXN0aW5nIGRhbmNlLiBUaGF0J3MgdGhlIGNlbnRyYWwgbmVydm91cyBzeXN0ZW0gZm9yIGVsZW1lbnQgbWFuaXB1bGF0aW9uLCBzbyBrbm93aW5nIHdoYXQgY2FsbHMgaXQgbWFrZXMgaW50ZXJuYWxseSBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgZnVsbCBpbXBhY3QuIEl0J3MgdGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZnJvbSBgY2FsbF9hZGAgdG8gc2VlIGV4YWN0bHkgd2hhdCBzZXJ2aWNlcyBpdCB1c2VzLiBUaGlzIHdpbGwgdGVsbCBtZSBhYm91dCBpdHMgZGVwZW5kZW5jeSBvbiBvdGhlciBlbGVtZW50cyBvZiB0aGUgY29kZS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGRhdGEgZmxvdyBhbmQgYW55IG90aGVyIHNpZGUtZWZmZWN0cyBtaWdodCBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0MzYsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDo1MS4yODc5NDQxODhaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1OTIwODMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXQtXFx1MDAzZXZhcmlhbnQtXFx1MDAzZXVhZHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xNzQ2PWNhbGxfYWQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqY3RubCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xNzYzLVxcdFxcdGlwX3NldF9sb2NrKHNldCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE3NjQ6XFx0XFx0cmV0ID0gc2V0LVxcdTAwM2V2YXJpYW50LVxcdTAwM2V1YWR0KHNldCwgdGIsIGFkdCwgXFx1MDAyNmxpbmVubywgZmxhZ3MsIHJldHJpZWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xNzY1LVxcdFxcdGlwX3NldF91bmxvY2soc2V0KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xODg4PXN0YXRpYyBpbnQgaXBfc2V0X3V0ZXN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTkxMS1cXHRyY3VfcmVhZF9sb2NrX2JoKCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE5MTI6XFx0cmV0ID0gc2V0LVxcdTAwM2V2YXJpYW50LVxcdTAwM2V1YWR0KHNldCwgdGIsIElQU0VUX1RFU1QsIFxcdTAwMjZsaW5lbm8sIDAsIDApO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xOTEzLVxcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDo1MS42NDcxNTczNjdaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgxMzUyMTk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGxpbmsgTWVzc2FnZSBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgcG9pbnQgb2YgaW50ZXJlc3QgaXMgYHNldC1cdTAwM2V2YXJpYW50LVx1MDAzZXVhZHRgOyB0aGF0J3Mgd2hlcmUgdGhlIG5ldGxpbmsgbWVzc2FnZXMga2ljayBvZmYuIE5vdywgc3BlY2lmaWNhbGx5IGZvciBgaGFzaF9uZXRpZmFjZWAsIEkgc2VlIHdlIGhhdmUgYGhhc2hfbmV0aWZhY2U0X3VhZHRgIGFuZCBgaGFzaF9uZXRpZmFjZTZfdWFkdGAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlIOKAkyBJUHY0IGFuZCBJUHY2IGhhbmRsaW5nLiBCdXQgd2FpdCwgdGhpcyBwYXRjaCBpcyBtZXNzaW5nIHdpdGggYG10eXBlX2FkZF9jaWRyYCwgYG10eXBlX2RlbF9jaWRyYCwgYW5kIGBtdHlwZV90ZXN0X2NpZHJzYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgbWFrZXMgbWUgc3RhcnQgZm9sbG93aW5nIHRoZSBjYWxsIHN0YWNrLiBTbyB0aG9zZSBmdW5jdGlvbnMsIHRoZSAqX2NpZHIgdmFyaWF0aW9ucywgYXJlIGNhbGxlZCBieSBgbXR5cGVfYWRkYCwgYG10eXBlX2RlbGAsIGFuZCBgbXR5cGVfdGVzdF9jaWRyc2AuIEFuZCB0aG9zZSBsYXR0ZXIgdGhyZWUgYXJlIGludm9rZWQgYnkgYG10eXBlX3Rlc3RgLiBBaCEgQW5kIHRoZXNlLCBpbiB0dXJuLCBhcmUgY2FsbGVkIGZyb20gYGhhc2hfbmV0aWZhY2U0X3VhZHRgIHZpYSBgYWR0Zm5gLiBPa2F5LCBub3cgSSBuZWVkIHRvIGRpdmUgaW50byBgaGFzaF9uZXRpZmFjZTRfdWFkdGAgYW5kIHNlZSB3aGF0IGl0J3MgZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTk5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjU3LjQ2MDY4MTU2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTM0Njg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX25ldGlmYWNlNF91YWR0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0xOTY9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxOTc6aGFzaF9uZXRpZmFjZTRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTE5OC1cXHRcXHQgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjU3LjUzNjAzMjg4OFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTY4MTYwNjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgdWFkdCBGdW5jdGlvbnMgaW4gSVAgU2V0cyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBgdWFkdGAgZnVuY3Rpb25zIHdpdGhpbiB0aGUgaGFzaCB0eXBlcyB0aGF0IHV0aWxpemUgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AuIFRoYXQgbWVhbnMgSSdtIGxvb2tpbmcgYXQ6XG5cbiogICBgaGFzaF9uZXQ0X3VhZHRgXG4qICAgYGhhc2hfbmV0Nl91YWR0YFxuKiAgIGBoYXNoX25ldGlmYWNlNF91YWR0YFxuKiAgIGBoYXNoX25ldGlmYWNlNl91YWR0YFxuKiAgIGBoYXNoX25ldHBvcnQ0X3VhZHRgXG4qICAgYGhhc2hfbmV0cG9ydDZfdWFkdGBcbiogICBgaGFzaF9uZXRuZXQ0X3VhZHRgXG4qICAgYGhhc2hfbmV0bmV0Nl91YWR0YFxuKiAgIGBoYXNoX25ldHBvcnRuZXQ0X3VhZHRgXG4qICAgYGhhc2hfbmV0cG9ydG5ldDZfdWFkdGBcbiogICBgaGFzaF9pcHBvcnRuZXQ0X3VhZHRgXG4qICAgYGhhc2hfaXBwb3J0bmV0Nl91YWR0YFxuXG5XYWl0IGEgbWludXRlLCBJJ20ganVzdCByZW1pbmRlZCB0aGF0IGBtdHlwZV9hZGRfY2lkcmAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gYW5kIGlubGluZWQgZGlyZWN0bHkgaW50byBgbXR5cGVfYWRkYC4gQW5kIGBtdHlwZV9hZGRgIGlzICphbHNvKiBhIHN0YXRpYyBmdW5jdGlvbiB0aGF0J3MgaW5saW5lZCBpbnRvIHRoaW5ncyBsaWtlIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBhbmQgc28gb24uIFJpZ2h0LCBzbyBgaGFzaF9uZXRpZmFjZTRfYWRkYCB3b3VsZCBiZSB0aGUgZnVuY3Rpb24gcG9pbnRlciB0aGF0J3MgcGFzc2VkIHRvIGBhZHRmbmAgaW4gYGhhc2hfbmV0aWZhY2U0X3VhZHRgLlxuXG5IYW5nIG9uLCBpdCBsb29rcyBsaWtlIGBoYXNoX25ldGlmYWNlNF9hZGRgIGlzbid0IHN0YXRpYyBpbmxpbmUsIGluc3RlYWQgaXQgaXMgYSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlZCBieSBhIG1hY3JvLiBUaW1lIHRvIGNoZWNrIGlmIGBoYXNoX25ldGlmYWNlNF9hZGRgIGhhcyBhIGRpc3RpbmN0IHN5bWJvbDsgcHJvYmFibHkgaGFzIHRvIGVuc3VyZSB0aGF0IGl0IGhhcyBhIHVuaXF1ZSBmdW5jdGlvbiBwb2ludGVyIHRvIGJlIHBhc3NlZCB0byBgYWR0Zm5gIGluIHRoZSBgdWFkdGAgY2FsbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNTczLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjAzLjEwNDE5NjE0OVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY1NjU5MTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhc2hfbmV0aWZhY2U0X2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzU6MDMuMTYwNzcwNTg3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDM1NDYxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTeW1ib2wncyBPcmlnaW4qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGZ1bmN0aW9uIGNhbGwuLi4gaXQgbG9va3MgbGlrZSBpdCdzIGdlbmVyYXRlZCBieSB0aGUgYElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAgbWFjcm8uIFRoYXQgZXhwbGFpbnMgd2h5IGEgc2ltcGxlIGBncmVwYCBpc24ndCBwaWNraW5nIGl0IHVwISBJdCdzIGxpa2VseSBhIGdlbmVyYXRlZCBzeW1ib2wuIFRoaXMgbWVhbnMgSSdsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIGNvbXBpbGVkIGJpbmFyeSBpdHNlbGYsIHNpbmNlIHRoYXQncyB3aGVyZSB0aGUgY29uY3JldGUgc3ltYm9sIHdpbGwgZXhpc3QuXG5cblRvIGNvbmZpcm0gbXkgc3VzcGljaW9ucywgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgbWFjcm8gYW5kLCBzcGVjaWZpY2FsbHksIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBgbXR5cGVfYWRkYCAod2hhdGV2ZXIgYE1UWVBFYCBpcykgd2l0aGluIHRoZSBnZW5lcmF0ZWQgY29kZS4gU28sIHRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBgbXR5cGVfYWRkYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYCBpbnNpZGUgYGlwX3NldF9oYXNoX2dlbi5oYC4gVGhhdCB3aWxsIHRlbGwgbWUgaWYgaXQncyBnb3QgaW50ZXJuYWwgbGlua2FnZSBvciBleHRlcm5hbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMzMzcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNTowNy4xMDQzMjE0NjdaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODQwMDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10eXBlX2FkZFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NDA9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NzQxOm10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtNzQyLVxcdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc1Mj1tdHlwZV9yZXNpemUoc3RydWN0IGlwX3NldCAqc2V0LCBib29sIHJldHJpZWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNC1cXHRcXHRpZiAoeC1cXHUwMDNlYWQgPT0gSVBTRVRfQUREKSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo5MDU6XFx0XFx0XFx0bXR5cGVfYWRkKHNldCwgXFx1MDAyNngtXFx1MDAzZWQsIFxcdTAwMjZ4LVxcdTAwM2VleHQsIFxcdTAwMjZ4LVxcdTAwM2VtZXh0LCB4LVxcdTAwM2VmbGFncyk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC05MDYtXFx0XFx0fSBlbHNlIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg3PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjk4ODptdHlwZV9hZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTk4OS1cXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjA3LjE1OTE2NjczNVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTE4ODczMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQVBJIERlc2lnbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGBzdGF0aWMgaW50IG10eXBlX2FkZCguLi4pYC4gVGhlIGBzdGF0aWNgIGtleXdvcmQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgaW4gdGVybXMgb2YgQVBJIGRlc2lnbi4gSXQgcHJvYmFibHkgaXNuJ3QgZXhwb3J0ZWQsIG1lYW5pbmcgaXQncyBpbnRlcm5hbC4gTm93LCBJIGhhdmUgdG8gcmVtZW1iZXIgdGhlIGluc3RydWN0aW9ucy4gQWgsIHllcywgdGhleSBzcGVjaWZpY2FsbHkgc2F5IHRvICpwcmVmZXIqIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucywgc2luY2UgY29tcGlsZXJzIHRlbmQgdG8gaW5saW5lIHRob3NlIHN0YXRpY3MsIHdoaWNoIGlzIHNvbWV0aGluZyB3ZSB3YW50IHRvIGF2b2lkLiBTbywgaWRlYWxseSwgdGhlIHByZWZlcnJlZCBmdW5jdGlvbnMgd291bGQgYmUgYGhhc2hfbmV0aWZhY2U0X3VhZHRgIGFuZCBgaGFzaF9uZXRpZmFjZTZfdWFkdGAuXG5cbkJ1dCB3YWl0IGEgbWludXRlLi4uIEkgaGF2ZSB0byBkb3VibGUgY2hlY2sgYGhhc2hfbmV0aWZhY2U0X3VhZHRgISBUaGF0J3MgYHN0YXRpY2AgdG9vISBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGEgbm9uLXN0YXRpYyBBUEkuIE9rYXksIHRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZSBmaWxlIGBpcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCB0byBzZWUgd2hhdCdzIGFjdHVhbGx5IGdvaW5nIG9uLiBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgbXR5cGVfYWRkYCBmdW5jdGlvbiBpcyBhY3R1YWxseSB0aGUgYmVzdCBtZXRob2QgaGVyZSwgb3IgaWYgdGhlIGNvbXBpbGVyIGlzIGlubGluaW5nIG9uZSBvZiB0aGUgc3RhdGljcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQwMTksIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzU6MTIuMDc4MDQzOTY1WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTg1NTEwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX25ldGlmYWNlNF91YWR0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MTk2PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6MTk3Omhhc2hfbmV0aWZhY2U0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xOTgtXFx0XFx0ICAgIGVudW0gaXBzZXRfYWR0IGFkdCwgdTMyICpsaW5lbm8sIHUzMiBmbGFncywgYm9vbCByZXRyaWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNToxMi4xNDc5MDM1MjNaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3NDA4Mzg0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQIFNldCBBZGRpdGlvbiBQcm9jZXNzKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB0cmFjZSB0aGUgYWRkaXRpb24gcHJvY2VzcyB3aXRoaW4gdGhlIElQIHNldCBmcmFtZXdvcmsuIEkndmUgY29uZmlybWVkLCB5ZXMsIHRoYXQgYXNwZWN0IEkgd2FzIGluaXRpYWxseSBsb29raW5nIGF0IGFwcGVhcnMgdG8gYmUgc3RhdGljLiBOb3csIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJIHdhcyBpbml0aWFsbHkgdGhpbmtpbmcgYWJvdXQgdGhlIGBpcF9zZXRfYWRkYCBmdW5jdGlvbiBpbiBgaXBfc2V0X2NvcmUuY2AsIGJ1dCB0aGF0IGZlZWxzIGxpa2UgaXQncyB0aGUgd3JvbmcgcGF0aC4gSXQncyBhIGdlbmVyaWMgZnVuY3Rpb24sIGFuZCBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgbmV0bGluayBpbnRlcmFjdGlvbi4gSSBiZWxpZXZlIGBpcF9zZXRfYWRkYCBoYW5kbGVzIGFkZGl0aW9ucyBmcm9tIGlwdGFibGVzL05ldGZpbHRlciBydWxlcyDigJMgdGhlIHBhY2tldCBwYXRoLCBub3QgdGhlIG1hbmFnZW1lbnQgcGxhbmUuIFRoZSBuZXRsaW5rIHBhdGjigKYgcmlnaHQsIGl0J3MgYGNhbGxfYWRgLiBJcyAqdGhhdCogc3RhdGljPyBZZXMsIGl0IGlzLiBBbmQgYGlwX3NldF9hZGA/IFRoYXQncyBhbHNvIHN0YXRpYy4gV2hhdCBhYm91dCBgaXBfc2V0X3VhZGRgPyBBaCwgd2FpdCBhIG1vbWVudC4gSSB0aGluayBJJ20gcHV0dGluZyB0aGUgcGllY2VzIHRvZ2V0aGVyIG5vdy4gIGBpcF9zZXRfYWRgIGlzIHRoZSBuZXRsaW5rIGhhbmRsZXIgZm9yIGBJUFNFVF9DTURfQUREYCBhbmQgYElQU0VUX0NNRF9ERUxgLiBUaGVyZWZvcmUsIEkgc2hvdWxkIHN3aXRjaCBteSBhdHRlbnRpb24gdG8gYGlwX3NldF9jb3JlLmNgIGFuZCBmb2N1cyBvbiB0aGUgbmV0bGluayBoYW5kbGVycy4gSSBuZWVkIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjAwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjE2LjcyMTk5MDM5NVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMyODc5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVBTRVRfQ01EX0FERFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTk0LVxcdH0sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxOTU6XFx0W0lQU0VUX0NNRF9BRERdXFx0PSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxOTYtXFx0XFx0LmNhbGxcXHRcXHQ9IGlwX3NldF91YWRkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNToxNi43NzUyODQ3MTNaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NjMxMzk1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIE5ldGxpbmsgRW50cnkgUG9pbnRzIGluIHRoZSBDb250ZXh0IG9mIGBpcHNldGAqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3Mgb2YgdGhpcyBpbnRlcmFjdGlvbi4gU28sIGBpcF9zZXRfdWFkZGAsIGBpcF9zZXRfdWRlbGAsIGFuZCBgaXBfc2V0X3V0ZXN0YCDigJMgdGhvc2UgYXJlIHRoZSBuZXRsaW5rIGVudHJ5IHBvaW50cywgdGhlIGhvb2tzIHRoYXQgcmVhbGx5IG1hdHRlci4gVGhleSdyZSB0aGUgZ2F0ZXMgdGhyb3VnaCB3aGljaCBhbGwgdGhlIGFkZCwgZGVsZXRlLCBhbmQgdGVzdCBjb21tYW5kcyBhcmUgZ29pbmcgdG8gZmxvdywgcmlnaHQ/IE15IGluaXRpYWwgZm9jdXMgc2hvdWxkIGJlIG9uIGhvdyB0aGVzZSBpbnRlcmZhY2VzIGFyZSBkZWZpbmVkIGFuZCBob3cgdGhleSBhcmUgaGFuZGxlZC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVpciBsb2NhdGlvbnMgaW4gbWVtb3J5IGFyZSBzdGF0aWMuIFRoaXMgd2lsbCBpbmZsdWVuY2UgaG93IEkgYXBwcm9hY2ggdGhlIHJlc3Qgb2YgdGhpcyBhbmFseXNpcy4gSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhleSBhcmUsIGhvdyB0aGV5IGFyZSB1c2VkLCBhbmQgd2hldGhlciB0aGVpciBsb2NhdGlvbiBpcyBmaXhlZC4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdXJwcmlzZXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjE3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzU6MjAuMzMxNjAwNzg2WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM0NzkzNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X3VhZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xODE4PXN0YXRpYyBpbnQgaXBfc2V0X2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg3My1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg3NDpzdGF0aWMgaW50IGlwX3NldF91YWRkKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4NzUtXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBhdHRyW10pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxOTUtXFx0W0lQU0VUX0NNRF9BRERdXFx0PSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxOTY6XFx0XFx0LmNhbGxcXHRcXHQ9IGlwX3NldF91YWRkLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTk3LVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX01VVEVYLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNToyMC40MzUwODQ4NDNaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUzNjAxOTc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU3RhdGljIEZ1bmN0aW9uIFZpc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkncmUgYWxsIHN0dWNrIGluIGEgc3RhdGljIHN0YXRlLCB3aGljaCBpc24ndCBpZGVhbCBmb3Igd2hhdCBJJ20gdHJ5aW5nIHRvIGRvLiBUaGUgZG9jdW1lbnRhdGlvbiBlbXBoYXNpemVzIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgZ2V0IHRoYXQgdGhlIGNvbXBpbGVyIGNhbiBqdXN0IGZvbGQgdGhlIHN0YXRpYyBvbmVzIGluLCBtZWFuaW5nIHRoZXkgd29uJ3QgaGF2ZSB0aGVpciBvd24gZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcywgYW5kIHRoYXQncyB0aGUgaHVyZGxlIGhlcmUuXG5cbkJ1dCB3YWl0LCBldmVuIHRob3VnaCB0aGV5J3JlIHN0YXRpYywgdGhlcmUncyBhIHNhdmluZyBncmFjZTogaWYgdGhleSAqYXJlbid0KiBpbmxpbmVkLCB0aGV5IHNob3VsZCBzdGlsbCBiZSB2aXNpYmxlLiBHb29kLCB3ZSBjYW4gc3RpbGwgdXNlIHRoaXMuIE5vdywgbGV0J3Mgc2VlLi4uIGBpcF9zZXRfdWFkZGAsIGBpcF9zZXRfdWRlbGAsIGFuZCBgaXBfc2V0X3V0ZXN0YCBhcmUgcmVnaXN0ZXJlZCBhcyBjYWxsYmFja3MuIFNpbmNlIHRoZXkncmUgYXNzaWduZWQgdG8gdGhlIGNhbGxiYWNrcyBzdHJ1Y3QsIHRoZXkncmUgZGVmaW5pdGVseSBub3QgaW5saW5lZC4gVGhhdCdzIGdvb2Q7IHRoZXkgaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMgYW5kIHNob3VsZCBiZSBlYXN5IHRvIGlkZW50aWZ5LlxuXG5BbmQgaG9sZCBvbiwgYGhhc2hfbmV0aWZhY2U0X3VhZHRgIGlzIGFub3RoZXIgb25lLiBJdCdzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYHNldC1cdTAwM2V2YXJpYW50LVx1MDAzZXVhZHRgLiBUaGF0IG1ha2VzIGl0IG5vbi1pbmxpbmVkIGFzIHdlbGwuIFRoYXQgaXMgZ3JlYXQhIE5vdywgdGhlIHByb2JsZW0gaXMsIGl0J3MgZ2VuZXJhdGVkIGJ5IGEgbWFjcm8uIFRoYXQgY291bGQgYmUgYSBuaWdodG1hcmUgdG8gY2hhc2UgZG93bi4gTm8sIHdhaXQsIGNoZWNraW5nIGBpcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCBzcGVjaWZpY2FsbHkgZGVmaW5lcyBpdC4gRXhjZWxsZW50LCBsZXQncyBjb25maXJtIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODA1LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjI1Ljk3MTEwODk3NVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg2MzAwNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGFzaF9uZXRpZmFjZTRfdWFkdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTE5Nj1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjE5NzpoYXNoX25ldGlmYWNlNF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTk4LVxcdFxcdCAgICBlbnVtIGlwc2V0X2FkdCBhZHQsIHUzMiAqbGluZW5vLCB1MzIgZmxhZ3MsIGJvb2wgcmV0cmllZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzU6MjYuMDQ5NzQzNjEyWiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Njc3NDI2NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGRlZXAgaW4gdGhlIHdlZWRzIG9mIG5ldHdvcmsgcHJvZ3JhbW1pbmc6XG5cbioqUGlucG9pbnRpbmcgdGhlIFJlbGV2YW50IENvZGUqKlxuXG5BbHJpZ2h0LCB0aGUgb2JqZWN0aXZlIGlzIGNsZWFybHkgZGVmaW5lZCwgYW5kIHRoYXQncyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBNeSBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGlua2luZyBhYm91dCB3aGVyZSB0aGUgcmVsZXZhbnQgY29kZSB3b3VsZCByZXNpZGUsIGFuZCBpdCBtYWtlcyBzZW5zZSB0byBjb25maXJtIHRoYXQgYGhhc2hfbmV0cG9ydG5ldDRfdWFkdGAgZnVuY3Rpb24gaXMgdGhlIG9uZSB0byBpbnNwZWN0LiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uLiBJIGtub3cgZXhhY3RseSB3aGVyZSBJIG5lZWQgdG8gbG9vazogaXQgc2hvdWxkIGJlIGluIGBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNgLiBMZXQncyBkaXZlIGludG8gdGhhdCBmaWxlIGFuZCBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NTE4LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzU6MjkuNTE3NDkwODE3WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODkwNTg0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX25ldHBvcnRuZXQ0X3VhZHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9MTg4PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzoxODk6aGFzaF9uZXRwb3J0bmV0NF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xOTAtXFx0XFx0ICAgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjI5LjU5NjQwMjAxNVoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTk0Mjg2NjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqQ29uc2lkZXJpbmcgdGhlIEV4cGxpY2l0IERlZmluaXRpb25zKipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgc3RhdGVtZW50IGNvbmZpcm1zIHRoZSBwcmVzZW5jZSBvZiBleHBsaWNpdCBkZWZpbml0aW9ucywgd2hpY2ggaXMgZ29vZC4gVGhhdCdzIGEgZnVuZGFtZW50YWwgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBwb3RlbnRpYWwgZWRnZSBjYXNlIG9yIHNvbWV0aGluZyBsZXNzIG9idmlvdXMuIFdoYXQgYWJvdXQgdGhpcyBgaGFzaF9uZXQ0X3VhZHRgPyBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW1wbGljYXRpb25zIG9yIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIElzIGl0IGRpcmVjdGx5IGhhbmRsZWQ/IEluZGlyZWN0bHk/IE9yIGlzIHRoZXJlIHNvbWUgbnVhbmNlIGluIGhvdyBpdCdzIGhhbmRsZWQgdGhhdCBJIG5lZWQgdG8gY2xhcmlmeSB0byBlbnN1cmUgdGhvcm91Z2huZXNzIGFuZCBhdm9pZCBhbnkgaW5jb3JyZWN0IGFzc3VtcHRpb25zPyBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBpbXBsaWNhdGlvbiBvZiB0aGlzIGVsZW1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2ODc4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzU6MzIuNzkwNjkxNTg4WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTk1MzM1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX25ldDRfdWFkdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MTM1PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjEzNjpoYXNoX25ldDRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0xMzctXFx0ICAgICAgIGVudW0gaXBzZXRfYWR0IGFkdCwgdTMyICpsaW5lbm8sIHUzMiBmbGFncywgYm9vbCByZXRyaWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNTozMi44NDY2NDkzMDZaIiwiU2VxIjo1NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3NzQwNDE4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJZGVudGlmeWluZyBGb2N1cyBTeW1ib2xzIGluIE5ldHdvcmsgSGFzaGluZyBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBgdWFkdGAgZnVuY3Rpb25zIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGV5J3JlIGV4cGxpY2l0bHkgZGVmaW5lZCBhbmQgdGllZCB0byBmdW5jdGlvbiBwb2ludGVycy4gVGhleSdyZSBwcmltZSBjYW5kaWRhdGVzIGZvciBpbmNsdXNpb24gaW4gbXkgYEZvY3VzU3ltYm9sc2Agc2V0LiBMZXQncyBzZWUsIEkndmUgZ290IGEgZmV3IG9mIHRoZW0gaGVyZTogYGhhc2hfbmV0NF91YWR0YCwgYGhhc2hfbmV0Nl91YWR0YCwgYGhhc2hfbmV0aWZhY2U0X3VhZHRgLCBgaGFzaF9uZXRpZmFjZTZfdWFkdGAsIGBoYXNoX25ldHBvcnRuZXQ0X3VhZHRgLCBhbmQgYGhhc2hfbmV0cG9ydG5ldDZfdWFkdGAuIFRoZXNlIGFsbCBsb29rIGxpa2UgZ29vZCBiZXRzLlxuXG5Ib2xkIG9uIGEgc2Vjb25kLi4uIHdoYXQgYWJvdXQgdGhlIHBhY2tldCBwYXRoIGl0c2VsZj8gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3JpdGljYWwuIEFoLCB5ZXMsIEknbSB1c2luZyBgaGFzaF9uZXRpZmFjZTRfa2FkdGAgaW4gdGhlIHBhY2tldCBwYXRoISBJIGhhdmUgdG8gY29uc2lkZXIgdGhhdCBhcyB3ZWxsLiBJdCBtYXkgaGF2ZSBhbiBpbnRlcmVzdGluZyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIHN5bWJvbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MjE1LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjM3LjQyNDA1NjM3N1oiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NjMzMDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhc2hfbmV0aWZhY2U0X2thZHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0xNTU9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxNTY6aGFzaF9uZXRpZmFjZTRfa2FkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTE1Ny1cXHRcXHQgICAgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNTozNy41MzM2OTY2MDRaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ4OTU0MzgyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBJUFNldCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBgaGFzaF9uZXRpZmFjZTRfa2FkdGAgaXMgZXhwbGljaXRseSBkZWZpbmVkLCBnb3QgaXQuIEhvd2V2ZXIsIHRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IHRoZSBwYWNrZXQgcGF0aCBvbmx5IGNhbGxzIGB0ZXN0YCwgYW5kIG9jY2FzaW9uYWxseSBgYWRkYCBvciBgZGVsYCB3aGVuIGEgdGFyZ2V0IGlzIGludm9sdmVkLCBzcGVjaWZpY2FsbHkgdGhlIGBTRVRgIHRhcmdldC4gVGhhdCBgU0VUYCB0YXJnZXQgaXMga2V5IGJlY2F1c2UgaXQgY2FsbHMgYGlwX3NldF9hZGRgIGFuZCBgaXBfc2V0X2RlbGAuIFRoZW4sIHRoZSBgc2V0YCBtYXRjaCwgYWxzbyBpbXBvcnRhbnRseSwgY2FsbHMgYGlwX3NldF90ZXN0YC4gVGhlc2UgYGlwX3NldGAgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCwgYW5kIGZvdW5kIGluIGBpcF9zZXRfY29yZS5jYC4gU28gd2UgaGF2ZSBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYW5kIGBpcF9zZXRfdGVzdGAuXG5cblRoZXJlZm9yZSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBnZXQgYWRkZWQgdG8gYEZvY3VzU3ltYm9sc2AuIEFuZCBsZXQncyBub3QgZm9yZ2V0IHRoZSB1c2VyLXNwYWNlIHZhcmlhbnRzOiBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBhbmQgYGlwX3NldF91dGVzdGAuIE5vdywgd2FpdCBhIG1pbnV0ZSwgSSBoYXZlIHRvIGNsYXJpZnkgdGhpcywgc2luY2UgdGhlIGludGVybmFsLCBleHBvcnRlZCBmdW5jdGlvbnMgYXJlIGRlZmluaXRlbHkgZGlzdGluY3Qgc3ltYm9scyBhbmQgaW1wb3J0YW50LCB3aGlsZSB0aGUgdXNlciBzcGFjZSBmdW5jdGlvbnMgYXJlIHN0YXRpYyBidXQgcmVnaXN0ZXJlZCBhcyBjYWxsYmFja3MuIEl0IGNoZWNrcyBvdXQsIHRoZXkgYXJlIGRpc3RpbmN0LiBTbywgbGV0J3MgY29uZmlybSB0aG9zZSBhcmUgZ29vZCBmb2N1cyBzeW1ib2xzLiBZZXMsIHRoZXkgYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBtb2RpZmllZCBjb2RlLCBzbyB0aGV5IHdpbGwgYmUgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhpcy5cblxuTm93LCBsZXQncyBzZWUgd2hhdCBLY29uZmlnIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIFRoZSBjb2RlIGlzIGxvY2F0ZWQgaW4gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvYCwgc28gbGV0J3MgbmF2aWdhdGUgdG8gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzI2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjQ0LjAyMzI2NjQ5OFoiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwOTI5Mjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyOm1lbnVjb25maWcgSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklQIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0PWlmIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTY6Y29uZmlnIElQX1NFVF9NQVhcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTctXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiBJUCBzZXRzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyODpjb25maWcgSVBfU0VUX0JJVE1BUF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM2LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozNzpjb25maWcgSVBfU0VUX0JJVE1BUF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00NS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDY6Y29uZmlnIElQX1NFVF9CSVRNQVBfUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOnBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTQtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NjU6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTczLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NDpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFjIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMwOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzgtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjQ0LjEzNDIwMDAzNFoiLCJTZXEiOjU5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM3MjA1OTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IE1lbnRhbCBDaGVja2xpc3QgZm9yIE5ldHdvcmsgU2V0IEltcGxlbWVudGF0aW9ucyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSBlc3NlbnRpYWwgZGF0YSBzdHJ1Y3R1cmVzIGFjY291bnRlZCBmb3IuIEknbSB0aGlua2luZywgcmlnaHQgb2ZmIHRoZSBiYXQsIHdlJ3JlIGdvaW5nIHRvIG5lZWQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgYmFzaWMgYElQX1NFVGAsIGFzIHdlbGwgYXMgdGhlIG1vcmUgY29tcGxleCBgSVBfU0VUX0hBU0hfTkVUSUZBQ0VgLCBgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVGAsIGBJUF9TRVRfSEFTSF9ORVRgLCBgSVBfU0VUX0hBU0hfTkVUTkVUYCwgYElQX1NFVF9IQVNIX05FVFBPUlRgLCBhbmQgYElQX1NFVF9IQVNIX0lQUE9SVE5FVGAgdmFyaWFudHMuIEdvdHRhIG1ha2Ugc3VyZSB3ZSd2ZSBnb3QgYWxsIHRoZSBiYXNlcyBjb3ZlcmVkIGZvciBlZmZpY2llbnQgbG9va3VwcyBhbmQgbWFuYWdlbWVudC5cblxuQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhhdCBiYXNlIGBJUF9TRVRgIHR5cGUuIFVuZGVyc3RhbmRpbmcgaXRzIHJlcXVpcmVtZW50cyB3aWxsIGJlIGNydWNpYWwgdG8gZ2V0dGluZyBldmVyeXRoaW5nIGVsc2Ugc3RydWN0dXJlZCBjb3JyZWN0bHkuIEdvdHRhIG1ha2Ugc3VyZSBub3RoaW5nIGdldHMgb3Zlcmxvb2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk2NDUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNTo0OC41NzE0NDI3NzlaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NDM0MTM0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mj1tZW51Y29uZmlnIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJUCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTUtXFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTY9Y29uZmlnIElQX1NFVF9NQVhcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xOS1cXHRyYW5nZSAyIDY1NTM0XFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjIwOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTIxLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0yOD1jb25maWcgSVBfU0VUX0JJVE1BUF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozMDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zMS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mzc9Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBNQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcImJpdG1hcDppcCxtYWMgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM5OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQwLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz00Nj1jb25maWcgSVBfU0VUX0JJVE1BUF9QT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJiaXRtYXA6cG9ydCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDg6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDktXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTU1PWNvbmZpZyBJUF9TRVRfSEFTSF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NTc6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTgtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTY1PWNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BUktcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFyayBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Njc6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjgtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTc0PWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzY6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzctXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTgzPWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo4NTpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04Ni1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9OTM9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6OTU6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEwMz1jb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTA1OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm1hYyBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTE0OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExNS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTIxPWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMzpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjQtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzMD1jb25maWcgSVBfU0VUX0hBU0hfTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMjpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzMtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzOT1jb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDE6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQyLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNDg9Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTA6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTUxLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNTg9Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2MDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjEtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE2OD1jb25maWcgSVBfU0VUX0xJU1RfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE3MDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNzEtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE3OD1jb25maWcgR0NPVl9QUk9GSUxFX0lQU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3OS1cXHRib29sIFxcXCJFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIGlwc2V0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxODA6XFx0ZGVwZW5kcyBvbiBHQ09WX0tFUk5FTFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xODEtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNTo0OC44MzU3OTAyOTFaIiwiU2VxIjo2MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ4NTg5NzUwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBLZXJuZWwgTW9kdWxlIENvbmZpZ3VyYXRpb24gQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBwdXR0aW5nIHRvZ2V0aGVyIGEga2VybmVsIG1vZHVsZSBhbmQgbmVlZCB0byBlbnN1cmUgdGhlIGNvcnJlY3QgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIFRoaW5raW5nIHRoaXMgdGhyb3VnaCwgYElORVRgIGFuZCBgTkVURklMVEVSYCBhcmUgZGVmaW5pdGVseSBmdW5kYW1lbnRhbCBwcmVyZXF1aXNpdGVzLiBMZXQncyBtYWtlIGEgY2hlY2tsaXN0OiBgSU5FVGAsIGBORVRGSUxURVJgLCBhbmQsIG9mIGNvdXJzZSwgYElQX1NFVGAuIFdlJ2xsIGFsc28gcmVxdWlyZSB0aGUgdmFyaW91cyBoYXNoIHR5cGVzIEkgbmVlZCBmb3IgdGhlIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSwgIGBJUF9TRVRfSEFTSF9ORVRJRkFDRWAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUYCwgYElQX1NFVF9IQVNIX05FVGAsIGBJUF9TRVRfSEFTSF9ORVRORVRgLCBgSVBfU0VUX0hBU0hfTkVUUE9SVGAsIGFuZCBgSVBfU0VUX0hBU0hfSVBQT1JUTkVUYC5cblxuQWgsIHJpZ2h0LCBgTkVURklMVEVSX05FVExJTktgIGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgYnkgYElQX1NFVGAsIHdoaWNoIHNpbXBsaWZpZXMgdGhlIGRpcmVjdCByZXF1aXJlbWVudHMgYSBiaXQsIG5vIG5lZWQgdG8gaW5jbHVkZSBpdCBkaXJlY3RseSBvbiB0aGUgbGlzdC4gU28sIHdlIHJlYWxseSBqdXN0IG5lZWQgYElORVRgLCBgTkVURklMVEVSYCwgYElQX1NFVGAsIGFuZCB0aGUgaGFzaCB0eXBlcy5cblxuTm93LCBsZXQgbWUgcmV2aWV3IHRoZSBcIkZvY3VzU3ltYm9scyxcIiB0aG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIHdhbnQgdG8gdGFyZ2V0IGZvciB0ZXN0aW5nLiBBbHJpZ2h0LCBoZXJlJ3Mgd2hhdCdzIHJlbGV2YW50IHRvIHRoaXMgbmV0bGluayBpbnRlcmFjdGlvbjogYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGFuZCB0aGUgZ2VuZXJpYyBvbmVzLCBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYGlwX3NldF90ZXN0YC4gIFxuXG5Ib2xkIG9uLCBJIHJlY2FsbCB0aGF0IGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YCBhcmUgdXNlZCBkaXJlY3RseSBpbiBpcHRhYmxlcyBydWxlcywgdGhlc2UgbWF5IGJlIG9uIHRoZSBob3QgcGF0aC4gQnV0IEknbSBzcGVjaWZpY2FsbHkgZm9jdXNlZCBvbiB0aGUgbmV0bGluayBpbnRlcmZhY2UgaGVyZS4gVGhlIG5ldGxpbmsgaW50ZXJmYWNlLCB3aGVyZSB0aGUgcmVhbGx5IGludGVyZXN0aW5nIENJRFIgdHJhY2tpbmcgYW5kIHVwZGF0ZXMgaGFwcGVuLCBtYWtlcyB1c2Ugb2YgdGhlIGBpcF9zZXRfdWFkZGAsIGBpcF9zZXRfdWRlbGAsIGFuZCBgaXBfc2V0X3V0ZXN0YC4gVGhvc2UgYXJlIHRoZSBvbmVzIEkgcmVhbGx5IHdhbnQgdG8gZm9jdXMgb24gZm9yIHRoaXMgdGVzdGluZy4gIExldCdzIGtlZXAgdGhvc2UuXG5cbk5vdywgSSBzaG91bGQgZG91YmxlLWNoZWNrIGFib3V0IGBoYXNoX25ldDRfdWFkdGAgdG8gbWFrZSBzdXJlIGl0J3MgZXhwbGljaXRseSBzZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjUxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjU2LjMyMTY5MDYwNFoiLCJTZXEiOjYyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI1NjQ0MjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhc2hfbmV0NF91YWR0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MTM1PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjEzNjpoYXNoX25ldDRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0xMzctXFx0ICAgICAgIGVudW0gaXBzZXRfYWR0IGFkdCwgdTMyICpsaW5lbm8sIHUzMiBmbGFncywgYm9vbCByZXRyaWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNTo1Ni42NDczNDE0ODVaIiwiU2VxIjo2MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk1NDM0NzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDb25zaWRlcmluZyB0aGUgTnVhbmNlcyoqXG5cblJpZ2h0LCB0aGF0J3Mgc2V0dGxlZC4gT2theSwgc28gbm93IEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gU3BlY2lmaWNhbGx5LCBJJ20gY29uc2lkZXJpbmcgYGhhc2hfbmV0Nl91YWR0YC4gSSBuZWVkIHRvIGV2YWx1YXRlIGl0cyBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBvdmVyYWxsIHN5c3RlbSBhcmNoaXRlY3R1cmUuIElzIHRoaXMgdGhlIHJpZ2h0IGxldmVsIG9mIGFic3RyYWN0aW9uPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHk/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGdvdGNoYXMgb3IgZWRnZSBjYXNlcyBJIG5lZWQgdG8gYW50aWNpcGF0ZT8gSSBtdXN0IGNvbnNpZGVyIHRoZSB0cmFkZS1vZmZzIGJldHdlZW4gdGhpcyBhcHByb2FjaCBhbmQgb3RoZXIgbWV0aG9kcy4gSXMgaXQgdGhlIG1vc3QgZWZmaWNpZW50IHNvbHV0aW9uLCBvciBhcmUgdGhlcmUgYWx0ZXJuYXRpdmVzIHRoYXQgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZSBmb3IgdGhpcyBzcGVjaWZpYyB1c2UtY2FzZT9cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2NDYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNjowMC42MDE2OTIxNjVaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzI3NzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhc2hfbmV0Nl91YWR0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MzA5PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjMxMDpoYXNoX25ldDZfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0zMTEtXFx0ICAgICAgIGVudW0gaXBzZXRfYWR0IGFkdCwgdTMyICpsaW5lbm8sIHUzMiBmbGFncywgYm9vbCByZXRyaWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNjowMC42NTg0MjMzMjNaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2MDg2NjkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBQb3NzaWJpbGl0eSoqXG5cblllcy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgSSBhZ3JlZS4gTm93LCBsZXQncyBzZWUuLi4gd2hhdCBhYm91dCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCB0aGUgYGhhc2hfbmV0bmV0NF91YWR0YCBpbXBsZW1lbnRhdGlvbj8gSSB3b25kZXIgaWYgZm9jdXNpbmcgb24gdGhhdCBwYXJ0aWN1bGFyIG1ldGhvZCBtaWdodCB5aWVsZCBzb21lIGludGVyZXN0aW5nIGluc2lnaHRzLCBvciBwcm92aWRlIGEgY2xlYXJlciBwYXRoIGZvcndhcmQuIFBlcmhhcHMgdGhhdCdzIHdoZXJlIHRoZSBjcml0aWNhbCBjb21wb25lbnQgbGllcy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgYXBwcm9hY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyOTY0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzY6MDQuMjE5Mjk0MTU1WiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjY0NDU1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX25ldG5ldDRfdWFkdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTE2Nz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYzoxNjg6aGFzaF9uZXRuZXQ0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMTY5LVxcdFxcdCAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM2OjA0LjMwNTk0NDYyMloiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDM0Mzk0NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqUmVmbGVjdGluZyBvbiB0aGUgQXJjaGl0ZWN0dXJlKipcblxuWWVzLCB0aGF0J3Mgd2hhdCBJJ20gdGhpbmtpbmcgdG9vLiBTZWVtcyBsaWtlIHRoZSByaWdodCBkaXJlY3Rpb24uIFRoZW4gdGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IHBvcHMgdXA6IFdoYXQncyB0aGUgc3RhdHVzIG9mIGBoYXNoX25ldHBvcnQ0X3VhZHRgPyBJdCdzIGEga2V5IGNvbXBvbmVudCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gdGFraW5nIHRoZSByaWdodCBhcHByb2FjaC4gTmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzI0NiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM2OjA3LjM0MDM0MTQ2WiIsIlNlcSI6NjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY4ODkxOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGFzaF9uZXRwb3J0NF91YWR0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jPTE1Mz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6MTU0Omhhc2hfbmV0cG9ydDRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMTU1LVxcdFxcdCAgIGVudW0gaXBzZXRfYWR0IGFkdCwgdTMyICpsaW5lbm8sIHUzMiBmbGFncywgYm9vbCByZXRyaWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNjowNy40NDcyMzU0NTdaIiwiU2VxIjo2OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyOTE1NDYzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IEFja25vd2xlZGdtZW50IGFuZCBSZWZpbmVtZW50KipcblxuWWVzLiAqVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gV2UncmUgb24gdGhlIHJpZ2h0IHRyYWNrLiogV2hhdCBhYm91dCBgaGFzaF9pcHBvcnRuZXQ0X3VhZHRgPyAqTm93IEknbSBkaXZpbmcgZGVlcGVyLCBhbmQgSSdtIHRoaW5raW5nIGFib3V0IGEgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmUgb3IgZnVuY3Rpb24gbmFtZS4gSXQncyBhIGtleSBwaWVjZSwgcHJlc3VtYWJseSByZWxhdGVkIHRvIGhhc2hpbmcgSVAgYWRkcmVzc2VzLCBwb3J0cywgYW5kIHBvdGVudGlhbGx5IG5ldHdvcmsgaW5mb3JtYXRpb24gZm9yIElQdjQsIHVzaW5nIGEgdXNlci1kZWZpbmVkIGFic3RyYWN0IGRhdGEgdHlwZS4gSXMgaXQgdGhlIHJpZ2h0IG9uZSBmb3IgdGhpcyBzaXR1YXRpb24/IERvIHdlIGhhdmUgb3RoZXIgb3B0aW9ucz8gV2hhdCBhcmUgdGhlIHRyYWRlb2Zmcz8gSSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSd2ZSBpZGVudGlmaWVkIHRoZSBiZXN0LXN1aXRlZCBtZWNoYW5pc20gZnJvbSB0aGUgYXZhaWxhYmxlIHNvbHV0aW9ucy4gVGhlIGRldmlsIGlzIGluIHRoZSBkZXRhaWxzLCBzbyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIG5hbWluZyBjb252ZW50aW9uIGFuZCB0aGUgZGF0YSB0eXBlIGxpbmUgdXAgd2l0aCBjdXJyZW50IHJlcXVpcmVtZW50cywgYmVzdCBwcmFjdGljZXMsIGFuZCBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucy4qXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNTM3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzY6MTEuNjc2Mzk0NDA5WiIsIlNlcSI6NzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzEwMzkzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX2lwcG9ydG5ldDRfdWFkdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTE1OT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYzoxNjA6aGFzaF9pcHBvcnRuZXQ0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMTYxLVxcdFxcdCAgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM2OjExLjczOTUwMjc2N1oiLCJTZXEiOjcxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDg4OTcwOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgQW5hbHlzaXMqKlxuXG5Pa2F5LCB5ZXMsIHRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBhbGwgdGhlc2UgYHVhZHRgIGZ1bmN0aW9ucyBhcmUgZXhwbGljaXRseSBkZWZpbmVkLiBUaGlzIG1lYW5zIEkgY2FuIGRlZmluaXRlbHkgaW5jbHVkZSB0aGVtIHdpdGhpbiBgRm9jdXNTeW1ib2xzYC4gTGV0J3MgbGlzdCB0aGVtIG91dCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueTogYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGBoYXNoX25ldDRfdWFkdGAsIGBoYXNoX25ldDZfdWFkdGAsIGBoYXNoX25ldGlmYWNlNF91YWR0YCwgYGhhc2hfbmV0aWZhY2U2X3VhZHRgLCBgaGFzaF9uZXRwb3J0bmV0NF91YWR0YCwgYGhhc2hfbmV0cG9ydG5ldDZfdWFkdGAsIGBoYXNoX25ldG5ldDRfdWFkdGAsIGBoYXNoX25ldG5ldDZfdWFkdGAsIGBoYXNoX25ldHBvcnQ0X3VhZHRgLCBgaGFzaF9uZXRwb3J0Nl91YWR0YCwgYGhhc2hfaXBwb3J0bmV0NF91YWR0YCwgYGhhc2hfaXBwb3J0bmV0Nl91YWR0YC5cblxuQWgsIGhhbmcgb24gYSBtb21lbnQuLi4gSSBzZWUgdGhhdCB0aGUgcGF0Y2ggYWxzbyBpbXBhY3RzIGBtdHlwZV9mbHVzaGAuIEkgbmVlZCB0byB2ZXJpZnkgaWYgdGhlcmUncyBhbiBhc3NvY2lhdGVkIGZsdXNoIGZ1bmN0aW9uLiBMZXQgbWUgZGlnIGludG8gdGhhdCBhIGxpdHRsZSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzkyMiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNjoxNi4yMjg0NzY3MVoiLCJTZXEiOjcyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQzNzE3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXR5cGVfZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMy0jdW5kZWYgbXR5cGVfYWhhc2hfbWVtc2l6ZVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjI0OiN1bmRlZiBtdHlwZV9mbHVzaFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjI1LSN1bmRlZiBtdHlwZV9kZXN0cm95XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI3MS0jZGVmaW5lIG10eXBlX2FoYXNoX21lbXNpemVcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FoYXNoX21lbXNpemUpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNzI6I2RlZmluZSBtdHlwZV9mbHVzaFxcdFxcdElQU0VUX1RPS0VOKE1UWVBFLCBfZmx1c2gpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzMtI2RlZmluZSBtdHlwZV9kZXN0cm95XFx0XFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9kZXN0cm95KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD01MDg9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjUwOTptdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC01MTAte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xNjMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZV92YXJpYW50ID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNjQwLVxcdC5kZXN0cm95ID0gbXR5cGVfZGVzdHJveSxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjE2NDE6XFx0LmZsdXNoXFx0PSBtdHlwZV9mbHVzaCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2NDItXFx0LmhlYWRcXHQ9IG10eXBlX2hlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM2OjE2LjMyMjg1MzgwOFoiLCJTZXEiOjczLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzI4MjQ3OTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIEZsdXNoIE1lY2hhbmlzbSBpbiB0aGUgSVAgU2V0IENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGZsdXNoIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgaW4gdGhpcyBJUCBTZXQgY29kZS4gYG10eXBlX2ZsdXNoYCBpcyBiZWluZyBhc3NpZ25lZCB0byBgc2V0LVx1MDAzZXZhcmlhbnQtXHUwMDNlZmx1c2hgLiBSaWdodCwgdGhhdCdzIHRoZSBmdW5jdGlvbiBwb2ludGVyIGZvciB0aGUgZmx1c2ggb3BlcmF0aW9uIHdpdGhpbiBhIHNwZWNpZmljIHNldCB2YXJpYW50LiBOb3csIHRoZSBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoYXQgdGhpcyBgbXR5cGVfZmx1c2hgIGlzbid0IGRlZmluZWQgZGlyZWN0bHkgaW4gYSBDIGZpbGU7IGl0J3MgYmVpbmcgZ2VuZXJhdGVkIGJ5IHRoaXMgbWFjcm8sIGBJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKWAuIFNvIGl0J3MgZXNzZW50aWFsbHkgYmVpbmcgY29uc3RydWN0ZWQgYXQgY29tcGlsZSB0aW1lLCBiYXNlZCBvbiB0aGF0IG1hY3JvLiBJIG5lZWQgdG8gdHJhY2sgZG93biBleGFjdGx5ICpob3cqIHRoYXQgbWFjcm8gd29ya3MgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZmx1c2hpbmcgaW1wbGVtZW50YXRpb24uIEknbSBnb2luZyB0byBhc3N1bWUgdGhhdCB0aGUgYG5ldGxpbmtgIGhhbmRsZXIgZm9yIGZsdXNoIGlzIHByb2JhYmx5IGBpcF9zZXRfdWZsdXNoYCBvciBzb21ldGhpbmcgdmVyeSBzaW1pbGFyLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGhvdyB0aGUgZmx1c2ggaXMgaW5pdGlhdGVkIHRocm91Z2ggbmV0bGluay5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ4OTAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNjoyMS4wNTExMDYwMzRaIiwiU2VxIjo3NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0Mjk2MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklQU0VUX0NNRF9GTFVTSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTY0LVxcdH0sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxNjU6XFx0W0lQU0VUX0NNRF9GTFVTSF1cXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2Ni1cXHRcXHQuY2FsbFxcdFxcdD0gaXBfc2V0X2ZsdXNoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNjoyMS4xMzU0MDY1MDJaIiwiU2VxIjo3NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE5NzU2NDUyODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhc29uaW5nIGZvciBGdXp6aW5nIEZvY3VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGlkZW50aWZ5IHRoZSBrZXkgbmV0bGluayBoYW5kbGVycyBtb2RpZmllZCBieSB0aGlzIHBhdGNoLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgaXBzZXQgZnVuY3Rpb25hbGl0eS4gSSBzdGFydGVkIHdpdGggYGlwX3NldF9mbHVzaGAgYXMgdGhlIHByaW1hcnkgdGFyZ2V0IGJlY2F1c2Ugb2YgaXRzIGltbWVkaWF0ZSByZWxldmFuY2UsIGJ1dCB0aGVuIEkgcmVhbGl6ZWQgaXQncyBqdXN0IG9uZSBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIHF1aWNrbHkgc2Nhbm5lZCBmb3Igb3RoZXIgbmV0bGluayBoYW5kbGVycywgbGlrZSBgaXBfc2V0X2NyZWF0ZWAsIGBpcF9zZXRfZGVzdHJveWAsIGV0Yy4gdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIGlkZW50aWZ5aW5nIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMuXG5cblRoZSBwYXRjaCBhcHBlYXJzIHRvIGJlIGZvY3VzZWQgb24gaW1wcm92aW5nIHRoZSBwZXJmb3JtYW5jZSBvZiBuZXR3b3JrIHByZWZpeCBoYW5kbGluZyB3aXRoaW4gY2VydGFpbiBpcHNldCBoYXNoIHR5cGVzLiBJIHNhdyB0aGF0IGBpcF9zZXRfdWFkZGAsIGBpcF9zZXRfdWRlbGAsIGBpcF9zZXRfdXRlc3RgLCBhbmQgYGlwX3NldF9mbHVzaGAgYXJlIHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMuIEkgY2hlY2tlZCB3aGljaCBgRW5hYmxlQ29uZmlnc2AgYXJlIGFzc29jaWF0ZWQgd2l0aCBpdCwgYW5kIGl0IHNlZW1zIHRvIGJlIHNwZWNpZmljIHRvIHR5cGVzIHN1cHBvcnRpbmcgbmV0d29yayBwcmVmaXhlcy4gVGhlIGNvcmUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCBhIGBzZXFjb3VudF9zcGlubG9ja190YCBmb3IgaW4tcGxhY2UgcmVvcmRlcmluZy4gVGhpcyBpbmRpY2F0ZXMgdGhlIGNoYW5nZSB0b3VjaGVzIENJRFIgdHJhY2tpbmcuXG5cblRoZXJlZm9yZSwgdGhlIHBhdGNoIGFsdGVycyB0aGUgQ0lEUiB0cmFja2luZyBsb2dpYyBmb3IgaXBzZXQgaGFzaCB0eXBlcyB0aGF0IHN1cHBvcnQgbmV0d29ya3MuIEdpdmVuIHRoZSBgSVBfU0VUX0hBU0hfV0lUSF9ORVRTYCBwcmVwcm9jZXNzb3IgY2hlY2tzLCBpdCBvbmx5IGFmZmVjdHMgYGhhc2g6bmV0YCwgYGhhc2g6bmV0LGlmYWNlYCBhbmQgc2ltaWxhciB0eXBlcy4gVGhlIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYG5ldF9wcmVmaXhlc2AgYXJyYXkgcmVvcmRlcmluZywgZGlyZWN0bHkgaW1wYWN0cyBob3cgbmV0d29yayBwcmVmaXhlcyBhcmUgYWRkZWQsIGRlbGV0ZWQsIHRlc3RlZCwgYW5kIGZsdXNoZWQuXG5cblVsdGltYXRlbHksIEkgd2FudCB0byB1c2UgYHNldC1yZXN1bHRzYCB0byBwcm9wZXJseSBmb2N1cyBmdXp6aW5nLiBCYXNlZCBvbiBteSByZXZpZXcsIEkndmUgY29tcGlsZWQgYSBsaXN0IG9mIGBGb2N1c1N5bWJvbHNgIHRoYXQgY292ZXJzIHRoZSBuZXRsaW5rIGhhbmRsZXJzIGFuZCB0aGUgY29ycmVzcG9uZGluZyBgdWFkdGAgZnVuY3Rpb25zIGZvciB0aGUgYWZmZWN0ZWQgaGFzaCB0eXBlczogYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGBpcF9zZXRfZmx1c2hgLCBhbmQgYWxsIHRoZSBgaGFzaF8qX3VhZHRgIHZhcmlhbnRzIEkgaWRlbnRpZmllZC4gVGhpcyBzaG91bGQgcHJvdmlkZSBhIGZvY3VzZWQgYW5kIGVmZmljaWVudCBmdXp6aW5nIHN0cmF0ZWd5IHRoYXQgYWRkcmVzc2VzIHRoZSBjb3JlIGNoYW5nZXMgYW5kIHRoZWlyIHBvdGVudGlhbCBpbXBhY3QuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUzNTEsIk91dHB1dFRva2VucyI6NDA1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM2OjMzLjExMTA1NDU1OVoiLCJTZXEiOjc2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjk4OTY2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiTkVURklMVEVSXCIsXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVElGQUNFXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVE5FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUUE9SVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfSVBQT1JUTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfc2V0X3VhZGRcIixcbiAgICBcImlwX3NldF91ZGVsXCIsXG4gICAgXCJpcF9zZXRfdXRlc3RcIixcbiAgICBcImlwX3NldF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0Nl91YWR0XCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF91YWR0XCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNl91YWR0XCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDZfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRuZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0bmV0Nl91YWR0XCIsXG4gICAgXCJoYXNoX25ldHBvcnQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0cG9ydDZfdWFkdFwiLFxuICAgIFwiaGFzaF9pcHBvcnRuZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfaXBwb3J0bmV0Nl91YWR0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgQ0lEUiB0cmFja2luZyBsb2dpYyBpbiBpcHNldCBoYXNoIHR5cGVzIHRoYXQgc3VwcG9ydCBuZXR3b3JrcyAoZS5nLiwgaGFzaDpuZXQsIGhhc2g6bmV0LGlmYWNlKS4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0X3ByZWZpeGVzIGFycmF5LCByZXBsYWNpbmcgdGhlIHByZXZpb3VzIFJDVS1iYXNlZCByZWFsbG9jYXRpb24gYXBwcm9hY2ggZm9yIGRlbGV0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBpcHNldCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IG5ldHdvcmsgcHJlZml4ZXMgYXJlIGFkZGVkLCBkZWxldGVkLCB0ZXN0ZWQsIGFuZCBmbHVzaGVkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBlbnRyeSBwb2ludHMgZm9yIGFkZGluZywgZGVsZXRpbmcsIHRlc3RpbmcsIGFuZCBmbHVzaGluZyBlbGVtZW50cyBpbiB0aGVzZSBzcGVjaWZpYyBoYXNoIHR5cGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIixcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiSVBfU0VUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRJRkFDRVwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFBPUlRcIixcbiAgICBcIklQX1NFVF9IQVNIX0lQUE9SVE5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3NldF91YWRkXCIsXG4gICAgXCJpcF9zZXRfdWRlbFwiLFxuICAgIFwiaXBfc2V0X3V0ZXN0XCIsXG4gICAgXCJpcF9zZXRfZmx1c2hcIixcbiAgICBcImhhc2hfbmV0NF91YWR0XCIsXG4gICAgXCJoYXNoX25ldDZfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRpZmFjZTRfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRpZmFjZTZfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF91YWR0XCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ2X3VhZHRcIixcbiAgICBcImhhc2hfbmV0bmV0NF91YWR0XCIsXG4gICAgXCJoYXNoX25ldG5ldDZfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0NF91YWR0XCIsXG4gICAgXCJoYXNoX25ldHBvcnQ2X3VhZHRcIixcbiAgICBcImhhc2hfaXBwb3J0bmV0NF91YWR0XCIsXG4gICAgXCJoYXNoX2lwcG9ydG5ldDZfdWFkdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIENJRFIgdHJhY2tpbmcgbG9naWMgaW4gaXBzZXQgaGFzaCB0eXBlcyB0aGF0IHN1cHBvcnQgbmV0d29ya3MgKGUuZy4sIGhhc2g6bmV0LCBoYXNoOm5ldCxpZmFjZSkuIEl0IGludHJvZHVjZXMgYSBzZXFjb3VudF9zcGlubG9ja190IHRvIGd1YXJkIGluLXBsYWNlIHJlb3JkZXJpbmcgb2YgdGhlIG5ldF9wcmVmaXhlcyBhcnJheSwgcmVwbGFjaW5nIHRoZSBwcmV2aW91cyBSQ1UtYmFzZWQgcmVhbGxvY2F0aW9uIGFwcHJvYWNoIGZvciBkZWxldGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgaXBzZXQgbG9naWMgdGhhdCBhZmZlY3RzIGhvdyBuZXR3b3JrIHByZWZpeGVzIGFyZSBhZGRlZCwgZGVsZXRlZCwgdGVzdGVkLCBhbmQgZmx1c2hlZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldGxpbmsgZW50cnkgcG9pbnRzIGZvciBhZGRpbmcsIGRlbGV0aW5nLCB0ZXN0aW5nLCBhbmQgZmx1c2hpbmcgZWxlbWVudHMgaW4gdGhlc2Ugc3BlY2lmaWMgaGFzaCB0eXBlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow65scf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 21:01:05 +0000 UTC FinishedAt: 2026-08-06 21:36:34 +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": [ "INET", "NETFILTER", "IP_SET", "IP_SET_HASH_NETIFACE", "IP_SET_HASH_NETPORTNET", "IP_SET_HASH_NET", "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": [ "INET", "NETFILTER", "IP_SET", "IP_SET_HASH_NETIFACE", "IP_SET_HASH_NETPORTNET", "IP_SET_HASH_NET", "IP_SET_HASH_NETNET", "IP_SET_HASH_NETPORT", "IP_SET_HASH_IPPORTNET" ], "series_id": "8eba1ea9-172f-4324-a5b7-72f72d4ccef1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_set_uadd", "ip_set_udel", "ip_set_utest", "ip_set_flush", "hash_net4_uadt", "hash_net6_uadt", "hash_netiface4_uadt", "hash_netiface6_uadt", "hash_netportnet4_uadt", "hash_netportnet6_uadt", "hash_netnet4_uadt", "hash_netnet6_uadt", "hash_netport4_uadt", "hash_netport6_uadt", "hash_ipportnet4_uadt", "hash_ipportnet6_uadt" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDssCiAgICAmIzM0O0lQX1NFVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRJRkFDRSYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRQT1JUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUUE9SVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9JUFBPUlRORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9zZXRfdWFkZCYjMzQ7LAogICAgJiMzNDtpcF9zZXRfdWRlbCYjMzQ7LAogICAgJiMzNDtpcF9zZXRfdXRlc3QmIzM0OywKICAgICYjMzQ7aXBfc2V0X2ZsdXNoJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTZfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldHBvcnRuZXQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0bmV0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0bmV0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydDRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldHBvcnQ2X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9pcHBvcnRuZXQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9pcHBvcnRuZXQ2X3VhZHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgQ0lEUiB0cmFja2luZyBsb2dpYyBpbiBpcHNldCBoYXNoIHR5cGVzIHRoYXQgc3VwcG9ydCBuZXR3b3JrcyAoZS5nLiwgaGFzaDpuZXQsIGhhc2g6bmV0LGlmYWNlKS4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0X3ByZWZpeGVzIGFycmF5LCByZXBsYWNpbmcgdGhlIHByZXZpb3VzIFJDVS1iYXNlZCByZWFsbG9jYXRpb24gYXBwcm9hY2ggZm9yIGRlbGV0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBpcHNldCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IG5ldHdvcmsgcHJlZml4ZXMgYXJlIGFkZGVkLCBkZWxldGVkLCB0ZXN0ZWQsIGFuZCBmbHVzaGVkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBlbnRyeSBwb2ludHMgZm9yIGFkZGluZywgZGVsZXRpbmcsIHRlc3RpbmcsIGFuZCBmbHVzaGluZyBlbGVtZW50cyBpbiB0aGVzZSBzcGVjaWZpYyBoYXNoIHR5cGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjkzNzNmN2NlMTZjNzU0MjI5ZGM5ZWRiM2YzZGFkNzEwZThkOTMwMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMjE6MzM6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaCBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcbmluZGV4IGYwMGM4MmFjZDdmMDUuLmIxZjQ1OThjMTQ2NzYgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXG5AQCAtOCw2ICYjNDM7OCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGVfd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvamhhc2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2VxbG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mbmV0bGluay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oXHUwMDNlXG4gXG5AQCAtOTgsMTQgJiM0Mzs5OSwzNCBAQCBzdHJ1Y3QgaHRhYmxlIHtcbiAjZGVmaW5lIElQU0VUX05FVF9DT1VOVFx0XHQxXG4gI2VuZGlmXG4gXG4tLyogQm9vay1rZWVwaW5nIG9mIHRoZSBwcmVmaXhlcyBhZGRlZCB0byB0aGUgc2V0ICovXG4mIzQzOy8qKlxuJiM0MzsgKiBzdHJ1Y3QgbmV0X3ByZWZpeCAtIFJlcHJlc2VudGF0aW9uIG9mIGEgbmV0d29yayBwcmVmaXguXG4mIzQzOyAqIEBjaWRyOiBUaGUgQ0lEUiBwcmVmaXggbGVuZ3RoLlxuJiM0MzsgKiBAY291bnQ6IE51bWJlciBvZiBvY2N1cnJlbmNlcy5cbiYjNDM7ICovXG4gc3RydWN0IG5ldF9wcmVmaXgge1xuLVx0dTggY2lkcjtcdFx0XHQvKiB0aGUgY2lkciB2YWx1ZSAqL1xuLVx0dTMyIGNvdW50O1x0XHRcdC8qIG51bWJlciBvZiBlbGVtZW50cyBvZiB0aGlzIGNpZHIgKi9cbiYjNDM7XHR1MzIgY2lkcjo4O1xuJiM0MztcdHUzMiBjb3VudDoyNDtcbiB9O1xuIFxuJiM0MzsjZGVmaW5lIENJRFJfTUFYX0NPVU5UICgoMSBcdTAwM2NcdTAwM2MgMjQpIC0gMSlcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIC0gQSBjb2xsZWN0aW9uIG9mIG5ldHdvcmsgcHJlZml4ZXMuXG4mIzQzOyAqIEByY3U6IFJDVSBoZWFkXG4mIzQzOyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0c1xuJiM0MzsgKiBAbGVuOiBOdW1iZXIgb2YgZW50cmllcyBpbiB0aGUgYXJyYXkuXG4mIzQzOyAqIEBuZXRzOiBBcnJheSBvZiBuZXRfcHJlZml4IHN0cnVjdHVyZXMgKHNvcnRlZCBieSBDSURSIGRlc2NlbmRpbmcpLlxuJiM0MzsgKlxuJiM0MzsgKiBAbmV0cyBlbnRyaWVzIGFyZSB1cGRhdGVkIGluIHBsYWNlIHVuZGVyIEBzZXQmIzM5O3MgbG9jay4gQSBzaW5nbGUgZW50cnkmIzM5O3NcbiYjNDM7ICogY2lkci9jb3VudCBwYWlyIGlzIGFsd2F5cyB1cGRhdGVkIGF0b21pY2FsbHkgdmlhIFJFQURfT05DRSgpL1dSSVRFX09OQ0UoKSxcbiYjNDM7ICogYnV0IHJlbW92aW5nIGFuIGVudHJ5IGFsc28gc2hpZnRzIGV2ZXJ5IGZvbGxvd2luZyBlbnRyeSBkb3duIGJ5IG9uZSBzbG90LlxuJiM0MzsgKiBMb2NrbGVzcyByZWFkZXJzIHRoYXQgc2NhbiB0aGUgd2hvbGUgYXJyYXkgKGkuZS4gbW9yZSB0aGFuIGEgc2luZ2xlXG4mIzQzOyAqIGluZGV4ZWQgc2xvdCkgbXVzdCB1c2UgQHNlcSB0byBkZXRlY3QgYW5kIHJldHJ5IGFjcm9zcyBzdWNoIGEgc2hpZnQuXG4mIzQzOyAqL1xuIHN0cnVjdCBuZXRfcHJlZml4ZXMge1xuIFx0c3RydWN0IHJjdV9oZWFkIHJjdTtcbiYjNDM7XHRzZXFjb3VudF9zcGlubG9ja190IHNlcTtcbiBcdHU4IGxlbjtcbiBcdHN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTtcbiB9O1xuQEAgLTE0Myw4ICYjNDM7MTY0LDExIEBAIGh0YWJsZV9zaXplKHU4IGhiaXRzKVxuICNlbmRpZlxuIFxuICNkZWZpbmUgSU5JVF9DSURSKG4sIGhvc3RfbWFzaykgKHtcdFx0XHRcdFxcXG4tXHRjb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7XHRcdFxcXG4tXHREQ0lEUl9QVVQoKF9fbiktXHUwMDNlbGVuID8gKF9fbiktXHUwMDNlbmV0c1swXS5jaWRyIDogaG9zdF9tYXNrKTtcXFxuJiM0MztcdGNvbnN0IHN0cnVjdCBuZXRfcHJlZml4ZXMgKl9fbiA9IHJjdV9kZXJlZmVyZW5jZShuKTtcdFxcXG4mIzQzO1x0c3RydWN0IG5ldF9wcmVmaXggX19wID1cdFx0XHRcdFx0XFxcbiYjNDM7XHRcdF9fbi1cdTAwM2VsZW4gPyBSRUFEX09OQ0UoX19uLVx1MDAzZW5ldHNbMF0pXHRcdFxcXG4mIzQzO1x0XHRcdCA6IChzdHJ1Y3QgbmV0X3ByZWZpeCl7fTtcdFx0XFxcbiYjNDM7XHREQ0lEUl9QVVQoX19wLmNvdW50ID8gX19wLmNpZHIgOiBob3N0X21hc2spO1x0XHRcXFxuIH0pXG4gXG4gI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqL1xuQEAgLTMxOCwyNyAmIzQzOzM0Miw0MyBAQCBzdHJ1Y3QgbXR5cGVfcmVzaXplX2FkIHtcbiB9O1xuIFxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbi0vKiBOZXR3b3JrIGNpZHIgc2l6ZSBib29rIGtlZXBpbmcgd2hlbiB0aGUgaGFzaCBzdG9yZXMgZGlmZmVyZW50XG4tICogc2l6ZWQgbmV0d29ya3MuIGNpZHIgPT0gcmVhbCBjaWRyICYjNDM7IDEgdG8gc3VwcG9ydCAvMC5cbiYjNDM7LyoqXG4mIzQzOyAqIG10eXBlX2FkZF9jaWRyIC0gQWRkIGEgQ0lEUiBlbnRyeSB0byBoYXNoIHRhYmxlIGJvb2trZWVwaW5nXG4mIzQzOyAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldFxuJiM0MzsgKiBAaDogUG9pbnRlciB0byB0aGUgaHR5cGVcbiYjNDM7ICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGhcbiYjNDM7ICogQG46IFRoZSBpbmRleCBvZiB0aGUgbmV0X3ByZWZpeCBhcnJheSB0byBhZGQgQGNpZHIgdG9cbiYjNDM7ICpcbiYjNDM7ICogUGVyZm9ybXMgYW4gdXBkYXRlIGlmIEBjaWRyIGlzIGZvdW5kLCBvdGhlcndpc2UgcGVyZm9ybXMgQ09XLXN0eWxlXG4mIzQzOyAqIGFsbG9jYXRpb24gYW5kIHJlcGxhY2VtZW50IHZpYSBSQ1UuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuXG4gICovXG4gc3RhdGljIGludFxuIG10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxuIHtcbi1cdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XG4gXHRpbnQgaSwgaiwgZm91bmQsIGxlbiA9IDAsIHJldCA9IDA7XG4mIzQzO1x0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcbiYjNDM7XHRzdHJ1Y3QgbmV0X3ByZWZpeCBucDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdC8qIEFkZCBpbiBpbmNyZWFzaW5nIHByZWZpeCBvcmRlciwgc28gbGFyZ2VyIGNpZHIgZmlyc3QgKi9cbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAobmV0cy1cdTAwM2VuZXRzW2ldLmNvdW50KVxuJiM0MztcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbiYjNDM7XHRcdGlmIChucC5jb3VudClcbiBcdFx0XHRsZW4mIzQzOyYjNDM7O1xuIFx0XHRpZiAoZm91bmQgIT0gLTEpIHtcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0fSBlbHNlIGlmIChuZXRzLVx1MDAzZW5ldHNbaV0uY2lkciBcdTAwM2MgY2lkcikge1xuJiM0MztcdFx0fSBlbHNlIGlmIChucC5jaWRyIFx1MDAzYyBjaWRyKSB7XG4gXHRcdFx0Zm91bmQgPSBpO1xuLVx0XHR9IGVsc2UgaWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpIHtcbi1cdFx0XHRuZXRzLVx1MDAzZW5ldHNbaV0uY291bnQmIzQzOyYjNDM7O1xuJiM0MztcdFx0fSBlbHNlIGlmIChucC5jaWRyID09IGNpZHIpIHtcbiYjNDM7XHRcdFx0aWYgKG5wLmNvdW50IFx1MDAzYyBDSURSX01BWF9DT1VOVCkge1xuJiM0MztcdFx0XHRcdG5wLmNvdW50JiM0MzsmIzQzOztcbiYjNDM7XHRcdFx0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tpXSwgbnApO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdHJldCA9IC1FT1ZFUkZMT1c7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRnb3RvIHVubG9jaztcbiBcdFx0fVxuIFx0fVxuQEAgLTM1MCw2ICYjNDM7MzkwLDcgQEAgbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG4gXHR9XG4gXG4gXHR0bXAtXHUwMDNlbGVuID0gbGVuO1xuJiM0MztcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXHUwMDI2dG1wLVx1MDAzZXNlcSwgXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuIFx0Zm9yIChpID0gMCwgaiA9IDA7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpJiM0MzsmIzQzOykge1xuIFx0XHRpZiAoaSA9PSBmb3VuZCkge1xuIFx0XHRcdHRtcC1cdTAwM2VuZXRzW2pdLmNpZHIgPSBjaWRyO1xuQEAgLTM3MSw0MiAmIzQzOzQxMiw2MCBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuJiM0MzsvKipcbiYjNDM7ICogbXR5cGVfZGVsX2NpZHIgLSBSZW1vdmUgQ0lEUiBlbnRyeSBhbmQgbWFpbnRhaW4gYXJyYXkgaW50ZWdyaXR5LlxuJiM0MzsgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXQuXG4mIzQzOyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS5cbiYjNDM7ICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGguXG4mIzQzOyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gcmVtb3ZlIEBjaWRyIGZyb21cbiYjNDM7ICpcbiYjNDM7ICogSWYgQ0lEUiBlbnRyeSBjb3VudCBmYWxscyB0byAwLCB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgXCYjMzQ7c2hpZnQtbGVmdFwmIzM0O1xuJiM0MzsgKiBvcGVyYXRpb24gb24gYWxsIGZvbGxvd2luZyBlbGVtZW50cy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGFycmF5IHJlbWFpbnNcbiYjNDM7ICogY29udGlndW91cyBhbmQgbWFpbnRhaW5zIGl0cyBkZXNjZW5kaW5nIG9yZGVyIGJ5IENJRFIuIFRoZSB2YWNhdGVkIHNsb3RcbiYjNDM7ICogYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkgaXMgemVyb2VkIG91dCAoY2lkcj0wLCBjb3VudD0wKS5cbiYjNDM7ICovXG4gc3RhdGljIHZvaWRcbiBtdHlwZV9kZWxfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcbiB7XG4tXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wO1xuLVx0dTggaSwgaiwgbGVuID0gMDtcbiYjNDM7XHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzO1xuJiM0MztcdHN0cnVjdCBuZXRfcHJlZml4IG5wO1xuIFx0aW50IGZvdW5kO1xuJiM0MztcdHU4IGksIGo7XG4mIzQzO1xuJiM0MztcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IG5ldF9wcmVmaXgpICE9IHNpemVvZih1MzIpKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpJiM0MzsmIzQzOykge1xuLVx0XHRpZiAobmV0cy1cdTAwM2VuZXRzW2ldLmNvdW50KVxuLVx0XHRcdGxlbiYjNDM7JiM0Mzs7XG4tXHRcdGlmIChuZXRzLVx1MDAzZW5ldHNbaV0uY2lkciA9PSBjaWRyKVxuJiM0MztcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbiYjNDM7XHRcdGlmIChucC5jb3VudCBcdTAwMjZcdTAwMjYgbnAuY2lkciA9PSBjaWRyKSB7XG4mIzQzO1x0XHRcdG5wLmNvdW50LS07XG4gXHRcdFx0Zm91bmQgPSBpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdH1cbiBcdGlmICh1bmxpa2VseShmb3VuZCA9PSAtMSkpXG4gXHRcdGdvdG8gdW5sb2NrO1xuIFxuLVx0bmV0cy1cdTAwM2VuZXRzW2ZvdW5kXS5jb3VudC0tO1xuLVx0aWYgKG5ldHMtXHUwMDNlbmV0c1tmb3VuZF0uY291bnQpXG4tXHRcdGdvdG8gdW5sb2NrO1xuLVx0bGVuLS07XG4tXHR0bXAgPSBremFsbG9jX2ZsZXgoKnRtcCwgbmV0cywgbGVuLCBHRlBfQVRPTUlDKTtcbi1cdGlmICghdG1wKVxuLVx0XHQvKiBMZWF2ZSBhIGhvbGUgKi9cbiYjNDM7XHRpZiAobnAuY291bnQpIHtcbiYjNDM7XHRcdFdSSVRFX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ZvdW5kXSwgbnApO1xuIFx0XHRnb3RvIHVubG9jaztcbiYjNDM7XHR9XG4gXG4tXHR0bXAtXHUwMDNlbGVuID0gbGVuO1xuJiM0MztcdHdyaXRlX3NlcWNvdW50X2JlZ2luKFx1MDAyNm5ldHMtXHUwMDNlc2VxKTtcbiBcdGZvciAoaSA9IDAsIGogPSAwOyBpIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaSYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKCFuZXRzLVx1MDAzZW5ldHNbaV0uY291bnQgfHwgaSA9PSBmb3VuZClcbiYjNDM7XHRcdGlmIChpID09IGZvdW5kKVxuIFx0XHRcdGNvbnRpbnVlO1xuLVx0XHR0bXAtXHUwMDNlbmV0c1tqXS5jaWRyID0gbmV0cy1cdTAwM2VuZXRzW2ldLmNpZHI7XG4tXHRcdHRtcC1cdTAwM2VuZXRzW2omIzQzOyYjNDM7XS5jb3VudCA9IG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudDtcbiYjNDM7XG4mIzQzO1x0XHRucCA9IFJFQURfT05DRShuZXRzLVx1MDAzZW5ldHNbaV0pO1xuJiM0MztcdFx0aWYgKGkgIT0gailcbiYjNDM7XHRcdFx0V1JJVEVfT05DRShuZXRzLVx1MDAzZW5ldHNbal0sIG5wKTtcbiYjNDM7XHRcdGomIzQzOyYjNDM7O1xuIFx0fVxuLVx0cmN1X2Fzc2lnbl9wb2ludGVyKGgtXHUwMDNlcm5ldHNbbl0sIHRtcCk7XG4tXHRrZnJlZV9yY3UobmV0cywgcmN1KTtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuKVxuJiM0MztcdFx0V1JJVEVfT05DRShuZXRzLVx1MDAzZW5ldHNbaiYjNDM7JiM0MztdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xuJiM0MztcdHdyaXRlX3NlcWNvdW50X2VuZChcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4gdW5sb2NrOlxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuIH1cbkBAIC00NTEsNyAmIzQzOzUxMCw3IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbiB7XG4gXHRzdHJ1Y3QgaHR5cGUgKmggPSBzZXQtXHUwMDNlZGF0YTtcbiAjaWZkZWYgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4tXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wO1xuJiM0MztcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHM7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgaHRhYmxlICp0O1xuIFx0c3RydWN0IGhidWNrZXQgKm47XG5AQCAtNDc3LDE3ICYjNDM7NTM2LDE1IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbiBcdH1cbiAjaWZkZWYgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBJUFNFVF9ORVRfQ09VTlQ7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdG5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtXHUwMDNlcm5ldHNbaV0pO1xuLVx0XHR0bXAgPSBremFsbG9jX29iaigqdG1wLCBHRlBfQVRPTUlDKTtcbi1cdFx0aWYgKCF0bXApIHtcbi1cdFx0XHR1OCBqO1xuJiM0MztcdFx0dTggajtcbiBcbi1cdFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaiYjNDM7JiM0MzspXG4tXHRcdFx0XHRuZXRzLVx1MDAzZW5ldHNbal0uY291bnQgPSAwO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihoLVx1MDAzZXJuZXRzW2ldLCB0bXApO1xuLVx0XHRcdGtmcmVlX3JjdShuZXRzLCByY3UpO1xuLVx0XHR9XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuJiM0MztcdFx0bmV0cyA9IGlwc2V0X2RlcmVmZXJlbmNlX25mbmwoaC1cdTAwM2VybmV0c1tpXSk7XG4mIzQzO1x0XHR3cml0ZV9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4mIzQzO1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaiYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdFdSSVRFX09OQ0UobmV0cy1cdTAwM2VuZXRzW2omIzQzOyYjNDM7XSwgKHN0cnVjdCBuZXRfcHJlZml4KXt9KTtcbiYjNDM7XHRcdHdyaXRlX3NlcWNvdW50X2VuZChcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHR9XG4gI2VuZGlmXG4gfVxuQEAgLTEyNTMsMzEgJiM0MzsxMzEwLDQxIEBAIG10eXBlX3Rlc3RfY2lkcnMoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbXR5cGVfZWxlbSAqZCxcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcbiBcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMxO1xuIFx0c3RydWN0IG10eXBlX2VsZW0gb3JpZyA9ICpkO1xuJiM0MztcdHVuc2lnbmVkIGludCBzZXExO1xuIFx0aW50IHJldCwgaSwgaiwgaztcbiAjZWxzZVxuIFx0aW50IHJldCwgaSwgajtcbiAjZW5kaWZcbi1cdHUzMiBrZXksIG11bHRpID0gMDtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgc2VxMDtcbiYjNDM7XHR1MzIga2V5LCBtdWx0aTtcbiBcdHU4IHBvcztcbiBcbiBcdHByX2RlYnVnKFwmIzM0O3Rlc3QgYnkgbmV0c1xcblwmIzM0Oyk7XG4gXHRyY3VfcmVhZF9sb2NrX2JoKCk7XG4mIzQzO3JldHJ5OlxuJiM0MztcdG11bHRpID0gMDtcbiBcdG5ldHMwID0gcmN1X2RlcmVmZXJlbmNlX2JoKGgtXHUwMDNlcm5ldHNbMF0pO1xuJiM0MztcdHNlcTAgPSByZWFkX3NlcWNvdW50X2JlZ2luKFx1MDAyNm5ldHMwLVx1MDAzZXNlcSk7XG4gI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXG4gXHRuZXRzMSA9IHJjdV9kZXJlZmVyZW5jZV9iaChoLVx1MDAzZXJuZXRzWzFdKTtcbiYjNDM7XHRzZXExID0gcmVhZF9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzMS1cdTAwM2VzZXEpO1xuICNlbmRpZlxuIFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgbmV0czAtXHUwMDNlbGVuIFx1MDAyNlx1MDAyNiAhbXVsdGk7IGomIzQzOyYjNDM7KSB7XG4tXHRcdGlmICghbmV0czAtXHUwMDNlbmV0c1tqXS5jb3VudClcbiYjNDM7XHRcdHN0cnVjdCBuZXRfcHJlZml4IHAwID0gUkVBRF9PTkNFKG5ldHMwLVx1MDAzZW5ldHNbal0pO1xuJiM0MztcbiYjNDM7XHRcdGlmICghcDAuY291bnQpXG4gXHRcdFx0Y29udGludWU7XG4gI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXG4gXHRcdG10eXBlX2RhdGFfcmVzZXRfZWxlbShkLCBcdTAwMjZvcmlnKTtcbi1cdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMwLVx1MDAzZW5ldHNbal0uY2lkciwgZmFsc2UpO1xuJiM0MztcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAwLmNpZHIsIGZhbHNlKTtcbiBcdFx0Zm9yIChrID0gMDsgayBcdTAwM2MgbmV0czEtXHUwMDNlbGVuIFx1MDAyNlx1MDAyNiAhbXVsdGk7IGsmIzQzOyYjNDM7KSB7XG4tXHRcdFx0aWYgKCFuZXRzMS1cdTAwM2VuZXRzW2tdLmNvdW50KVxuJiM0MztcdFx0XHRzdHJ1Y3QgbmV0X3ByZWZpeCBwMSA9IFJFQURfT05DRShuZXRzMS1cdTAwM2VuZXRzW2tdKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmICghcDEuY291bnQpXG4gXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czEtXHUwMDNlbmV0c1trXS5jaWRyLCB0cnVlKTtcbiYjNDM7XHRcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAxLmNpZHIsIHRydWUpO1xuICNlbHNlXG4tXHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMC1cdTAwM2VuZXRzW2pdLmNpZHIpO1xuJiM0MztcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAwLmNpZHIpO1xuICNlbmRpZlxuIFx0XHRrZXkgPSBIS0VZKGQsIGgtXHUwMDNlaW5pdHZhbCwgdC1cdTAwM2VodGFibGVfYml0cyk7XG4gXHRcdG4gPSByY3VfZGVyZWZlcmVuY2VfYmgoaGJ1Y2tldCh0LCBrZXkpKTtcbkBAIC0xMzAyLDYgJiM0MzsxMzY5LDEzIEBAIG10eXBlX3Rlc3RfY2lkcnMoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbXR5cGVfZWxlbSAqZCxcbiBcdFx0fVxuICNlbmRpZlxuIFx0fVxuJiM0MztcbiYjNDM7XHRpZiAocmVhZF9zZXFjb3VudF9yZXRyeShcdTAwMjZuZXRzMC1cdTAwM2VzZXEsIHNlcTApKVxuJiM0MztcdFx0Z290byByZXRyeTtcbiYjNDM7I2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXG4mIzQzO1x0aWYgKHJlYWRfc2VxY291bnRfcmV0cnkoXHUwMDI2bmV0czEtXHUwMDNlc2VxLCBzZXExKSlcbiYjNDM7XHRcdGdvdG8gcmV0cnk7XG4mIzQzOyNlbmRpZlxuIFx0cmV0ID0gMDtcbiB1bmxvY2s6XG4gXHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcbkBAIC0xNzA3LDYgJiM0MzsxNzgxLDcgQEAgSVBTRVRfVE9LRU4oSFRZUEUsIF9jcmVhdGUpKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGlwX3NldCAqc2V0LFxuIFx0XHRcdFx0a2ZyZWUocmN1X2RlcmVmZXJlbmNlX3JhdyhoLVx1MDAzZXJuZXRzWy0taV0pKTtcbiBcdFx0XHRnb3RvIGZyZWVfaHJlZ2lvbjtcbiBcdFx0fVxuJiM0MztcdFx0c2VxY291bnRfc3BpbmxvY2tfaW5pdChcdTAwMjZuZXRzLVx1MDAzZXNlcSwgXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuIFx0XHRSQ1VfSU5JVF9QT0lOVEVSKGgtXHUwMDNlcm5ldHNbaV0sIG5ldHMpO1xuIFx0fVxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xuaW5kZXggYjQ0Yjk1Zjc2NmI3YS4uYjYwMmNjNDM1NjVkZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXG5AQCAtMzgsNyAmIzQzOzM4LDYgQEAgTU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOm5ldCxpZmFjZVwmIzM0Oyk7XG4gI2RlZmluZSBIVFlQRVx0XHRoYXNoX25ldGlmYWNlXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTVVMVElcbi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMFxuIFxuICNkZWZpbmUgU1RSU0NQWShhLCBiKVx0c3Ryc2NweShhLCBiLCBJRk5BTVNJWilcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jXG5pbmRleCA2MjkxNTMyYmU3YTVhLi42MWFmMWNlMjcxMjc5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jXG5AQCAtMzYsNyAmIzQzOzM2LDYgQEAgTU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOm5ldCxwb3J0LG5ldFwmIzM0Oyk7XG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX1BST1RPXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbiAjZGVmaW5lIElQU0VUX05FVF9DT1VOVCAyXG4tI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVDBcbiBcbiAvKiBJUHY0IHZhcmlhbnQgKi9cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtORVRGSUxURVImIzM0OywKICAgICYjMzQ7SVBfU0VUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVElGQUNFJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVE5FVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRQT1JUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX0lQUE9SVE5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3NldF91YWRkJiMzNDssCiAgICAmIzM0O2lwX3NldF91ZGVsJiMzNDssCiAgICAmIzM0O2lwX3NldF91dGVzdCYjMzQ7LAogICAgJiMzNDtpcF9zZXRfZmx1c2gmIzM0OywKICAgICYjMzQ7aGFzaF9uZXQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXQ2X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldGlmYWNlNl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydG5ldDRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldHBvcnRuZXQ2X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRuZXQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRuZXQ2X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydDZfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX2lwcG9ydG5ldDRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX2lwcG9ydG5ldDZfdWFkdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBDSURSIHRyYWNraW5nIGxvZ2ljIGluIGlwc2V0IGhhc2ggdHlwZXMgdGhhdCBzdXBwb3J0IG5ldHdvcmtzIChlLmcuLCBoYXNoOm5ldCwgaGFzaDpuZXQsaWZhY2UpLiBJdCBpbnRyb2R1Y2VzIGEgc2VxY291bnRfc3BpbmxvY2tfdCB0byBndWFyZCBpbi1wbGFjZSByZW9yZGVyaW5nIG9mIHRoZSBuZXRfcHJlZml4ZXMgYXJyYXksIHJlcGxhY2luZyB0aGUgcHJldmlvdXMgUkNVLWJhc2VkIHJlYWxsb2NhdGlvbiBhcHByb2FjaCBmb3IgZGVsZXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgbmV0d29yayBwcmVmaXhlcyBhcmUgYWRkZWQsIGRlbGV0ZWQsIHRlc3RlZCwgYW5kIGZsdXNoZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGVudHJ5IHBvaW50cyBmb3IgYWRkaW5nLCBkZWxldGluZywgdGVzdGluZywgYW5kIGZsdXNoaW5nIGVsZW1lbnRzIGluIHRoZXNlIHNwZWNpZmljIGhhc2ggdHlwZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OTM3M2Y3Y2UxNmM3NTQyMjlkYzllZGIzZjNkYWQ3MTBlOGQ5MzAwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAyMTozMzoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmggYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oCmluZGV4IGYwMGM4MmFjZDdmMDUuLmIxZjQ1OThjMTQ2NzYgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaApAQCAtOCw2ICYjNDM7OCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvcmN1cGRhdGVfd2FpdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2poYXNoLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2VxbG9jay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25ldGZpbHRlci9uZm5ldGxpbmsuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmgmZ3Q7CiAKQEAgLTk4LDE0ICYjNDM7OTksMzQgQEAgc3RydWN0IGh0YWJsZSB7CiAjZGVmaW5lIElQU0VUX05FVF9DT1VOVAkJMQogI2VuZGlmCiAKLS8qIEJvb2sta2VlcGluZyBvZiB0aGUgcHJlZml4ZXMgYWRkZWQgdG8gdGhlIHNldCAqLwomIzQzOy8qKgomIzQzOyAqIHN0cnVjdCBuZXRfcHJlZml4IC0gUmVwcmVzZW50YXRpb24gb2YgYSBuZXR3b3JrIHByZWZpeC4KJiM0MzsgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC4KJiM0MzsgKiBAY291bnQ6IE51bWJlciBvZiBvY2N1cnJlbmNlcy4KJiM0MzsgKi8KIHN0cnVjdCBuZXRfcHJlZml4IHsKLQl1OCBjaWRyOwkJCS8qIHRoZSBjaWRyIHZhbHVlICovCi0JdTMyIGNvdW50OwkJCS8qIG51bWJlciBvZiBlbGVtZW50cyBvZiB0aGlzIGNpZHIgKi8KJiM0MzsJdTMyIGNpZHI6ODsKJiM0MzsJdTMyIGNvdW50OjI0OwogfTsKIAomIzQzOyNkZWZpbmUgQ0lEUl9NQVhfQ09VTlQgKCgxICZsdDsmbHQ7IDI0KSAtIDEpCiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogc3RydWN0IG5ldF9wcmVmaXhlcyAtIEEgY29sbGVjdGlvbiBvZiBuZXR3b3JrIHByZWZpeGVzLgomIzQzOyAqIEByY3U6IFJDVSBoZWFkCiYjNDM7ICogQHNlcTogU2VxdWVuY2UgY291bnRlciBndWFyZGluZyBpbi1wbGFjZSByZW9yZGVyaW5nIG9mIEBuZXRzCiYjNDM7ICogQGxlbjogTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGFycmF5LgomIzQzOyAqIEBuZXRzOiBBcnJheSBvZiBuZXRfcHJlZml4IHN0cnVjdHVyZXMgKHNvcnRlZCBieSBDSURSIGRlc2NlbmRpbmcpLgomIzQzOyAqCiYjNDM7ICogQG5ldHMgZW50cmllcyBhcmUgdXBkYXRlZCBpbiBwbGFjZSB1bmRlciBAc2V0JiMzOTtzIGxvY2suIEEgc2luZ2xlIGVudHJ5JiMzOTtzCiYjNDM7ICogY2lkci9jb3VudCBwYWlyIGlzIGFsd2F5cyB1cGRhdGVkIGF0b21pY2FsbHkgdmlhIFJFQURfT05DRSgpL1dSSVRFX09OQ0UoKSwKJiM0MzsgKiBidXQgcmVtb3ZpbmcgYW4gZW50cnkgYWxzbyBzaGlmdHMgZXZlcnkgZm9sbG93aW5nIGVudHJ5IGRvd24gYnkgb25lIHNsb3QuCiYjNDM7ICogTG9ja2xlc3MgcmVhZGVycyB0aGF0IHNjYW4gdGhlIHdob2xlIGFycmF5IChpLmUuIG1vcmUgdGhhbiBhIHNpbmdsZQomIzQzOyAqIGluZGV4ZWQgc2xvdCkgbXVzdCB1c2UgQHNlcSB0byBkZXRlY3QgYW5kIHJldHJ5IGFjcm9zcyBzdWNoIGEgc2hpZnQuCiYjNDM7ICovCiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIHsKIAlzdHJ1Y3QgcmN1X2hlYWQgcmN1OwomIzQzOwlzZXFjb3VudF9zcGlubG9ja190IHNlcTsKIAl1OCBsZW47CiAJc3RydWN0IG5ldF9wcmVmaXggbmV0c1tdIF9fY291bnRlZF9ieShsZW4pOwogfTsKQEAgLTE0Myw4ICYjNDM7MTY0LDExIEBAIGh0YWJsZV9zaXplKHU4IGhiaXRzKQogI2VuZGlmCiAKICNkZWZpbmUgSU5JVF9DSURSKG4sIGhvc3RfbWFzaykgKHsJCQkJXAotCWNvbnN0IHN0cnVjdCBuZXRfcHJlZml4ZXMgKl9fbiA9IHJjdV9kZXJlZmVyZW5jZShuKTsJCVwKLQlEQ0lEUl9QVVQoKF9fbiktJmd0O2xlbiA/IChfX24pLSZndDtuZXRzWzBdLmNpZHIgOiBob3N0X21hc2spO1wKJiM0MzsJY29uc3Qgc3RydWN0IG5ldF9wcmVmaXhlcyAqX19uID0gcmN1X2RlcmVmZXJlbmNlKG4pOwlcCiYjNDM7CXN0cnVjdCBuZXRfcHJlZml4IF9fcCA9CQkJCQlcCiYjNDM7CQlfX24tJmd0O2xlbiA/IFJFQURfT05DRShfX24tJmd0O25ldHNbMF0pCQlcCiYjNDM7CQkJIDogKHN0cnVjdCBuZXRfcHJlZml4KXt9OwkJXAomIzQzOwlEQ0lEUl9QVVQoX19wLmNvdW50ID8gX19wLmNpZHIgOiBob3N0X21hc2spOwkJXAogfSkKIAogI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqLwpAQCAtMzE4LDI3ICYjNDM7MzQyLDQzIEBAIHN0cnVjdCBtdHlwZV9yZXNpemVfYWQgewogfTsKIAogI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUUwotLyogTmV0d29yayBjaWRyIHNpemUgYm9vayBrZWVwaW5nIHdoZW4gdGhlIGhhc2ggc3RvcmVzIGRpZmZlcmVudAotICogc2l6ZWQgbmV0d29ya3MuIGNpZHIgPT0gcmVhbCBjaWRyICYjNDM7IDEgdG8gc3VwcG9ydCAvMC4KJiM0MzsvKioKJiM0MzsgKiBtdHlwZV9hZGRfY2lkciAtIEFkZCBhIENJRFIgZW50cnkgdG8gaGFzaCB0YWJsZSBib29ra2VlcGluZwomIzQzOyAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldAomIzQzOyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZQomIzQzOyAqIEBjaWRyOiBUaGUgQ0lEUiBwcmVmaXggbGVuZ3RoCiYjNDM7ICogQG46IFRoZSBpbmRleCBvZiB0aGUgbmV0X3ByZWZpeCBhcnJheSB0byBhZGQgQGNpZHIgdG8KJiM0MzsgKgomIzQzOyAqIFBlcmZvcm1zIGFuIHVwZGF0ZSBpZiBAY2lkciBpcyBmb3VuZCwgb3RoZXJ3aXNlIHBlcmZvcm1zIENPVy1zdHlsZQomIzQzOyAqIGFsbG9jYXRpb24gYW5kIHJlcGxhY2VtZW50IHZpYSBSQ1UuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgogICovCiBzdGF0aWMgaW50CiBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbikKIHsKLQlzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wOwogCWludCBpLCBqLCBmb3VuZCwgbGVuID0gMCwgcmV0ID0gMDsKJiM0MzsJc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDsKJiM0MzsJc3RydWN0IG5ldF9wcmVmaXggbnA7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtzZXQtJmd0O2xvY2spOwogCW5ldHMgPSBfX2lwc2V0X2RlcmVmZXJlbmNlKGgtJmd0O3JuZXRzW25dKTsKIAkvKiBBZGQgaW4gaW5jcmVhc2luZyBwcmVmaXggb3JkZXIsIHNvIGxhcmdlciBjaWRyIGZpcnN0ICovCiAJZm9yIChpID0gMCwgZm91bmQgPSAtMTsgaSAmbHQ7IG5ldHMtJmd0O2xlbjsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKG5ldHMtJmd0O25ldHNbaV0uY291bnQpCiYjNDM7CQlucCA9IFJFQURfT05DRShuZXRzLSZndDtuZXRzW2ldKTsKJiM0MzsJCWlmIChucC5jb3VudCkKIAkJCWxlbiYjNDM7JiM0Mzs7CiAJCWlmIChmb3VuZCAhPSAtMSkgewogCQkJY29udGludWU7Ci0JCX0gZWxzZSBpZiAobmV0cy0mZ3Q7bmV0c1tpXS5jaWRyICZsdDsgY2lkcikgewomIzQzOwkJfSBlbHNlIGlmIChucC5jaWRyICZsdDsgY2lkcikgewogCQkJZm91bmQgPSBpOwotCQl9IGVsc2UgaWYgKG5ldHMtJmd0O25ldHNbaV0uY2lkciA9PSBjaWRyKSB7Ci0JCQluZXRzLSZndDtuZXRzW2ldLmNvdW50JiM0MzsmIzQzOzsKJiM0MzsJCX0gZWxzZSBpZiAobnAuY2lkciA9PSBjaWRyKSB7CiYjNDM7CQkJaWYgKG5wLmNvdW50ICZsdDsgQ0lEUl9NQVhfQ09VTlQpIHsKJiM0MzsJCQkJbnAuY291bnQmIzQzOyYjNDM7OwomIzQzOwkJCQlXUklURV9PTkNFKG5ldHMtJmd0O25ldHNbaV0sIG5wKTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQlyZXQgPSAtRU9WRVJGTE9XOwomIzQzOwkJCX0KIAkJCWdvdG8gdW5sb2NrOwogCQl9CiAJfQpAQCAtMzUwLDYgJiM0MzszOTAsNyBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbikKIAl9CiAKIAl0bXAtJmd0O2xlbiA9IGxlbjsKJiM0MzsJc2VxY291bnRfc3BpbmxvY2tfaW5pdCgmYW1wO3RtcC0mZ3Q7c2VxLCAmYW1wO3NldC0mZ3Q7bG9jayk7CiAJZm9yIChpID0gMCwgaiA9IDA7IGkgJmx0OyBuZXRzLSZndDtsZW47IGkmIzQzOyYjNDM7KSB7CiAJCWlmIChpID09IGZvdW5kKSB7CiAJCQl0bXAtJmd0O25ldHNbal0uY2lkciA9IGNpZHI7CkBAIC0zNzEsNDIgJiM0Mzs0MTIsNjAgQEAgbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIG10eXBlX2RlbF9jaWRyIC0gUmVtb3ZlIENJRFIgZW50cnkgYW5kIG1haW50YWluIGFycmF5IGludGVncml0eS4KJiM0MzsgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXQuCiYjNDM7ICogQGg6IFBvaW50ZXIgdG8gdGhlIGh0eXBlLgomIzQzOyAqIEBjaWRyOiBUaGUgQ0lEUiBwcmVmaXggbGVuZ3RoLgomIzQzOyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gcmVtb3ZlIEBjaWRyIGZyb20KJiM0MzsgKgomIzQzOyAqIElmIENJRFIgZW50cnkgY291bnQgZmFsbHMgdG8gMCwgdGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBhICYjMzQ7c2hpZnQtbGVmdCYjMzQ7CiYjNDM7ICogb3BlcmF0aW9uIG9uIGFsbCBmb2xsb3dpbmcgZWxlbWVudHMuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBhcnJheSByZW1haW5zCiYjNDM7ICogY29udGlndW91cyBhbmQgbWFpbnRhaW5zIGl0cyBkZXNjZW5kaW5nIG9yZGVyIGJ5IENJRFIuIFRoZSB2YWNhdGVkIHNsb3QKJiM0MzsgKiBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheSBpcyB6ZXJvZWQgb3V0IChjaWRyPTAsIGNvdW50PTApLgomIzQzOyAqLwogc3RhdGljIHZvaWQKIG10eXBlX2RlbF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKQogewotCXN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7Ci0JdTggaSwgaiwgbGVuID0gMDsKJiM0MzsJc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0czsKJiM0MzsJc3RydWN0IG5ldF9wcmVmaXggbnA7CiAJaW50IGZvdW5kOwomIzQzOwl1OCBpLCBqOwomIzQzOwomIzQzOwlCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBuZXRfcHJlZml4KSAhPSBzaXplb2YodTMyKSk7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtzZXQtJmd0O2xvY2spOwogCW5ldHMgPSBfX2lwc2V0X2RlcmVmZXJlbmNlKGgtJmd0O3JuZXRzW25dKTsKIAlmb3IgKGkgPSAwLCBmb3VuZCA9IC0xOyBpICZsdDsgbmV0cy0mZ3Q7bGVuOyBpJiM0MzsmIzQzOykgewotCQlpZiAobmV0cy0mZ3Q7bmV0c1tpXS5jb3VudCkKLQkJCWxlbiYjNDM7JiM0Mzs7Ci0JCWlmIChuZXRzLSZndDtuZXRzW2ldLmNpZHIgPT0gY2lkcikKJiM0MzsJCW5wID0gUkVBRF9PTkNFKG5ldHMtJmd0O25ldHNbaV0pOwomIzQzOwkJaWYgKG5wLmNvdW50ICZhbXA7JmFtcDsgbnAuY2lkciA9PSBjaWRyKSB7CiYjNDM7CQkJbnAuY291bnQtLTsKIAkJCWZvdW5kID0gaTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KIAl9CiAJaWYgKHVubGlrZWx5KGZvdW5kID09IC0xKSkKIAkJZ290byB1bmxvY2s7CiAKLQluZXRzLSZndDtuZXRzW2ZvdW5kXS5jb3VudC0tOwotCWlmIChuZXRzLSZndDtuZXRzW2ZvdW5kXS5jb3VudCkKLQkJZ290byB1bmxvY2s7Ci0JbGVuLS07Ci0JdG1wID0ga3phbGxvY19mbGV4KCp0bXAsIG5ldHMsIGxlbiwgR0ZQX0FUT01JQyk7Ci0JaWYgKCF0bXApCi0JCS8qIExlYXZlIGEgaG9sZSAqLwomIzQzOwlpZiAobnAuY291bnQpIHsKJiM0MzsJCVdSSVRFX09OQ0UobmV0cy0mZ3Q7bmV0c1tmb3VuZF0sIG5wKTsKIAkJZ290byB1bmxvY2s7CiYjNDM7CX0KIAotCXRtcC0mZ3Q7bGVuID0gbGVuOwomIzQzOwl3cml0ZV9zZXFjb3VudF9iZWdpbigmYW1wO25ldHMtJmd0O3NlcSk7CiAJZm9yIChpID0gMCwgaiA9IDA7IGkgJmx0OyBuZXRzLSZndDtsZW47IGkmIzQzOyYjNDM7KSB7Ci0JCWlmICghbmV0cy0mZ3Q7bmV0c1tpXS5jb3VudCB8fCBpID09IGZvdW5kKQomIzQzOwkJaWYgKGkgPT0gZm91bmQpCiAJCQljb250aW51ZTsKLQkJdG1wLSZndDtuZXRzW2pdLmNpZHIgPSBuZXRzLSZndDtuZXRzW2ldLmNpZHI7Ci0JCXRtcC0mZ3Q7bmV0c1tqJiM0MzsmIzQzO10uY291bnQgPSBuZXRzLSZndDtuZXRzW2ldLmNvdW50OwomIzQzOwomIzQzOwkJbnAgPSBSRUFEX09OQ0UobmV0cy0mZ3Q7bmV0c1tpXSk7CiYjNDM7CQlpZiAoaSAhPSBqKQomIzQzOwkJCVdSSVRFX09OQ0UobmV0cy0mZ3Q7bmV0c1tqXSwgbnApOwomIzQzOwkJaiYjNDM7JiM0Mzs7CiAJfQotCXJjdV9hc3NpZ25fcG9pbnRlcihoLSZndDtybmV0c1tuXSwgdG1wKTsKLQlrZnJlZV9yY3UobmV0cywgcmN1KTsKJiM0MzsKJiM0MzsJd2hpbGUgKGogJmx0OyBuZXRzLSZndDtsZW4pCiYjNDM7CQlXUklURV9PTkNFKG5ldHMtJmd0O25ldHNbaiYjNDM7JiM0MztdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pOwomIzQzOwl3cml0ZV9zZXFjb3VudF9lbmQoJmFtcDtuZXRzLSZndDtzZXEpOwogdW5sb2NrOgogCXNwaW5fdW5sb2NrX2JoKCZhbXA7c2V0LSZndDtsb2NrKTsKIH0KQEAgLTQ1MSw3ICYjNDM7NTEwLDcgQEAgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KQogewogCXN0cnVjdCBodHlwZSAqaCA9IHNldC0mZ3Q7ZGF0YTsKICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFMKLQlzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wOwomIzQzOwlzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzOwogI2VuZGlmCiAJc3RydWN0IGh0YWJsZSAqdDsKIAlzdHJ1Y3QgaGJ1Y2tldCAqbjsKQEAgLTQ3NywxNyAmIzQzOzUzNiwxNSBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpCiAJfQogI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUUwogCWZvciAoaSA9IDA7IGkgJmx0OyBJUFNFVF9ORVRfQ09VTlQ7IGkmIzQzOyYjNDM7KSB7Ci0JCW5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtJmd0O3JuZXRzW2ldKTsKLQkJdG1wID0ga3phbGxvY19vYmooKnRtcCwgR0ZQX0FUT01JQyk7Ci0JCWlmICghdG1wKSB7Ci0JCQl1OCBqOwomIzQzOwkJdTggajsKIAotCQkJZm9yIChqID0gMDsgaiAmbHQ7IG5ldHMtJmd0O2xlbjsgaiYjNDM7JiM0MzspCi0JCQkJbmV0cy0mZ3Q7bmV0c1tqXS5jb3VudCA9IDA7Ci0JCX0gZWxzZSB7Ci0JCQlyY3VfYXNzaWduX3BvaW50ZXIoaC0mZ3Q7cm5ldHNbaV0sIHRtcCk7Ci0JCQlrZnJlZV9yY3UobmV0cywgcmN1KTsKLQkJfQomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7c2V0LSZndDtsb2NrKTsKJiM0MzsJCW5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtJmd0O3JuZXRzW2ldKTsKJiM0MzsJCXdyaXRlX3NlcWNvdW50X2JlZ2luKCZhbXA7bmV0cy0mZ3Q7c2VxKTsKJiM0MzsJCWZvciAoaiA9IDA7IGogJmx0OyBuZXRzLSZndDtsZW47IGomIzQzOyYjNDM7KQomIzQzOwkJCVdSSVRFX09OQ0UobmV0cy0mZ3Q7bmV0c1tqJiM0MzsmIzQzO10sIChzdHJ1Y3QgbmV0X3ByZWZpeCl7fSk7CiYjNDM7CQl3cml0ZV9zZXFjb3VudF9lbmQoJmFtcDtuZXRzLSZndDtzZXEpOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDtzZXQtJmd0O2xvY2spOwogCX0KICNlbmRpZgogfQpAQCAtMTI1MywzMSAmIzQzOzEzMTAsNDEgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLAogI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyCiAJc3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0czE7CiAJc3RydWN0IG10eXBlX2VsZW0gb3JpZyA9ICpkOwomIzQzOwl1bnNpZ25lZCBpbnQgc2VxMTsKIAlpbnQgcmV0LCBpLCBqLCBrOwogI2Vsc2UKIAlpbnQgcmV0LCBpLCBqOwogI2VuZGlmCi0JdTMyIGtleSwgbXVsdGkgPSAwOwomIzQzOwl1bnNpZ25lZCBpbnQgc2VxMDsKJiM0MzsJdTMyIGtleSwgbXVsdGk7CiAJdTggcG9zOwogCiAJcHJfZGVidWcoJiMzNDt0ZXN0IGJ5IG5ldHNcbiYjMzQ7KTsKIAlyY3VfcmVhZF9sb2NrX2JoKCk7CiYjNDM7cmV0cnk6CiYjNDM7CW11bHRpID0gMDsKIAluZXRzMCA9IHJjdV9kZXJlZmVyZW5jZV9iaChoLSZndDtybmV0c1swXSk7CiYjNDM7CXNlcTAgPSByZWFkX3NlcWNvdW50X2JlZ2luKCZhbXA7bmV0czAtJmd0O3NlcSk7CiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDIKIAluZXRzMSA9IHJjdV9kZXJlZmVyZW5jZV9iaChoLSZndDtybmV0c1sxXSk7CiYjNDM7CXNlcTEgPSByZWFkX3NlcWNvdW50X2JlZ2luKCZhbXA7bmV0czEtJmd0O3NlcSk7CiAjZW5kaWYKIAlmb3IgKGogPSAwOyBqICZsdDsgbmV0czAtJmd0O2xlbiAmYW1wOyZhbXA7ICFtdWx0aTsgaiYjNDM7JiM0MzspIHsKLQkJaWYgKCFuZXRzMC0mZ3Q7bmV0c1tqXS5jb3VudCkKJiM0MzsJCXN0cnVjdCBuZXRfcHJlZml4IHAwID0gUkVBRF9PTkNFKG5ldHMwLSZndDtuZXRzW2pdKTsKJiM0MzsKJiM0MzsJCWlmICghcDAuY291bnQpCiAJCQljb250aW51ZTsKICNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMgogCQltdHlwZV9kYXRhX3Jlc2V0X2VsZW0oZCwgJmFtcDtvcmlnKTsKLQkJbXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMwLSZndDtuZXRzW2pdLmNpZHIsIGZhbHNlKTsKJiM0MzsJCW10eXBlX2RhdGFfbmV0bWFzayhkLCBwMC5jaWRyLCBmYWxzZSk7CiAJCWZvciAoayA9IDA7IGsgJmx0OyBuZXRzMS0mZ3Q7bGVuICZhbXA7JmFtcDsgIW11bHRpOyBrJiM0MzsmIzQzOykgewotCQkJaWYgKCFuZXRzMS0mZ3Q7bmV0c1trXS5jb3VudCkKJiM0MzsJCQlzdHJ1Y3QgbmV0X3ByZWZpeCBwMSA9IFJFQURfT05DRShuZXRzMS0mZ3Q7bmV0c1trXSk7CiYjNDM7CiYjNDM7CQkJaWYgKCFwMS5jb3VudCkKIAkJCQljb250aW51ZTsKLQkJCW10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMS0mZ3Q7bmV0c1trXS5jaWRyLCB0cnVlKTsKJiM0MzsJCQltdHlwZV9kYXRhX25ldG1hc2soZCwgcDEuY2lkciwgdHJ1ZSk7CiAjZWxzZQotCQltdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czAtJmd0O25ldHNbal0uY2lkcik7CiYjNDM7CQltdHlwZV9kYXRhX25ldG1hc2soZCwgcDAuY2lkcik7CiAjZW5kaWYKIAkJa2V5ID0gSEtFWShkLCBoLSZndDtpbml0dmFsLCB0LSZndDtodGFibGVfYml0cyk7CiAJCW4gPSByY3VfZGVyZWZlcmVuY2VfYmgoaGJ1Y2tldCh0LCBrZXkpKTsKQEAgLTEzMDIsNiAmIzQzOzEzNjksMTMgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLAogCQl9CiAjZW5kaWYKIAl9CiYjNDM7CiYjNDM7CWlmIChyZWFkX3NlcWNvdW50X3JldHJ5KCZhbXA7bmV0czAtJmd0O3NlcSwgc2VxMCkpCiYjNDM7CQlnb3RvIHJldHJ5OwomIzQzOyNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMgomIzQzOwlpZiAocmVhZF9zZXFjb3VudF9yZXRyeSgmYW1wO25ldHMxLSZndDtzZXEsIHNlcTEpKQomIzQzOwkJZ290byByZXRyeTsKJiM0MzsjZW5kaWYKIAlyZXQgPSAwOwogdW5sb2NrOgogCXJjdV9yZWFkX3VubG9ja19iaCgpOwpAQCAtMTcwNyw2ICYjNDM7MTc4MSw3IEBAIElQU0VUX1RPS0VOKEhUWVBFLCBfY3JlYXRlKShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpcF9zZXQgKnNldCwKIAkJCQlrZnJlZShyY3VfZGVyZWZlcmVuY2VfcmF3KGgtJmd0O3JuZXRzWy0taV0pKTsKIAkJCWdvdG8gZnJlZV9ocmVnaW9uOwogCQl9CiYjNDM7CQlzZXFjb3VudF9zcGlubG9ja19pbml0KCZhbXA7bmV0cy0mZ3Q7c2VxLCAmYW1wO3NldC0mZ3Q7bG9jayk7CiAJCVJDVV9JTklUX1BPSU5URVIoaC0mZ3Q7cm5ldHNbaV0sIG5ldHMpOwogCX0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jCmluZGV4IGI0NGI5NWY3NjZiN2EuLmI2MDJjYzQzNTY1ZGQgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMKQEAgLTM4LDcgJiM0MzszOCw2IEBAIE1PRFVMRV9BTElBUygmIzM0O2lwX3NldF9oYXNoOm5ldCxpZmFjZSYjMzQ7KTsKICNkZWZpbmUgSFRZUEUJCWhhc2hfbmV0aWZhY2UKICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTCiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTVVMVEkKLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVQwCiAKICNkZWZpbmUgU1RSU0NQWShhLCBiKQlzdHJzY3B5KGEsIGIsIElGTkFNU0laKQogCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jCmluZGV4IDYyOTE1MzJiZTdhNWEuLjYxYWYxY2UyNzEyNzkgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jCkBAIC0zNiw3ICYjNDM7MzYsNiBAQCBNT0RVTEVfQUxJQVMoJiMzNDtpcF9zZXRfaGFzaDpuZXQscG9ydCxuZXQmIzM0Oyk7CiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE8KICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTCiAjZGVmaW5lIElQU0VUX05FVF9DT1VOVCAyCi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMAogCiAvKiBJUHY0IHZhcmlhbnQgKi8KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDQxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVBzZXQgSGFzaCBUeXBlIE9wdGltaXphdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlISBJdCB0b3VjaGVzIGNyaXRpY2FsIGZpbGVzIOKAkyBgaXBfc2V0X2hhc2hfZ2VuLmhgLCBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AsIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYCDigJMgbWVhbmluZyBpdCBhZmZlY3RzIGhvdyBgbmV0X3ByZWZpeGVzYCBhcmUgbWFuYWdlZCB3aXRoaW4gdmFyaW91cyBpcHNldCBoYXNoIHR5cGVzLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhYm91dCB0aGUgaGFuZGxpbmcgb2YgQ0lEUnMuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBzZXFjb3VudF9zcGlubG9ja190IHNlcWAgaW4gYHN0cnVjdCBuZXRfcHJlZml4ZXNgIGZvciBzb21lIGtpbmQgb2YgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBgbmV0c2AuCgpNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQmIzM5O3MgYWltaW5nIHRvIG9wdGltaXplIGhvdyBDSURScyBhcmUgdHJhY2tlZCwgYnV0IHRoZSBjaGFuZ2UgaXRzZWxmIGlzIGZhaXJseSBsYXJnZSwgdG91Y2hpbmcgb24gdGhlIGNvcmUgb2YgdGhlIGlwc2V0IGhhc2ggZnVuY3Rpb25hbGl0eS4gRnJvbSB0aGUgZGVzY3JpcHRpb24sIGBtdHlwZV9hZGRfY2lkcmAgYW5kIGBtdHlwZV9kZWxfY2lkcmAgYXJlIGJlaW5nIG1vZGlmaWVkIHRvIGRvIGluLXBsYWNlIHVwZGF0ZXMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGV5IGFyZSB1cGRhdGluZyBlbnRyaWVzIGluLXBsYWNlIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIG5ldyBgbmV0X3ByZWZpeGVzYCBhcnJheSDigJMgZXhjZXB0IHdoZW4gYWRkaW5nIGEgQ0lEUiB3aGljaCByZXF1aXJlcyBleHBhbmRpbmcgdGhlIGFycmF5IGFuZCwgZXZlbiB0aGVuLCBgbXR5cGVfYWRkX2NpZHJgIGlzIHN0aWxsIGFsbG9jYXRpbmcgYSBuZXcgYXJyYXkgaWYgdGhlIENJRFIgaXMgbm90IGZvdW5kLiBUaGUgYG10eXBlX2RlbF9jaWRyYCBmdW5jdGlvbiBpcyBub3cgc2hpZnRpbmcgZWxlbWVudHMgaW4tcGxhY2UgYW5kIHVzaW5nIGB3cml0ZV9zZXFjb3VudF9iZWdpbi9lbmRgLCB3aGljaCBpcyBncmVhdCBmb3IgY29uY3VycmVuY3kuIEFuZCBgbXR5cGVfdGVzdF9jaWRyc2AgaXMgdXNpbmcgYHJlYWRfc2VxY291bnRfYmVnaW4vcmV0cnlgIHRvIGhhbmRsZSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMuIFRoaXMgaXMgcmVhbGx5IGltcG9ydGFudC4KCk9rYXksIHNvIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGFyZSB0aGUgbWFjcm9zL3RlbXBsYXRlcyBpbiBgaXBfc2V0X2hhc2hfZ2VuLmhgLiBUaGV5JiMzOTtyZSBpbnN0YW50aWF0ZWQgZm9yIGRpZmZlcmVudCBoYXNoIHR5cGVzIGxpa2UgYGhhc2hfbmV0aWZhY2U0X2FkZGAsIGBoYXNoX25ldGlmYWNlNF9kZWxgLCBhbmQgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgbXR5cGVfYWRkX2NpZHJgIGlzIHVzZWQuIEkgc2VlIGl0JiMzOTtzIHVzZWQgd2l0aGluIGBtdHlwZV9hZGRgIChsaWtlIGBoYXNoX25ldDRfYWRkYCwgYGhhc2hfbmV0cG9ydG5ldDRfYWRkYCwgZXRjLikuIFJpZ2h0LCBzbyBpdCBjYWxscyBgbXR5cGVfYWRkX2NpZHJgLiBJIG5lZWQgdG8gemVybyBpbiBvbiBob3cgdGhlc2UgYXJlIHVzZWQuIExldCBtZSBncmVwIGZvciBgbXR5cGVfYWRkX2NpZHJgIHdpdGhpbiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaGAuIE9rYXksIGxldCYjMzk7cyBnZXQgdG8gd29yayBhbmQgZmluZCB0aGUga2V5IGFyZWFzIHRvIGludmVzdGlnYXRlLiBUaGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgd29ydGggYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduIHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHJlZ3Jlc3Npb25zIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdHlwZV9hZGRfY2lkciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xODg9c3RhdGljIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciB6ZXJvbWFzayA9IHt9O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjE5LSN1bmRlZiBtdHlwZV9leHRfY2xlYW51cFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyMjA6I3VuZGVmIG10eXBlX2FkZF9jaWRyXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMS0jdW5kZWYgbXR5cGVfZGVsX2NpZHJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI2Ny0jZGVmaW5lIG10eXBlX2V4dF9jbGVhbnVwXHRJUFNFVF9UT0tFTihNVFlQRSwgX2V4dF9jbGVhbnVwKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNjg6I2RlZmluZSBtdHlwZV9hZGRfY2lkclx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZF9jaWRyKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNjktI2RlZmluZSBtdHlwZV9kZWxfY2lkclx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbF9jaWRyKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MzM1PXN0cnVjdCBtdHlwZV9yZXNpemVfYWQge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzQ1LS8qKlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDozNDY6ICogbXR5cGVfYWRkX2NpZHIgLSBBZGQgYSBDSURSIGVudHJ5IHRvIGhhc2ggdGFibGUgYm9va2tlZXBpbmdcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzQ3LSAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MzU3PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MzU4Om10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0zNTkte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg4PW10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTExMy1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIElQU0VUX05FVF9DT1VOVDsgaSYjNDM7JiM0MzspXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjExMTQ6XHRcdG10eXBlX2FkZF9jaWRyKHNldCwgaCwgRENJRFJfR0VUKGQtXHUwMDNlY2lkciwgaSksIGkpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xMTE1LSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NDkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgSVBTRVQgVG9rZW4gSW5zdGFudGlhdGlvbioqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgaG93IHRoZXNlIElQU0VUIGZ1bmN0aW9ucyBhcmUgYmVpbmcgYnJvdWdodCB0byBsaWZlLCBhbmQgaXQmIzM5O3MgaGFwcGVuaW5nIHRocm91Z2ggdGhlIGBJUFNFVF9UT0tFTihNVFlQRSwgX2FkZF9jaWRyKWAgbWFjcm8uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGF0IGBNVFlQRWAgcGFyYW1ldGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIGBNVFlQRWAgdmFsdWVzIGFyZSBiZWluZyB1c2VkIGZvciB0aGUgYGhhc2hfbmV0aWZhY2VgIGFuZCBgaGFzaF9uZXRwb3J0bmV0YCB0eXBlcy4gS25vd2luZyB0aG9zZSB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEgc3RydWN0dXJlcyBhbmQgcG90ZW50aWFsIG9wdGltaXphdGlvbnMgYmVpbmcgbGV2ZXJhZ2VkIGR1cmluZyB0aGUgQ0lEUiBhZGRpdGlvbiBwcm9jZXNzLiBJJiMzOTttIGFzc3VtaW5nIHRoZXJlJiMzOTtzIHNvbWUgc29ydCBvZiBzcGVjaWFsaXphdGlvbiBvciBjb25maWd1cmF0aW9uIGhhcHBlbmluZyBhdCBjb21waWxlIHRpbWUgYmFzZWQgb24gYE1UWVBFYCwgYW5kIEkgbmVlZCB0byBzZWUgaWYgdGhhdCBpbXBhY3RzIHBlcmZvcm1hbmNlIG9yIG1lbW9yeSB1c2FnZSBpbiBhbnkgc2lnbmlmaWNhbnQgd2F5LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBkZWZpbml0aW9ucyBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4gVGhpcyBpcyB3aGVyZSB0aGUgZGV2aWwmIzM5O3MgaW4gdGhlIGRldGFpbHMsIHNvIGxldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBNVFlQRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jPTMzPU1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfYml0bWFwOmlwXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jLTM0LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwLmM6MzU6I2RlZmluZSBNVFlQRVx0XHRiaXRtYXBfaXBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jLTM2LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcG1hYy5jPTMzPU1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfYml0bWFwOmlwLG1hY1wmIzM0Oyk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXBtYWMuYy0zNC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcG1hYy5jOjM1OiNkZWZpbmUgTVRZUEVcdFx0Yml0bWFwX2lwbWFjXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXBtYWMuYy0zNi0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfcG9ydC5jPTI3PU1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfYml0bWFwOnBvcnRcJiMzNDspO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX3BvcnQuYy0yOC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9wb3J0LmM6Mjk6I2RlZmluZSBNVFlQRVx0XHRiaXRtYXBfcG9ydFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX3BvcnQuYy0zMC1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmM9NzA9aGFzaF9pcDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwNF9lbGVtICpuZXh0LCBjb25zdCBzdHJ1Y3QgaGFzaF9pcDRfZWxlbSAqZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmMtNzQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmM6NzU6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwNFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jLTc2LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYz0yMDI9aGFzaF9pcDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwNl9lbGVtICpuZXh0LCBjb25zdCBzdHJ1Y3QgaGFzaF9pcDZfZWxlbSAqZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmMtMjA4LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jOjIwOTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXA2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmMtMjEwLSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmM9NzI9aGFzaF9pcG1hYzRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwbWFjNF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYy03Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYzo3ODojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBtYWM0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtNzktI2RlZmluZSBQRlx0XHQ0XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jPTE4MD1oYXNoX2lwbWFjNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYWM2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jLTE4OS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYzoxOTA6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwbWFjNlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jLTE5MS0jZGVmaW5lIFBGXHRcdDZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jPTY5PWhhc2hfaXBtYXJrNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYXJrNF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtNzQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jOjc1OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcG1hcms0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jLTc2LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmM9MjA1PWhhc2hfaXBtYXJrNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYXJrNl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtMjEyLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYzoyMTM6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwbWFyazZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtMjE0LSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jPTc5PWhhc2hfaXBwb3J0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBwb3J0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtODUtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jOjg2OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcHBvcnQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jLTg3LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmM9MjQ5PWhhc2hfaXBwb3J0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBwb3J0Nl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtMjU3LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYzoyNTg6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwcG9ydDZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtMjU5LSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmM9Nzc9aGFzaF9pcHBvcnRpcDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydGlwNF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy04NC0vKiBDb21tb24gZnVuY3Rpb25zICovXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmM6ODU6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwcG9ydGlwNFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jLTg2LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYz0yNDg9aGFzaF9pcHBvcnRpcDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydGlwNl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy0yNTYtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmM6MjU3OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcHBvcnRpcDZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy0yNTgtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM9MTIxPWhhc2hfaXBwb3J0bmV0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBwb3J0bmV0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMTI4LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYzoxMjk6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwcG9ydG5ldDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMTMwLSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM9Mzc5PWhhc2hfaXBwb3J0bmV0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBwb3J0bmV0Nl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMzg3LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYzozODg6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwcG9ydG5ldDZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMzg5LSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX21hYy5jPTYxPWhhc2hfbWFjNF9kYXRhX25leHQoc3RydWN0IGhhc2hfbWFjNF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbWFjLmMtNjUtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX21hYy5jOjY2OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9tYWM0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX21hYy5jLTY3LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MTAyPWhhc2hfbmV0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMTA3LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYzoxMDg6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMTA5LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MjczPWhhc2hfbmV0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0Nl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMjgwLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYzoyODE6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldDZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMjgyLSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MTI4PWhhc2hfbmV0aWZhY2U0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRpZmFjZTRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTMzLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjEzNDojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0aWZhY2U0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTM1LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0zNjI9aGFzaF9uZXRpZmFjZTZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldGlmYWNlNl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zNjktXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6MzcwOiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRpZmFjZTZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zNzEtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM9MTI1PWhhc2hfbmV0bmV0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0bmV0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMTMwLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYzoxMzE6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldG5ldDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMTMyLSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM9MzYzPWhhc2hfbmV0bmV0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0bmV0Nl9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzcwLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYzozNzE6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldG5ldDZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzcyLSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0xMTc9aGFzaF9uZXRwb3J0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydDRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0xMjMtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYzoxMjQ6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldHBvcnQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0xMjUtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM9MzM0PWhhc2hfbmV0cG9ydDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMzQyLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6MzQzOiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRwb3J0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMzQ0LSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYz0xMzE9aGFzaF9uZXRwb3J0bmV0NF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydG5ldDRfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzoxMzg6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldHBvcnRuZXQ0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzktI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9NDI1PWhhc2hfbmV0cG9ydG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnRuZXQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDMzLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM6NDM0OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRwb3J0bmV0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDM1LSNkZWZpbmUgSE9TVF9NQVNLXHQxMjhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ2OQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipNYWNybyBNYWdpYyBhbmQgSVAgU2V0IE9wZXJhdGlvbnMqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgaG93IHRoZXNlIElQIHNldCBmdW5jdGlvbmFsaXRpZXMgYXJlIGNyZWF0ZWQgaGluZ2VzIG9uIG1hY3Jvcy4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYXBwcm9hY2gsIHZlcnkgY29tbW9uIGZvciBnZW5lcmF0aW5nIHJlcGV0aXRpdmUgY29kZSBvciBjb25maWd1cmF0aW9ucy4gTXkgcHJpbWFyeSBjb25jZXJuLCB0aGVyZWZvcmUsIGlzIHdoZXJlIHRoZXNlIG1hY3JvcyBhcmUgZGVmaW5lZCBhbmQgaG93IHRoZXkgYXJlIHVzZWQsIGJlY2F1c2UgKnRoYXQqIGlzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBsb2dpYyB3aWxsIHJlc2lkZS4KCkZyb20gbXkgdW5kZXJzdGFuZGluZywgdGhlIHJlYWwgbWVhdCBvZiB0aGUgSVAgc2V0IG9wZXJhdGlvbiwgdGhlIHBhcnRzIHRoYXQgZ2V0IGV4cG9ydGVkIGFuZCByZWdpc3RlcmVkIHdpdGggdGhlIGtlcm5lbCwgYXJlIHRoZSBgaXBfc2V0X3R5cGVgIG9wZXJhdGlvbnMgdGhlbXNlbHZlcy4gVGhhdCYjMzk7cyB0aGUgdml0YWwgaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBzZXRzLiBTbywgdGhlIHF1ZXN0aW9uIGlzIG5vdCAqd2hhdCogYXJlIHdlIHdvcmtpbmcgd2l0aCwgYnV0IHJhdGhlciAqaG93KiBhcmUgd2UgY3JlYXRpbmcgdGhlIGlwX3NldF90eXBlIG9iamVjdHMuCgpJJiMzOTtsbCBkaXZlIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNgIGZpbGUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBjb25jcmV0ZSBleGFtcGxlIG9mIGhvdyB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3Mgd29ya3MuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgbWFjcm9zIHRyYW5zbGF0ZSBpbnRvIHRoZXNlIHJlZ2lzdGVyZWQgZnVuY3Rpb25zIGFuZCB3aGF0IHRoZSBjcml0aWNhbCBgaXBfc2V0X3R5cGVgIHN0cnVjdHVyZSBsb29rcyBsaWtlIGluIHByYWN0aWNlLiBPbmNlIEkgdW5kZXJzdGFuZCB0aGF0LCBJIGNhbiBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb25hbGl0eSBtb3JlIGdlbmVyYWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfdHlwZV9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9NTExPWhhc2hfbmV0aWZhY2VfaW5pdCh2b2lkKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTUxMi17XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6NTEzOlx0cmV0dXJuIGlwX3NldF90eXBlX3JlZ2lzdGVyKFx1MDAyNmhhc2hfbmV0aWZhY2VfdHlwZSk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNTE0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTk2MQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkV4YW1pbmluZyB0aGUgYGhhc2hfbmV0aWZhY2VfdHlwZWAgT3BlcmF0aW9ucyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhpcyBgaGFzaF9uZXRpZmFjZV90eXBlYCBzdHJ1Y3R1cmUsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEga2V5IGRhdGEgc3RydWN0dXJlIGhhbmRsaW5nIG5ldHdvcmsgaW50ZXJmYWNlIHR5cGVzLiBUaGUgY29yZSBvcGVyYXRpb25zIGRlZmluZWQgYXJlIGBrYWR0YCwgYHVhZHRgLCBgYWRkYCwgYGRlbGAsIGFuZCBgdGVzdGAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hhdCBzcGVjaWZpYyBmdW5jdGlvbnMgYXJlICpib3VuZCogdG8gZWFjaCBvZiB0aGVzZSBvcGVyYXRpb25zPyBga2FkdGAgYW5kIGB1YWR0YCBzdWdnZXN0IGtlcm5lbCBhbmQgdXNlci1zcGFjZSBvcGVyYXRpb25zIHJlc3BlY3RpdmVseSwgb24gdGhlIHR5cGUgdGFibGUsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCBlYWNoIGxldmVsLiAmIzM5O0FkZCYjMzk7IGFuZCAmIzM5O0RlbCYjMzk7IG9mIGNvdXJzZSwgYXJlIHRhYmxlIG1hbmFnZW1lbnQgb3BlcmF0aW9ucy4gSSByZWFsbHkgbmVlZCB0byBkcmlsbCBkb3duIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGV5IGRvLiBBbmQgbmF0dXJhbGx5LCAmIzM5O3Rlc3QmIzM5OyBpbmRpY2F0ZXMgc29tZSBmb3JtIG9mIHZhbGlkYXRpb24gb3IgY2hlY2tpbmcgb24gdGhlIGRhdGEuIEkgbmVlZCB0byBub3cgZXhhbWluZSB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBlYWNoIG9mIHRob3NlIGZ1bmN0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBtZWNoYW5pY3Mgb2YgdGhpcyBtb2R1bGUuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgaW50ZXJlc3Rpbmcgc3R1ZmYgaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhc2hfbmV0aWZhY2VfdHlwZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9NDE2PWhhc2hfbmV0aWZhY2U2X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00NjgtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6NDY5OnN0YXRpYyBzdHJ1Y3QgaXBfc2V0X3R5cGUgaGFzaF9uZXRpZmFjZV90eXBlIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNDcwLVx0Lm5hbWVcdFx0PSBcJiMzNDtoYXNoOm5ldCxpZmFjZVwmIzM0Oyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9NTExPWhhc2hfbmV0aWZhY2VfaW5pdCh2b2lkKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTUxMi17XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6NTEzOlx0cmV0dXJuIGlwX3NldF90eXBlX3JlZ2lzdGVyKFx1MDAyNmhhc2hfbmV0aWZhY2VfdHlwZSk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNTE0LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9NTE3PWhhc2hfbmV0aWZhY2VfZmluaSh2b2lkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy01MTktXHRyY3VfYmFycmllcigpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjUyMDpcdGlwX3NldF90eXBlX3VucmVnaXN0ZXIoXHUwMDI2aGFzaF9uZXRpZmFjZV90eXBlKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy01MjEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjcwNQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBpcF9zZXRfaGFzaF9uZXRpZmFjZWAgQ29kZSoqCgpPa2F5LCBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYGlwX3NldF9oYXNoX25ldGlmYWNlYCBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDQ2OSBvZiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jYC4gTXkgaHVuY2ggaXMgdGhhdCB0aGVyZSYjMzk7cyBzb21ldGhpbmcgc3BlY2lmaWMgdGhlcmUgSSYjMzk7bSBsb29raW5nIGZvciAtIG1heWJlIHJlbGF0ZWQgdG8gYSByZWNlbnQgYnVnIHJlcG9ydCBvciBwZXJmb3JtYW5jZSBpc3N1ZSBJJiMzOTt2ZSBiZWVuIHRyYWNraW5nLCBvciBwZXJoYXBzIEkmIzM5O20gdHJ5aW5nIHRvIG9wdGltaXplIGEgc3BlY2lmaWMgZmxvdy4gVGltZSB0byBkcmlsbCBkb3duLiBJJiMzOTttIHByb2JhYmx5IGxvb2tpbmcgZm9yIHRoZSBmdW5jdGlvbiB3aGVyZSB0aGUgaW50ZXJmYWNlIG9yIG5ldHdvcmsgYWRkcmVzcyBoYXNoaW5nIGlzIGltcGxlbWVudGVkLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUga2V5IGlzIGNvbnN0cnVjdGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGhhc2ggdmFsdWVzIGFyZSBnZW5lcmF0ZWQgZm9yIGRpZmZlcmVudCBuZXRpZmFjZSBrZXlzLiBLbm93aW5nIGhvdyB0aGlzIHBhcnRpY3VsYXIgaGFzaCBzZXQgdHlwZSB3b3JrcyBpbiByZWxhdGlvbiB0byBpdHMga2V5IGNvbnN0cnVjdGlvbiBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgYmVoYXZpb3IgYXQgc2NhbGUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZyBpbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDYwOlx0XHRcdFx0ZS53aWxkY2FyZCA9IDE7XG4gNDYxOlx0XHR9XG4gNDYyOlx0XG4gNDYzOlx0XHRyZXQgPSBhZHRmbihzZXQsIFx1MDAyNmUsIFx1MDAyNmV4dCwgXHUwMDI2ZXh0LCBmbGFncyk7XG4gNDY0Olx0XG4gNDY1Olx0XHRyZXR1cm4gaXBfc2V0X2Vub21hdGNoKHJldCwgZmxhZ3MsIGFkdCwgc2V0KSA/IC1yZXQgOlxuIDQ2NjpcdFx0ICAgICAgIGlwX3NldF9lZXhpc3QocmV0LCBmbGFncykgPyAwIDogcmV0O1xuIDQ2NzpcdH1cbiA0Njg6XHRcbiA0Njk6XHRzdGF0aWMgc3RydWN0IGlwX3NldF90eXBlIGhhc2hfbmV0aWZhY2VfdHlwZSBfX3JlYWRfbW9zdGx5ID0ge1xuIDQ3MDpcdFx0Lm5hbWVcdFx0PSBcJiMzNDtoYXNoOm5ldCxpZmFjZVwmIzM0OyxcbiA0NzE6XHRcdC5wcm90b2NvbFx0PSBJUFNFVF9QUk9UT0NPTCxcbiA0NzI6XHRcdC5mZWF0dXJlc1x0PSBJUFNFVF9UWVBFX0lQIHwgSVBTRVRfVFlQRV9JRkFDRSB8XG4gNDczOlx0XHRcdFx0ICBJUFNFVF9UWVBFX05PTUFUQ0gsXG4gNDc0Olx0XHQuZGltZW5zaW9uXHQ9IElQU0VUX0RJTV9UV08sXG4gNDc1Olx0XHQuZmFtaWx5XHRcdD0gTkZQUk9UT19VTlNQRUMsXG4gNDc2Olx0XHQucmV2aXNpb25fbWluXHQ9IElQU0VUX1RZUEVfUkVWX01JTixcbiA0Nzc6XHRcdC5yZXZpc2lvbl9tYXhcdD0gSVBTRVRfVFlQRV9SRVZfTUFYLFxuIDQ3ODpcdFx0LmNyZWF0ZV9mbGFnc1tJUFNFVF9UWVBFX1JFVl9NQVhdID0gSVBTRVRfQ1JFQVRFX0ZMQUdfQlVDS0VUU0laRSxcbiA0Nzk6XHRcdC5jcmVhdGVcdFx0PSBoYXNoX25ldGlmYWNlX2NyZWF0ZSxcbiA0ODA6XHRcdC5jcmVhdGVfcG9saWN5XHQ9IHtcbiA0ODE6XHRcdFx0W0lQU0VUX0FUVFJfSEFTSFNJWkVdXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4gNDgyOlx0XHRcdFtJUFNFVF9BVFRSX01BWEVMRU1dXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4gNDgzOlx0XHRcdFtJUFNFVF9BVFRSX0lOSVRWQUxdXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4gNDg0Olx0XHRcdFtJUFNFVF9BVFRSX0JVQ0tFVFNJWkVdXHQ9IHsgLnR5cGUgPSBOTEFfVTggfSxcbiA0ODU6XHRcdFx0W0lQU0VUX0FUVFJfUkVTSVpFXVx0PSB7IC50eXBlID0gTkxBX1U4ICB9LFxuIDQ4NjpcdFx0XHRbSVBTRVRfQVRUUl9QUk9UT11cdD0geyAudHlwZSA9IE5MQV9VOCB9LFxuIDQ4NzpcdFx0XHRbSVBTRVRfQVRUUl9USU1FT1VUXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIDQ4ODpcdFx0XHRbSVBTRVRfQVRUUl9DQURUX0ZMQUdTXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIDQ4OTpcdFx0fSxcbiA0OTA6XHRcdC5hZHRfcG9saWN5XHQ9IHtcbiA0OTE6XHRcdFx0W0lQU0VUX0FUVFJfSVBdXHRcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcbiA0OTI6XHRcdFx0W0lQU0VUX0FUVFJfSVBfVE9dXHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gNDkzOlx0XHRcdFtJUFNFVF9BVFRSX0lGQUNFXVx0PSB7IC50eXBlID0gTkxBX05VTF9TVFJJTkcsXG4gNDk0Olx0XHRcdFx0XHRcdCAgICAubGVuICA9IElGTkFNU0laIC0gMSB9LFxuIDQ5NTpcdFx0XHRbSVBTRVRfQVRUUl9DQURUX0ZMQUdTXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIDQ5NjpcdFx0XHRbSVBTRVRfQVRUUl9DSURSXVx0PSB7IC50eXBlID0gTkxBX1U4IH0sXG4gNDk3Olx0XHRcdFtJUFNFVF9BVFRSX1RJTUVPVVRdXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4gNDk4Olx0XHRcdFtJUFNFVF9BVFRSX0xJTkVOT11cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiA0OTk6XHRcdFx0W0lQU0VUX0FUVFJfQllURVNdXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG4gNTAwOlx0XHRcdFtJUFNFVF9BVFRSX1BBQ0tFVFNdXHQ9IHsgLnR5cGUgPSBOTEFfVTY0IH0sXG4gNTAxOlx0XHRcdFtJUFNFVF9BVFRSX0NPTU1FTlRdXHQ9IHsgLnR5cGUgPSBOTEFfTlVMX1NUUklORyxcbiA1MDI6XHRcdFx0XHRcdFx0ICAgIC5sZW4gID0gSVBTRVRfTUFYX0NPTU1FTlRfU0laRSB9LFxuIDUwMzpcdFx0XHRbSVBTRVRfQVRUUl9TS0JNQVJLXVx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxuIDUwNDpcdFx0XHRbSVBTRVRfQVRUUl9TS0JQUklPXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIDUwNTpcdFx0XHRbSVBTRVRfQVRUUl9TS0JRVUVVRV1cdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcbiA1MDY6XHRcdH0sXG4gNTA3Olx0XHQubWVcdFx0PSBUSElTX01PRFVMRSxcbiA1MDg6XHR9O1xuIDUwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDA4MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBJUCBTZXQgSGFzaCBDcmVhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBJUCBzZXRzIGFyZSBjcmVhdGVkLCBzcGVjaWZpY2FsbHkgdGhlIGhhc2ggaW1wbGVtZW50YXRpb24uICBJIGtub3cgdGhlIGNvcmUgZnVuY3Rpb25zIGFyZW4mIzM5O3QgZGlyZWN0bHkgd3JpdHRlbiBvdXQsIHRoZXkmIzM5O3JlIGdlbmVyYXRlZCB2aWEgbWFjcm9zLiBUaGUga2V5IGhlcmUgaXMgdG8gZmluZCB0aGUgbWFjcm8gZGVmaW5pdGlvbnMuIFRoZSBwbGFjZSB0byBzdGFydCBpcyBgaXBfc2V0X2hhc2hfZ2VuLmhgLCB0aGF0JiMzOTtzIHdoZXJlIHRoZSBtYWdpYyBwcm9iYWJseSBoYXBwZW5zLiBOb3csIHRoZSBtYWluIGNyZWF0aW9uIGZ1bmN0aW9uIGlzIGBoYXNoX25ldGlmYWNlX2NyZWF0ZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyAqaXQqIHdvcmtzIGFuZCBob3cgdGhhdCBtYWNybyBnZW5lcmF0aW9uIHByb2Nlc3MgYWZmZWN0cyBpdC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhc2hfbmV0aWZhY2VfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTQ2OT1zdGF0aWMgc3RydWN0IGlwX3NldF90eXBlIGhhc2hfbmV0aWZhY2VfdHlwZSBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00NzgtXHQuY3JlYXRlX2ZsYWdzW0lQU0VUX1RZUEVfUkVWX01BWF0gPSBJUFNFVF9DUkVBVEVfRkxBR19CVUNLRVRTSVpFLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjQ3OTpcdC5jcmVhdGVcdFx0PSBoYXNoX25ldGlmYWNlX2NyZWF0ZSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00ODAtXHQuY3JlYXRlX3BvbGljeVx0PSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDc4CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqRGlzc2VjdGluZyB0aGUgYGhhc2hfbmV0aWZhY2VfY3JlYXRlYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBoYXNoX25ldGlmYWNlX2NyZWF0ZWAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBsb29raW5nIGEgbGl0dGxlLi4uZ2VuZXJhdGVkLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgcHJvYmFibHkgY29taW5nIGZyb20gc29tZXRoaW5nIGxpa2UgYSBtYWNybywgcHJvYmFibHkgaW4gdGhlIGBpcF9zZXRfaGFzaF9nZW4uaGAgZmlsZS4gSSYjMzk7dmUgZ290IGEgZmVlbGluZyBpdCYjMzk7cyB0aGUgYElQU0VUX1RPS0VOKEhUWVBFLCBfY3JlYXRlKWAgbWFjcm8gdGhhdCYjMzk7cyBkb2luZyB0aGUgZGlydHkgd29yay4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gVGltZSB0byBjcmFjayBvcGVuIGBpcF9zZXRfaGFzaF9nZW4uaGAgYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IHVuZGVyIHRoZSBob29kIG9mIGBJUFNFVF9UT0tFTihIVFlQRSwgX2NyZWF0ZSlgLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIHRoaW5nIGlzIHB1dCB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVBTRVRfVE9LRU5cXChIVFlQRSwgX2NyZWF0ZVxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xNjUyPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MTY1MzpJUFNFVF9UT0tFTihIVFlQRSwgX2NyZWF0ZSkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaXBfc2V0ICpzZXQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2NTQtXHRcdFx0ICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHUzMiBmbGFncylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4ODIKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHZW5lcmF0ZWQgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdlbmVyYXRlZCB0aGVzZSBmdW5jdGlvbnM6IGBoYXNoX25ldGlmYWNlNF9hZGRgLCBgaGFzaF9uZXRpZmFjZTRfZGVsYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCBgaGFzaF9uZXRpZmFjZTZfYWRkYCwgYGhhc2hfbmV0aWZhY2U2X2RlbGAsIGBoYXNoX25ldGlmYWNlNl90ZXN0YC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlbiwgd2UgaGF2ZSBgaGFzaF9uZXRwb3J0bmV0NF9hZGRgLCBgaGFzaF9uZXRwb3J0bmV0NF9kZWxgLCBgaGFzaF9uZXRwb3J0bmV0NF90ZXN0YCwgYGhhc2hfbmV0cG9ydG5ldDZfYWRkYCwgYGhhc2hfbmV0cG9ydG5ldDZfZGVsYCwgYW5kIGBoYXNoX25ldHBvcnRuZXQ2X3Rlc3RgLiBSaWdodCwgYWxsIHRoZSBzdGFuZGFyZCBoYXNoIGZ1bmN0aW9ucyBmb3IgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBwb3J0cyBhY3Jvc3MgSVB2NCBhbmQgSVB2Ni4KCkJ1dCB3YWl0IGEgbWludXRlLCBJIHNlZSBgbXR5cGVfYWRkX2NpZHJgIGFuZCBgbXR5cGVfZGVsX2NpZHJgIGFyZSBpbiBgaXBfc2V0X2hhc2hfZ2VuLmhgLCBtYXJrZWQgYXMgc3RhdGljIGlubGluZSBvciBzdGF0aWMuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayDigJMgYXJlIHRoZXkgKmV4cG9ydGVkKiBvciBqdXN0IGxvY2FsPyBIbW0sIHllYWgsIHRoZXkmIzM5O3JlIGRlZmluaXRlbHkgc3RhdGljLiBPa2F5LCBzbyB0aGVzZSBhcmUgaW50ZXJuYWwgaGVscGVycy4KCk5vdywgaWYgSSByZWNhbGwgY29ycmVjdGx5LCB0aGUgZnVuY3Rpb25zIHRoYXQgKnVzZSogdGhlc2Ugc3RhdGljIGhlbHBlcnMgYXJlIGBtdHlwZV9hZGRgIGFuZCBgbXR5cGVfZGVsYC4gSG1tLCByaWdodC4uLiBhbmQgaXMgYG10eXBlX2FkZGAgZ2VuZXJhdGVkIGludG8gc29tZXRoaW5nIGxpa2UgYGhhc2hfbmV0aWZhY2U0X2FkZGAuLi4gSSBuZWVkIHRvIGJlIHN1cmUuIExldCBtZSB0cmFjZSBiYWNrIGFuZCBjaGVjayBob3cgZXhhY3RseSBgbXR5cGVfYWRkYCBpcyBkZWZpbmVkIGluIHJlbGF0aW9uIHRvIHRoZSBjb2RlIGdlbmVyYXRpb24uIFRoYXTigJlzIHRoZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210eXBlX2FkZFxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NDA9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo3NDE6bXR5cGVfYWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTc0Mi1cdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NTI9bXR5cGVfcmVzaXplKHN0cnVjdCBpcF9zZXQgKnNldCwgYm9vbCByZXRyaWVkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTA0LVx0XHRpZiAoeC1cdTAwM2VhZCA9PSBJUFNFVF9BREQpIHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6OTA1Olx0XHRcdG10eXBlX2FkZChzZXQsIFx1MDAyNngtXHUwMDNlZCwgXHUwMDI2eC1cdTAwM2VleHQsIFx1MDAyNngtXHUwMDNlbWV4dCwgeC1cdTAwM2VmbGFncyk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNi1cdFx0fSBlbHNlIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTk4Nz1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjk4ODptdHlwZV9hZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTg5LVx0ICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTg5NQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyB0aGlzIGBtdHlwZV9hZGRgIE1hY3JvKioKCk9rYXksIHNvIEkgc2VlIGBtdHlwZV9hZGRgIGFuZCBteSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMsICYjMzQ7SG1tLCB3aGF0JiMzOTtzIGdvaW5nIG9uIGhlcmU/JiMzNDsgSXQmIzM5O3MgY2xlYXJseSBhIG1hY3JvLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGV4cGFuc2lvbi4gVGhlIHRleHQgc3RhdGVzIGBtdHlwZV9hZGRgIGlzIGRlZmluZWQgYXMgYElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAuIE15IGluc3RpbmN0IGlzIHRvIGNvbmZpcm0gdGhhdCBleHBhbnNpb24gZXhpc3RzIHdpdGhpbiB0aGUgY29kZS4gTGV0IG1lIHF1aWNrbHkgc2NhbiBmb3IgdGhhdCBgI2RlZmluZSBtdHlwZV9hZGQgSVBTRVRfVE9LRU4oTVRZUEUsIF9hZGQpYCBzdGF0ZW1lbnQuIFRoYXQmIzM5O3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgd2hhdCBgbXR5cGVfYWRkYCBhY3R1YWxseSByZXByZXNlbnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IG1hY3JvIHN1YnN0aXR1dGlvbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBtdHlwZV9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI2Ny0jZGVmaW5lIG10eXBlX2V4dF9jbGVhbnVwXHRJUFNFVF9UT0tFTihNVFlQRSwgX2V4dF9jbGVhbnVwKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNjg6I2RlZmluZSBtdHlwZV9hZGRfY2lkclx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZF9jaWRyKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNjktI2RlZmluZSBtdHlwZV9kZWxfY2lkclx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbF9jaWRyKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjc5LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyODA6I2RlZmluZSBtdHlwZV9hZGRcdFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9hZGQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI4MS0jZGVmaW5lIG10eXBlX2RlbFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY0MTgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4KCioqRGVjb2RpbmcgdGhlIGBJUFNFVF9UT0tFTmAgTWFjcm8qKgoKUmlnaHQsIHNvIGBtdHlwZV9hZGRgIGlzIGRlZmluZWQgYXMgYElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAuIFRoYXQmIzM5O3MgdGhlIGtleS4gU28sIGZvciB0aGUgYGhhc2hfbmV0aWZhY2U0YCB0eXBlLCB0aGUgY29ycmVzcG9uZGluZyAmIzM0O2FkZCYjMzQ7IGZ1bmN0aW9uIG11c3QgYmUgYGhhc2hfbmV0aWZhY2U0X2FkZGAuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEFuZCBieSBleHRlbnNpb24sIGBoYXNoX25ldHBvcnRuZXQ0YCB3b3VsZCB0aGVuIGhhdmUgaXRzICYjMzQ7YWRkJiMzNDsgZnVuY3Rpb24gYXMgYGhhc2hfbmV0cG9ydG5ldDRfYWRkYC4gU2ltcGxlLCBjb25zaXN0ZW50IG5hbWluZyBjb252ZW50aW9uLCBub3RoaW5nIHVuZXhwZWN0ZWQgaGVyZS4gSG9sZCBvbiB0aG91Z2gsIEkgc2VlIHRoaXMgcGF0Y2ggYWxzbyB0b3VjaGVzIGBtdHlwZV90ZXN0X2NpZHJzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBwaWVjZSBvZiBpdCwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBvbmUmIzM5O3MgYWxsIGFib3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIG10eXBlX3Rlc3RfY2lkcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI4MS0jZGVmaW5lIG10eXBlX2RlbFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjgyOiNkZWZpbmUgbXR5cGVfdGVzdF9jaWRyc1x0SVBTRVRfVE9LRU4oTVRZUEUsIF90ZXN0X2NpZHJzKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yODMtI2RlZmluZSBtdHlwZV90ZXN0XHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfdGVzdClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY5MDMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBJUCBTZXQgSGFzaCBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBzZWVpbmcgYSBwYXR0ZXJuIHdpdGggdGhlc2UgYGhhc2hfbmV0aWZhY2U0YCBmdW5jdGlvbnM6IGBoYXNoX25ldGlmYWNlNF90ZXN0X2NpZHJzYCwgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLCBgaGFzaF9uZXRpZmFjZTRfYWRkYCwgYW5kIGBoYXNoX25ldGlmYWNlNF9kZWxgLiBUaGV5JiMzOTtyZSBhbGwgdmFyaWF0aW9ucyBvbiB0ZXN0aW5nLCBhZGRpbmcsIGFuZCBkZWxldGluZyBuZXR3b3JrIGludGVyZmFjZXMsIGFuZCB1c2luZyBDSURScywgcHJlc3VtYWJseSBmb3IgSVB2NC4gQW5kLCBpdCBsb29rcyBsaWtlIHRoaXMgc2FtZSBuYW1pbmcgc2NoZW1lIGlzIGFwcGxpZWQgdG8gdGhlIGBuZXRwb3J0bmV0NGAsIGBuZXQ0YCwgYG5ldG5ldDRgLCBhbmQgYG5ldHBvcnQ0YCB2YXJpYW50cy4gSXQmIzM5O3MgYSBjbGVhbiBhbmQgY29uc2lzdGVudCBhcHByb2FjaCwgZ29vZC4KCk5vdywgaG9sZCBvbi4uLiBgSVBfU0VUX0hBU0hfV0lUSF9ORVRTYCBpcyBkZWZpbmVkIGZvciAqbXVsdGlwbGUqIGhhc2ggdHlwZXM/IFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoaWNoIG9uZXMsIHNwZWNpZmljYWxseSwgYXJlIGxldmVyYWdpbmcgdGhpcy4gSSBuZWVkIHRvIGNoZWNrIHdoaWNoIHNwZWNpZmljIGhhc2ggdHlwZXMgdXRpbGl6ZSB0aGlzIG1hY3JvLiBUaW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIgYW5kIHNlZSB3aGljaCBzcGVjaWZpYyBoYXNoIHR5cGVzIHJlcXVpcmUgdGhhdCBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM9MzY9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOmlwLHBvcnQsbmV0XCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTQ0LSAqL1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYzo0NTojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU19QQUNLRURcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtNDYtI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX1BST1RPXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jOjQ3OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTQ4LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MzM9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9oYXNoOm5ldFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0zNi0jZGVmaW5lIEhUWVBFXHRcdGhhc2hfbmV0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjM3OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTM4LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0zNT1NT0RVTEVfQUxJQVMoXCYjMzQ7aXBfc2V0X2hhc2g6bmV0LGlmYWNlXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzgtI2RlZmluZSBIVFlQRVx0XHRoYXNoX25ldGlmYWNlXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6Mzk6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00MC0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTVVMVElcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTMyPU1PRFVMRV9BTElBUyhcJiMzNDtpcF9zZXRfaGFzaDpuZXQsbmV0XCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM1LSNkZWZpbmUgSFRZUEVcdFx0aGFzaF9uZXRuZXRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MzY6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzctI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVE1BU0tcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0zNT1NT0RVTEVfQUxJQVMoXCYjMzQ7aXBfc2V0X2hhc2g6bmV0LHBvcnRcJiMzNDspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTM5LSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6NDA6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTQxLVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTQ1LSAqL1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6NDY6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNfUEFDS0VEXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy00Ny1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYz0zMj1NT0RVTEVfQUxJQVMoXCYjMzQ7aXBfc2V0X2hhc2g6bmV0LHBvcnQsbmV0XCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0zNi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jOjM3OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0zOC0jZGVmaW5lIElQU0VUX05FVF9DT1VOVCAyXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjQyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBIYXNoIFNldCBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGVzZSBoYXNoIHNldCB0eXBlcyB0aGF0IHV0aWxpemUgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2A6IHNwZWNpZmljYWxseSBgaGFzaF9pcHBvcnRuZXRgLCBgaGFzaF9uZXRgLCBgaGFzaF9uZXRpZmFjZWAsIGBoYXNoX25ldG5ldGAsIGBoYXNoX25ldHBvcnRgLCBhbmQgYGhhc2hfbmV0cG9ydG5ldGAuIEl0IGxvb2tzIGxpa2UgdGhlIHByaW1hcnkgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBgI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVDBgIG1hY3JvIGZyb20gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2h5PyYjMzQ7IFdoYXQmIzM5O3MgdGhlIGRyaXZpbmcgZm9yY2UgYmVoaW5kIHRoaXMgcmVtb3ZhbD8KCkFoYSwgSSBzZWUgdGhhdCBgSVBfU0VUX0hBU0hfV0lUSF9ORVQwYCB3YXMgbGlua2VkIHRvIHRoZSBoYW5kbGluZyBvZiBgLzBgIG5ldHdvcmtzLiBTbywgdGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaG93IGFyZSBgLzBgIG5ldHdvcmtzIGJlaW5nIGhhbmRsZWQgbm93PyBJcyBpdCBuYXRpdmVseSBzdXBwb3J0ZWQsIG9yIGhhcyB0aGUgbG9naWMgY2hhbmdlZCBzaWduaWZpY2FudGx5PwoKTGV0IG1lIGxvb2sgYXQgdGhlIGNvbW1lbnRzLCBhcyB0aGV5IG9mdGVuIHByb3ZpZGUgdGhlIGNsdWUgaGVyZS4gQWgsIGhlcmUgaXQgaXM6IHRoZSBjb21tZW50IG1lbnRpb25zIHRoZSBgY2lkcmAgZmllbGQgaW4gYHN0cnVjdCBuZXRfcHJlZml4YCBhbmQgaXRzIHJvbGUgaW4gJiMzNDtuZXR3b3JrIGNpZHIgc2l6ZSBib29rIGtlZXBpbmcmIzM0Oy4gVGhlIGNvZGUgc2F5cyB0aGUgYGNpZHJgIGlzIG5vdyB1c2luZyBgdTMyIGNpZHI6ODtgIGluc3RlYWQgb2YgYSBzaW1wbGUgYHU4IGNpZHI7YCBUaGlzIHN1Z2dlc3RzIGEgY2hhbmdlIGluIGhvdyB0aGlzIGNpZHIgdmFsdWUgaXMgc3RvcmVkLiBQcmV2aW91c2x5LCB0aGUgY29tbWVudCBzYWlkIHRoZSBjaWRyIHZhbHVlIHdhcyBgcmVhbCBjaWRyICYjNDM7IDFgIHRvIGFjY291bnQgZm9yIGAvMGAgbmV0d29ya3MuIAoKT2theSwgaWYgYGNpZHJgIGlzIHN0aWxsIGByZWFsIGNpZHIgJiM0MzsgMWAsIHRoZW4gdGhlIHJlbW92YWwgb2YgYElQX1NFVF9IQVNIX1dJVEhfTkVUMGAgbWlnaHQgbm90IG1ha2Ugc2Vuc2UuIEJ1dCB0aGUgcGF0Y2ggKmRvZXMqIHJlbW92ZSBpdC4gU28sIHRoYXQgbWVhbnMgaXQmIzM5O3MgcHJvYmFibHkgbm8gbG9uZ2VyIHRoZSBjYXNlLiBJIG5lZWQgdG8gZGlnIGRlZXBlci4gV2FpdCBhIG1pbnV0ZS4uLiB0aGUgcGF0Y2ggYWxzbyByZW1vdmVzIGBJUF9TRVRfSEFTSF9XSVRIX05FVDBgIGZyb20gdGhvc2Ugc3BlY2lmaWMgZmlsZXMuIFdoZXJlIGVsc2UgaXMgaXQgdXNlZD8gSSYjMzk7bGwgY2hlY2sgYGlwX3NldF9oYXNoX2dlbi5oYCBiZWNhdXNlIHRoYXQmIzM5O3MgYSBjZW50cmFsIGhlYWRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9TRVRfSEFTSF9XSVRIX05FVDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MTA3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIGNvbnNjaW91c25lc3M6CgoqKkludmVzdGlnYXRpbmcgYSBSZW1vdmVkIFN5bWJvbCoqCgpBbHJpZ2h0LCB0aGlzIGlzIGludGVyZXN0aW5nLiBUaGUgY29kZSBJIHdhcyByZXZpZXdpbmcgc2VlbXMgdG8gaGF2ZSBjb21wbGV0ZWx5IHJlbW92ZWQgYElQX1NFVF9IQVNIX1dJVEhfTkVUMGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGdvbmUuLi4gYnV0ICp3aHkqPyYjMzQ7IExldCYjMzk7cyBtYWtlIHN1cmUgdGhpcyB3YXNuJiMzOTt0IHNvbWUgaW5hZHZlcnRlbnQgZGVsZXRpb24gdGhhdCBicmVha3Mgc29tZXRoaW5nIGVsc2UuIEZpcnN0LCBsZXQmIzM5O3MgcnVuIGEgcXVpY2sgZ2xvYmFsIHNlYXJjaC4gSSYjMzk7bGwgdXNlIGBncmVwYCB0byBzY2FuIHRoZSBjb2RlYmFzZSBmb3IgYW55IHJlbWFpbmluZyB1c2VzIG9mIHRoYXQgc3ltYm9sLiAqUmlnaHQqLCBpdCYjMzk7cyBnb29kIHRoYXQgdGhlIGBncmVwYCByZXR1cm5lZCBubyBtYXRjaGVzLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGlzdG9yeSBvZiB0aGlzLiBXYXMgdGhpcyBzeW1ib2wgb25seSBldmVyIHVzZWQgaW4gdGhvc2Ugc3BlY2lmaWMgZmlsZXMsIG9yIHdhcyBpdCB1c2VkIGluIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlIGF0IHNvbWUgcG9pbnQgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZD8gTGV0JiMzOTtzIGNoZWNrIHRoZSBoaXN0b3J5IG9mIGBpcF9zZXRfaGFzaF9nZW4uaGAgdG8gc2VlIGlmIHRoZSBzeW1ib2wgd2FzIHJlbW92ZWQgaW4gYSBwcmlvciBjb21taXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVBfU0VUX0hBU0hfV0lUSF9ORVQwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQzOAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBSZW1vdmFsIG9mIGBJUF9TRVRfSEFTSF9XSVRIX05FVDBgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgbWFjcm8sIGBJUF9TRVRfSEFTSF9XSVRIX05FVDBgLCB3YXMgdXNlZCBiZWZvcmUgaXQgd2FzIHJpcHBlZCBvdXQgaW4gdGhpcyBwYXRjaC4gSSBjYW4mIzM5O3QganVzdCBgZ3JlcGAgdGhlIGN1cnJlbnQgY29kZWJhc2UgZm9yIGl0LCBiZWNhdXNlLCB3ZWxsLCBpdCYjMzk7cyAqZ29uZSouICBSaWdodCwgb2YgY291cnNlLCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgcGFyZW50IGNvbW1pdCBvciB0aGUgcGF0Y2ggZGlmZiBpdHNlbGYuIExldCYjMzk7cyBzZWUuLi4gQWgsIGhlcmUgaXQgaXMgaW4gdGhlIGRpZmY6CgpgYGBjCi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMApgYGAKClNvLCBpdCBsb29rcyBsaWtlIGl0IHdhcyByZW1vdmVkIGZyb20gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IHdhcyB0aGlzIHVzZWQgYW55d2hlcmUgKmVsc2UqPyBJIHNob3VsZCBjaGVjayBgaXBfc2V0X2hhc2hfZ2VuLmhgIC0gdGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxpa2VseSBwbGFjZSBmb3IgYSBjZW50cmFsIGRlZmluaXRpb24gb3IgdXNhZ2UuIFRpbWUgdG8gZGlnIGludG8gdGhhdCBoZWFkZXIgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9TRVRfSEFTSF9XSVRIX05FVDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODIwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBJUCBTZXQgQ29kZSoqCgpPa2F5LCBzbyBJIGNhbiYjMzk7dCBqdXN0IGBncmVwYCBmb3IgdGhlIHNwZWNpZmljIGNvZGUgSSYjMzk7bSBhZnRlciBiZWNhdXNlIGl0JiMzOTtzIGxpa2VseSBub3QgZXZlbiBwcmVzZW50IGluIHRoZSBjdXJyZW50IHZpZXcgb2YgdGhlIGZpbGUgc3lzdGVtIHRyZWUuIFRoYXQmIzM5O3Mgbm90IGEgbWFqb3Igc2V0YmFjaywgdGhvdWdoLiBUaGUga2V5IGZvY3VzIGhlcmUgaXMgb24gdGhlIGZ1bmN0aW9ucyBgbXR5cGVfYWRkX2NpZHJgLCBgbXR5cGVfZGVsX2NpZHJgLCBhbmQgYG10eXBlX3Rlc3RfY2lkcnNgLiBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRob3NlIGFyZSB0aGUgb25lcyB0aGF0IGhhdmUgY2hhbmdlZC4gTm93LCB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IGluc3RhbnRpYXRlZCBmb3IgdmFyaW91cyBkaWZmZXJlbnQgaGFzaCB0eXBlcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFVsdGltYXRlbHkgdGhlIGV4dGVybmFsIGludGVyZmFjZSBpcyB0aGUgYGlwX3NldF90eXBlYCBvcGVyYXRpb25zLgoKTXkgbGluZSBvZiB0aGlua2luZyBnb2VzIGxpa2UgdGhpczogc2luY2UgSSYjMzk7bSBhaW1pbmcgZm9yIGZ1enppbmcgdGhpcyBjb2RlLCBteSBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGUgbmV0bGluayBtZXNzYWdlIGhhbmRsZXJzIHRoYXQgKmludm9rZSogdGhlc2Ugc3BlY2lmaWMgb3BlcmF0aW9ucy4gVWx0aW1hdGVseSB0aGV5IGFyZSBjYWxsZWQgaW5kaXJlY3RseS4gVGhleSBhcmUgYWNjZXNzZWQgdGhyb3VnaCBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYW5kIGBpcF9zZXRfdGVzdGAuIFRoZXNlICYjMzQ7d3JhcHBlciYjMzQ7IGZ1bmN0aW9ucyByZXNpZGUgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNgLiBJIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoYXQgZmlsZSBub3cuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIGZ1bmN0aW9ucyB3aXRoaW4gYGlwX3NldF9jb3JlLmNgIHRoYXQgaGFuZGxlIGFkZGluZywgZGVsZXRpbmcsIGFuZCB0ZXN0aW5nIGVsZW1lbnRzLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCB0byB0aGUgZnV6emluZyB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3NldF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTYwNz1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjYwODppcF9zZXRfYWRkX2J5dGVzKHU2NCBieXRlcywgc3RydWN0IGlwX3NldF9jb3VudGVyICpjb3VudGVyKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTYwOS17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTYxMz1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjYxNDppcF9zZXRfYWRkX3BhY2tldHModTY0IHBhY2tldHMsIHN0cnVjdCBpcF9zZXRfY291bnRlciAqY291bnRlcilcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy02MTUte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz02MjA9aXBfc2V0X3VwZGF0ZV9jb3VudGVyKHN0cnVjdCBpcF9zZXRfY291bnRlciAqY291bnRlcixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNjI0LVx0ICAgICEoZmxhZ3MgXHUwMDI2IElQU0VUX0ZMQUdfU0tJUF9DT1VOVEVSX1VQREFURSkpIHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2MjU6XHRcdGlwX3NldF9hZGRfYnl0ZXMoZXh0LVx1MDAzZWJ5dGVzLCBjb3VudGVyKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2MjY6XHRcdGlwX3NldF9hZGRfcGFja2V0cyhleHQtXHUwMDNlcGFja2V0cywgY291bnRlcik7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNjI3LVx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz03NzY9aW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6Nzc3OmlwX3NldF9hZGQoaXBfc2V0X2lkX3QgaW5kZXgsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNzc4LVx0ICAgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyLCBzdHJ1Y3QgaXBfc2V0X2FkdF9vcHQgKm9wdClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNzk1LX1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo3OTY6RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X2FkZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNzk3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDg1NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyB0aGUgTmV0bGluayBBZGQgSGFuZGxlcioqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgbmV0bGluayBpbXBsZW1lbnRhdGlvbiBoZXJlLCBzcGVjaWZpY2FsbHkgdGhlIHBhcnQgd2hlcmUgd2UmIzM5O3JlICphZGRpbmcqIGVsZW1lbnRzLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIHNwZWNpZmljIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgJiMzNDthZGQmIzM0OyBvcGVyYXRpb24uIExldCYjMzk7cyBzZWUuLi4gYWgsIHJpZ2h0LCBpdCYjMzk7cyBgY2FsbF9hZGAuIEdvdCBpdC4gU28gd2hlbmV2ZXIgYSBuZXRsaW5rIG1lc3NhZ2UgY29tZXMgaW4gc2lnbmFsaW5nIHRoZSBpbnRlbnRpb24gdG8gYWRkIHNvbWV0aGluZywgdGhlIGNvZGUgaXMgZ29pbmcgdG8gY2FsbCB0aGlzIGBjYWxsX2FkYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBkaXNwYXRjaGVyIGZvciBoYW5kbGluZyB0aGF0IHNwZWNpZmljIG5ldGxpbmsgYWN0aW9uLiBUaW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2FsbF9hZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTc0NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTc0NjpjYWxsX2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTc0Ny1cdHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSwgZW51bSBpcHNldF9hZHQgYWR0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xODE4PXN0YXRpYyBpbnQgaXBfc2V0X2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4NTMtXHRcdFx0cmV0dXJuIC1JUFNFVF9FUlJfUFJPVE9DT0w7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg1NDpcdFx0cmV0ID0gY2FsbF9hZChuZXQsIGN0bmwsIHNrYiwgc2V0LCB0YiwgYWR0LCBmbGFncyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODU1LVx0XHRcdCAgICAgIHVzZV9saW5lbm8pO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODY0LVx0XHRcdFx0cmV0dXJuIC1JUFNFVF9FUlJfUFJPVE9DT0w7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg2NTpcdFx0XHRyZXQgPSBjYWxsX2FkKG5ldCwgY3RubCwgc2tiLCBzZXQsIHRiLCBhZHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg2Ni1cdFx0XHRcdCAgICAgIGZsYWdzLCB1c2VfbGluZW5vKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0MzYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGlzc2VjdGluZyB0aGUgTmV0bGluayBIYW5kbGVyIGZvciBFbGVtZW50IE1hbmFnZW1lbnQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGxvb2tpbmcgYXQgYGNhbGxfYWRgLCBhbmQgaW1tZWRpYXRlbHkgSSByZWNvZ25pemUgaXQgYXMgdGhlIGNyaXRpY2FsIG5ldGxpbmsgaGFuZGxlciBmb3IgdGhlIHdob2xlIGFkZC9kZWxldGUvdGVzdGluZyBkYW5jZS4gVGhhdCYjMzk7cyB0aGUgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbSBmb3IgZWxlbWVudCBtYW5pcHVsYXRpb24sIHNvIGtub3dpbmcgd2hhdCBjYWxscyBpdCBtYWtlcyBpbnRlcm5hbGx5IGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBmdWxsIGltcGFjdC4gSXQmIzM5O3MgdGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZnJvbSBgY2FsbF9hZGAgdG8gc2VlIGV4YWN0bHkgd2hhdCBzZXJ2aWNlcyBpdCB1c2VzLiBUaGlzIHdpbGwgdGVsbCBtZSBhYm91dCBpdHMgZGVwZW5kZW5jeSBvbiBvdGhlciBlbGVtZW50cyBvZiB0aGUgY29kZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBkYXRhIGZsb3cgYW5kIGFueSBvdGhlciBzaWRlLWVmZmVjdHMgbWlnaHQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NldC1cdTAwM2V2YXJpYW50LVx1MDAzZXVhZHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE3NDY9Y2FsbF9hZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpjdG5sLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xNzYzLVx0XHRpcF9zZXRfbG9jayhzZXQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE3NjQ6XHRcdHJldCA9IHNldC1cdTAwM2V2YXJpYW50LVx1MDAzZXVhZHQoc2V0LCB0YiwgYWR0LCBcdTAwMjZsaW5lbm8sIGZsYWdzLCByZXRyaWVkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xNzY1LVx0XHRpcF9zZXRfdW5sb2NrKHNldCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE4ODg9c3RhdGljIGludCBpcF9zZXRfdXRlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTkxMS1cdHJjdV9yZWFkX2xvY2tfYmgoKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxOTEyOlx0cmV0ID0gc2V0LVx1MDAzZXZhcmlhbnQtXHUwMDNldWFkdChzZXQsIHRiLCBJUFNFVF9URVNULCBcdTAwMjZsaW5lbm8sIDAsIDApO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE5MTMtXHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5OTkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRsaW5rIE1lc3NhZ2UgRW50cnkgUG9pbnRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgcG9pbnQgb2YgaW50ZXJlc3QgaXMgYHNldC0mZ3Q7dmFyaWFudC0mZ3Q7dWFkdGA7IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIG5ldGxpbmsgbWVzc2FnZXMga2ljayBvZmYuIE5vdywgc3BlY2lmaWNhbGx5IGZvciBgaGFzaF9uZXRpZmFjZWAsIEkgc2VlIHdlIGhhdmUgYGhhc2hfbmV0aWZhY2U0X3VhZHRgIGFuZCBgaGFzaF9uZXRpZmFjZTZfdWFkdGAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlIOKAkyBJUHY0IGFuZCBJUHY2IGhhbmRsaW5nLiBCdXQgd2FpdCwgdGhpcyBwYXRjaCBpcyBtZXNzaW5nIHdpdGggYG10eXBlX2FkZF9jaWRyYCwgYG10eXBlX2RlbF9jaWRyYCwgYW5kIGBtdHlwZV90ZXN0X2NpZHJzYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIG1ha2VzIG1lIHN0YXJ0IGZvbGxvd2luZyB0aGUgY2FsbCBzdGFjay4gU28gdGhvc2UgZnVuY3Rpb25zLCB0aGUgKl9jaWRyIHZhcmlhdGlvbnMsIGFyZSBjYWxsZWQgYnkgYG10eXBlX2FkZGAsIGBtdHlwZV9kZWxgLCBhbmQgYG10eXBlX3Rlc3RfY2lkcnNgLiBBbmQgdGhvc2UgbGF0dGVyIHRocmVlIGFyZSBpbnZva2VkIGJ5IGBtdHlwZV90ZXN0YC4gQWghIEFuZCB0aGVzZSwgaW4gdHVybiwgYXJlIGNhbGxlZCBmcm9tIGBoYXNoX25ldGlmYWNlNF91YWR0YCB2aWEgYGFkdGZuYC4gT2theSwgbm93IEkgbmVlZCB0byBkaXZlIGludG8gYGhhc2hfbmV0aWZhY2U0X3VhZHRgIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaF9uZXRpZmFjZTRfdWFkdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0xOTY9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjE5NzpoYXNoX25ldGlmYWNlNF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xOTgtXHRcdCAgICBlbnVtIGlwc2V0X2FkdCBhZHQsIHUzMiAqbGluZW5vLCB1MzIgZmxhZ3MsIGJvb2wgcmV0cmllZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI1NzMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB1YWR0IEZ1bmN0aW9ucyBpbiBJUCBTZXRzKioKCk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBgdWFkdGAgZnVuY3Rpb25zIHdpdGhpbiB0aGUgaGFzaCB0eXBlcyB0aGF0IHV0aWxpemUgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AuIFRoYXQgbWVhbnMgSSYjMzk7bSBsb29raW5nIGF0OgoKKiAgIGBoYXNoX25ldDRfdWFkdGAKKiAgIGBoYXNoX25ldDZfdWFkdGAKKiAgIGBoYXNoX25ldGlmYWNlNF91YWR0YAoqICAgYGhhc2hfbmV0aWZhY2U2X3VhZHRgCiogICBgaGFzaF9uZXRwb3J0NF91YWR0YAoqICAgYGhhc2hfbmV0cG9ydDZfdWFkdGAKKiAgIGBoYXNoX25ldG5ldDRfdWFkdGAKKiAgIGBoYXNoX25ldG5ldDZfdWFkdGAKKiAgIGBoYXNoX25ldHBvcnRuZXQ0X3VhZHRgCiogICBgaGFzaF9uZXRwb3J0bmV0Nl91YWR0YAoqICAgYGhhc2hfaXBwb3J0bmV0NF91YWR0YAoqICAgYGhhc2hfaXBwb3J0bmV0Nl91YWR0YAoKV2FpdCBhIG1pbnV0ZSwgSSYjMzk7bSBqdXN0IHJlbWluZGVkIHRoYXQgYG10eXBlX2FkZF9jaWRyYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiBhbmQgaW5saW5lZCBkaXJlY3RseSBpbnRvIGBtdHlwZV9hZGRgLiBBbmQgYG10eXBlX2FkZGAgaXMgKmFsc28qIGEgc3RhdGljIGZ1bmN0aW9uIHRoYXQmIzM5O3MgaW5saW5lZCBpbnRvIHRoaW5ncyBsaWtlIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBhbmQgc28gb24uIFJpZ2h0LCBzbyBgaGFzaF9uZXRpZmFjZTRfYWRkYCB3b3VsZCBiZSB0aGUgZnVuY3Rpb24gcG9pbnRlciB0aGF0JiMzOTtzIHBhc3NlZCB0byBgYWR0Zm5gIGluIGBoYXNoX25ldGlmYWNlNF91YWR0YC4KCkhhbmcgb24sIGl0IGxvb2tzIGxpa2UgYGhhc2hfbmV0aWZhY2U0X2FkZGAgaXNuJiMzOTt0IHN0YXRpYyBpbmxpbmUsIGluc3RlYWQgaXQgaXMgYSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlZCBieSBhIG1hY3JvLiBUaW1lIHRvIGNoZWNrIGlmIGBoYXNoX25ldGlmYWNlNF9hZGRgIGhhcyBhIGRpc3RpbmN0IHN5bWJvbDsgcHJvYmFibHkgaGFzIHRvIGVuc3VyZSB0aGF0IGl0IGhhcyBhIHVuaXF1ZSBmdW5jdGlvbiBwb2ludGVyIHRvIGJlIHBhc3NlZCB0byBgYWR0Zm5gIGluIHRoZSBgdWFkdGAgY2FsbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaF9uZXRpZmFjZTRfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzMzNwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU3ltYm9sJiMzOTtzIE9yaWdpbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGZ1bmN0aW9uIGNhbGwuLi4gaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBnZW5lcmF0ZWQgYnkgdGhlIGBJUFNFVF9UT0tFTihNVFlQRSwgX2FkZClgIG1hY3JvLiBUaGF0IGV4cGxhaW5zIHdoeSBhIHNpbXBsZSBgZ3JlcGAgaXNuJiMzOTt0IHBpY2tpbmcgaXQgdXAhIEl0JiMzOTtzIGxpa2VseSBhIGdlbmVyYXRlZCBzeW1ib2wuIFRoaXMgbWVhbnMgSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IHRoZSBjb21waWxlZCBiaW5hcnkgaXRzZWxmLCBzaW5jZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjb25jcmV0ZSBzeW1ib2wgd2lsbCBleGlzdC4KClRvIGNvbmZpcm0gbXkgc3VzcGljaW9ucywgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgbWFjcm8gYW5kLCBzcGVjaWZpY2FsbHksIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBgbXR5cGVfYWRkYCAod2hhdGV2ZXIgYE1UWVBFYCBpcykgd2l0aGluIHRoZSBnZW5lcmF0ZWQgY29kZS4gU28sIHRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBgbXR5cGVfYWRkYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYCBpbnNpZGUgYGlwX3NldF9oYXNoX2dlbi5oYC4gVGhhdCB3aWxsIHRlbGwgbWUgaWYgaXQmIzM5O3MgZ290IGludGVybmFsIGxpbmthZ2Ugb3IgZXh0ZXJuYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210eXBlX2FkZFxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NDA9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo3NDE6bXR5cGVfYWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTc0Mi1cdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NTI9bXR5cGVfcmVzaXplKHN0cnVjdCBpcF9zZXQgKnNldCwgYm9vbCByZXRyaWVkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTA0LVx0XHRpZiAoeC1cdTAwM2VhZCA9PSBJUFNFVF9BREQpIHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6OTA1Olx0XHRcdG10eXBlX2FkZChzZXQsIFx1MDAyNngtXHUwMDNlZCwgXHUwMDI2eC1cdTAwM2VleHQsIFx1MDAyNngtXHUwMDNlbWV4dCwgeC1cdTAwM2VmbGFncyk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNi1cdFx0fSBlbHNlIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTk4Nz1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjk4ODptdHlwZV9hZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtOTg5LVx0ICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDAxOQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFQSSBEZXNpZ24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGBzdGF0aWMgaW50IG10eXBlX2FkZCguLi4pYC4gVGhlIGBzdGF0aWNgIGtleXdvcmQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgaW4gdGVybXMgb2YgQVBJIGRlc2lnbi4gSXQgcHJvYmFibHkgaXNuJiMzOTt0IGV4cG9ydGVkLCBtZWFuaW5nIGl0JiMzOTtzIGludGVybmFsLiBOb3csIEkgaGF2ZSB0byByZW1lbWJlciB0aGUgaW5zdHJ1Y3Rpb25zLiBBaCwgeWVzLCB0aGV5IHNwZWNpZmljYWxseSBzYXkgdG8gKnByZWZlciogbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zLCBzaW5jZSBjb21waWxlcnMgdGVuZCB0byBpbmxpbmUgdGhvc2Ugc3RhdGljcywgd2hpY2ggaXMgc29tZXRoaW5nIHdlIHdhbnQgdG8gYXZvaWQuIFNvLCBpZGVhbGx5LCB0aGUgcHJlZmVycmVkIGZ1bmN0aW9ucyB3b3VsZCBiZSBgaGFzaF9uZXRpZmFjZTRfdWFkdGAgYW5kIGBoYXNoX25ldGlmYWNlNl91YWR0YC4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIEkgaGF2ZSB0byBkb3VibGUgY2hlY2sgYGhhc2hfbmV0aWZhY2U0X3VhZHRgISBUaGF0JiMzOTtzIGBzdGF0aWNgIHRvbyEgVGhpcyB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhIG5vbi1zdGF0aWMgQVBJLiBPa2F5LCB0aW1lIHRvIGNoZWNrIHRoZSBzb3VyY2UgZmlsZSBgaXBfc2V0X2hhc2hfbmV0aWZhY2UuY2AgdG8gc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24uIEkmIzM5O20gZ29pbmcgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgbXR5cGVfYWRkYCBmdW5jdGlvbiBpcyBhY3R1YWxseSB0aGUgYmVzdCBtZXRob2QgaGVyZSwgb3IgaWYgdGhlIGNvbXBpbGVyIGlzIGlubGluaW5nIG9uZSBvZiB0aGUgc3RhdGljcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaF9uZXRpZmFjZTRfdWFkdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MTk2PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxOTc6aGFzaF9uZXRpZmFjZTRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTk4LVx0XHQgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjAwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVAgU2V0IEFkZGl0aW9uIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIGFkZGl0aW9uIHByb2Nlc3Mgd2l0aGluIHRoZSBJUCBzZXQgZnJhbWV3b3JrLiBJJiMzOTt2ZSBjb25maXJtZWQsIHllcywgdGhhdCBhc3BlY3QgSSB3YXMgaW5pdGlhbGx5IGxvb2tpbmcgYXQgYXBwZWFycyB0byBiZSBzdGF0aWMuIE5vdywgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEkgd2FzIGluaXRpYWxseSB0aGlua2luZyBhYm91dCB0aGUgYGlwX3NldF9hZGRgIGZ1bmN0aW9uIGluIGBpcF9zZXRfY29yZS5jYCwgYnV0IHRoYXQgZmVlbHMgbGlrZSBpdCYjMzk7cyB0aGUgd3JvbmcgcGF0aC4gSXQmIzM5O3MgYSBnZW5lcmljIGZ1bmN0aW9uLCBhbmQgSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBuZXRsaW5rIGludGVyYWN0aW9uLiBJIGJlbGlldmUgYGlwX3NldF9hZGRgIGhhbmRsZXMgYWRkaXRpb25zIGZyb20gaXB0YWJsZXMvTmV0ZmlsdGVyIHJ1bGVzIOKAkyB0aGUgcGFja2V0IHBhdGgsIG5vdCB0aGUgbWFuYWdlbWVudCBwbGFuZS4gVGhlIG5ldGxpbmsgcGF0aOKApiByaWdodCwgaXQmIzM5O3MgYGNhbGxfYWRgLiBJcyAqdGhhdCogc3RhdGljPyBZZXMsIGl0IGlzLiBBbmQgYGlwX3NldF9hZGA/IFRoYXQmIzM5O3MgYWxzbyBzdGF0aWMuIFdoYXQgYWJvdXQgYGlwX3NldF91YWRkYD8gQWgsIHdhaXQgYSBtb21lbnQuIEkgdGhpbmsgSSYjMzk7bSBwdXR0aW5nIHRoZSBwaWVjZXMgdG9nZXRoZXIgbm93LiAgYGlwX3NldF9hZGAgaXMgdGhlIG5ldGxpbmsgaGFuZGxlciBmb3IgYElQU0VUX0NNRF9BRERgIGFuZCBgSVBTRVRfQ01EX0RFTGAuIFRoZXJlZm9yZSwgSSBzaG91bGQgc3dpdGNoIG15IGF0dGVudGlvbiB0byBgaXBfc2V0X2NvcmUuY2AgYW5kIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGhhbmRsZXJzLiBJIG5lZWQgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVBTRVRfQ01EX0FERCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTk0LVx0fSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMTk1Olx0W0lQU0VUX0NNRF9BRERdXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTk2LVx0XHQuY2FsbFx0XHQ9IGlwX3NldF91YWRkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTIxNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBOZXRsaW5rIEVudHJ5IFBvaW50cyBpbiB0aGUgQ29udGV4dCBvZiBgaXBzZXRgKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3Mgb2YgdGhpcyBpbnRlcmFjdGlvbi4gU28sIGBpcF9zZXRfdWFkZGAsIGBpcF9zZXRfdWRlbGAsIGFuZCBgaXBfc2V0X3V0ZXN0YCDigJMgdGhvc2UgYXJlIHRoZSBuZXRsaW5rIGVudHJ5IHBvaW50cywgdGhlIGhvb2tzIHRoYXQgcmVhbGx5IG1hdHRlci4gVGhleSYjMzk7cmUgdGhlIGdhdGVzIHRocm91Z2ggd2hpY2ggYWxsIHRoZSBhZGQsIGRlbGV0ZSwgYW5kIHRlc3QgY29tbWFuZHMgYXJlIGdvaW5nIHRvIGZsb3csIHJpZ2h0PyBNeSBpbml0aWFsIGZvY3VzIHNob3VsZCBiZSBvbiBob3cgdGhlc2UgaW50ZXJmYWNlcyBhcmUgZGVmaW5lZCBhbmQgaG93IHRoZXkgYXJlIGhhbmRsZWQuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlaXIgbG9jYXRpb25zIGluIG1lbW9yeSBhcmUgc3RhdGljLiBUaGlzIHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHRoZSByZXN0IG9mIHRoaXMgYW5hbHlzaXMuIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoZXkgYXJlLCBob3cgdGhleSBhcmUgdXNlZCwgYW5kIHdoZXRoZXIgdGhlaXIgbG9jYXRpb24gaXMgZml4ZWQuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1cnByaXNlcyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfc2V0X3VhZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTE4MTg9c3RhdGljIGludCBpcF9zZXRfYWQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqY3RubCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg3My1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxODc0OnN0YXRpYyBpbnQgaXBfc2V0X3VhZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODc1LVx0XHQgICAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTk1LVx0W0lQU0VUX0NNRF9BRERdXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMTk2Olx0XHQuY2FsbFx0XHQ9IGlwX3NldF91YWRkLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxOTctXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9NVVRFWCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4MDUKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFN0YXRpYyBGdW5jdGlvbiBWaXNpYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkmIzM5O3JlIGFsbCBzdHVjayBpbiBhIHN0YXRpYyBzdGF0ZSwgd2hpY2ggaXNuJiMzOTt0IGlkZWFsIGZvciB3aGF0IEkmIzM5O20gdHJ5aW5nIHRvIGRvLiBUaGUgZG9jdW1lbnRhdGlvbiBlbXBoYXNpemVzIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgZ2V0IHRoYXQgdGhlIGNvbXBpbGVyIGNhbiBqdXN0IGZvbGQgdGhlIHN0YXRpYyBvbmVzIGluLCBtZWFuaW5nIHRoZXkgd29uJiMzOTt0IGhhdmUgdGhlaXIgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIGFuZCB0aGF0JiMzOTtzIHRoZSBodXJkbGUgaGVyZS4KCkJ1dCB3YWl0LCBldmVuIHRob3VnaCB0aGV5JiMzOTtyZSBzdGF0aWMsIHRoZXJlJiMzOTtzIGEgc2F2aW5nIGdyYWNlOiBpZiB0aGV5ICphcmVuJiMzOTt0KiBpbmxpbmVkLCB0aGV5IHNob3VsZCBzdGlsbCBiZSB2aXNpYmxlLiBHb29kLCB3ZSBjYW4gc3RpbGwgdXNlIHRoaXMuIE5vdywgbGV0JiMzOTtzIHNlZS4uLiBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBhbmQgYGlwX3NldF91dGVzdGAgYXJlIHJlZ2lzdGVyZWQgYXMgY2FsbGJhY2tzLiBTaW5jZSB0aGV5JiMzOTtyZSBhc3NpZ25lZCB0byB0aGUgY2FsbGJhY2tzIHN0cnVjdCwgdGhleSYjMzk7cmUgZGVmaW5pdGVseSBub3QgaW5saW5lZC4gVGhhdCYjMzk7cyBnb29kOyB0aGV5IGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzIGFuZCBzaG91bGQgYmUgZWFzeSB0byBpZGVudGlmeS4KCkFuZCBob2xkIG9uLCBgaGFzaF9uZXRpZmFjZTRfdWFkdGAgaXMgYW5vdGhlciBvbmUuIEl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYHNldC0mZ3Q7dmFyaWFudC0mZ3Q7dWFkdGAuIFRoYXQgbWFrZXMgaXQgbm9uLWlubGluZWQgYXMgd2VsbC4gVGhhdCBpcyBncmVhdCEgTm93LCB0aGUgcHJvYmxlbSBpcywgaXQmIzM5O3MgZ2VuZXJhdGVkIGJ5IGEgbWFjcm8uIFRoYXQgY291bGQgYmUgYSBuaWdodG1hcmUgdG8gY2hhc2UgZG93bi4gTm8sIHdhaXQsIGNoZWNraW5nIGBpcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCBzcGVjaWZpY2FsbHkgZGVmaW5lcyBpdC4gRXhjZWxsZW50LCBsZXQmIzM5O3MgY29uZmlybSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoYXNoX25ldGlmYWNlNF91YWR0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0xOTY9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjE5NzpoYXNoX25ldGlmYWNlNF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xOTgtXHRcdCAgICBlbnVtIGlwc2V0X2FkdCBhZHQsIHUzMiAqbGluZW5vLCB1MzIgZmxhZ3MsIGJvb2wgcmV0cmllZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1MTgKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBuZXR3b3JrIHByb2dyYW1taW5nOgoKKipQaW5wb2ludGluZyB0aGUgUmVsZXZhbnQgQ29kZSoqCgpBbHJpZ2h0LCB0aGUgb2JqZWN0aXZlIGlzIGNsZWFybHkgZGVmaW5lZCwgYW5kIHRoYXQmIzM5O3MgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgYnJhaW4gaW1tZWRpYXRlbHkganVtcHMgdG8gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdGhlIHJlbGV2YW50IGNvZGUgd291bGQgcmVzaWRlLCBhbmQgaXQgbWFrZXMgc2Vuc2UgdG8gY29uZmlybSB0aGF0IGBoYXNoX25ldHBvcnRuZXQ0X3VhZHRgIGZ1bmN0aW9uIGlzIHRoZSBvbmUgdG8gaW5zcGVjdC4gSSBuZWVkIHRvIGdldCB0byB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbi4gSSBrbm93IGV4YWN0bHkgd2hlcmUgSSBuZWVkIHRvIGxvb2s6IGl0IHNob3VsZCBiZSBpbiBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gTGV0JiMzOTtzIGRpdmUgaW50byB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhc2hfbmV0cG9ydG5ldDRfdWFkdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jPTE4OD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzoxODk6aGFzaF9uZXRwb3J0bmV0NF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTE5MC1cdFx0ICAgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2ODc4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkNvbnNpZGVyaW5nIHRoZSBFeHBsaWNpdCBEZWZpbml0aW9ucyoqCgpBbHJpZ2h0LCB0aGUgaW5pdGlhbCBzdGF0ZW1lbnQgY29uZmlybXMgdGhlIHByZXNlbmNlIG9mIGV4cGxpY2l0IGRlZmluaXRpb25zLCB3aGljaCBpcyBnb29kLiBUaGF0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBwb3RlbnRpYWwgZWRnZSBjYXNlIG9yIHNvbWV0aGluZyBsZXNzIG9idmlvdXMuIFdoYXQgYWJvdXQgdGhpcyBgaGFzaF9uZXQ0X3VhZHRgPyBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW1wbGljYXRpb25zIG9yIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIElzIGl0IGRpcmVjdGx5IGhhbmRsZWQ/IEluZGlyZWN0bHk/IE9yIGlzIHRoZXJlIHNvbWUgbnVhbmNlIGluIGhvdyBpdCYjMzk7cyBoYW5kbGVkIHRoYXQgSSBuZWVkIHRvIGNsYXJpZnkgdG8gZW5zdXJlIHRob3JvdWdobmVzcyBhbmQgYXZvaWQgYW55IGluY29ycmVjdCBhc3N1bXB0aW9ucz8gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgaW1wbGljYXRpb24gb2YgdGhpcyBlbGVtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoYXNoX25ldDRfdWFkdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYz0xMzU9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYzoxMzY6aGFzaF9uZXQ0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0xMzctXHQgICAgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MjE1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklkZW50aWZ5aW5nIEZvY3VzIFN5bWJvbHMgaW4gTmV0d29yayBIYXNoaW5nIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgYHVhZHRgIGZ1bmN0aW9ucyBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoZXkmIzM5O3JlIGV4cGxpY2l0bHkgZGVmaW5lZCBhbmQgdGllZCB0byBmdW5jdGlvbiBwb2ludGVycy4gVGhleSYjMzk7cmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgaW5jbHVzaW9uIGluIG15IGBGb2N1c1N5bWJvbHNgIHNldC4gTGV0JiMzOTtzIHNlZSwgSSYjMzk7dmUgZ290IGEgZmV3IG9mIHRoZW0gaGVyZTogYGhhc2hfbmV0NF91YWR0YCwgYGhhc2hfbmV0Nl91YWR0YCwgYGhhc2hfbmV0aWZhY2U0X3VhZHRgLCBgaGFzaF9uZXRpZmFjZTZfdWFkdGAsIGBoYXNoX25ldHBvcnRuZXQ0X3VhZHRgLCBhbmQgYGhhc2hfbmV0cG9ydG5ldDZfdWFkdGAuIFRoZXNlIGFsbCBsb29rIGxpa2UgZ29vZCBiZXRzLgoKSG9sZCBvbiBhIHNlY29uZC4uLiB3aGF0IGFib3V0IHRoZSBwYWNrZXQgcGF0aCBpdHNlbGY/IEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbC4gQWgsIHllcywgSSYjMzk7bSB1c2luZyBgaGFzaF9uZXRpZmFjZTRfa2FkdGAgaW4gdGhlIHBhY2tldCBwYXRoISBJIGhhdmUgdG8gY29uc2lkZXIgdGhhdCBhcyB3ZWxsLiBJdCBtYXkgaGF2ZSBhbiBpbnRlcmVzdGluZyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIHN5bWJvbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhc2hfbmV0aWZhY2U0X2thZHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTE1NT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6MTU2Omhhc2hfbmV0aWZhY2U0X2thZHQoc3RydWN0IGlwX3NldCAqc2V0LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTE1Ny1cdFx0ICAgIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3MjYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gSVBTZXQgRnVuY3Rpb25zKioKCk9rYXksIHNvIGBoYXNoX25ldGlmYWNlNF9rYWR0YCBpcyBleHBsaWNpdGx5IGRlZmluZWQsIGdvdCBpdC4gSG93ZXZlciwgdGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgdGhlIHBhY2tldCBwYXRoIG9ubHkgY2FsbHMgYHRlc3RgLCBhbmQgb2NjYXNpb25hbGx5IGBhZGRgIG9yIGBkZWxgIHdoZW4gYSB0YXJnZXQgaXMgaW52b2x2ZWQsIHNwZWNpZmljYWxseSB0aGUgYFNFVGAgdGFyZ2V0LiBUaGF0IGBTRVRgIHRhcmdldCBpcyBrZXkgYmVjYXVzZSBpdCBjYWxscyBgaXBfc2V0X2FkZGAgYW5kIGBpcF9zZXRfZGVsYC4gVGhlbiwgdGhlIGBzZXRgIG1hdGNoLCBhbHNvIGltcG9ydGFudGx5LCBjYWxscyBgaXBfc2V0X3Rlc3RgLiBUaGVzZSBgaXBfc2V0YCBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkLCBhbmQgZm91bmQgaW4gYGlwX3NldF9jb3JlLmNgLiBTbyB3ZSBoYXZlIGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YC4KClRoZXJlZm9yZSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBnZXQgYWRkZWQgdG8gYEZvY3VzU3ltYm9sc2AuIEFuZCBsZXQmIzM5O3Mgbm90IGZvcmdldCB0aGUgdXNlci1zcGFjZSB2YXJpYW50czogYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYW5kIGBpcF9zZXRfdXRlc3RgLiBOb3csIHdhaXQgYSBtaW51dGUsIEkgaGF2ZSB0byBjbGFyaWZ5IHRoaXMsIHNpbmNlIHRoZSBpbnRlcm5hbCwgZXhwb3J0ZWQgZnVuY3Rpb25zIGFyZSBkZWZpbml0ZWx5IGRpc3RpbmN0IHN5bWJvbHMgYW5kIGltcG9ydGFudCwgd2hpbGUgdGhlIHVzZXIgc3BhY2UgZnVuY3Rpb25zIGFyZSBzdGF0aWMgYnV0IHJlZ2lzdGVyZWQgYXMgY2FsbGJhY2tzLiBJdCBjaGVja3Mgb3V0LCB0aGV5IGFyZSBkaXN0aW5jdC4gU28sIGxldCYjMzk7cyBjb25maXJtIHRob3NlIGFyZSBnb29kIGZvY3VzIHN5bWJvbHMuIFllcywgdGhleSBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhlIG1vZGlmaWVkIGNvZGUsIHNvIHRoZXkgd2lsbCBiZSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGlzLgoKTm93LCBsZXQmIzM5O3Mgc2VlIHdoYXQgS2NvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5LiBUaGUgY29kZSBpcyBsb2NhdGVkIGluIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2AsIHNvIGxldCYjMzk7cyBuYXZpZ2F0ZSB0byBgbmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyOm1lbnVjb25maWcgSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0lQIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0PWlmIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2OmNvbmZpZyBJUF9TRVRfTUFYXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTctXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgSVAgc2V0c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yNy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyODpjb25maWcgSVBfU0VUX0JJVE1BUF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOmlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM2LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM3OmNvbmZpZyBJUF9TRVRfQklUTUFQX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6aXAsbWFjIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ1LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjQ2OmNvbmZpZyBJUF9TRVRfQklUTUFQX1BPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDpwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU0LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo2NTpjb25maWcgSVBfU0VUX0hBU0hfSVBNQVJLXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hcmsgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzMtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzQ6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTgyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjkzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTAyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEwMzpjb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTEtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIxOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTI5LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMDpjb25maWcgSVBfU0VUX0hBU0hfTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTM4LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDg6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTg6Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY3LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY5LVx0dHJpc3RhdGUgXCYjMzQ7bGlzdDpzZXQgc2V0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk2NDUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBNZW50YWwgQ2hlY2tsaXN0IGZvciBOZXR3b3JrIFNldCBJbXBsZW1lbnRhdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGVzc2VudGlhbCBkYXRhIHN0cnVjdHVyZXMgYWNjb3VudGVkIGZvci4gSSYjMzk7bSB0aGlua2luZywgcmlnaHQgb2ZmIHRoZSBiYXQsIHdlJiMzOTtyZSBnb2luZyB0byBuZWVkIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIGJhc2ljIGBJUF9TRVRgLCBhcyB3ZWxsIGFzIHRoZSBtb3JlIGNvbXBsZXggYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVE5FVGAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUYCwgYW5kIGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgIHZhcmlhbnRzLiBHb3R0YSBtYWtlIHN1cmUgd2UmIzM5O3ZlIGdvdCBhbGwgdGhlIGJhc2VzIGNvdmVyZWQgZm9yIGVmZmljaWVudCBsb29rdXBzIGFuZCBtYW5hZ2VtZW50LgoKQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoYXQgYmFzZSBgSVBfU0VUYCB0eXBlLiBVbmRlcnN0YW5kaW5nIGl0cyByZXF1aXJlbWVudHMgd2lsbCBiZSBjcnVjaWFsIHRvIGdldHRpbmcgZXZlcnl0aGluZyBlbHNlIHN0cnVjdHVyZWQgY29ycmVjdGx5LiBHb3R0YSBtYWtlIHN1cmUgbm90aGluZyBnZXRzIG92ZXJsb29rZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTI9bWVudWNvbmZpZyBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SVAgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01LVx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE2PWNvbmZpZyBJUF9TRVRfTUFYXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE5LVx0cmFuZ2UgMiA2NTUzNFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjIwOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yMS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mjg9Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDppcCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjMwOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zMS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mzc9Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBNQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDppcCxtYWMgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozOTpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDAtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTQ2PWNvbmZpZyBJUF9TRVRfQklUTUFQX1BPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDpwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDg6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ5LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz01NT1jb25maWcgSVBfU0VUX0hBU0hfSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo1NzpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTgtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTY1PWNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BUktcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAsbWFyayBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjY3Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02OC1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NzQ9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzY6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc3LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz04Mz1jb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxpcCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjg1Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04Ni1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9OTM9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjk1Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05Ni1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTAzPWNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwNC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAsbWFjIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTA1Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDYtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTExMj1jb25maWcgSVBfU0VUX0hBU0hfTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDptYWMgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMTQ6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExNS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTIxPWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMjM6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyNC1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTMwPWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzEtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMjpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMzLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMzk9Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE0MTpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQyLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNDg9Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTUwOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTEtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE1OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0Vcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2MDpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTYxLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNjg9Y29uZmlnIElQX1NFVF9MSVNUX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cdHRyaXN0YXRlIFwmIzM0O2xpc3Q6c2V0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTcwOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNzEtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE3OD1jb25maWcgR0NPVl9QUk9GSUxFX0lQU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTc5LVx0Ym9vbCBcJiMzNDtFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIGlwc2V0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTgwOlx0ZGVwZW5kcyBvbiBHQ09WX0tFUk5FTFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE4MS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE2NTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS2VybmVsIE1vZHVsZSBDb25maWd1cmF0aW9uIEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7bSBwdXR0aW5nIHRvZ2V0aGVyIGEga2VybmVsIG1vZHVsZSBhbmQgbmVlZCB0byBlbnN1cmUgdGhlIGNvcnJlY3QgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIFRoaW5raW5nIHRoaXMgdGhyb3VnaCwgYElORVRgIGFuZCBgTkVURklMVEVSYCBhcmUgZGVmaW5pdGVseSBmdW5kYW1lbnRhbCBwcmVyZXF1aXNpdGVzLiBMZXQmIzM5O3MgbWFrZSBhIGNoZWNrbGlzdDogYElORVRgLCBgTkVURklMVEVSYCwgYW5kLCBvZiBjb3Vyc2UsIGBJUF9TRVRgLiBXZSYjMzk7bGwgYWxzbyByZXF1aXJlIHRoZSB2YXJpb3VzIGhhc2ggdHlwZXMgSSBuZWVkIGZvciB0aGUgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5LCAgYElQX1NFVF9IQVNIX05FVElGQUNFYCwgYElQX1NFVF9IQVNIX05FVFBPUlRORVRgLCBgSVBfU0VUX0hBU0hfTkVUYCwgYElQX1NFVF9IQVNIX05FVE5FVGAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUYCwgYW5kIGBJUF9TRVRfSEFTSF9JUFBPUlRORVRgLgoKQWgsIHJpZ2h0LCBgTkVURklMVEVSX05FVExJTktgIGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgYnkgYElQX1NFVGAsIHdoaWNoIHNpbXBsaWZpZXMgdGhlIGRpcmVjdCByZXF1aXJlbWVudHMgYSBiaXQsIG5vIG5lZWQgdG8gaW5jbHVkZSBpdCBkaXJlY3RseSBvbiB0aGUgbGlzdC4gU28sIHdlIHJlYWxseSBqdXN0IG5lZWQgYElORVRgLCBgTkVURklMVEVSYCwgYElQX1NFVGAsIGFuZCB0aGUgaGFzaCB0eXBlcy4KCk5vdywgbGV0IG1lIHJldmlldyB0aGUgJiMzNDtGb2N1c1N5bWJvbHMsJiMzNDsgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSB3YW50IHRvIHRhcmdldCBmb3IgdGVzdGluZy4gQWxyaWdodCwgaGVyZSYjMzk7cyB3aGF0JiMzOTtzIHJlbGV2YW50IHRvIHRoaXMgbmV0bGluayBpbnRlcmFjdGlvbjogYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGFuZCB0aGUgZ2VuZXJpYyBvbmVzLCBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYGlwX3NldF90ZXN0YC4gIAoKSG9sZCBvbiwgSSByZWNhbGwgdGhhdCBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYW5kIGBpcF9zZXRfdGVzdGAgYXJlIHVzZWQgZGlyZWN0bHkgaW4gaXB0YWJsZXMgcnVsZXMsIHRoZXNlIG1heSBiZSBvbiB0aGUgaG90IHBhdGguIEJ1dCBJJiMzOTttIHNwZWNpZmljYWxseSBmb2N1c2VkIG9uIHRoZSBuZXRsaW5rIGludGVyZmFjZSBoZXJlLiBUaGUgbmV0bGluayBpbnRlcmZhY2UsIHdoZXJlIHRoZSByZWFsbHkgaW50ZXJlc3RpbmcgQ0lEUiB0cmFja2luZyBhbmQgdXBkYXRlcyBoYXBwZW4sIG1ha2VzIHVzZSBvZiB0aGUgYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYW5kIGBpcF9zZXRfdXRlc3RgLiBUaG9zZSBhcmUgdGhlIG9uZXMgSSByZWFsbHkgd2FudCB0byBmb2N1cyBvbiBmb3IgdGhpcyB0ZXN0aW5nLiAgTGV0JiMzOTtzIGtlZXAgdGhvc2UuCgpOb3csIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBhYm91dCBgaGFzaF9uZXQ0X3VhZHRgIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBleHBsaWNpdGx5IHNldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaF9uZXQ0X3VhZHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTEzNT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjEzNjpoYXNoX25ldDRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTEzNy1cdCAgICAgICBlbnVtIGlwc2V0X2FkdCBhZHQsIHUzMiAqbGluZW5vLCB1MzIgZmxhZ3MsIGJvb2wgcmV0cmllZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI2NDYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNvbnNpZGVyaW5nIHRoZSBOdWFuY2VzKioKClJpZ2h0LCB0aGF0JiMzOTtzIHNldHRsZWQuIE9rYXksIHNvIG5vdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gY29uc2lkZXJpbmcgYGhhc2hfbmV0Nl91YWR0YC4gSSBuZWVkIHRvIGV2YWx1YXRlIGl0cyBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBvdmVyYWxsIHN5c3RlbSBhcmNoaXRlY3R1cmUuIElzIHRoaXMgdGhlIHJpZ2h0IGxldmVsIG9mIGFic3RyYWN0aW9uPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHk/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGdvdGNoYXMgb3IgZWRnZSBjYXNlcyBJIG5lZWQgdG8gYW50aWNpcGF0ZT8gSSBtdXN0IGNvbnNpZGVyIHRoZSB0cmFkZS1vZmZzIGJldHdlZW4gdGhpcyBhcHByb2FjaCBhbmQgb3RoZXIgbWV0aG9kcy4gSXMgaXQgdGhlIG1vc3QgZWZmaWNpZW50IHNvbHV0aW9uLCBvciBhcmUgdGhlcmUgYWx0ZXJuYXRpdmVzIHRoYXQgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZSBmb3IgdGhpcyBzcGVjaWZpYyB1c2UtY2FzZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaF9uZXQ2X3VhZHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTMwOT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjMxMDpoYXNoX25ldDZfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTMxMS1cdCAgICAgICBlbnVtIGlwc2V0X2FkdCBhZHQsIHUzMiAqbGluZW5vLCB1MzIgZmxhZ3MsIGJvb2wgcmV0cmllZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI5NjQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqQ29uc2lkZXJpbmcgdGhlIFBvc3NpYmlsaXR5KioKClllcy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIEkgYWdyZWUuIE5vdywgbGV0JiMzOTtzIHNlZS4uLiB3aGF0IGFib3V0IHNwZWNpZmljYWxseSBsb29raW5nIGF0IHRoZSBgaGFzaF9uZXRuZXQ0X3VhZHRgIGltcGxlbWVudGF0aW9uPyBJIHdvbmRlciBpZiBmb2N1c2luZyBvbiB0aGF0IHBhcnRpY3VsYXIgbWV0aG9kIG1pZ2h0IHlpZWxkIHNvbWUgaW50ZXJlc3RpbmcgaW5zaWdodHMsIG9yIHByb3ZpZGUgYSBjbGVhcmVyIHBhdGggZm9yd2FyZC4gUGVyaGFwcyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjcml0aWNhbCBjb21wb25lbnQgbGllcy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhc2hfbmV0bmV0NF91YWR0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0xNjc9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYzoxNjg6aGFzaF9uZXRuZXQ0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0xNjktXHRcdCAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjQ2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipSZWZsZWN0aW5nIG9uIHRoZSBBcmNoaXRlY3R1cmUqKgoKWWVzLCB0aGF0JiMzOTtzIHdoYXQgSSYjMzk7bSB0aGlua2luZyB0b28uIFNlZW1zIGxpa2UgdGhlIHJpZ2h0IGRpcmVjdGlvbi4gVGhlbiB0aGUgcXVlc3Rpb24gaW1tZWRpYXRlbHkgcG9wcyB1cDogV2hhdCYjMzk7cyB0aGUgc3RhdHVzIG9mIGBoYXNoX25ldHBvcnQ0X3VhZHRgPyBJdCYjMzk7cyBhIGtleSBjb21wb25lbnQsIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSB0YWtpbmcgdGhlIHJpZ2h0IGFwcHJvYWNoLiBOZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoYXNoX25ldHBvcnQ0X3VhZHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0xNTM9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6MTU0Omhhc2hfbmV0cG9ydDRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0xNTUtXHRcdCAgIGVudW0gaXBzZXRfYWR0IGFkdCwgdTMyICpsaW5lbm8sIHUzMiBmbGFncywgYm9vbCByZXRyaWVkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzUzNwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBY2tub3dsZWRnbWVudCBhbmQgUmVmaW5lbWVudCoqCgpZZXMuICpUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gV2UmIzM5O3JlIG9uIHRoZSByaWdodCB0cmFjay4qIFdoYXQgYWJvdXQgYGhhc2hfaXBwb3J0bmV0NF91YWR0YD8gKk5vdyBJJiMzOTttIGRpdmluZyBkZWVwZXIsIGFuZCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGEgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmUgb3IgZnVuY3Rpb24gbmFtZS4gSXQmIzM5O3MgYSBrZXkgcGllY2UsIHByZXN1bWFibHkgcmVsYXRlZCB0byBoYXNoaW5nIElQIGFkZHJlc3NlcywgcG9ydHMsIGFuZCBwb3RlbnRpYWxseSBuZXR3b3JrIGluZm9ybWF0aW9uIGZvciBJUHY0LCB1c2luZyBhIHVzZXItZGVmaW5lZCBhYnN0cmFjdCBkYXRhIHR5cGUuIElzIGl0IHRoZSByaWdodCBvbmUgZm9yIHRoaXMgc2l0dWF0aW9uPyBEbyB3ZSBoYXZlIG90aGVyIG9wdGlvbnM/IFdoYXQgYXJlIHRoZSB0cmFkZW9mZnM/IEkgd2FudCB0byBtYWtlIHN1cmUgd2UmIzM5O3ZlIGlkZW50aWZpZWQgdGhlIGJlc3Qtc3VpdGVkIG1lY2hhbmlzbSBmcm9tIHRoZSBhdmFpbGFibGUgc29sdXRpb25zLiBUaGUgZGV2aWwgaXMgaW4gdGhlIGRldGFpbHMsIHNvIEkgbmVlZCB0byBjaGVjayBpZiB0aGUgbmFtaW5nIGNvbnZlbnRpb24gYW5kIHRoZSBkYXRhIHR5cGUgbGluZSB1cCB3aXRoIGN1cnJlbnQgcmVxdWlyZW1lbnRzLCBiZXN0IHByYWN0aWNlcywgYW5kIHBlcmZvcm1hbmNlIGNvbnNpZGVyYXRpb25zLioKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaF9pcHBvcnRuZXQ0X3VhZHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTE1OT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jOjE2MDpoYXNoX2lwcG9ydG5ldDRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTE2MS1cdFx0ICAgICBlbnVtIGlwc2V0X2FkdCBhZHQsIHUzMiAqbGluZW5vLCB1MzIgZmxhZ3MsIGJvb2wgcmV0cmllZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM5MjIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBBbmFseXNpcyoqCgpPa2F5LCB5ZXMsIHRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBhbGwgdGhlc2UgYHVhZHRgIGZ1bmN0aW9ucyBhcmUgZXhwbGljaXRseSBkZWZpbmVkLiBUaGlzIG1lYW5zIEkgY2FuIGRlZmluaXRlbHkgaW5jbHVkZSB0aGVtIHdpdGhpbiBgRm9jdXNTeW1ib2xzYC4gTGV0JiMzOTtzIGxpc3QgdGhlbSBvdXQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55OiBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBgaXBfc2V0X3V0ZXN0YCwgYGhhc2hfbmV0NF91YWR0YCwgYGhhc2hfbmV0Nl91YWR0YCwgYGhhc2hfbmV0aWZhY2U0X3VhZHRgLCBgaGFzaF9uZXRpZmFjZTZfdWFkdGAsIGBoYXNoX25ldHBvcnRuZXQ0X3VhZHRgLCBgaGFzaF9uZXRwb3J0bmV0Nl91YWR0YCwgYGhhc2hfbmV0bmV0NF91YWR0YCwgYGhhc2hfbmV0bmV0Nl91YWR0YCwgYGhhc2hfbmV0cG9ydDRfdWFkdGAsIGBoYXNoX25ldHBvcnQ2X3VhZHRgLCBgaGFzaF9pcHBvcnRuZXQ0X3VhZHRgLCBgaGFzaF9pcHBvcnRuZXQ2X3VhZHRgLgoKQWgsIGhhbmcgb24gYSBtb21lbnQuLi4gSSBzZWUgdGhhdCB0aGUgcGF0Y2ggYWxzbyBpbXBhY3RzIGBtdHlwZV9mbHVzaGAuIEkgbmVlZCB0byB2ZXJpZnkgaWYgdGhlcmUmIzM5O3MgYW4gYXNzb2NpYXRlZCBmbHVzaCBmdW5jdGlvbi4gTGV0IG1lIGRpZyBpbnRvIHRoYXQgYSBsaXR0bGUgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXR5cGVfZmx1c2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMy0jdW5kZWYgbXR5cGVfYWhhc2hfbWVtc2l6ZVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyMjQ6I3VuZGVmIG10eXBlX2ZsdXNoXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyNS0jdW5kZWYgbXR5cGVfZGVzdHJveVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjcxLSNkZWZpbmUgbXR5cGVfYWhhc2hfbWVtc2l6ZVx0SVBTRVRfVE9LRU4oTVRZUEUsIF9haGFzaF9tZW1zaXplKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNzI6I2RlZmluZSBtdHlwZV9mbHVzaFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzMtI2RlZmluZSBtdHlwZV9kZXN0cm95XHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVzdHJveSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTUwOD1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo1MDk6bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC01MTAte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTYzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGlwX3NldF90eXBlX3ZhcmlhbnQgbXR5cGVfdmFyaWFudCA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2NDAtXHQuZGVzdHJveSA9IG10eXBlX2Rlc3Ryb3ksXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjE2NDE6XHQuZmx1c2hcdD0gbXR5cGVfZmx1c2gsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2NDItXHQuaGVhZFx0PSBtdHlwZV9oZWFkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjczLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDg5MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgRmx1c2ggTWVjaGFuaXNtIGluIHRoZSBJUCBTZXQgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSBmbHVzaCBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkIGluIHRoaXMgSVAgU2V0IGNvZGUuIGBtdHlwZV9mbHVzaGAgaXMgYmVpbmcgYXNzaWduZWQgdG8gYHNldC0mZ3Q7dmFyaWFudC0mZ3Q7Zmx1c2hgLiBSaWdodCwgdGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gcG9pbnRlciBmb3IgdGhlIGZsdXNoIG9wZXJhdGlvbiB3aXRoaW4gYSBzcGVjaWZpYyBzZXQgdmFyaWFudC4gTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGF0IHRoaXMgYG10eXBlX2ZsdXNoYCBpc24mIzM5O3QgZGVmaW5lZCBkaXJlY3RseSBpbiBhIEMgZmlsZTsgaXQmIzM5O3MgYmVpbmcgZ2VuZXJhdGVkIGJ5IHRoaXMgbWFjcm8sIGBJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKWAuIFNvIGl0JiMzOTtzIGVzc2VudGlhbGx5IGJlaW5nIGNvbnN0cnVjdGVkIGF0IGNvbXBpbGUgdGltZSwgYmFzZWQgb24gdGhhdCBtYWNyby4gSSBuZWVkIHRvIHRyYWNrIGRvd24gZXhhY3RseSAqaG93KiB0aGF0IG1hY3JvIHdvcmtzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGZsdXNoaW5nIGltcGxlbWVudGF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIGFzc3VtZSB0aGF0IHRoZSBgbmV0bGlua2AgaGFuZGxlciBmb3IgZmx1c2ggaXMgcHJvYmFibHkgYGlwX3NldF91Zmx1c2hgIG9yIHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGhvdyB0aGUgZmx1c2ggaXMgaW5pdGlhdGVkIHRocm91Z2ggbmV0bGluay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVBTRVRfQ01EX0ZMVVNIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjQtXHR9LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxNjU6XHRbSVBTRVRfQ01EX0ZMVVNIXVx0PSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2Ni1cdFx0LmNhbGxcdFx0PSBpcF9zZXRfZmx1c2gsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzUxCgkJCQkJCQlvdXRwdXQ6IDQwNQoJCQkJCQkJdGhvdWdodHM6IDcwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFzb25pbmcgZm9yIEZ1enppbmcgRm9jdXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpZGVudGlmeSB0aGUga2V5IG5ldGxpbmsgaGFuZGxlcnMgbW9kaWZpZWQgYnkgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIGlwc2V0IGZ1bmN0aW9uYWxpdHkuIEkgc3RhcnRlZCB3aXRoIGBpcF9zZXRfZmx1c2hgIGFzIHRoZSBwcmltYXJ5IHRhcmdldCBiZWNhdXNlIG9mIGl0cyBpbW1lZGlhdGUgcmVsZXZhbmNlLCBidXQgdGhlbiBJIHJlYWxpemVkIGl0JiMzOTtzIGp1c3Qgb25lIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgcXVpY2tseSBzY2FubmVkIGZvciBvdGhlciBuZXRsaW5rIGhhbmRsZXJzLCBsaWtlIGBpcF9zZXRfY3JlYXRlYCwgYGlwX3NldF9kZXN0cm95YCwgZXRjLiB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgaWRlbnRpZnlpbmcgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cy4KClRoZSBwYXRjaCBhcHBlYXJzIHRvIGJlIGZvY3VzZWQgb24gaW1wcm92aW5nIHRoZSBwZXJmb3JtYW5jZSBvZiBuZXR3b3JrIHByZWZpeCBoYW5kbGluZyB3aXRoaW4gY2VydGFpbiBpcHNldCBoYXNoIHR5cGVzLiBJIHNhdyB0aGF0IGBpcF9zZXRfdWFkZGAsIGBpcF9zZXRfdWRlbGAsIGBpcF9zZXRfdXRlc3RgLCBhbmQgYGlwX3NldF9mbHVzaGAgYXJlIHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMuIEkgY2hlY2tlZCB3aGljaCBgRW5hYmxlQ29uZmlnc2AgYXJlIGFzc29jaWF0ZWQgd2l0aCBpdCwgYW5kIGl0IHNlZW1zIHRvIGJlIHNwZWNpZmljIHRvIHR5cGVzIHN1cHBvcnRpbmcgbmV0d29yayBwcmVmaXhlcy4gVGhlIGNvcmUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCBhIGBzZXFjb3VudF9zcGlubG9ja190YCBmb3IgaW4tcGxhY2UgcmVvcmRlcmluZy4gVGhpcyBpbmRpY2F0ZXMgdGhlIGNoYW5nZSB0b3VjaGVzIENJRFIgdHJhY2tpbmcuCgpUaGVyZWZvcmUsIHRoZSBwYXRjaCBhbHRlcnMgdGhlIENJRFIgdHJhY2tpbmcgbG9naWMgZm9yIGlwc2V0IGhhc2ggdHlwZXMgdGhhdCBzdXBwb3J0IG5ldHdvcmtzLiBHaXZlbiB0aGUgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AgcHJlcHJvY2Vzc29yIGNoZWNrcywgaXQgb25seSBhZmZlY3RzIGBoYXNoOm5ldGAsIGBoYXNoOm5ldCxpZmFjZWAgYW5kIHNpbWlsYXIgdHlwZXMuIFRoZSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIGBuZXRfcHJlZml4ZXNgIGFycmF5IHJlb3JkZXJpbmcsIGRpcmVjdGx5IGltcGFjdHMgaG93IG5ldHdvcmsgcHJlZml4ZXMgYXJlIGFkZGVkLCBkZWxldGVkLCB0ZXN0ZWQsIGFuZCBmbHVzaGVkLgoKVWx0aW1hdGVseSwgSSB3YW50IHRvIHVzZSBgc2V0LXJlc3VsdHNgIHRvIHByb3Blcmx5IGZvY3VzIGZ1enppbmcuIEJhc2VkIG9uIG15IHJldmlldywgSSYjMzk7dmUgY29tcGlsZWQgYSBsaXN0IG9mIGBGb2N1c1N5bWJvbHNgIHRoYXQgY292ZXJzIHRoZSBuZXRsaW5rIGhhbmRsZXJzIGFuZCB0aGUgY29ycmVzcG9uZGluZyBgdWFkdGAgZnVuY3Rpb25zIGZvciB0aGUgYWZmZWN0ZWQgaGFzaCB0eXBlczogYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGBpcF9zZXRfZmx1c2hgLCBhbmQgYWxsIHRoZSBgaGFzaF8qX3VhZHRgIHZhcmlhbnRzIEkgaWRlbnRpZmllZC4gVGhpcyBzaG91bGQgcHJvdmlkZSBhIGZvY3VzZWQgYW5kIGVmZmljaWVudCBmdXp6aW5nIHN0cmF0ZWd5IHRoYXQgYWRkcmVzc2VzIHRoZSBjb3JlIGNoYW5nZXMgYW5kIHRoZWlyIHBvdGVudGlhbCBpbXBhY3QuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDssCiAgICAmIzM0O0lQX1NFVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRJRkFDRSYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRQT1JUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVRORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUUE9SVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9JUFBPUlRORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9zZXRfdWFkZCYjMzQ7LAogICAgJiMzNDtpcF9zZXRfdWRlbCYjMzQ7LAogICAgJiMzNDtpcF9zZXRfdXRlc3QmIzM0OywKICAgICYjMzQ7aXBfc2V0X2ZsdXNoJiMzNDssCiAgICAmIzM0O2hhc2hfbmV0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRpZmFjZTZfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldHBvcnRuZXQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0bmV0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0bmV0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydDRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldHBvcnQ2X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9pcHBvcnRuZXQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9pcHBvcnRuZXQ2X3VhZHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgQ0lEUiB0cmFja2luZyBsb2dpYyBpbiBpcHNldCBoYXNoIHR5cGVzIHRoYXQgc3VwcG9ydCBuZXR3b3JrcyAoZS5nLiwgaGFzaDpuZXQsIGhhc2g6bmV0LGlmYWNlKS4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0X3ByZWZpeGVzIGFycmF5LCByZXBsYWNpbmcgdGhlIHByZXZpb3VzIFJDVS1iYXNlZCByZWFsbG9jYXRpb24gYXBwcm9hY2ggZm9yIGRlbGV0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBpcHNldCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IG5ldHdvcmsgcHJlZml4ZXMgYXJlIGFkZGVkLCBkZWxldGVkLCB0ZXN0ZWQsIGFuZCBmbHVzaGVkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBlbnRyeSBwb2ludHMgZm9yIGFkZGluZywgZGVsZXRpbmcsIHRlc3RpbmcsIGFuZCBmbHVzaGluZyBlbGVtZW50cyBpbiB0aGVzZSBzcGVjaWZpYyBoYXNoIHR5cGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUSUZBQ0UmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUUE9SVE5FVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfSEFTSF9ORVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfTkVUTkVUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9IQVNIX05FVFBPUlQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0hBU0hfSVBQT1JUTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X3VhZGQmIzM0OywKICAgICYjMzQ7aXBfc2V0X3VkZWwmIzM0OywKICAgICYjMzQ7aXBfc2V0X3V0ZXN0JiMzNDssCiAgICAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldDRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldDZfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldGlmYWNlNF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0aWZhY2U2X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0bmV0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfbmV0cG9ydG5ldDZfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldG5ldDRfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldG5ldDZfdWFkdCYjMzQ7LAogICAgJiMzNDtoYXNoX25ldHBvcnQ0X3VhZHQmIzM0OywKICAgICYjMzQ7aGFzaF9uZXRwb3J0Nl91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfaXBwb3J0bmV0NF91YWR0JiMzNDssCiAgICAmIzM0O2hhc2hfaXBwb3J0bmV0Nl91YWR0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIENJRFIgdHJhY2tpbmcgbG9naWMgaW4gaXBzZXQgaGFzaCB0eXBlcyB0aGF0IHN1cHBvcnQgbmV0d29ya3MgKGUuZy4sIGhhc2g6bmV0LCBoYXNoOm5ldCxpZmFjZSkuIEl0IGludHJvZHVjZXMgYSBzZXFjb3VudF9zcGlubG9ja190IHRvIGd1YXJkIGluLXBsYWNlIHJlb3JkZXJpbmcgb2YgdGhlIG5ldF9wcmVmaXhlcyBhcnJheSwgcmVwbGFjaW5nIHRoZSBwcmV2aW91cyBSQ1UtYmFzZWQgcmVhbGxvY2F0aW9uIGFwcHJvYWNoIGZvciBkZWxldGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgaXBzZXQgbG9naWMgdGhhdCBhZmZlY3RzIGhvdyBuZXR3b3JrIHByZWZpeGVzIGFyZSBhZGRlZCwgZGVsZXRlZCwgdGVzdGVkLCBhbmQgZmx1c2hlZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldGxpbmsgZW50cnkgcG9pbnRzIGZvciBhZGRpbmcsIGRlbGV0aW5nLCB0ZXN0aW5nLCBhbmQgZmx1c2hpbmcgZWxlbWVudHMgaW4gdGhlc2Ugc3BlY2lmaWMgaGFzaCB0eXBlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjMzOjI4LjMzODQ0MTg0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDkwOTYxMzI5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCIsXG4gICAgXCJORVRGSUxURVJcIixcbiAgICBcIklQX1NFVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUSUZBQ0VcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFBPUlRORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUTkVUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRQT1JUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9JUFBPUlRORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9zZXRfdWFkZFwiLFxuICAgIFwiaXBfc2V0X3VkZWxcIixcbiAgICBcImlwX3NldF91dGVzdFwiLFxuICAgIFwiaXBfc2V0X2ZsdXNoXCIsXG4gICAgXCJoYXNoX25ldDRfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXQ2X3VhZHRcIixcbiAgICBcImhhc2hfbmV0aWZhY2U0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0aWZhY2U2X3VhZHRcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDRfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0Nl91YWR0XCIsXG4gICAgXCJoYXNoX25ldG5ldDRfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRuZXQ2X3VhZHRcIixcbiAgICBcImhhc2hfbmV0cG9ydDRfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0Nl91YWR0XCIsXG4gICAgXCJoYXNoX2lwcG9ydG5ldDRfdWFkdFwiLFxuICAgIFwiaGFzaF9pcHBvcnRuZXQ2X3VhZHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBDSURSIHRyYWNraW5nIGxvZ2ljIGluIGlwc2V0IGhhc2ggdHlwZXMgdGhhdCBzdXBwb3J0IG5ldHdvcmtzIChlLmcuLCBoYXNoOm5ldCwgaGFzaDpuZXQsaWZhY2UpLiBJdCBpbnRyb2R1Y2VzIGEgc2VxY291bnRfc3BpbmxvY2tfdCB0byBndWFyZCBpbi1wbGFjZSByZW9yZGVyaW5nIG9mIHRoZSBuZXRfcHJlZml4ZXMgYXJyYXksIHJlcGxhY2luZyB0aGUgcHJldmlvdXMgUkNVLWJhc2VkIHJlYWxsb2NhdGlvbiBhcHByb2FjaCBmb3IgZGVsZXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGlwc2V0IGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgbmV0d29yayBwcmVmaXhlcyBhcmUgYWRkZWQsIGRlbGV0ZWQsIHRlc3RlZCwgYW5kIGZsdXNoZWQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGVudHJ5IHBvaW50cyBmb3IgYWRkaW5nLCBkZWxldGluZywgdGVzdGluZywgYW5kIGZsdXNoaW5nIGVsZW1lbnRzIGluIHRoZXNlIHNwZWNpZmljIGhhc2ggdHlwZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjMzOjI4LjMzODQ0ODcxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1MTc1MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjkzNzNmN2NlMTZjNzU0MjI5ZGM5ZWRiM2YzZGFkNzEwZThkOTMwMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyA2IDIxOjMzOjI3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmggYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXFxuaW5kZXggZjAwYzgyYWNkN2YwNS4uYjFmNDU5OGMxNDY3NiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFxcbkBAIC04LDYgKzgsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmN1cGRhdGVfd2FpdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvamhhc2guaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZXFsb2NrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmhcXHUwMDNlXFxuIFxcbkBAIC05OCwxNCArOTksMzQgQEAgc3RydWN0IGh0YWJsZSB7XFxuICNkZWZpbmUgSVBTRVRfTkVUX0NPVU5UXFx0XFx0MVxcbiAjZW5kaWZcXG4gXFxuLS8qIEJvb2sta2VlcGluZyBvZiB0aGUgcHJlZml4ZXMgYWRkZWQgdG8gdGhlIHNldCAqL1xcbisvKipcXG4rICogc3RydWN0IG5ldF9wcmVmaXggLSBSZXByZXNlbnRhdGlvbiBvZiBhIG5ldHdvcmsgcHJlZml4LlxcbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC5cXG4rICogQGNvdW50OiBOdW1iZXIgb2Ygb2NjdXJyZW5jZXMuXFxuKyAqL1xcbiBzdHJ1Y3QgbmV0X3ByZWZpeCB7XFxuLVxcdHU4IGNpZHI7XFx0XFx0XFx0LyogdGhlIGNpZHIgdmFsdWUgKi9cXG4tXFx0dTMyIGNvdW50O1xcdFxcdFxcdC8qIG51bWJlciBvZiBlbGVtZW50cyBvZiB0aGlzIGNpZHIgKi9cXG4rXFx0dTMyIGNpZHI6ODtcXG4rXFx0dTMyIGNvdW50OjI0O1xcbiB9O1xcbiBcXG4rI2RlZmluZSBDSURSX01BWF9DT1VOVCAoKDEgXFx1MDAzY1xcdTAwM2MgMjQpIC0gMSlcXG4rXFxuKy8qKlxcbisgKiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIC0gQSBjb2xsZWN0aW9uIG9mIG5ldHdvcmsgcHJlZml4ZXMuXFxuKyAqIEByY3U6IFJDVSBoZWFkXFxuKyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0c1xcbisgKiBAbGVuOiBOdW1iZXIgb2YgZW50cmllcyBpbiB0aGUgYXJyYXkuXFxuKyAqIEBuZXRzOiBBcnJheSBvZiBuZXRfcHJlZml4IHN0cnVjdHVyZXMgKHNvcnRlZCBieSBDSURSIGRlc2NlbmRpbmcpLlxcbisgKlxcbisgKiBAbmV0cyBlbnRyaWVzIGFyZSB1cGRhdGVkIGluIHBsYWNlIHVuZGVyIEBzZXQncyBsb2NrLiBBIHNpbmdsZSBlbnRyeSdzXFxuKyAqIGNpZHIvY291bnQgcGFpciBpcyBhbHdheXMgdXBkYXRlZCBhdG9taWNhbGx5IHZpYSBSRUFEX09OQ0UoKS9XUklURV9PTkNFKCksXFxuKyAqIGJ1dCByZW1vdmluZyBhbiBlbnRyeSBhbHNvIHNoaWZ0cyBldmVyeSBmb2xsb3dpbmcgZW50cnkgZG93biBieSBvbmUgc2xvdC5cXG4rICogTG9ja2xlc3MgcmVhZGVycyB0aGF0IHNjYW4gdGhlIHdob2xlIGFycmF5IChpLmUuIG1vcmUgdGhhbiBhIHNpbmdsZVxcbisgKiBpbmRleGVkIHNsb3QpIG11c3QgdXNlIEBzZXEgdG8gZGV0ZWN0IGFuZCByZXRyeSBhY3Jvc3Mgc3VjaCBhIHNoaWZ0LlxcbisgKi9cXG4gc3RydWN0IG5ldF9wcmVmaXhlcyB7XFxuIFxcdHN0cnVjdCByY3VfaGVhZCByY3U7XFxuK1xcdHNlcWNvdW50X3NwaW5sb2NrX3Qgc2VxO1xcbiBcXHR1OCBsZW47XFxuIFxcdHN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTtcXG4gfTtcXG5AQCAtMTQzLDggKzE2NCwxMSBAQCBodGFibGVfc2l6ZSh1OCBoYml0cylcXG4gI2VuZGlmXFxuIFxcbiAjZGVmaW5lIElOSVRfQ0lEUihuLCBob3N0X21hc2spICh7XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRjb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7XFx0XFx0XFxcXFxcbi1cXHREQ0lEUl9QVVQoKF9fbiktXFx1MDAzZWxlbiA/IChfX24pLVxcdTAwM2VuZXRzWzBdLmNpZHIgOiBob3N0X21hc2spO1xcXFxcXG4rXFx0Y29uc3Qgc3RydWN0IG5ldF9wcmVmaXhlcyAqX19uID0gcmN1X2RlcmVmZXJlbmNlKG4pO1xcdFxcXFxcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXggX19wID1cXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdF9fbi1cXHUwMDNlbGVuID8gUkVBRF9PTkNFKF9fbi1cXHUwMDNlbmV0c1swXSlcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdCA6IChzdHJ1Y3QgbmV0X3ByZWZpeCl7fTtcXHRcXHRcXFxcXFxuK1xcdERDSURSX1BVVChfX3AuY291bnQgPyBfX3AuY2lkciA6IGhvc3RfbWFzayk7XFx0XFx0XFxcXFxcbiB9KVxcbiBcXG4gI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqL1xcbkBAIC0zMTgsMjcgKzM0Miw0MyBAQCBzdHJ1Y3QgbXR5cGVfcmVzaXplX2FkIHtcXG4gfTtcXG4gXFxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG4tLyogTmV0d29yayBjaWRyIHNpemUgYm9vayBrZWVwaW5nIHdoZW4gdGhlIGhhc2ggc3RvcmVzIGRpZmZlcmVudFxcbi0gKiBzaXplZCBuZXR3b3Jrcy4gY2lkciA9PSByZWFsIGNpZHIgKyAxIHRvIHN1cHBvcnQgLzAuXFxuKy8qKlxcbisgKiBtdHlwZV9hZGRfY2lkciAtIEFkZCBhIENJRFIgZW50cnkgdG8gaGFzaCB0YWJsZSBib29ra2VlcGluZ1xcbisgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXRcXG4rICogQGg6IFBvaW50ZXIgdG8gdGhlIGh0eXBlXFxuKyAqIEBjaWRyOiBUaGUgQ0lEUiBwcmVmaXggbGVuZ3RoXFxuKyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gYWRkIEBjaWRyIHRvXFxuKyAqXFxuKyAqIFBlcmZvcm1zIGFuIHVwZGF0ZSBpZiBAY2lkciBpcyBmb3VuZCwgb3RoZXJ3aXNlIHBlcmZvcm1zIENPVy1zdHlsZVxcbisgKiBhbGxvY2F0aW9uIGFuZCByZXBsYWNlbWVudCB2aWEgUkNVLlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLlxcbiAgKi9cXG4gc3RhdGljIGludFxcbiBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcXG4ge1xcbi1cXHRzdHJ1Y3QgbmV0X3ByZWZpeGVzICpuZXRzLCAqdG1wO1xcbiBcXHRpbnQgaSwgaiwgZm91bmQsIGxlbiA9IDAsIHJldCA9IDA7XFxuK1xcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XFxuK1xcdHN0cnVjdCBuZXRfcHJlZml4IG5wO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZzZXQtXFx1MDAzZWxvY2spO1xcbiBcXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVxcdTAwM2VybmV0c1tuXSk7XFxuIFxcdC8qIEFkZCBpbiBpbmNyZWFzaW5nIHByZWZpeCBvcmRlciwgc28gbGFyZ2VyIGNpZHIgZmlyc3QgKi9cXG4gXFx0Zm9yIChpID0gMCwgZm91bmQgPSAtMTsgaSBcXHUwMDNjIG5ldHMtXFx1MDAzZWxlbjsgaSsrKSB7XFxuLVxcdFxcdGlmIChuZXRzLVxcdTAwM2VuZXRzW2ldLmNvdW50KVxcbitcXHRcXHRucCA9IFJFQURfT05DRShuZXRzLVxcdTAwM2VuZXRzW2ldKTtcXG4rXFx0XFx0aWYgKG5wLmNvdW50KVxcbiBcXHRcXHRcXHRsZW4rKztcXG4gXFx0XFx0aWYgKGZvdW5kICE9IC0xKSB7XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHR9IGVsc2UgaWYgKG5ldHMtXFx1MDAzZW5ldHNbaV0uY2lkciBcXHUwMDNjIGNpZHIpIHtcXG4rXFx0XFx0fSBlbHNlIGlmIChucC5jaWRyIFxcdTAwM2MgY2lkcikge1xcbiBcXHRcXHRcXHRmb3VuZCA9IGk7XFxuLVxcdFxcdH0gZWxzZSBpZiAobmV0cy1cXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpIHtcXG4tXFx0XFx0XFx0bmV0cy1cXHUwMDNlbmV0c1tpXS5jb3VudCsrO1xcbitcXHRcXHR9IGVsc2UgaWYgKG5wLmNpZHIgPT0gY2lkcikge1xcbitcXHRcXHRcXHRpZiAobnAuY291bnQgXFx1MDAzYyBDSURSX01BWF9DT1VOVCkge1xcbitcXHRcXHRcXHRcXHRucC5jb3VudCsrO1xcbitcXHRcXHRcXHRcXHRXUklURV9PTkNFKG5ldHMtXFx1MDAzZW5ldHNbaV0sIG5wKTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0cmV0ID0gLUVPVkVSRkxPVztcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4gXFx0XFx0fVxcbiBcXHR9XFxuQEAgLTM1MCw2ICszOTAsNyBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcXG4gXFx0fVxcbiBcXG4gXFx0dG1wLVxcdTAwM2VsZW4gPSBsZW47XFxuK1xcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXFx1MDAyNnRtcC1cXHUwMDNlc2VxLCBcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0Zm9yIChpID0gMCwgaiA9IDA7IGkgXFx1MDAzYyBuZXRzLVxcdTAwM2VsZW47IGkrKykge1xcbiBcXHRcXHRpZiAoaSA9PSBmb3VuZCkge1xcbiBcXHRcXHRcXHR0bXAtXFx1MDAzZW5ldHNbal0uY2lkciA9IGNpZHI7XFxuQEAgLTM3MSw0MiArNDEyLDYwIEBAIG10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbisvKipcXG4rICogbXR5cGVfZGVsX2NpZHIgLSBSZW1vdmUgQ0lEUiBlbnRyeSBhbmQgbWFpbnRhaW4gYXJyYXkgaW50ZWdyaXR5LlxcbisgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXQuXFxuKyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS5cXG4rICogQGNpZHI6IFRoZSBDSURSIHByZWZpeCBsZW5ndGguXFxuKyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gcmVtb3ZlIEBjaWRyIGZyb21cXG4rICpcXG4rICogSWYgQ0lEUiBlbnRyeSBjb3VudCBmYWxscyB0byAwLCB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgXFxcInNoaWZ0LWxlZnRcXFwiXFxuKyAqIG9wZXJhdGlvbiBvbiBhbGwgZm9sbG93aW5nIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJyYXkgcmVtYWluc1xcbisgKiBjb250aWd1b3VzIGFuZCBtYWludGFpbnMgaXRzIGRlc2NlbmRpbmcgb3JkZXIgYnkgQ0lEUi4gVGhlIHZhY2F0ZWQgc2xvdFxcbisgKiBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheSBpcyB6ZXJvZWQgb3V0IChjaWRyPTAsIGNvdW50PTApLlxcbisgKi9cXG4gc3RhdGljIHZvaWRcXG4gbXR5cGVfZGVsX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXFxuIHtcXG4tXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcXG4tXFx0dTggaSwgaiwgbGVuID0gMDtcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cztcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXggbnA7XFxuIFxcdGludCBmb3VuZDtcXG4rXFx0dTggaSwgajtcXG4rXFxuK1xcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IG5ldF9wcmVmaXgpICE9IHNpemVvZih1MzIpKTtcXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0bmV0cyA9IF9faXBzZXRfZGVyZWZlcmVuY2UoaC1cXHUwMDNlcm5ldHNbbl0pO1xcbiBcXHRmb3IgKGkgPSAwLCBmb3VuZCA9IC0xOyBpIFxcdTAwM2MgbmV0cy1cXHUwMDNlbGVuOyBpKyspIHtcXG4tXFx0XFx0aWYgKG5ldHMtXFx1MDAzZW5ldHNbaV0uY291bnQpXFxuLVxcdFxcdFxcdGxlbisrO1xcbi1cXHRcXHRpZiAobmV0cy1cXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpXFxuK1xcdFxcdG5wID0gUkVBRF9PTkNFKG5ldHMtXFx1MDAzZW5ldHNbaV0pO1xcbitcXHRcXHRpZiAobnAuY291bnQgXFx1MDAyNlxcdTAwMjYgbnAuY2lkciA9PSBjaWRyKSB7XFxuK1xcdFxcdFxcdG5wLmNvdW50LS07XFxuIFxcdFxcdFxcdGZvdW5kID0gaTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXHRpZiAodW5saWtlbHkoZm91bmQgPT0gLTEpKVxcbiBcXHRcXHRnb3RvIHVubG9jaztcXG4gXFxuLVxcdG5ldHMtXFx1MDAzZW5ldHNbZm91bmRdLmNvdW50LS07XFxuLVxcdGlmIChuZXRzLVxcdTAwM2VuZXRzW2ZvdW5kXS5jb3VudClcXG4tXFx0XFx0Z290byB1bmxvY2s7XFxuLVxcdGxlbi0tO1xcbi1cXHR0bXAgPSBremFsbG9jX2ZsZXgoKnRtcCwgbmV0cywgbGVuLCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCF0bXApXFxuLVxcdFxcdC8qIExlYXZlIGEgaG9sZSAqL1xcbitcXHRpZiAobnAuY291bnQpIHtcXG4rXFx0XFx0V1JJVEVfT05DRShuZXRzLVxcdTAwM2VuZXRzW2ZvdW5kXSwgbnApO1xcbiBcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0fVxcbiBcXG4tXFx0dG1wLVxcdTAwM2VsZW4gPSBsZW47XFxuK1xcdHdyaXRlX3NlcWNvdW50X2JlZ2luKFxcdTAwMjZuZXRzLVxcdTAwM2VzZXEpO1xcbiBcXHRmb3IgKGkgPSAwLCBqID0gMDsgaSBcXHUwMDNjIG5ldHMtXFx1MDAzZWxlbjsgaSsrKSB7XFxuLVxcdFxcdGlmICghbmV0cy1cXHUwMDNlbmV0c1tpXS5jb3VudCB8fCBpID09IGZvdW5kKVxcbitcXHRcXHRpZiAoaSA9PSBmb3VuZClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdHRtcC1cXHUwMDNlbmV0c1tqXS5jaWRyID0gbmV0cy1cXHUwMDNlbmV0c1tpXS5jaWRyO1xcbi1cXHRcXHR0bXAtXFx1MDAzZW5ldHNbaisrXS5jb3VudCA9IG5ldHMtXFx1MDAzZW5ldHNbaV0uY291bnQ7XFxuK1xcbitcXHRcXHRucCA9IFJFQURfT05DRShuZXRzLVxcdTAwM2VuZXRzW2ldKTtcXG4rXFx0XFx0aWYgKGkgIT0gailcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShuZXRzLVxcdTAwM2VuZXRzW2pdLCBucCk7XFxuK1xcdFxcdGorKztcXG4gXFx0fVxcbi1cXHRyY3VfYXNzaWduX3BvaW50ZXIoaC1cXHUwMDNlcm5ldHNbbl0sIHRtcCk7XFxuLVxcdGtmcmVlX3JjdShuZXRzLCByY3UpO1xcbitcXG4rXFx0d2hpbGUgKGogXFx1MDAzYyBuZXRzLVxcdTAwM2VsZW4pXFxuK1xcdFxcdFdSSVRFX09OQ0UobmV0cy1cXHUwMDNlbmV0c1tqKytdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xcbitcXHR3cml0ZV9zZXFjb3VudF9lbmQoXFx1MDAyNm5ldHMtXFx1MDAzZXNlcSk7XFxuIHVubG9jazpcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnNldC1cXHUwMDNlbG9jayk7XFxuIH1cXG5AQCAtNDUxLDcgKzUxMCw3IEBAIG10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG4ge1xcbiBcXHRzdHJ1Y3QgaHR5cGUgKmggPSBzZXQtXFx1MDAzZWRhdGE7XFxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG4tXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcXG4rXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cztcXG4gI2VuZGlmXFxuIFxcdHN0cnVjdCBodGFibGUgKnQ7XFxuIFxcdHN0cnVjdCBoYnVja2V0ICpuO1xcbkBAIC00NzcsMTcgKzUzNiwxNSBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxuIFxcdH1cXG4gI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgSVBTRVRfTkVUX0NPVU5UOyBpKyspIHtcXG4tXFx0XFx0bmV0cyA9IGlwc2V0X2RlcmVmZXJlbmNlX25mbmwoaC1cXHUwMDNlcm5ldHNbaV0pO1xcbi1cXHRcXHR0bXAgPSBremFsbG9jX29iaigqdG1wLCBHRlBfQVRPTUlDKTtcXG4tXFx0XFx0aWYgKCF0bXApIHtcXG4tXFx0XFx0XFx0dTggajtcXG4rXFx0XFx0dTggajtcXG4gXFxuLVxcdFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBuZXRzLVxcdTAwM2VsZW47IGorKylcXG4tXFx0XFx0XFx0XFx0bmV0cy1cXHUwMDNlbmV0c1tqXS5jb3VudCA9IDA7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihoLVxcdTAwM2VybmV0c1tpXSwgdG1wKTtcXG4tXFx0XFx0XFx0a2ZyZWVfcmN1KG5ldHMsIHJjdSk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZzZXQtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRuZXRzID0gaXBzZXRfZGVyZWZlcmVuY2VfbmZubChoLVxcdTAwM2VybmV0c1tpXSk7XFxuK1xcdFxcdHdyaXRlX3NlcWNvdW50X2JlZ2luKFxcdTAwMjZuZXRzLVxcdTAwM2VzZXEpO1xcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgbmV0cy1cXHUwMDNlbGVuOyBqKyspXFxuK1xcdFxcdFxcdFdSSVRFX09OQ0UobmV0cy1cXHUwMDNlbmV0c1tqKytdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xcbitcXHRcXHR3cml0ZV9zZXFjb3VudF9lbmQoXFx1MDAyNm5ldHMtXFx1MDAzZXNlcSk7XFxuK1xcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZzZXQtXFx1MDAzZWxvY2spO1xcbiBcXHR9XFxuICNlbmRpZlxcbiB9XFxuQEAgLTEyNTMsMzEgKzEzMTAsNDEgQEAgbXR5cGVfdGVzdF9jaWRycyhzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBtdHlwZV9lbGVtICpkLFxcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcXG4gXFx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0czE7XFxuIFxcdHN0cnVjdCBtdHlwZV9lbGVtIG9yaWcgPSAqZDtcXG4rXFx0dW5zaWduZWQgaW50IHNlcTE7XFxuIFxcdGludCByZXQsIGksIGosIGs7XFxuICNlbHNlXFxuIFxcdGludCByZXQsIGksIGo7XFxuICNlbmRpZlxcbi1cXHR1MzIga2V5LCBtdWx0aSA9IDA7XFxuK1xcdHVuc2lnbmVkIGludCBzZXEwO1xcbitcXHR1MzIga2V5LCBtdWx0aTtcXG4gXFx0dTggcG9zO1xcbiBcXG4gXFx0cHJfZGVidWcoXFxcInRlc3QgYnkgbmV0c1xcXFxuXFxcIik7XFxuIFxcdHJjdV9yZWFkX2xvY2tfYmgoKTtcXG4rcmV0cnk6XFxuK1xcdG11bHRpID0gMDtcXG4gXFx0bmV0czAgPSByY3VfZGVyZWZlcmVuY2VfYmgoaC1cXHUwMDNlcm5ldHNbMF0pO1xcbitcXHRzZXEwID0gcmVhZF9zZXFjb3VudF9iZWdpbihcXHUwMDI2bmV0czAtXFx1MDAzZXNlcSk7XFxuICNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMlxcbiBcXHRuZXRzMSA9IHJjdV9kZXJlZmVyZW5jZV9iaChoLVxcdTAwM2VybmV0c1sxXSk7XFxuK1xcdHNlcTEgPSByZWFkX3NlcWNvdW50X2JlZ2luKFxcdTAwMjZuZXRzMS1cXHUwMDNlc2VxKTtcXG4gI2VuZGlmXFxuIFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBuZXRzMC1cXHUwMDNlbGVuIFxcdTAwMjZcXHUwMDI2ICFtdWx0aTsgaisrKSB7XFxuLVxcdFxcdGlmICghbmV0czAtXFx1MDAzZW5ldHNbal0uY291bnQpXFxuK1xcdFxcdHN0cnVjdCBuZXRfcHJlZml4IHAwID0gUkVBRF9PTkNFKG5ldHMwLVxcdTAwM2VuZXRzW2pdKTtcXG4rXFxuK1xcdFxcdGlmICghcDAuY291bnQpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcXG4gXFx0XFx0bXR5cGVfZGF0YV9yZXNldF9lbGVtKGQsIFxcdTAwMjZvcmlnKTtcXG4tXFx0XFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMwLVxcdTAwM2VuZXRzW2pdLmNpZHIsIGZhbHNlKTtcXG4rXFx0XFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAwLmNpZHIsIGZhbHNlKTtcXG4gXFx0XFx0Zm9yIChrID0gMDsgayBcXHUwMDNjIG5ldHMxLVxcdTAwM2VsZW4gXFx1MDAyNlxcdTAwMjYgIW11bHRpOyBrKyspIHtcXG4tXFx0XFx0XFx0aWYgKCFuZXRzMS1cXHUwMDNlbmV0c1trXS5jb3VudClcXG4rXFx0XFx0XFx0c3RydWN0IG5ldF9wcmVmaXggcDEgPSBSRUFEX09OQ0UobmV0czEtXFx1MDAzZW5ldHNba10pO1xcbitcXG4rXFx0XFx0XFx0aWYgKCFwMS5jb3VudClcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdFxcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMS1cXHUwMDNlbmV0c1trXS5jaWRyLCB0cnVlKTtcXG4rXFx0XFx0XFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAxLmNpZHIsIHRydWUpO1xcbiAjZWxzZVxcbi1cXHRcXHRtdHlwZV9kYXRhX25ldG1hc2soZCwgbmV0czAtXFx1MDAzZW5ldHNbal0uY2lkcik7XFxuK1xcdFxcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBwMC5jaWRyKTtcXG4gI2VuZGlmXFxuIFxcdFxcdGtleSA9IEhLRVkoZCwgaC1cXHUwMDNlaW5pdHZhbCwgdC1cXHUwMDNlaHRhYmxlX2JpdHMpO1xcbiBcXHRcXHRuID0gcmN1X2RlcmVmZXJlbmNlX2JoKGhidWNrZXQodCwga2V5KSk7XFxuQEAgLTEzMDIsNiArMTM2OSwxMyBAQCBtdHlwZV90ZXN0X2NpZHJzKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG10eXBlX2VsZW0gKmQsXFxuIFxcdFxcdH1cXG4gI2VuZGlmXFxuIFxcdH1cXG4rXFxuK1xcdGlmIChyZWFkX3NlcWNvdW50X3JldHJ5KFxcdTAwMjZuZXRzMC1cXHUwMDNlc2VxLCBzZXEwKSlcXG4rXFx0XFx0Z290byByZXRyeTtcXG4rI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXFxuK1xcdGlmIChyZWFkX3NlcWNvdW50X3JldHJ5KFxcdTAwMjZuZXRzMS1cXHUwMDNlc2VxLCBzZXExKSlcXG4rXFx0XFx0Z290byByZXRyeTtcXG4rI2VuZGlmXFxuIFxcdHJldCA9IDA7XFxuIHVubG9jazpcXG4gXFx0cmN1X3JlYWRfdW5sb2NrX2JoKCk7XFxuQEAgLTE3MDcsNiArMTc4MSw3IEBAIElQU0VUX1RPS0VOKEhUWVBFLCBfY3JlYXRlKShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpcF9zZXQgKnNldCxcXG4gXFx0XFx0XFx0XFx0a2ZyZWUocmN1X2RlcmVmZXJlbmNlX3JhdyhoLVxcdTAwM2VybmV0c1stLWldKSk7XFxuIFxcdFxcdFxcdGdvdG8gZnJlZV9ocmVnaW9uO1xcbiBcXHRcXHR9XFxuK1xcdFxcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXFx1MDAyNm5ldHMtXFx1MDAzZXNlcSwgXFx1MDAyNnNldC1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdFJDVV9JTklUX1BPSU5URVIoaC1cXHUwMDNlcm5ldHNbaV0sIG5ldHMpO1xcbiBcXHR9XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcXG5pbmRleCBiNDRiOTVmNzY2YjdhLi5iNjAyY2M0MzU2NWRkIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xcbkBAIC0zOCw3ICszOCw2IEBAIE1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2hhc2g6bmV0LGlmYWNlXFxcIik7XFxuICNkZWZpbmUgSFRZUEVcXHRcXHRoYXNoX25ldGlmYWNlXFxuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXFxuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9NVUxUSVxcbi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMFxcbiBcXG4gI2RlZmluZSBTVFJTQ1BZKGEsIGIpXFx0c3Ryc2NweShhLCBiLCBJRk5BTVNJWilcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcXG5pbmRleCA2MjkxNTMyYmU3YTVhLi42MWFmMWNlMjcxMjc5IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcXG5AQCAtMzYsNyArMzYsNiBAQCBNT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOm5ldCxwb3J0LG5ldFxcXCIpO1xcbiAjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG4gI2RlZmluZSBJUFNFVF9ORVRfQ09VTlQgMlxcbi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMFxcbiBcXG4gLyogSVB2NCB2YXJpYW50ICovXFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzoyOC43NzQzMjk0NTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxODQ0NzM3MTc3MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiTkVURklMVEVSXCIsXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVElGQUNFXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVE5FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUUE9SVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfSVBQT1JUTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfc2V0X3VhZGRcIixcbiAgICBcImlwX3NldF91ZGVsXCIsXG4gICAgXCJpcF9zZXRfdXRlc3RcIixcbiAgICBcImlwX3NldF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0Nl91YWR0XCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF91YWR0XCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNl91YWR0XCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDZfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRuZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0bmV0Nl91YWR0XCIsXG4gICAgXCJoYXNoX25ldHBvcnQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0cG9ydDZfdWFkdFwiLFxuICAgIFwiaGFzaF9pcHBvcnRuZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfaXBwb3J0bmV0Nl91YWR0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgQ0lEUiB0cmFja2luZyBsb2dpYyBpbiBpcHNldCBoYXNoIHR5cGVzIHRoYXQgc3VwcG9ydCBuZXR3b3JrcyAoZS5nLiwgaGFzaDpuZXQsIGhhc2g6bmV0LGlmYWNlKS4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0X3ByZWZpeGVzIGFycmF5LCByZXBsYWNpbmcgdGhlIHByZXZpb3VzIFJDVS1iYXNlZCByZWFsbG9jYXRpb24gYXBwcm9hY2ggZm9yIGRlbGV0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBpcHNldCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IG5ldHdvcmsgcHJlZml4ZXMgYXJlIGFkZGVkLCBkZWxldGVkLCB0ZXN0ZWQsIGFuZCBmbHVzaGVkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBlbnRyeSBwb2ludHMgZm9yIGFkZGluZywgZGVsZXRpbmcsIHRlc3RpbmcsIGFuZCBmbHVzaGluZyBlbGVtZW50cyBpbiB0aGVzZSBzcGVjaWZpYyBoYXNoIHR5cGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2OTM3M2Y3Y2UxNmM3NTQyMjlkYzllZGIzZjNkYWQ3MTBlOGQ5MzAwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAyMTozMzoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmggYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXG5pbmRleCBmMDBjODJhY2Q3ZjA1Li5iMWY0NTk4YzE0Njc2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFxuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGVfd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvamhhc2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zZXFsb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmhcdTAwM2VcbiBcbkBAIC05OCwxNCArOTksMzQgQEAgc3RydWN0IGh0YWJsZSB7XG4gI2RlZmluZSBJUFNFVF9ORVRfQ09VTlRcdFx0MVxuICNlbmRpZlxuIFxuLS8qIEJvb2sta2VlcGluZyBvZiB0aGUgcHJlZml4ZXMgYWRkZWQgdG8gdGhlIHNldCAqL1xuKy8qKlxuKyAqIHN0cnVjdCBuZXRfcHJlZml4IC0gUmVwcmVzZW50YXRpb24gb2YgYSBuZXR3b3JrIHByZWZpeC5cbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC5cbisgKiBAY291bnQ6IE51bWJlciBvZiBvY2N1cnJlbmNlcy5cbisgKi9cbiBzdHJ1Y3QgbmV0X3ByZWZpeCB7XG4tXHR1OCBjaWRyO1x0XHRcdC8qIHRoZSBjaWRyIHZhbHVlICovXG4tXHR1MzIgY291bnQ7XHRcdFx0LyogbnVtYmVyIG9mIGVsZW1lbnRzIG9mIHRoaXMgY2lkciAqL1xuK1x0dTMyIGNpZHI6ODtcbitcdHUzMiBjb3VudDoyNDtcbiB9O1xuIFxuKyNkZWZpbmUgQ0lEUl9NQVhfQ09VTlQgKCgxIFx1MDAzY1x1MDAzYyAyNCkgLSAxKVxuK1xuKy8qKlxuKyAqIHN0cnVjdCBuZXRfcHJlZml4ZXMgLSBBIGNvbGxlY3Rpb24gb2YgbmV0d29yayBwcmVmaXhlcy5cbisgKiBAcmN1OiBSQ1UgaGVhZFxuKyAqIEBzZXE6IFNlcXVlbmNlIGNvdW50ZXIgZ3VhcmRpbmcgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiBAbmV0c1xuKyAqIEBsZW46IE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBhcnJheS5cbisgKiBAbmV0czogQXJyYXkgb2YgbmV0X3ByZWZpeCBzdHJ1Y3R1cmVzIChzb3J0ZWQgYnkgQ0lEUiBkZXNjZW5kaW5nKS5cbisgKlxuKyAqIEBuZXRzIGVudHJpZXMgYXJlIHVwZGF0ZWQgaW4gcGxhY2UgdW5kZXIgQHNldCdzIGxvY2suIEEgc2luZ2xlIGVudHJ5J3NcbisgKiBjaWRyL2NvdW50IHBhaXIgaXMgYWx3YXlzIHVwZGF0ZWQgYXRvbWljYWxseSB2aWEgUkVBRF9PTkNFKCkvV1JJVEVfT05DRSgpLFxuKyAqIGJ1dCByZW1vdmluZyBhbiBlbnRyeSBhbHNvIHNoaWZ0cyBldmVyeSBmb2xsb3dpbmcgZW50cnkgZG93biBieSBvbmUgc2xvdC5cbisgKiBMb2NrbGVzcyByZWFkZXJzIHRoYXQgc2NhbiB0aGUgd2hvbGUgYXJyYXkgKGkuZS4gbW9yZSB0aGFuIGEgc2luZ2xlXG4rICogaW5kZXhlZCBzbG90KSBtdXN0IHVzZSBAc2VxIHRvIGRldGVjdCBhbmQgcmV0cnkgYWNyb3NzIHN1Y2ggYSBzaGlmdC5cbisgKi9cbiBzdHJ1Y3QgbmV0X3ByZWZpeGVzIHtcbiBcdHN0cnVjdCByY3VfaGVhZCByY3U7XG4rXHRzZXFjb3VudF9zcGlubG9ja190IHNlcTtcbiBcdHU4IGxlbjtcbiBcdHN0cnVjdCBuZXRfcHJlZml4IG5ldHNbXSBfX2NvdW50ZWRfYnkobGVuKTtcbiB9O1xuQEAgLTE0Myw4ICsxNjQsMTEgQEAgaHRhYmxlX3NpemUodTggaGJpdHMpXG4gI2VuZGlmXG4gXG4gI2RlZmluZSBJTklUX0NJRFIobiwgaG9zdF9tYXNrKSAoe1x0XHRcdFx0XFxcbi1cdGNvbnN0IHN0cnVjdCBuZXRfcHJlZml4ZXMgKl9fbiA9IHJjdV9kZXJlZmVyZW5jZShuKTtcdFx0XFxcbi1cdERDSURSX1BVVCgoX19uKS1cdTAwM2VsZW4gPyAoX19uKS1cdTAwM2VuZXRzWzBdLmNpZHIgOiBob3N0X21hc2spO1xcXG4rXHRjb25zdCBzdHJ1Y3QgbmV0X3ByZWZpeGVzICpfX24gPSByY3VfZGVyZWZlcmVuY2Uobik7XHRcXFxuK1x0c3RydWN0IG5ldF9wcmVmaXggX19wID1cdFx0XHRcdFx0XFxcbitcdFx0X19uLVx1MDAzZWxlbiA/IFJFQURfT05DRShfX24tXHUwMDNlbmV0c1swXSlcdFx0XFxcbitcdFx0XHQgOiAoc3RydWN0IG5ldF9wcmVmaXgpe307XHRcdFxcXG4rXHREQ0lEUl9QVVQoX19wLmNvdW50ID8gX19wLmNpZHIgOiBob3N0X21hc2spO1x0XHRcXFxuIH0pXG4gXG4gI2VuZGlmIC8qIElQX1NFVF9IQVNIX1dJVEhfTkVUUyAqL1xuQEAgLTMxOCwyNyArMzQyLDQzIEBAIHN0cnVjdCBtdHlwZV9yZXNpemVfYWQge1xuIH07XG4gXG4gI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xuLS8qIE5ldHdvcmsgY2lkciBzaXplIGJvb2sga2VlcGluZyB3aGVuIHRoZSBoYXNoIHN0b3JlcyBkaWZmZXJlbnRcbi0gKiBzaXplZCBuZXR3b3Jrcy4gY2lkciA9PSByZWFsIGNpZHIgKyAxIHRvIHN1cHBvcnQgLzAuXG4rLyoqXG4rICogbXR5cGVfYWRkX2NpZHIgLSBBZGQgYSBDSURSIGVudHJ5IHRvIGhhc2ggdGFibGUgYm9va2tlZXBpbmdcbisgKiBAc2V0OiBQb2ludGVyIHRvIHRoZSBpcF9zZXRcbisgKiBAaDogUG9pbnRlciB0byB0aGUgaHR5cGVcbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aFxuKyAqIEBuOiBUaGUgaW5kZXggb2YgdGhlIG5ldF9wcmVmaXggYXJyYXkgdG8gYWRkIEBjaWRyIHRvXG4rICpcbisgKiBQZXJmb3JtcyBhbiB1cGRhdGUgaWYgQGNpZHIgaXMgZm91bmQsIG90aGVyd2lzZSBwZXJmb3JtcyBDT1ctc3R5bGVcbisgKiBhbGxvY2F0aW9uIGFuZCByZXBsYWNlbWVudCB2aWEgUkNVLlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS5cbiAgKi9cbiBzdGF0aWMgaW50XG4gbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG4ge1xuLVx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcbiBcdGludCBpLCBqLCBmb3VuZCwgbGVuID0gMCwgcmV0ID0gMDtcbitcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XG4rXHRzdHJ1Y3QgbmV0X3ByZWZpeCBucDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdC8qIEFkZCBpbiBpbmNyZWFzaW5nIHByZWZpeCBvcmRlciwgc28gbGFyZ2VyIGNpZHIgZmlyc3QgKi9cbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpKyspIHtcbi1cdFx0aWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudClcbitcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbitcdFx0aWYgKG5wLmNvdW50KVxuIFx0XHRcdGxlbisrO1xuIFx0XHRpZiAoZm91bmQgIT0gLTEpIHtcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0fSBlbHNlIGlmIChuZXRzLVx1MDAzZW5ldHNbaV0uY2lkciBcdTAwM2MgY2lkcikge1xuK1x0XHR9IGVsc2UgaWYgKG5wLmNpZHIgXHUwMDNjIGNpZHIpIHtcbiBcdFx0XHRmb3VuZCA9IGk7XG4tXHRcdH0gZWxzZSBpZiAobmV0cy1cdTAwM2VuZXRzW2ldLmNpZHIgPT0gY2lkcikge1xuLVx0XHRcdG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudCsrO1xuK1x0XHR9IGVsc2UgaWYgKG5wLmNpZHIgPT0gY2lkcikge1xuK1x0XHRcdGlmIChucC5jb3VudCBcdTAwM2MgQ0lEUl9NQVhfQ09VTlQpIHtcbitcdFx0XHRcdG5wLmNvdW50Kys7XG4rXHRcdFx0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tpXSwgbnApO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRyZXQgPSAtRU9WRVJGTE9XO1xuK1x0XHRcdH1cbiBcdFx0XHRnb3RvIHVubG9jaztcbiBcdFx0fVxuIFx0fVxuQEAgLTM1MCw2ICszOTAsNyBAQCBtdHlwZV9hZGRfY2lkcihzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBodHlwZSAqaCwgdTggY2lkciwgdTggbilcbiBcdH1cbiBcbiBcdHRtcC1cdTAwM2VsZW4gPSBsZW47XG4rXHRzZXFjb3VudF9zcGlubG9ja19pbml0KFx1MDAyNnRtcC1cdTAwM2VzZXEsIFx1MDAyNnNldC1cdTAwM2Vsb2NrKTtcbiBcdGZvciAoaSA9IDAsIGogPSAwOyBpIFx1MDAzYyBuZXRzLVx1MDAzZWxlbjsgaSsrKSB7XG4gXHRcdGlmIChpID09IGZvdW5kKSB7XG4gXHRcdFx0dG1wLVx1MDAzZW5ldHNbal0uY2lkciA9IGNpZHI7XG5AQCAtMzcxLDQyICs0MTIsNjAgQEAgbXR5cGVfYWRkX2NpZHIoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgaHR5cGUgKmgsIHU4IGNpZHIsIHU4IG4pXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbisvKipcbisgKiBtdHlwZV9kZWxfY2lkciAtIFJlbW92ZSBDSURSIGVudHJ5IGFuZCBtYWludGFpbiBhcnJheSBpbnRlZ3JpdHkuXG4rICogQHNldDogUG9pbnRlciB0byB0aGUgaXBfc2V0LlxuKyAqIEBoOiBQb2ludGVyIHRvIHRoZSBodHlwZS5cbisgKiBAY2lkcjogVGhlIENJRFIgcHJlZml4IGxlbmd0aC5cbisgKiBAbjogVGhlIGluZGV4IG9mIHRoZSBuZXRfcHJlZml4IGFycmF5IHRvIHJlbW92ZSBAY2lkciBmcm9tXG4rICpcbisgKiBJZiBDSURSIGVudHJ5IGNvdW50IGZhbGxzIHRvIDAsIHRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSBcInNoaWZ0LWxlZnRcIlxuKyAqIG9wZXJhdGlvbiBvbiBhbGwgZm9sbG93aW5nIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXJyYXkgcmVtYWluc1xuKyAqIGNvbnRpZ3VvdXMgYW5kIG1haW50YWlucyBpdHMgZGVzY2VuZGluZyBvcmRlciBieSBDSURSLiBUaGUgdmFjYXRlZCBzbG90XG4rICogYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkgaXMgemVyb2VkIG91dCAoY2lkcj0wLCBjb3VudD0wKS5cbisgKi9cbiBzdGF0aWMgdm9pZFxuIG10eXBlX2RlbF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxuIHtcbi1cdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMsICp0bXA7XG4tXHR1OCBpLCBqLCBsZW4gPSAwO1xuK1x0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cztcbitcdHN0cnVjdCBuZXRfcHJlZml4IG5wO1xuIFx0aW50IGZvdW5kO1xuK1x0dTggaSwgajtcbitcbitcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IG5ldF9wcmVmaXgpICE9IHNpemVvZih1MzIpKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gXHRuZXRzID0gX19pcHNldF9kZXJlZmVyZW5jZShoLVx1MDAzZXJuZXRzW25dKTtcbiBcdGZvciAoaSA9IDAsIGZvdW5kID0gLTE7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpKyspIHtcbi1cdFx0aWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudClcbi1cdFx0XHRsZW4rKztcbi1cdFx0aWYgKG5ldHMtXHUwMDNlbmV0c1tpXS5jaWRyID09IGNpZHIpXG4rXHRcdG5wID0gUkVBRF9PTkNFKG5ldHMtXHUwMDNlbmV0c1tpXSk7XG4rXHRcdGlmIChucC5jb3VudCBcdTAwMjZcdTAwMjYgbnAuY2lkciA9PSBjaWRyKSB7XG4rXHRcdFx0bnAuY291bnQtLTtcbiBcdFx0XHRmb3VuZCA9IGk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbiBcdH1cbiBcdGlmICh1bmxpa2VseShmb3VuZCA9PSAtMSkpXG4gXHRcdGdvdG8gdW5sb2NrO1xuIFxuLVx0bmV0cy1cdTAwM2VuZXRzW2ZvdW5kXS5jb3VudC0tO1xuLVx0aWYgKG5ldHMtXHUwMDNlbmV0c1tmb3VuZF0uY291bnQpXG4tXHRcdGdvdG8gdW5sb2NrO1xuLVx0bGVuLS07XG4tXHR0bXAgPSBremFsbG9jX2ZsZXgoKnRtcCwgbmV0cywgbGVuLCBHRlBfQVRPTUlDKTtcbi1cdGlmICghdG1wKVxuLVx0XHQvKiBMZWF2ZSBhIGhvbGUgKi9cbitcdGlmIChucC5jb3VudCkge1xuK1x0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tmb3VuZF0sIG5wKTtcbiBcdFx0Z290byB1bmxvY2s7XG4rXHR9XG4gXG4tXHR0bXAtXHUwMDNlbGVuID0gbGVuO1xuK1x0d3JpdGVfc2VxY291bnRfYmVnaW4oXHUwMDI2bmV0cy1cdTAwM2VzZXEpO1xuIFx0Zm9yIChpID0gMCwgaiA9IDA7IGkgXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBpKyspIHtcbi1cdFx0aWYgKCFuZXRzLVx1MDAzZW5ldHNbaV0uY291bnQgfHwgaSA9PSBmb3VuZClcbitcdFx0aWYgKGkgPT0gZm91bmQpXG4gXHRcdFx0Y29udGludWU7XG4tXHRcdHRtcC1cdTAwM2VuZXRzW2pdLmNpZHIgPSBuZXRzLVx1MDAzZW5ldHNbaV0uY2lkcjtcbi1cdFx0dG1wLVx1MDAzZW5ldHNbaisrXS5jb3VudCA9IG5ldHMtXHUwMDNlbmV0c1tpXS5jb3VudDtcbitcbitcdFx0bnAgPSBSRUFEX09OQ0UobmV0cy1cdTAwM2VuZXRzW2ldKTtcbitcdFx0aWYgKGkgIT0gailcbitcdFx0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tqXSwgbnApO1xuK1x0XHRqKys7XG4gXHR9XG4tXHRyY3VfYXNzaWduX3BvaW50ZXIoaC1cdTAwM2VybmV0c1tuXSwgdG1wKTtcbi1cdGtmcmVlX3JjdShuZXRzLCByY3UpO1xuK1xuK1x0d2hpbGUgKGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuKVxuK1x0XHRXUklURV9PTkNFKG5ldHMtXHUwMDNlbmV0c1tqKytdLCAoc3RydWN0IG5ldF9wcmVmaXgpe30pO1xuK1x0d3JpdGVfc2VxY291bnRfZW5kKFx1MDAyNm5ldHMtXHUwMDNlc2VxKTtcbiB1bmxvY2s6XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4gfVxuQEAgLTQ1MSw3ICs1MTAsNyBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG4ge1xuIFx0c3RydWN0IGh0eXBlICpoID0gc2V0LVx1MDAzZWRhdGE7XG4gI2lmZGVmIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xuLVx0c3RydWN0IG5ldF9wcmVmaXhlcyAqbmV0cywgKnRtcDtcbitcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHM7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgaHRhYmxlICp0O1xuIFx0c3RydWN0IGhidWNrZXQgKm47XG5AQCAtNDc3LDE3ICs1MzYsMTUgQEAgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxuIFx0fVxuICNpZmRlZiBJUF9TRVRfSEFTSF9XSVRIX05FVFNcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIElQU0VUX05FVF9DT1VOVDsgaSsrKSB7XG4tXHRcdG5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtXHUwMDNlcm5ldHNbaV0pO1xuLVx0XHR0bXAgPSBremFsbG9jX29iaigqdG1wLCBHRlBfQVRPTUlDKTtcbi1cdFx0aWYgKCF0bXApIHtcbi1cdFx0XHR1OCBqO1xuK1x0XHR1OCBqO1xuIFxuLVx0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBqKyspXG4tXHRcdFx0XHRuZXRzLVx1MDAzZW5ldHNbal0uY291bnQgPSAwO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihoLVx1MDAzZXJuZXRzW2ldLCB0bXApO1xuLVx0XHRcdGtmcmVlX3JjdShuZXRzLCByY3UpO1xuLVx0XHR9XG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZzZXQtXHUwMDNlbG9jayk7XG4rXHRcdG5ldHMgPSBpcHNldF9kZXJlZmVyZW5jZV9uZm5sKGgtXHUwMDNlcm5ldHNbaV0pO1xuK1x0XHR3cml0ZV9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzLVx1MDAzZXNlcSk7XG4rXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5ldHMtXHUwMDNlbGVuOyBqKyspXG4rXHRcdFx0V1JJVEVfT05DRShuZXRzLVx1MDAzZW5ldHNbaisrXSwgKHN0cnVjdCBuZXRfcHJlZml4KXt9KTtcbitcdFx0d3JpdGVfc2VxY291bnRfZW5kKFx1MDAyNm5ldHMtXHUwMDNlc2VxKTtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2c2V0LVx1MDAzZWxvY2spO1xuIFx0fVxuICNlbmRpZlxuIH1cbkBAIC0xMjUzLDMxICsxMzEwLDQxIEBAIG10eXBlX3Rlc3RfY2lkcnMoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbXR5cGVfZWxlbSAqZCxcbiAjaWYgSVBTRVRfTkVUX0NPVU5UID09IDJcbiBcdHN0cnVjdCBuZXRfcHJlZml4ZXMgKm5ldHMxO1xuIFx0c3RydWN0IG10eXBlX2VsZW0gb3JpZyA9ICpkO1xuK1x0dW5zaWduZWQgaW50IHNlcTE7XG4gXHRpbnQgcmV0LCBpLCBqLCBrO1xuICNlbHNlXG4gXHRpbnQgcmV0LCBpLCBqO1xuICNlbmRpZlxuLVx0dTMyIGtleSwgbXVsdGkgPSAwO1xuK1x0dW5zaWduZWQgaW50IHNlcTA7XG4rXHR1MzIga2V5LCBtdWx0aTtcbiBcdHU4IHBvcztcbiBcbiBcdHByX2RlYnVnKFwidGVzdCBieSBuZXRzXFxuXCIpO1xuIFx0cmN1X3JlYWRfbG9ja19iaCgpO1xuK3JldHJ5OlxuK1x0bXVsdGkgPSAwO1xuIFx0bmV0czAgPSByY3VfZGVyZWZlcmVuY2VfYmgoaC1cdTAwM2VybmV0c1swXSk7XG4rXHRzZXEwID0gcmVhZF9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzMC1cdTAwM2VzZXEpO1xuICNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMlxuIFx0bmV0czEgPSByY3VfZGVyZWZlcmVuY2VfYmgoaC1cdTAwM2VybmV0c1sxXSk7XG4rXHRzZXExID0gcmVhZF9zZXFjb3VudF9iZWdpbihcdTAwMjZuZXRzMS1cdTAwM2VzZXEpO1xuICNlbmRpZlxuIFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgbmV0czAtXHUwMDNlbGVuIFx1MDAyNlx1MDAyNiAhbXVsdGk7IGorKykge1xuLVx0XHRpZiAoIW5ldHMwLVx1MDAzZW5ldHNbal0uY291bnQpXG4rXHRcdHN0cnVjdCBuZXRfcHJlZml4IHAwID0gUkVBRF9PTkNFKG5ldHMwLVx1MDAzZW5ldHNbal0pO1xuK1xuK1x0XHRpZiAoIXAwLmNvdW50KVxuIFx0XHRcdGNvbnRpbnVlO1xuICNpZiBJUFNFVF9ORVRfQ09VTlQgPT0gMlxuIFx0XHRtdHlwZV9kYXRhX3Jlc2V0X2VsZW0oZCwgXHUwMDI2b3JpZyk7XG4tXHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMC1cdTAwM2VuZXRzW2pdLmNpZHIsIGZhbHNlKTtcbitcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAwLmNpZHIsIGZhbHNlKTtcbiBcdFx0Zm9yIChrID0gMDsgayBcdTAwM2MgbmV0czEtXHUwMDNlbGVuIFx1MDAyNlx1MDAyNiAhbXVsdGk7IGsrKykge1xuLVx0XHRcdGlmICghbmV0czEtXHUwMDNlbmV0c1trXS5jb3VudClcbitcdFx0XHRzdHJ1Y3QgbmV0X3ByZWZpeCBwMSA9IFJFQURfT05DRShuZXRzMS1cdTAwM2VuZXRzW2tdKTtcbitcbitcdFx0XHRpZiAoIXAxLmNvdW50KVxuIFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIG5ldHMxLVx1MDAzZW5ldHNba10uY2lkciwgdHJ1ZSk7XG4rXHRcdFx0bXR5cGVfZGF0YV9uZXRtYXNrKGQsIHAxLmNpZHIsIHRydWUpO1xuICNlbHNlXG4tXHRcdG10eXBlX2RhdGFfbmV0bWFzayhkLCBuZXRzMC1cdTAwM2VuZXRzW2pdLmNpZHIpO1xuK1x0XHRtdHlwZV9kYXRhX25ldG1hc2soZCwgcDAuY2lkcik7XG4gI2VuZGlmXG4gXHRcdGtleSA9IEhLRVkoZCwgaC1cdTAwM2Vpbml0dmFsLCB0LVx1MDAzZWh0YWJsZV9iaXRzKTtcbiBcdFx0biA9IHJjdV9kZXJlZmVyZW5jZV9iaChoYnVja2V0KHQsIGtleSkpO1xuQEAgLTEzMDIsNiArMTM2OSwxMyBAQCBtdHlwZV90ZXN0X2NpZHJzKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG10eXBlX2VsZW0gKmQsXG4gXHRcdH1cbiAjZW5kaWZcbiBcdH1cbitcbitcdGlmIChyZWFkX3NlcWNvdW50X3JldHJ5KFx1MDAyNm5ldHMwLVx1MDAzZXNlcSwgc2VxMCkpXG4rXHRcdGdvdG8gcmV0cnk7XG4rI2lmIElQU0VUX05FVF9DT1VOVCA9PSAyXG4rXHRpZiAocmVhZF9zZXFjb3VudF9yZXRyeShcdTAwMjZuZXRzMS1cdTAwM2VzZXEsIHNlcTEpKVxuK1x0XHRnb3RvIHJldHJ5O1xuKyNlbmRpZlxuIFx0cmV0ID0gMDtcbiB1bmxvY2s6XG4gXHRyY3VfcmVhZF91bmxvY2tfYmgoKTtcbkBAIC0xNzA3LDYgKzE3ODEsNyBAQCBJUFNFVF9UT0tFTihIVFlQRSwgX2NyZWF0ZSkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaXBfc2V0ICpzZXQsXG4gXHRcdFx0XHRrZnJlZShyY3VfZGVyZWZlcmVuY2VfcmF3KGgtXHUwMDNlcm5ldHNbLS1pXSkpO1xuIFx0XHRcdGdvdG8gZnJlZV9ocmVnaW9uO1xuIFx0XHR9XG4rXHRcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXHUwMDI2bmV0cy1cdTAwM2VzZXEsIFx1MDAyNnNldC1cdTAwM2Vsb2NrKTtcbiBcdFx0UkNVX0lOSVRfUE9JTlRFUihoLVx1MDAzZXJuZXRzW2ldLCBuZXRzKTtcbiBcdH1cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcbmluZGV4IGI0NGI5NWY3NjZiN2EuLmI2MDJjYzQzNTY1ZGQgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1xuQEAgLTM4LDcgKzM4LDYgQEAgTU9EVUxFX0FMSUFTKFwiaXBfc2V0X2hhc2g6bmV0LGlmYWNlXCIpO1xuICNkZWZpbmUgSFRZUEVcdFx0aGFzaF9uZXRpZmFjZVxuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4gI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX01VTFRJXG4tI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVDBcbiBcbiAjZGVmaW5lIFNUUlNDUFkoYSwgYilcdHN0cnNjcHkoYSwgYiwgSUZOQU1TSVopXG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xuaW5kZXggNjI5MTUzMmJlN2E1YS4uNjFhZjFjZTI3MTI3OSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuY1xuQEAgLTM2LDcgKzM2LDYgQEAgTU9EVUxFX0FMSUFTKFwiaXBfc2V0X2hhc2g6bmV0LHBvcnQsbmV0XCIpO1xuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xuICNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXG4gI2RlZmluZSBJUFNFVF9ORVRfQ09VTlQgMlxuLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVQwXG4gXG4gLyogSVB2NCB2YXJpYW50ICovXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzoyOC43NzQzMzIwODRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NzU3NDM2NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVBzZXQgSGFzaCBUeXBlIE9wdGltaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSEgSXQgdG91Y2hlcyBjcml0aWNhbCBmaWxlcyDigJMgYGlwX3NldF9oYXNoX2dlbi5oYCwgYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgLCBhbmQgYGlwX3NldF9oYXNoX25ldHBvcnRuZXQuY2Ag4oCTIG1lYW5pbmcgaXQgYWZmZWN0cyBob3cgYG5ldF9wcmVmaXhlc2AgYXJlIG1hbmFnZWQgd2l0aGluIHZhcmlvdXMgaXBzZXQgaGFzaCB0eXBlcy4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWJvdXQgdGhlIGhhbmRsaW5nIG9mIENJRFJzLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBgc2VxY291bnRfc3BpbmxvY2tfdCBzZXFgIGluIGBzdHJ1Y3QgbmV0X3ByZWZpeGVzYCBmb3Igc29tZSBraW5kIG9mIGluLXBsYWNlIHJlb3JkZXJpbmcgb2YgYG5ldHNgLlxuXG5NeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQncyBhaW1pbmcgdG8gb3B0aW1pemUgaG93IENJRFJzIGFyZSB0cmFja2VkLCBidXQgdGhlIGNoYW5nZSBpdHNlbGYgaXMgZmFpcmx5IGxhcmdlLCB0b3VjaGluZyBvbiB0aGUgY29yZSBvZiB0aGUgaXBzZXQgaGFzaCBmdW5jdGlvbmFsaXR5LiBGcm9tIHRoZSBkZXNjcmlwdGlvbiwgYG10eXBlX2FkZF9jaWRyYCBhbmQgYG10eXBlX2RlbF9jaWRyYCBhcmUgYmVpbmcgbW9kaWZpZWQgdG8gZG8gaW4tcGxhY2UgdXBkYXRlcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZXkgYXJlIHVwZGF0aW5nIGVudHJpZXMgaW4tcGxhY2UgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGEgbmV3IGBuZXRfcHJlZml4ZXNgIGFycmF5IOKAkyBleGNlcHQgd2hlbiBhZGRpbmcgYSBDSURSIHdoaWNoIHJlcXVpcmVzIGV4cGFuZGluZyB0aGUgYXJyYXkgYW5kLCBldmVuIHRoZW4sIGBtdHlwZV9hZGRfY2lkcmAgaXMgc3RpbGwgYWxsb2NhdGluZyBhIG5ldyBhcnJheSBpZiB0aGUgQ0lEUiBpcyBub3QgZm91bmQuIFRoZSBgbXR5cGVfZGVsX2NpZHJgIGZ1bmN0aW9uIGlzIG5vdyBzaGlmdGluZyBlbGVtZW50cyBpbi1wbGFjZSBhbmQgdXNpbmcgYHdyaXRlX3NlcWNvdW50X2JlZ2luL2VuZGAsIHdoaWNoIGlzIGdyZWF0IGZvciBjb25jdXJyZW5jeS4gQW5kIGBtdHlwZV90ZXN0X2NpZHJzYCBpcyB1c2luZyBgcmVhZF9zZXFjb3VudF9iZWdpbi9yZXRyeWAgdG8gaGFuZGxlIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucy4gVGhpcyBpcyByZWFsbHkgaW1wb3J0YW50LlxuXG5Pa2F5LCBzbyB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBhcmUgdGhlIG1hY3Jvcy90ZW1wbGF0ZXMgaW4gYGlwX3NldF9oYXNoX2dlbi5oYC4gVGhleSdyZSBpbnN0YW50aWF0ZWQgZm9yIGRpZmZlcmVudCBoYXNoIHR5cGVzIGxpa2UgYGhhc2hfbmV0aWZhY2U0X2FkZGAsIGBoYXNoX25ldGlmYWNlNF9kZWxgLCBhbmQgYGhhc2hfbmV0aWZhY2U0X3Rlc3RgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgbXR5cGVfYWRkX2NpZHJgIGlzIHVzZWQuIEkgc2VlIGl0J3MgdXNlZCB3aXRoaW4gYG10eXBlX2FkZGAgKGxpa2UgYGhhc2hfbmV0NF9hZGRgLCBgaGFzaF9uZXRwb3J0bmV0NF9hZGRgLCBldGMuKS4gUmlnaHQsIHNvIGl0IGNhbGxzIGBtdHlwZV9hZGRfY2lkcmAuIEkgbmVlZCB0byB6ZXJvIGluIG9uIGhvdyB0aGVzZSBhcmUgdXNlZC4gTGV0IG1lIGdyZXAgZm9yIGBtdHlwZV9hZGRfY2lkcmAgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oYC4gT2theSwgbGV0J3MgZ2V0IHRvIHdvcmsgYW5kIGZpbmQgdGhlIGtleSBhcmVhcyB0byBpbnZlc3RpZ2F0ZS4gVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgdGhvcm91Z2ggZnV6emluZyBjYW1wYWlnbiB0byBjYXRjaCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciByZWdyZXNzaW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNDEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzozNi41MzE3NzE3NTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA4MjcwNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXR5cGVfYWRkX2NpZHJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIxOS0jdW5kZWYgbXR5cGVfZXh0X2NsZWFudXBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIyMDojdW5kZWYgbXR5cGVfYWRkX2NpZHJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMS0jdW5kZWYgbXR5cGVfZGVsX2NpZHJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY3LSNkZWZpbmUgbXR5cGVfZXh0X2NsZWFudXBcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2V4dF9jbGVhbnVwKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjY4OiNkZWZpbmUgbXR5cGVfYWRkX2NpZHJcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZF9jaWRyKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY5LSNkZWZpbmUgbXR5cGVfZGVsX2NpZHJcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbF9jaWRyKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0zMzU9c3RydWN0IG10eXBlX3Jlc2l6ZV9hZCB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTM0NS0vKipcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjM0NjogKiBtdHlwZV9hZGRfY2lkciAtIEFkZCBhIENJRFIgZW50cnkgdG8gaGFzaCB0YWJsZSBib29ra2VlcGluZ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzQ3LSAqIEBzZXQ6IFBvaW50ZXIgdG8gdGhlIGlwX3NldFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0zNTc9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MzU4Om10eXBlX2FkZF9jaWRyKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IGh0eXBlICpoLCB1OCBjaWRyLCB1OCBuKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMzU5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg4PW10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xMTEzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBJUFNFVF9ORVRfQ09VTlQ7IGkrKylcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjExMTQ6XFx0XFx0bXR5cGVfYWRkX2NpZHIoc2V0LCBoLCBEQ0lEUl9HRVQoZC1cXHUwMDNlY2lkciwgaSksIGkpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTExNS0jZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzM6MzYuNTgyNjE2MjM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MDE1MjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIElQU0VUIFRva2VuIEluc3RhbnRpYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBob3cgdGhlc2UgSVBTRVQgZnVuY3Rpb25zIGFyZSBiZWluZyBicm91Z2h0IHRvIGxpZmUsIGFuZCBpdCdzIGhhcHBlbmluZyB0aHJvdWdoIHRoZSBgSVBTRVRfVE9LRU4oTVRZUEUsIF9hZGRfY2lkcilgIG1hY3JvLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhhdCBgTVRZUEVgIHBhcmFtZXRlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBgTVRZUEVgIHZhbHVlcyBhcmUgYmVpbmcgdXNlZCBmb3IgdGhlIGBoYXNoX25ldGlmYWNlYCBhbmQgYGhhc2hfbmV0cG9ydG5ldGAgdHlwZXMuIEtub3dpbmcgdGhvc2Ugd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZXMgYW5kIHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIGJlaW5nIGxldmVyYWdlZCBkdXJpbmcgdGhlIENJRFIgYWRkaXRpb24gcHJvY2Vzcy4gSSdtIGFzc3VtaW5nIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIHNwZWNpYWxpemF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gaGFwcGVuaW5nIGF0IGNvbXBpbGUgdGltZSBiYXNlZCBvbiBgTVRZUEVgLCBhbmQgSSBuZWVkIHRvIHNlZSBpZiB0aGF0IGltcGFjdHMgcGVyZm9ybWFuY2Ugb3IgbWVtb3J5IHVzYWdlIGluIGFueSBzaWduaWZpY2FudCB3YXkuIFRpbWUgdG8gZGlnIGludG8gdGhlIGRlZmluaXRpb25zIGFuZCBzZWUgd2hhdCdzIHdoYXQuIFRoaXMgaXMgd2hlcmUgdGhlIGRldmlsJ3MgaW4gdGhlIGRldGFpbHMsIHNvIGxldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc0OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjMzOjQwLjAyMjc3MTMzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDE3OTU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIE1UWVBFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jPTMzPU1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2JpdG1hcDppcFxcXCIpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jLTM0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jOjM1OiNkZWZpbmUgTVRZUEVcXHRcXHRiaXRtYXBfaXBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXAuYy0zNi0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXBtYWMuYz0zMz1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9iaXRtYXA6aXAsbWFjXFxcIik7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmMtMzQtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmM6MzU6I2RlZmluZSBNVFlQRVxcdFxcdGJpdG1hcF9pcG1hY1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcG1hYy5jLTM2LSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9wb3J0LmM9Mjc9TU9EVUxFX0FMSUFTKFxcXCJpcF9zZXRfYml0bWFwOnBvcnRcXFwiKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfcG9ydC5jLTI4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9wb3J0LmM6Mjk6I2RlZmluZSBNVFlQRVxcdFxcdGJpdG1hcF9wb3J0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX3BvcnQuYy0zMC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYz03MD1oYXNoX2lwNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXA0X2VsZW0gKm5leHQsIGNvbnN0IHN0cnVjdCBoYXNoX2lwNF9lbGVtICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jLTc0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYzo3NTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmMtNzYtI2RlZmluZSBIT1NUX01BU0tcXHQzMlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jPTIwMj1oYXNoX2lwNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXA2X2VsZW0gKm5leHQsIGNvbnN0IHN0cnVjdCBoYXNoX2lwNl9lbGVtICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jLTIwOC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmM6MjA5OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwNlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYy0yMTAtI2RlZmluZSBIT1NUX01BU0tcXHQxMjhcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYz03Mj1oYXNoX2lwbWFjNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYWM0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtNzctXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jOjc4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwbWFjNFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYy03OS0jZGVmaW5lIFBGXFx0XFx0NFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jPTE4MD1oYXNoX2lwbWFjNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYWM2X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtMTg5LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYzoxOTA6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfaXBtYWM2XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jLTE5MS0jZGVmaW5lIFBGXFx0XFx0Nlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYz02OT1oYXNoX2lwbWFyazRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwbWFyazRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtNzQtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYzo3NTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcG1hcms0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYy03Ni0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jPTIwNT1oYXNoX2lwbWFyazZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwbWFyazZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtMjEyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmM6MjEzOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwbWFyazZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jLTIxNC0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYz03OT1oYXNoX2lwcG9ydDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtODUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYzo4NjojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcHBvcnQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYy04Ny0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jPTI0OT1oYXNoX2lwcG9ydDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtMjU3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmM6MjU4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jLTI1OS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jPTc3PWhhc2hfaXBwb3J0aXA0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnRpcDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy04NC0vKiBDb21tb24gZnVuY3Rpb25zICovXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jOjg1OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydGlwNFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy04Ni0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmM9MjQ4PWhhc2hfaXBwb3J0aXA2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnRpcDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy0yNTYtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jOjI1NzojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcHBvcnRpcDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmMtMjU4LSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTEyMT1oYXNoX2lwcG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMTI4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6MTI5OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydG5ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTEzMC0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTM3OT1oYXNoX2lwcG9ydG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMzg3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6Mzg4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydG5ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTM4OS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYz02MT1oYXNoX21hYzRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX21hYzRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbWFjLmMtNjUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYzo2NjojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9tYWM0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYy02Ny0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTEwMj1oYXNoX25ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMTA3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM6MTA4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTEwOS0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTI3Mz1oYXNoX25ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMjgwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM6MjgxOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTI4Mi0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTEyOD1oYXNoX25ldGlmYWNlNF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTMzLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxMzQ6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfbmV0aWZhY2U0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTEzNS0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzYyPWhhc2hfbmV0aWZhY2U2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRpZmFjZTZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zNjktXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM3MDojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRpZmFjZTZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzcxLSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTEyNT1oYXNoX25ldG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldG5ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMTMwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MTMxOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldG5ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTEzMi0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTM2Mz1oYXNoX25ldG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldG5ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzcwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MzcxOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldG5ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3Mi0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM9MTE3PWhhc2hfbmV0cG9ydDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0xMjMtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6MTI0OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldHBvcnQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMTI1LSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jPTMzND1oYXNoX25ldHBvcnQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0Nl9lbGVtICpuZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMzQyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjM0MzojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRwb3J0Nlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTM0NC0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9MTMxPWhhc2hfbmV0cG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnRuZXQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzctXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM6MTM4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldHBvcnRuZXQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtMTM5LSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jPTQyNT1oYXNoX25ldHBvcnRuZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0bmV0Nl9lbGVtICpuZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDMzLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jOjQzNDojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRwb3J0bmV0Nlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTQzNS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzo0MC4wNjY5NTk0MjFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjI3MjgwOTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqTWFjcm8gTWFnaWMgYW5kIElQIFNldCBPcGVyYXRpb25zKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgaG93IHRoZXNlIElQIHNldCBmdW5jdGlvbmFsaXRpZXMgYXJlIGNyZWF0ZWQgaGluZ2VzIG9uIG1hY3Jvcy4gVGhhdCdzIGEgY2xhc3NpYyBhcHByb2FjaCwgdmVyeSBjb21tb24gZm9yIGdlbmVyYXRpbmcgcmVwZXRpdGl2ZSBjb2RlIG9yIGNvbmZpZ3VyYXRpb25zLiBNeSBwcmltYXJ5IGNvbmNlcm4sIHRoZXJlZm9yZSwgaXMgd2hlcmUgdGhlc2UgbWFjcm9zIGFyZSBkZWZpbmVkIGFuZCBob3cgdGhleSBhcmUgdXNlZCwgYmVjYXVzZSAqdGhhdCogaXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIGxvZ2ljIHdpbGwgcmVzaWRlLlxuXG5Gcm9tIG15IHVuZGVyc3RhbmRpbmcsIHRoZSByZWFsIG1lYXQgb2YgdGhlIElQIHNldCBvcGVyYXRpb24sIHRoZSBwYXJ0cyB0aGF0IGdldCBleHBvcnRlZCBhbmQgcmVnaXN0ZXJlZCB3aXRoIHRoZSBrZXJuZWwsIGFyZSB0aGUgYGlwX3NldF90eXBlYCBvcGVyYXRpb25zIHRoZW1zZWx2ZXMuIFRoYXQncyB0aGUgdml0YWwgaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBzZXRzLiBTbywgdGhlIHF1ZXN0aW9uIGlzIG5vdCAqd2hhdCogYXJlIHdlIHdvcmtpbmcgd2l0aCwgYnV0IHJhdGhlciAqaG93KiBhcmUgd2UgY3JlYXRpbmcgdGhlIGlwX3NldF90eXBlIG9iamVjdHMuXG5cbkknbGwgZGl2ZSBpbnRvIHRoZSBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCBmaWxlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY29uY3JldGUgZXhhbXBsZSBvZiBob3cgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHdvcmtzLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgbWFjcm9zIHRyYW5zbGF0ZSBpbnRvIHRoZXNlIHJlZ2lzdGVyZWQgZnVuY3Rpb25zIGFuZCB3aGF0IHRoZSBjcml0aWNhbCBgaXBfc2V0X3R5cGVgIHN0cnVjdHVyZSBsb29rcyBsaWtlIGluIHByYWN0aWNlLiBPbmNlIEkgdW5kZXJzdGFuZCB0aGF0LCBJIGNhbiBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb25hbGl0eSBtb3JlIGdlbmVyYWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NjksIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzo0NC42OTQyNDI1NDFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyMjQxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X3R5cGVfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz01MTE9aGFzaF9uZXRpZmFjZV9pbml0KHZvaWQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTUxMi17XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjUxMzpcXHRyZXR1cm4gaXBfc2V0X3R5cGVfcmVnaXN0ZXIoXFx1MDAyNmhhc2hfbmV0aWZhY2VfdHlwZSk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTUxNC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjMzOjQ0LjczOTQ3MTgzOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTYwNjAzMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyB0aGUgYGhhc2hfbmV0aWZhY2VfdHlwZWAgT3BlcmF0aW9ucyoqXG5cbkFscmlnaHQsIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgYGhhc2hfbmV0aWZhY2VfdHlwZWAgc3RydWN0dXJlLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIGEga2V5IGRhdGEgc3RydWN0dXJlIGhhbmRsaW5nIG5ldHdvcmsgaW50ZXJmYWNlIHR5cGVzLiBUaGUgY29yZSBvcGVyYXRpb25zIGRlZmluZWQgYXJlIGBrYWR0YCwgYHVhZHRgLCBgYWRkYCwgYGRlbGAsIGFuZCBgdGVzdGAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hhdCBzcGVjaWZpYyBmdW5jdGlvbnMgYXJlICpib3VuZCogdG8gZWFjaCBvZiB0aGVzZSBvcGVyYXRpb25zPyBga2FkdGAgYW5kIGB1YWR0YCBzdWdnZXN0IGtlcm5lbCBhbmQgdXNlci1zcGFjZSBvcGVyYXRpb25zIHJlc3BlY3RpdmVseSwgb24gdGhlIHR5cGUgdGFibGUsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGF0IGVhY2ggbGV2ZWwuICdBZGQnIGFuZCAnRGVsJyBvZiBjb3Vyc2UsIGFyZSB0YWJsZSBtYW5hZ2VtZW50IG9wZXJhdGlvbnMuIEkgcmVhbGx5IG5lZWQgdG8gZHJpbGwgZG93biB0byB1bmRlcnN0YW5kIHdoYXQgdGhleSBkby4gQW5kIG5hdHVyYWxseSwgJ3Rlc3QnIGluZGljYXRlcyBzb21lIGZvcm0gb2YgdmFsaWRhdGlvbiBvciBjaGVja2luZyBvbiB0aGUgZGF0YS4gSSBuZWVkIHRvIG5vdyBleGFtaW5lIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIGVhY2ggb2YgdGhvc2UgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIG1lY2hhbmljcyBvZiB0aGlzIG1vZHVsZS4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBpbnRlcmVzdGluZyBzdHVmZiBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NjEsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzo0OC4yOTU1MzM5NDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MDQ1NDIyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX25ldGlmYWNlX3R5cGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz00MTY9aGFzaF9uZXRpZmFjZTZfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNDY4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzo0Njk6c3RhdGljIHN0cnVjdCBpcF9zZXRfdHlwZSBoYXNoX25ldGlmYWNlX3R5cGUgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNDcwLVxcdC5uYW1lXFx0XFx0PSBcXFwiaGFzaDpuZXQsaWZhY2VcXFwiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTUxMT1oYXNoX25ldGlmYWNlX2luaXQodm9pZClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNTEyLXtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6NTEzOlxcdHJldHVybiBpcF9zZXRfdHlwZV9yZWdpc3RlcihcXHUwMDI2aGFzaF9uZXRpZmFjZV90eXBlKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNTE0LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz01MTc9aGFzaF9uZXRpZmFjZV9maW5pKHZvaWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtNTE5LVxcdHJjdV9iYXJyaWVyKCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjUyMDpcXHRpcF9zZXRfdHlwZV91bnJlZ2lzdGVyKFxcdTAwMjZoYXNoX25ldGlmYWNlX3R5cGUpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy01MjEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzo0OC41NjU5OTI4NzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4NTM4NjYxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYGlwX3NldF9oYXNoX25ldGlmYWNlYCBDb2RlKipcblxuT2theSwgSSdtIHRoaW5raW5nIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYGlwX3NldF9oYXNoX25ldGlmYWNlYCBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDQ2OSBvZiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jYC4gTXkgaHVuY2ggaXMgdGhhdCB0aGVyZSdzIHNvbWV0aGluZyBzcGVjaWZpYyB0aGVyZSBJJ20gbG9va2luZyBmb3IgLSBtYXliZSByZWxhdGVkIHRvIGEgcmVjZW50IGJ1ZyByZXBvcnQgb3IgcGVyZm9ybWFuY2UgaXNzdWUgSSd2ZSBiZWVuIHRyYWNraW5nLCBvciBwZXJoYXBzIEknbSB0cnlpbmcgdG8gb3B0aW1pemUgYSBzcGVjaWZpYyBmbG93LiBUaW1lIHRvIGRyaWxsIGRvd24uIEknbSBwcm9iYWJseSBsb29raW5nIGZvciB0aGUgZnVuY3Rpb24gd2hlcmUgdGhlIGludGVyZmFjZSBvciBuZXR3b3JrIGFkZHJlc3MgaGFzaGluZyBpcyBpbXBsZW1lbnRlZC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGtleSBpcyBjb25zdHJ1Y3RlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBoYXNoIHZhbHVlcyBhcmUgZ2VuZXJhdGVkIGZvciBkaWZmZXJlbnQgbmV0aWZhY2Uga2V5cy4gS25vd2luZyBob3cgdGhpcyBwYXJ0aWN1bGFyIGhhc2ggc2V0IHR5cGUgd29ya3MgaW4gcmVsYXRpb24gdG8gaXRzIGtleSBjb25zdHJ1Y3Rpb24gaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW9yIGF0IHNjYWxlLiBJJ20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZyBpbi4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjcwNSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjMzOjUzLjE1MTM4MjU0NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDYwOlxcdFxcdFxcdFxcdGUud2lsZGNhcmQgPSAxO1xcbiA0NjE6XFx0XFx0fVxcbiA0NjI6XFx0XFxuIDQ2MzpcXHRcXHRyZXQgPSBhZHRmbihzZXQsIFxcdTAwMjZlLCBcXHUwMDI2ZXh0LCBcXHUwMDI2ZXh0LCBmbGFncyk7XFxuIDQ2NDpcXHRcXG4gNDY1OlxcdFxcdHJldHVybiBpcF9zZXRfZW5vbWF0Y2gocmV0LCBmbGFncywgYWR0LCBzZXQpID8gLXJldCA6XFxuIDQ2NjpcXHRcXHQgICAgICAgaXBfc2V0X2VleGlzdChyZXQsIGZsYWdzKSA/IDAgOiByZXQ7XFxuIDQ2NzpcXHR9XFxuIDQ2ODpcXHRcXG4gNDY5OlxcdHN0YXRpYyBzdHJ1Y3QgaXBfc2V0X3R5cGUgaGFzaF9uZXRpZmFjZV90eXBlIF9fcmVhZF9tb3N0bHkgPSB7XFxuIDQ3MDpcXHRcXHQubmFtZVxcdFxcdD0gXFxcImhhc2g6bmV0LGlmYWNlXFxcIixcXG4gNDcxOlxcdFxcdC5wcm90b2NvbFxcdD0gSVBTRVRfUFJPVE9DT0wsXFxuIDQ3MjpcXHRcXHQuZmVhdHVyZXNcXHQ9IElQU0VUX1RZUEVfSVAgfCBJUFNFVF9UWVBFX0lGQUNFIHxcXG4gNDczOlxcdFxcdFxcdFxcdCAgSVBTRVRfVFlQRV9OT01BVENILFxcbiA0NzQ6XFx0XFx0LmRpbWVuc2lvblxcdD0gSVBTRVRfRElNX1RXTyxcXG4gNDc1OlxcdFxcdC5mYW1pbHlcXHRcXHQ9IE5GUFJPVE9fVU5TUEVDLFxcbiA0NzY6XFx0XFx0LnJldmlzaW9uX21pblxcdD0gSVBTRVRfVFlQRV9SRVZfTUlOLFxcbiA0Nzc6XFx0XFx0LnJldmlzaW9uX21heFxcdD0gSVBTRVRfVFlQRV9SRVZfTUFYLFxcbiA0Nzg6XFx0XFx0LmNyZWF0ZV9mbGFnc1tJUFNFVF9UWVBFX1JFVl9NQVhdID0gSVBTRVRfQ1JFQVRFX0ZMQUdfQlVDS0VUU0laRSxcXG4gNDc5OlxcdFxcdC5jcmVhdGVcXHRcXHQ9IGhhc2hfbmV0aWZhY2VfY3JlYXRlLFxcbiA0ODA6XFx0XFx0LmNyZWF0ZV9wb2xpY3lcXHQ9IHtcXG4gNDgxOlxcdFxcdFxcdFtJUFNFVF9BVFRSX0hBU0hTSVpFXVxcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4gNDgyOlxcdFxcdFxcdFtJUFNFVF9BVFRSX01BWEVMRU1dXFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbiA0ODM6XFx0XFx0XFx0W0lQU0VUX0FUVFJfSU5JVFZBTF1cXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuIDQ4NDpcXHRcXHRcXHRbSVBTRVRfQVRUUl9CVUNLRVRTSVpFXVxcdD0geyAudHlwZSA9IE5MQV9VOCB9LFxcbiA0ODU6XFx0XFx0XFx0W0lQU0VUX0FUVFJfUkVTSVpFXVxcdD0geyAudHlwZSA9IE5MQV9VOCAgfSxcXG4gNDg2OlxcdFxcdFxcdFtJUFNFVF9BVFRSX1BST1RPXVxcdD0geyAudHlwZSA9IE5MQV9VOCB9LFxcbiA0ODc6XFx0XFx0XFx0W0lQU0VUX0FUVFJfVElNRU9VVF1cXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuIDQ4ODpcXHRcXHRcXHRbSVBTRVRfQVRUUl9DQURUX0ZMQUdTXVxcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4gNDg5OlxcdFxcdH0sXFxuIDQ5MDpcXHRcXHQuYWR0X3BvbGljeVxcdD0ge1xcbiA0OTE6XFx0XFx0XFx0W0lQU0VUX0FUVFJfSVBdXFx0XFx0PSB7IC50eXBlID0gTkxBX05FU1RFRCB9LFxcbiA0OTI6XFx0XFx0XFx0W0lQU0VUX0FUVFJfSVBfVE9dXFx0PSB7IC50eXBlID0gTkxBX05FU1RFRCB9LFxcbiA0OTM6XFx0XFx0XFx0W0lQU0VUX0FUVFJfSUZBQ0VdXFx0PSB7IC50eXBlID0gTkxBX05VTF9TVFJJTkcsXFxuIDQ5NDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgLmxlbiAgPSBJRk5BTVNJWiAtIDEgfSxcXG4gNDk1OlxcdFxcdFxcdFtJUFNFVF9BVFRSX0NBRFRfRkxBR1NdXFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbiA0OTY6XFx0XFx0XFx0W0lQU0VUX0FUVFJfQ0lEUl1cXHQ9IHsgLnR5cGUgPSBOTEFfVTggfSxcXG4gNDk3OlxcdFxcdFxcdFtJUFNFVF9BVFRSX1RJTUVPVVRdXFx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbiA0OTg6XFx0XFx0XFx0W0lQU0VUX0FUVFJfTElORU5PXVxcdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4gNDk5OlxcdFxcdFxcdFtJUFNFVF9BVFRSX0JZVEVTXVxcdD0geyAudHlwZSA9IE5MQV9VNjQgfSxcXG4gNTAwOlxcdFxcdFxcdFtJUFNFVF9BVFRSX1BBQ0tFVFNdXFx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxcbiA1MDE6XFx0XFx0XFx0W0lQU0VUX0FUVFJfQ09NTUVOVF1cXHQ9IHsgLnR5cGUgPSBOTEFfTlVMX1NUUklORyxcXG4gNTAyOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAubGVuICA9IElQU0VUX01BWF9DT01NRU5UX1NJWkUgfSxcXG4gNTAzOlxcdFxcdFxcdFtJUFNFVF9BVFRSX1NLQk1BUktdXFx0PSB7IC50eXBlID0gTkxBX1U2NCB9LFxcbiA1MDQ6XFx0XFx0XFx0W0lQU0VUX0FUVFJfU0tCUFJJT11cXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuIDUwNTpcXHRcXHRcXHRbSVBTRVRfQVRUUl9TS0JRVUVVRV1cXHQ9IHsgLnR5cGUgPSBOTEFfVTE2IH0sXFxuIDUwNjpcXHRcXHR9LFxcbiA1MDc6XFx0XFx0Lm1lXFx0XFx0PSBUSElTX01PRFVMRSxcXG4gNTA4OlxcdH07XFxuIDUwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzM6NTMuMTUxNDgzMjY0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTIxODMxNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknbSB0aGlua2luZyBhYm91dCBpdDpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgSVAgU2V0IEhhc2ggQ3JlYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgaG93IElQIHNldHMgYXJlIGNyZWF0ZWQsIHNwZWNpZmljYWxseSB0aGUgaGFzaCBpbXBsZW1lbnRhdGlvbi4gIEkga25vdyB0aGUgY29yZSBmdW5jdGlvbnMgYXJlbid0IGRpcmVjdGx5IHdyaXR0ZW4gb3V0LCB0aGV5J3JlIGdlbmVyYXRlZCB2aWEgbWFjcm9zLiBUaGUga2V5IGhlcmUgaXMgdG8gZmluZCB0aGUgbWFjcm8gZGVmaW5pdGlvbnMuIFRoZSBwbGFjZSB0byBzdGFydCBpcyBgaXBfc2V0X2hhc2hfZ2VuLmhgLCB0aGF0J3Mgd2hlcmUgdGhlIG1hZ2ljIHByb2JhYmx5IGhhcHBlbnMuIE5vdywgdGhlIG1haW4gY3JlYXRpb24gZnVuY3Rpb24gaXMgYGhhc2hfbmV0aWZhY2VfY3JlYXRlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93ICppdCogd29ya3MgYW5kIGhvdyB0aGF0IG1hY3JvIGdlbmVyYXRpb24gcHJvY2VzcyBhZmZlY3RzIGl0LiBMZXQncyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDgyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozMzo1Ni40NDM2Njg1OTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjc0OTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhc2hfbmV0aWZhY2VfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz00Njk9c3RhdGljIHN0cnVjdCBpcF9zZXRfdHlwZSBoYXNoX25ldGlmYWNlX3R5cGUgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00NzgtXFx0LmNyZWF0ZV9mbGFnc1tJUFNFVF9UWVBFX1JFVl9NQVhdID0gSVBTRVRfQ1JFQVRFX0ZMQUdfQlVDS0VUU0laRSxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6NDc5OlxcdC5jcmVhdGVcXHRcXHQ9IGhhc2hfbmV0aWZhY2VfY3JlYXRlLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy00ODAtXFx0LmNyZWF0ZV9wb2xpY3lcXHQ9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzM6NTYuNDg3MzQ3ODIyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODMzOTQ4NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIGBoYXNoX25ldGlmYWNlX2NyZWF0ZWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGhhc2hfbmV0aWZhY2VfY3JlYXRlYCBmdW5jdGlvbiwgYW5kIGl0J3MgbG9va2luZyBhIGxpdHRsZS4uLmdlbmVyYXRlZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0aGF0IGl0J3MgcHJvYmFibHkgY29taW5nIGZyb20gc29tZXRoaW5nIGxpa2UgYSBtYWNybywgcHJvYmFibHkgaW4gdGhlIGBpcF9zZXRfaGFzaF9nZW4uaGAgZmlsZS4gSSd2ZSBnb3QgYSBmZWVsaW5nIGl0J3MgdGhlIGBJUFNFVF9UT0tFTihIVFlQRSwgX2NyZWF0ZSlgIG1hY3JvIHRoYXQncyBkb2luZyB0aGUgZGlydHkgd29yay4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gVGltZSB0byBjcmFjayBvcGVuIGBpcF9zZXRfaGFzaF9nZW4uaGAgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgdW5kZXIgdGhlIGhvb2Qgb2YgYElQU0VUX1RPS0VOKEhUWVBFLCBfY3JlYXRlKWAuIExldCdzIHNlZSBob3cgdGhpcyB0aGluZyBpcyBwdXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDc4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MDAuNTcwNzQ0ODc4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzIyNzY1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJUFNFVF9UT0tFTlxcXFwoSFRZUEUsIF9jcmVhdGVcXFxcKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTY1Mj1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoxNjUzOklQU0VUX1RPS0VOKEhUWVBFLCBfY3JlYXRlKShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpcF9zZXQgKnNldCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2NTQtXFx0XFx0XFx0ICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHUzMiBmbGFncylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MDAuNjEzOTc3NzM3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MDgxMjE3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHZW5lcmF0ZWQgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSd2ZSBnZW5lcmF0ZWQgdGhlc2UgZnVuY3Rpb25zOiBgaGFzaF9uZXRpZmFjZTRfYWRkYCwgYGhhc2hfbmV0aWZhY2U0X2RlbGAsIGBoYXNoX25ldGlmYWNlNF90ZXN0YCwgYGhhc2hfbmV0aWZhY2U2X2FkZGAsIGBoYXNoX25ldGlmYWNlNl9kZWxgLCBgaGFzaF9uZXRpZmFjZTZfdGVzdGAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIFRoZW4sIHdlIGhhdmUgYGhhc2hfbmV0cG9ydG5ldDRfYWRkYCwgYGhhc2hfbmV0cG9ydG5ldDRfZGVsYCwgYGhhc2hfbmV0cG9ydG5ldDRfdGVzdGAsIGBoYXNoX25ldHBvcnRuZXQ2X2FkZGAsIGBoYXNoX25ldHBvcnRuZXQ2X2RlbGAsIGFuZCBgaGFzaF9uZXRwb3J0bmV0Nl90ZXN0YC4gUmlnaHQsIGFsbCB0aGUgc3RhbmRhcmQgaGFzaCBmdW5jdGlvbnMgZm9yIG5ldHdvcmsgaW50ZXJmYWNlcyBhbmQgcG9ydHMgYWNyb3NzIElQdjQgYW5kIElQdjYuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBJIHNlZSBgbXR5cGVfYWRkX2NpZHJgIGFuZCBgbXR5cGVfZGVsX2NpZHJgIGFyZSBpbiBgaXBfc2V0X2hhc2hfZ2VuLmhgLCBtYXJrZWQgYXMgc3RhdGljIGlubGluZSBvciBzdGF0aWMuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayDigJMgYXJlIHRoZXkgKmV4cG9ydGVkKiBvciBqdXN0IGxvY2FsPyBIbW0sIHllYWgsIHRoZXkncmUgZGVmaW5pdGVseSBzdGF0aWMuIE9rYXksIHNvIHRoZXNlIGFyZSBpbnRlcm5hbCBoZWxwZXJzLlxuXG5Ob3csIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgdGhlIGZ1bmN0aW9ucyB0aGF0ICp1c2UqIHRoZXNlIHN0YXRpYyBoZWxwZXJzIGFyZSBgbXR5cGVfYWRkYCBhbmQgYG10eXBlX2RlbGAuIEhtbSwgcmlnaHQuLi4gYW5kIGlzIGBtdHlwZV9hZGRgIGdlbmVyYXRlZCBpbnRvIHNvbWV0aGluZyBsaWtlIGBoYXNoX25ldGlmYWNlNF9hZGRgLi4uIEkgbmVlZCB0byBiZSBzdXJlLiBMZXQgbWUgdHJhY2UgYmFjayBhbmQgY2hlY2sgaG93IGV4YWN0bHkgYG10eXBlX2FkZGAgaXMgZGVmaW5lZCBpbiByZWxhdGlvbiB0byB0aGUgY29kZSBnZW5lcmF0aW9uLiBUaGF04oCZcyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg4MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDowNi4wMjIxMDI0NTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2ODQzMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10eXBlX2FkZFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NDA9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NzQxOm10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtNzQyLVxcdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc1Mj1tdHlwZV9yZXNpemUoc3RydWN0IGlwX3NldCAqc2V0LCBib29sIHJldHJpZWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNC1cXHRcXHRpZiAoeC1cXHUwMDNlYWQgPT0gSVBTRVRfQUREKSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo5MDU6XFx0XFx0XFx0bXR5cGVfYWRkKHNldCwgXFx1MDAyNngtXFx1MDAzZWQsIFxcdTAwMjZ4LVxcdTAwM2VleHQsIFxcdTAwMjZ4LVxcdTAwM2VtZXh0LCB4LVxcdTAwM2VmbGFncyk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC05MDYtXFx0XFx0fSBlbHNlIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg3PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjk4ODptdHlwZV9hZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTk4OS1cXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjA2LjEwODk1NDQyOVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE2NDg1ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhpcyBgbXR5cGVfYWRkYCBNYWNybyoqXG5cbk9rYXksIHNvIEkgc2VlIGBtdHlwZV9hZGRgIGFuZCBteSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMsIFwiSG1tLCB3aGF0J3MgZ29pbmcgb24gaGVyZT9cIiBJdCdzIGNsZWFybHkgYSBtYWNybywgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBleHBhbnNpb24uIFRoZSB0ZXh0IHN0YXRlcyBgbXR5cGVfYWRkYCBpcyBkZWZpbmVkIGFzIGBJUFNFVF9UT0tFTihNVFlQRSwgX2FkZClgLiBNeSBpbnN0aW5jdCBpcyB0byBjb25maXJtIHRoYXQgZXhwYW5zaW9uIGV4aXN0cyB3aXRoaW4gdGhlIGNvZGUuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIHRoYXQgYCNkZWZpbmUgbXR5cGVfYWRkIElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAgc3RhdGVtZW50LiBUaGF0J3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgd2hhdCBgbXR5cGVfYWRkYCBhY3R1YWxseSByZXByZXNlbnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IG1hY3JvIHN1YnN0aXR1dGlvbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MTU4OTUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDowOS42MjU0NDQyMjNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTMzMDI5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIG10eXBlX2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTg4PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY3LSNkZWZpbmUgbXR5cGVfZXh0X2NsZWFudXBcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2V4dF9jbGVhbnVwKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjY4OiNkZWZpbmUgbXR5cGVfYWRkX2NpZHJcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZF9jaWRyKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjY5LSNkZWZpbmUgbXR5cGVfZGVsX2NpZHJcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbF9jaWRyKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzktXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyODA6I2RlZmluZSBtdHlwZV9hZGRcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FkZClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI4MS0jZGVmaW5lIG10eXBlX2RlbFxcdFxcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVsKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDowOS43MzA3Nzk3N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODIwOTYxODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRlY29kaW5nIHRoZSBgSVBTRVRfVE9LRU5gIE1hY3JvKipcblxuUmlnaHQsIHNvIGBtdHlwZV9hZGRgIGlzIGRlZmluZWQgYXMgYElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAuIFRoYXQncyB0aGUga2V5LiBTbywgZm9yIHRoZSBgaGFzaF9uZXRpZmFjZTRgIHR5cGUsIHRoZSBjb3JyZXNwb25kaW5nIFwiYWRkXCIgZnVuY3Rpb24gbXVzdCBiZSBgaGFzaF9uZXRpZmFjZTRfYWRkYC4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gQW5kIGJ5IGV4dGVuc2lvbiwgYGhhc2hfbmV0cG9ydG5ldDRgIHdvdWxkIHRoZW4gaGF2ZSBpdHMgXCJhZGRcIiBmdW5jdGlvbiBhcyBgaGFzaF9uZXRwb3J0bmV0NF9hZGRgLiBTaW1wbGUsIGNvbnNpc3RlbnQgbmFtaW5nIGNvbnZlbnRpb24sIG5vdGhpbmcgdW5leHBlY3RlZCBoZXJlLiBIb2xkIG9uIHRob3VnaCwgSSBzZWUgdGhpcyBwYXRjaCBhbHNvIHRvdWNoZXMgYG10eXBlX3Rlc3RfY2lkcnNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHBpZWNlIG9mIGl0LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMuIExldCdzIHNlZSB3aGF0IHRoYXQgb25lJ3MgYWxsIGFib3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQxOCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjEzLjU1MTc0NDE4NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYyNzQ3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBtdHlwZV90ZXN0X2NpZHJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xODg9c3RhdGljIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciB6ZXJvbWFzayA9IHt9O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yODEtI2RlZmluZSBtdHlwZV9kZWxcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2RlbClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjI4MjojZGVmaW5lIG10eXBlX3Rlc3RfY2lkcnNcXHRJUFNFVF9UT0tFTihNVFlQRSwgX3Rlc3RfY2lkcnMpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yODMtI2RlZmluZSBtdHlwZV90ZXN0XFx0XFx0SVBTRVRfVE9LRU4oTVRZUEUsIF90ZXN0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDoxMy42MzgwMjM1NDFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMxNDgzODI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIElQIFNldCBIYXNoIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSdtIHNlZWluZyBhIHBhdHRlcm4gd2l0aCB0aGVzZSBgaGFzaF9uZXRpZmFjZTRgIGZ1bmN0aW9uczogYGhhc2hfbmV0aWZhY2U0X3Rlc3RfY2lkcnNgLCBgaGFzaF9uZXRpZmFjZTRfdGVzdGAsIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBhbmQgYGhhc2hfbmV0aWZhY2U0X2RlbGAuIFRoZXkncmUgYWxsIHZhcmlhdGlvbnMgb24gdGVzdGluZywgYWRkaW5nLCBhbmQgZGVsZXRpbmcgbmV0d29yayBpbnRlcmZhY2VzLCBhbmQgdXNpbmcgQ0lEUnMsIHByZXN1bWFibHkgZm9yIElQdjQuIEFuZCwgaXQgbG9va3MgbGlrZSB0aGlzIHNhbWUgbmFtaW5nIHNjaGVtZSBpcyBhcHBsaWVkIHRvIHRoZSBgbmV0cG9ydG5ldDRgLCBgbmV0NGAsIGBuZXRuZXQ0YCwgYW5kIGBuZXRwb3J0NGAgdmFyaWFudHMuIEl0J3MgYSBjbGVhbiBhbmQgY29uc2lzdGVudCBhcHByb2FjaCwgZ29vZC5cblxuTm93LCBob2xkIG9uLi4uIGBJUF9TRVRfSEFTSF9XSVRIX05FVFNgIGlzIGRlZmluZWQgZm9yICptdWx0aXBsZSogaGFzaCB0eXBlcz8gVGhhdCdzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGljaCBvbmVzLCBzcGVjaWZpY2FsbHksIGFyZSBsZXZlcmFnaW5nIHRoaXMuIEkgbmVlZCB0byBjaGVjayB3aGljaCBzcGVjaWZpYyBoYXNoIHR5cGVzIHV0aWxpemUgdGhpcyBtYWNyby4gVGltZSB0byBkaWcgYSBiaXQgZGVlcGVyIGFuZCBzZWUgd2hpY2ggc3BlY2lmaWMgaGFzaCB0eXBlcyByZXF1aXJlIHRoYXQgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY5MDMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MTkuOTUyODY0NDY5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzE0MTU2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTM2PU1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2hhc2g6aXAscG9ydCxuZXRcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtNDQtICovXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYzo0NTojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU19QQUNLRURcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTQ2LSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6NDc6I2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVFNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTQ4LVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYz0zMz1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOm5ldFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0zNi0jZGVmaW5lIEhUWVBFXFx0XFx0aGFzaF9uZXRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjM3OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0zOC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0zNT1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOm5ldCxpZmFjZVxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTM4LSNkZWZpbmUgSFRZUEVcXHRcXHRoYXNoX25ldGlmYWNlXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM5OiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTQwLSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9NVUxUSVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0zMj1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9oYXNoOm5ldCxuZXRcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzUtI2RlZmluZSBIVFlQRVxcdFxcdGhhc2hfbmV0bmV0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYzozNjojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzctI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVE1BU0tcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jPTM1PU1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2hhc2g6bmV0LHBvcnRcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTM5LSNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9QUk9UT1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjQwOiNkZWZpbmUgSVBfU0VUX0hBU0hfV0lUSF9ORVRTXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtNDEtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy00NS0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYzo0NjojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU19QQUNLRURcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy00Ny1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jPTMyPU1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2hhc2g6bmV0LHBvcnQsbmV0XFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0zNi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfUFJPVE9cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzozNzojZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUU1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTM4LSNkZWZpbmUgSVBTRVRfTkVUX0NPVU5UIDJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MjAuMDM2MDEwMzE3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMzk0MjgzNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIEhhc2ggU2V0IENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGVzZSBoYXNoIHNldCB0eXBlcyB0aGF0IHV0aWxpemUgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2A6IHNwZWNpZmljYWxseSBgaGFzaF9pcHBvcnRuZXRgLCBgaGFzaF9uZXRgLCBgaGFzaF9uZXRpZmFjZWAsIGBoYXNoX25ldG5ldGAsIGBoYXNoX25ldHBvcnRgLCBhbmQgYGhhc2hfbmV0cG9ydG5ldGAuIEl0IGxvb2tzIGxpa2UgdGhlIHByaW1hcnkgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBgI2RlZmluZSBJUF9TRVRfSEFTSF9XSVRIX05FVDBgIG1hY3JvIGZyb20gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2h5P1wiIFdoYXQncyB0aGUgZHJpdmluZyBmb3JjZSBiZWhpbmQgdGhpcyByZW1vdmFsP1xuXG5BaGEsIEkgc2VlIHRoYXQgYElQX1NFVF9IQVNIX1dJVEhfTkVUMGAgd2FzIGxpbmtlZCB0byB0aGUgaGFuZGxpbmcgb2YgYC8wYCBuZXR3b3Jrcy4gU28sIHRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IGhvdyBhcmUgYC8wYCBuZXR3b3JrcyBiZWluZyBoYW5kbGVkIG5vdz8gSXMgaXQgbmF0aXZlbHkgc3VwcG9ydGVkLCBvciBoYXMgdGhlIGxvZ2ljIGNoYW5nZWQgc2lnbmlmaWNhbnRseT9cblxuTGV0IG1lIGxvb2sgYXQgdGhlIGNvbW1lbnRzLCBhcyB0aGV5IG9mdGVuIHByb3ZpZGUgdGhlIGNsdWUgaGVyZS4gQWgsIGhlcmUgaXQgaXM6IHRoZSBjb21tZW50IG1lbnRpb25zIHRoZSBgY2lkcmAgZmllbGQgaW4gYHN0cnVjdCBuZXRfcHJlZml4YCBhbmQgaXRzIHJvbGUgaW4gXCJuZXR3b3JrIGNpZHIgc2l6ZSBib29rIGtlZXBpbmdcIi4gVGhlIGNvZGUgc2F5cyB0aGUgYGNpZHJgIGlzIG5vdyB1c2luZyBgdTMyIGNpZHI6ODtgIGluc3RlYWQgb2YgYSBzaW1wbGUgYHU4IGNpZHI7YCBUaGlzIHN1Z2dlc3RzIGEgY2hhbmdlIGluIGhvdyB0aGlzIGNpZHIgdmFsdWUgaXMgc3RvcmVkLiBQcmV2aW91c2x5LCB0aGUgY29tbWVudCBzYWlkIHRoZSBjaWRyIHZhbHVlIHdhcyBgcmVhbCBjaWRyICsgMWAgdG8gYWNjb3VudCBmb3IgYC8wYCBuZXR3b3Jrcy4gXG5cbk9rYXksIGlmIGBjaWRyYCBpcyBzdGlsbCBgcmVhbCBjaWRyICsgMWAsIHRoZW4gdGhlIHJlbW92YWwgb2YgYElQX1NFVF9IQVNIX1dJVEhfTkVUMGAgbWlnaHQgbm90IG1ha2Ugc2Vuc2UuIEJ1dCB0aGUgcGF0Y2ggKmRvZXMqIHJlbW92ZSBpdC4gU28sIHRoYXQgbWVhbnMgaXQncyBwcm9iYWJseSBubyBsb25nZXIgdGhlIGNhc2UuIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBXYWl0IGEgbWludXRlLi4uIHRoZSBwYXRjaCBhbHNvIHJlbW92ZXMgYElQX1NFVF9IQVNIX1dJVEhfTkVUMGAgZnJvbSB0aG9zZSBzcGVjaWZpYyBmaWxlcy4gV2hlcmUgZWxzZSBpcyBpdCB1c2VkPyBJJ2xsIGNoZWNrIGBpcF9zZXRfaGFzaF9nZW4uaGAgYmVjYXVzZSB0aGF0J3MgYSBjZW50cmFsIGhlYWRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyNDIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MjguMDc1NDQxNjgzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTQwMzc0OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVBfU0VUX0hBU0hfV0lUSF9ORVQwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDoyOC4xNDQ4NTMwNjFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc2MDY1NjkwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiBjb25zY2lvdXNuZXNzOlxuXG4qKkludmVzdGlnYXRpbmcgYSBSZW1vdmVkIFN5bWJvbCoqXG5cbkFscmlnaHQsIHRoaXMgaXMgaW50ZXJlc3RpbmcuIFRoZSBjb2RlIEkgd2FzIHJldmlld2luZyBzZWVtcyB0byBoYXZlIGNvbXBsZXRlbHkgcmVtb3ZlZCBgSVBfU0VUX0hBU0hfV0lUSF9ORVQwYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgZ29uZS4uLiBidXQgKndoeSo/XCIgTGV0J3MgbWFrZSBzdXJlIHRoaXMgd2Fzbid0IHNvbWUgaW5hZHZlcnRlbnQgZGVsZXRpb24gdGhhdCBicmVha3Mgc29tZXRoaW5nIGVsc2UuIEZpcnN0LCBsZXQncyBydW4gYSBxdWljayBnbG9iYWwgc2VhcmNoLiBJJ2xsIHVzZSBgZ3JlcGAgdG8gc2NhbiB0aGUgY29kZWJhc2UgZm9yIGFueSByZW1haW5pbmcgdXNlcyBvZiB0aGF0IHN5bWJvbC4gKlJpZ2h0KiwgaXQncyBnb29kIHRoYXQgdGhlIGBncmVwYCByZXR1cm5lZCBubyBtYXRjaGVzLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoaXN0b3J5IG9mIHRoaXMuIFdhcyB0aGlzIHN5bWJvbCBvbmx5IGV2ZXIgdXNlZCBpbiB0aG9zZSBzcGVjaWZpYyBmaWxlcywgb3Igd2FzIGl0IHVzZWQgaW4gb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUgYXQgc29tZSBwb2ludCB0aGF0IGhhdmUgYmVlbiByZW1vdmVkPyBMZXQncyBjaGVjayB0aGUgaGlzdG9yeSBvZiBgaXBfc2V0X2hhc2hfZ2VuLmhgIHRvIHNlZSBpZiB0aGUgc3ltYm9sIHdhcyByZW1vdmVkIGluIGEgcHJpb3IgY29tbWl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTEwNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjMyLjkwNTUxMzU1NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0MDkzNDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklQX1NFVF9IQVNIX1dJVEhfTkVUMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MzIuOTU5OTMwMjc1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4OTc4MTc4MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgUmVtb3ZhbCBvZiBgSVBfU0VUX0hBU0hfV0lUSF9ORVQwYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgbWFjcm8sIGBJUF9TRVRfSEFTSF9XSVRIX05FVDBgLCB3YXMgdXNlZCBiZWZvcmUgaXQgd2FzIHJpcHBlZCBvdXQgaW4gdGhpcyBwYXRjaC4gSSBjYW4ndCBqdXN0IGBncmVwYCB0aGUgY3VycmVudCBjb2RlYmFzZSBmb3IgaXQsIGJlY2F1c2UsIHdlbGwsIGl0J3MgKmdvbmUqLiAgUmlnaHQsIG9mIGNvdXJzZSwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIHBhcmVudCBjb21taXQgb3IgdGhlIHBhdGNoIGRpZmYgaXRzZWxmLiBMZXQncyBzZWUuLi4gQWgsIGhlcmUgaXQgaXMgaW4gdGhlIGRpZmY6XG5cbmBgYGNcbi0jZGVmaW5lIElQX1NFVF9IQVNIX1dJVEhfTkVUMFxuYGBgXG5cblNvLCBpdCBsb29rcyBsaWtlIGl0IHdhcyByZW1vdmVkIGZyb20gYGlwX3NldF9oYXNoX25ldGlmYWNlLmNgIGFuZCBgaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jYC4gTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IHdhcyB0aGlzIHVzZWQgYW55d2hlcmUgKmVsc2UqPyBJIHNob3VsZCBjaGVjayBgaXBfc2V0X2hhc2hfZ2VuLmhgIC0gdGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxpa2VseSBwbGFjZSBmb3IgYSBjZW50cmFsIGRlZmluaXRpb24gb3IgdXNhZ2UuIFRpbWUgdG8gZGlnIGludG8gdGhhdCBoZWFkZXIgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0MzgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzQ6MzguODU3NzUwNTY2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjQ2ODcyNywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVBfU0VUX0hBU0hfV0lUSF9ORVQwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDozOC45NDAyMjc1MzNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0NzY5OTcyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVAgU2V0IENvZGUqKlxuXG5Pa2F5LCBzbyBJIGNhbid0IGp1c3QgYGdyZXBgIGZvciB0aGUgc3BlY2lmaWMgY29kZSBJJ20gYWZ0ZXIgYmVjYXVzZSBpdCdzIGxpa2VseSBub3QgZXZlbiBwcmVzZW50IGluIHRoZSBjdXJyZW50IHZpZXcgb2YgdGhlIGZpbGUgc3lzdGVtIHRyZWUuIFRoYXQncyBub3QgYSBtYWpvciBzZXRiYWNrLCB0aG91Z2guIFRoZSBrZXkgZm9jdXMgaGVyZSBpcyBvbiB0aGUgZnVuY3Rpb25zIGBtdHlwZV9hZGRfY2lkcmAsIGBtdHlwZV9kZWxfY2lkcmAsIGFuZCBgbXR5cGVfdGVzdF9jaWRyc2AuIEknbSBjb25maWRlbnQgdGhhdCB0aG9zZSBhcmUgdGhlIG9uZXMgdGhhdCBoYXZlIGNoYW5nZWQuIE5vdywgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBpbnN0YW50aWF0ZWQgZm9yIHZhcmlvdXMgZGlmZmVyZW50IGhhc2ggdHlwZXMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBVbHRpbWF0ZWx5IHRoZSBleHRlcm5hbCBpbnRlcmZhY2UgaXMgdGhlIGBpcF9zZXRfdHlwZWAgb3BlcmF0aW9ucy5cblxuTXkgbGluZSBvZiB0aGlua2luZyBnb2VzIGxpa2UgdGhpczogc2luY2UgSSdtIGFpbWluZyBmb3IgZnV6emluZyB0aGlzIGNvZGUsIG15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZSBuZXRsaW5rIG1lc3NhZ2UgaGFuZGxlcnMgdGhhdCAqaW52b2tlKiB0aGVzZSBzcGVjaWZpYyBvcGVyYXRpb25zLiBVbHRpbWF0ZWx5IHRoZXkgYXJlIGNhbGxlZCBpbmRpcmVjdGx5LiBUaGV5IGFyZSBhY2Nlc3NlZCB0aHJvdWdoIGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YC4gVGhlc2UgXCJ3cmFwcGVyXCIgZnVuY3Rpb25zIHJlc2lkZSB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY2AuIEkgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhhdCBmaWxlIG5vdy4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBmdW5jdGlvbnMgd2l0aGluIGBpcF9zZXRfY29yZS5jYCB0aGF0IGhhbmRsZSBhZGRpbmcsIGRlbGV0aW5nLCBhbmQgdGVzdGluZyBlbGVtZW50cy4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCB0byB0aGUgZnV6emluZyB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODIwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjQ0LjQ4NzkzMTQ1NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYxMjM3MDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3NldF9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz02MDc9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6NjA4OmlwX3NldF9hZGRfYnl0ZXModTY0IGJ5dGVzLCBzdHJ1Y3QgaXBfc2V0X2NvdW50ZXIgKmNvdW50ZXIpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTYwOS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9NjEzPXN0YXRpYyB2b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjYxNDppcF9zZXRfYWRkX3BhY2tldHModTY0IHBhY2tldHMsIHN0cnVjdCBpcF9zZXRfY291bnRlciAqY291bnRlcilcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNjE1LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz02MjA9aXBfc2V0X3VwZGF0ZV9jb3VudGVyKHN0cnVjdCBpcF9zZXRfY291bnRlciAqY291bnRlcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy02MjQtXFx0ICAgICEoZmxhZ3MgXFx1MDAyNiBJUFNFVF9GTEFHX1NLSVBfQ09VTlRFUl9VUERBVEUpKSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjYyNTpcXHRcXHRpcF9zZXRfYWRkX2J5dGVzKGV4dC1cXHUwMDNlYnl0ZXMsIGNvdW50ZXIpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2MjY6XFx0XFx0aXBfc2V0X2FkZF9wYWNrZXRzKGV4dC1cXHUwMDNlcGFja2V0cywgY291bnRlcik7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTYyNy1cXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9Nzc2PWludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo3Nzc6aXBfc2V0X2FkZChpcF9zZXRfaWRfdCBpbmRleCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNzc4LVxcdCAgIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhciwgc3RydWN0IGlwX3NldF9hZHRfb3B0ICpvcHQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtNzk1LX1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6Nzk2OkVYUE9SVF9TWU1CT0xfR1BMKGlwX3NldF9hZGQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy03OTctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjQ0Ljc0OTE3MzQ2N1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDIwMTgwMTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqVW5kZXJzdGFuZGluZyB0aGUgTmV0bGluayBBZGQgSGFuZGxlcioqXG5cblJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIG5ldGxpbmsgaW1wbGVtZW50YXRpb24gaGVyZSwgc3BlY2lmaWNhbGx5IHRoZSBwYXJ0IHdoZXJlIHdlJ3JlICphZGRpbmcqIGVsZW1lbnRzLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIHNwZWNpZmljIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgXCJhZGRcIiBvcGVyYXRpb24uIExldCdzIHNlZS4uLiBhaCwgcmlnaHQsIGl0J3MgYGNhbGxfYWRgLiBHb3QgaXQuIFNvIHdoZW5ldmVyIGEgbmV0bGluayBtZXNzYWdlIGNvbWVzIGluIHNpZ25hbGluZyB0aGUgaW50ZW50aW9uIHRvIGFkZCBzb21ldGhpbmcsIHRoZSBjb2RlIGlzIGdvaW5nIHRvIGNhbGwgdGhpcyBgY2FsbF9hZGAgZnVuY3Rpb24uIFRoYXQncyB0aGUgZW50cnkgcG9pbnQsIHRoZSBkaXNwYXRjaGVyIGZvciBoYW5kbGluZyB0aGF0IHNwZWNpZmljIG5ldGxpbmsgYWN0aW9uLiBUaW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4NTQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDo0Ny43NjkzNTY4MTVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NzU2NTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbGxfYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xNzQ1PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTc0NjpjYWxsX2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE3NDctXFx0c3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLCBlbnVtIGlwc2V0X2FkdCBhZHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTgxOD1zdGF0aWMgaW50IGlwX3NldF9hZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpjdG5sLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4NTMtXFx0XFx0XFx0cmV0dXJuIC1JUFNFVF9FUlJfUFJPVE9DT0w7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE4NTQ6XFx0XFx0cmV0ID0gY2FsbF9hZChuZXQsIGN0bmwsIHNrYiwgc2V0LCB0YiwgYWR0LCBmbGFncyxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg1NS1cXHRcXHRcXHQgICAgICB1c2VfbGluZW5vKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xODY0LVxcdFxcdFxcdFxcdHJldHVybiAtSVBTRVRfRVJSX1BST1RPQ09MO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxODY1OlxcdFxcdFxcdHJldCA9IGNhbGxfYWQobmV0LCBjdG5sLCBza2IsIHNldCwgdGIsIGFkdCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg2Ni1cXHRcXHRcXHRcXHQgICAgICBmbGFncywgdXNlX2xpbmVubyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjQ3Ljg0ODExOTU0MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDM5ODIwMjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXNzZWN0aW5nIHRoZSBOZXRsaW5rIEhhbmRsZXIgZm9yIEVsZW1lbnQgTWFuYWdlbWVudCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gbG9va2luZyBhdCBgY2FsbF9hZGAsIGFuZCBpbW1lZGlhdGVseSBJIHJlY29nbml6ZSBpdCBhcyB0aGUgY3JpdGljYWwgbmV0bGluayBoYW5kbGVyIGZvciB0aGUgd2hvbGUgYWRkL2RlbGV0ZS90ZXN0aW5nIGRhbmNlLiBUaGF0J3MgdGhlIGNlbnRyYWwgbmVydm91cyBzeXN0ZW0gZm9yIGVsZW1lbnQgbWFuaXB1bGF0aW9uLCBzbyBrbm93aW5nIHdoYXQgY2FsbHMgaXQgbWFrZXMgaW50ZXJuYWxseSBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgZnVsbCBpbXBhY3QuIEl0J3MgdGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZnJvbSBgY2FsbF9hZGAgdG8gc2VlIGV4YWN0bHkgd2hhdCBzZXJ2aWNlcyBpdCB1c2VzLiBUaGlzIHdpbGwgdGVsbCBtZSBhYm91dCBpdHMgZGVwZW5kZW5jeSBvbiBvdGhlciBlbGVtZW50cyBvZiB0aGUgY29kZS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGRhdGEgZmxvdyBhbmQgYW55IG90aGVyIHNpZGUtZWZmZWN0cyBtaWdodCBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0MzYsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDo1MS4yODc5NDQxODhaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1OTIwODMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXQtXFx1MDAzZXZhcmlhbnQtXFx1MDAzZXVhZHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xNzQ2PWNhbGxfYWQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqY3RubCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xNzYzLVxcdFxcdGlwX3NldF9sb2NrKHNldCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE3NjQ6XFx0XFx0cmV0ID0gc2V0LVxcdTAwM2V2YXJpYW50LVxcdTAwM2V1YWR0KHNldCwgdGIsIGFkdCwgXFx1MDAyNmxpbmVubywgZmxhZ3MsIHJldHJpZWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xNzY1LVxcdFxcdGlwX3NldF91bmxvY2soc2V0KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xODg4PXN0YXRpYyBpbnQgaXBfc2V0X3V0ZXN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTkxMS1cXHRyY3VfcmVhZF9sb2NrX2JoKCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjE5MTI6XFx0cmV0ID0gc2V0LVxcdTAwM2V2YXJpYW50LVxcdTAwM2V1YWR0KHNldCwgdGIsIElQU0VUX1RFU1QsIFxcdTAwMjZsaW5lbm8sIDAsIDApO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xOTEzLVxcdHJjdV9yZWFkX3VubG9ja19iaCgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNDo1MS42NDcxNTczNjdaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgxMzUyMTk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGxpbmsgTWVzc2FnZSBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgcG9pbnQgb2YgaW50ZXJlc3QgaXMgYHNldC1cdTAwM2V2YXJpYW50LVx1MDAzZXVhZHRgOyB0aGF0J3Mgd2hlcmUgdGhlIG5ldGxpbmsgbWVzc2FnZXMga2ljayBvZmYuIE5vdywgc3BlY2lmaWNhbGx5IGZvciBgaGFzaF9uZXRpZmFjZWAsIEkgc2VlIHdlIGhhdmUgYGhhc2hfbmV0aWZhY2U0X3VhZHRgIGFuZCBgaGFzaF9uZXRpZmFjZTZfdWFkdGAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlIOKAkyBJUHY0IGFuZCBJUHY2IGhhbmRsaW5nLiBCdXQgd2FpdCwgdGhpcyBwYXRjaCBpcyBtZXNzaW5nIHdpdGggYG10eXBlX2FkZF9jaWRyYCwgYG10eXBlX2RlbF9jaWRyYCwgYW5kIGBtdHlwZV90ZXN0X2NpZHJzYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgbWFrZXMgbWUgc3RhcnQgZm9sbG93aW5nIHRoZSBjYWxsIHN0YWNrLiBTbyB0aG9zZSBmdW5jdGlvbnMsIHRoZSAqX2NpZHIgdmFyaWF0aW9ucywgYXJlIGNhbGxlZCBieSBgbXR5cGVfYWRkYCwgYG10eXBlX2RlbGAsIGFuZCBgbXR5cGVfdGVzdF9jaWRyc2AuIEFuZCB0aG9zZSBsYXR0ZXIgdGhyZWUgYXJlIGludm9rZWQgYnkgYG10eXBlX3Rlc3RgLiBBaCEgQW5kIHRoZXNlLCBpbiB0dXJuLCBhcmUgY2FsbGVkIGZyb20gYGhhc2hfbmV0aWZhY2U0X3VhZHRgIHZpYSBgYWR0Zm5gLiBPa2F5LCBub3cgSSBuZWVkIHRvIGRpdmUgaW50byBgaGFzaF9uZXRpZmFjZTRfdWFkdGAgYW5kIHNlZSB3aGF0IGl0J3MgZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTk5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjU3LjQ2MDY4MTU2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTM0Njg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX25ldGlmYWNlNF91YWR0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0xOTY9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxOTc6aGFzaF9uZXRpZmFjZTRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTE5OC1cXHRcXHQgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM0OjU3LjUzNjAzMjg4OFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTY4MTYwNjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgdWFkdCBGdW5jdGlvbnMgaW4gSVAgU2V0cyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBgdWFkdGAgZnVuY3Rpb25zIHdpdGhpbiB0aGUgaGFzaCB0eXBlcyB0aGF0IHV0aWxpemUgYElQX1NFVF9IQVNIX1dJVEhfTkVUU2AuIFRoYXQgbWVhbnMgSSdtIGxvb2tpbmcgYXQ6XG5cbiogICBgaGFzaF9uZXQ0X3VhZHRgXG4qICAgYGhhc2hfbmV0Nl91YWR0YFxuKiAgIGBoYXNoX25ldGlmYWNlNF91YWR0YFxuKiAgIGBoYXNoX25ldGlmYWNlNl91YWR0YFxuKiAgIGBoYXNoX25ldHBvcnQ0X3VhZHRgXG4qICAgYGhhc2hfbmV0cG9ydDZfdWFkdGBcbiogICBgaGFzaF9uZXRuZXQ0X3VhZHRgXG4qICAgYGhhc2hfbmV0bmV0Nl91YWR0YFxuKiAgIGBoYXNoX25ldHBvcnRuZXQ0X3VhZHRgXG4qICAgYGhhc2hfbmV0cG9ydG5ldDZfdWFkdGBcbiogICBgaGFzaF9pcHBvcnRuZXQ0X3VhZHRgXG4qICAgYGhhc2hfaXBwb3J0bmV0Nl91YWR0YFxuXG5XYWl0IGEgbWludXRlLCBJJ20ganVzdCByZW1pbmRlZCB0aGF0IGBtdHlwZV9hZGRfY2lkcmAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gYW5kIGlubGluZWQgZGlyZWN0bHkgaW50byBgbXR5cGVfYWRkYC4gQW5kIGBtdHlwZV9hZGRgIGlzICphbHNvKiBhIHN0YXRpYyBmdW5jdGlvbiB0aGF0J3MgaW5saW5lZCBpbnRvIHRoaW5ncyBsaWtlIGBoYXNoX25ldGlmYWNlNF9hZGRgLCBhbmQgc28gb24uIFJpZ2h0LCBzbyBgaGFzaF9uZXRpZmFjZTRfYWRkYCB3b3VsZCBiZSB0aGUgZnVuY3Rpb24gcG9pbnRlciB0aGF0J3MgcGFzc2VkIHRvIGBhZHRmbmAgaW4gYGhhc2hfbmV0aWZhY2U0X3VhZHRgLlxuXG5IYW5nIG9uLCBpdCBsb29rcyBsaWtlIGBoYXNoX25ldGlmYWNlNF9hZGRgIGlzbid0IHN0YXRpYyBpbmxpbmUsIGluc3RlYWQgaXQgaXMgYSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlZCBieSBhIG1hY3JvLiBUaW1lIHRvIGNoZWNrIGlmIGBoYXNoX25ldGlmYWNlNF9hZGRgIGhhcyBhIGRpc3RpbmN0IHN5bWJvbDsgcHJvYmFibHkgaGFzIHRvIGVuc3VyZSB0aGF0IGl0IGhhcyBhIHVuaXF1ZSBmdW5jdGlvbiBwb2ludGVyIHRvIGJlIHBhc3NlZCB0byBgYWR0Zm5gIGluIHRoZSBgdWFkdGAgY2FsbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNTczLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjAzLjEwNDE5NjE0OVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY1NjU5MTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhc2hfbmV0aWZhY2U0X2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzU6MDMuMTYwNzcwNTg3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDM1NDYxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTeW1ib2wncyBPcmlnaW4qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGZ1bmN0aW9uIGNhbGwuLi4gaXQgbG9va3MgbGlrZSBpdCdzIGdlbmVyYXRlZCBieSB0aGUgYElQU0VUX1RPS0VOKE1UWVBFLCBfYWRkKWAgbWFjcm8uIFRoYXQgZXhwbGFpbnMgd2h5IGEgc2ltcGxlIGBncmVwYCBpc24ndCBwaWNraW5nIGl0IHVwISBJdCdzIGxpa2VseSBhIGdlbmVyYXRlZCBzeW1ib2wuIFRoaXMgbWVhbnMgSSdsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIGNvbXBpbGVkIGJpbmFyeSBpdHNlbGYsIHNpbmNlIHRoYXQncyB3aGVyZSB0aGUgY29uY3JldGUgc3ltYm9sIHdpbGwgZXhpc3QuXG5cblRvIGNvbmZpcm0gbXkgc3VzcGljaW9ucywgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgbWFjcm8gYW5kLCBzcGVjaWZpY2FsbHksIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBgbXR5cGVfYWRkYCAod2hhdGV2ZXIgYE1UWVBFYCBpcykgd2l0aGluIHRoZSBnZW5lcmF0ZWQgY29kZS4gU28sIHRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBgbXR5cGVfYWRkYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYCBpbnNpZGUgYGlwX3NldF9oYXNoX2dlbi5oYC4gVGhhdCB3aWxsIHRlbGwgbWUgaWYgaXQncyBnb3QgaW50ZXJuYWwgbGlua2FnZSBvciBleHRlcm5hbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMzMzcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNTowNy4xMDQzMjE0NjdaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODQwMDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10eXBlX2FkZFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD03NDA9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6NzQxOm10eXBlX2FkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtNzQyLVxcdCAgc3RydWN0IGlwX3NldF9leHQgKm1leHQsIHUzMiBmbGFncyk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTc1Mj1tdHlwZV9yZXNpemUoc3RydWN0IGlwX3NldCAqc2V0LCBib29sIHJldHJpZWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTkwNC1cXHRcXHRpZiAoeC1cXHUwMDNlYWQgPT0gSVBTRVRfQUREKSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo5MDU6XFx0XFx0XFx0bXR5cGVfYWRkKHNldCwgXFx1MDAyNngtXFx1MDAzZWQsIFxcdTAwMjZ4LVxcdTAwM2VleHQsIFxcdTAwMjZ4LVxcdTAwM2VtZXh0LCB4LVxcdTAwM2VmbGFncyk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC05MDYtXFx0XFx0fSBlbHNlIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9OTg3PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjk4ODptdHlwZV9hZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTk4OS1cXHQgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjA3LjE1OTE2NjczNVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTE4ODczMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQVBJIERlc2lnbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGBzdGF0aWMgaW50IG10eXBlX2FkZCguLi4pYC4gVGhlIGBzdGF0aWNgIGtleXdvcmQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgaW4gdGVybXMgb2YgQVBJIGRlc2lnbi4gSXQgcHJvYmFibHkgaXNuJ3QgZXhwb3J0ZWQsIG1lYW5pbmcgaXQncyBpbnRlcm5hbC4gTm93LCBJIGhhdmUgdG8gcmVtZW1iZXIgdGhlIGluc3RydWN0aW9ucy4gQWgsIHllcywgdGhleSBzcGVjaWZpY2FsbHkgc2F5IHRvICpwcmVmZXIqIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucywgc2luY2UgY29tcGlsZXJzIHRlbmQgdG8gaW5saW5lIHRob3NlIHN0YXRpY3MsIHdoaWNoIGlzIHNvbWV0aGluZyB3ZSB3YW50IHRvIGF2b2lkLiBTbywgaWRlYWxseSwgdGhlIHByZWZlcnJlZCBmdW5jdGlvbnMgd291bGQgYmUgYGhhc2hfbmV0aWZhY2U0X3VhZHRgIGFuZCBgaGFzaF9uZXRpZmFjZTZfdWFkdGAuXG5cbkJ1dCB3YWl0IGEgbWludXRlLi4uIEkgaGF2ZSB0byBkb3VibGUgY2hlY2sgYGhhc2hfbmV0aWZhY2U0X3VhZHRgISBUaGF0J3MgYHN0YXRpY2AgdG9vISBUaGlzIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGEgbm9uLXN0YXRpYyBBUEkuIE9rYXksIHRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZSBmaWxlIGBpcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCB0byBzZWUgd2hhdCdzIGFjdHVhbGx5IGdvaW5nIG9uLiBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgbXR5cGVfYWRkYCBmdW5jdGlvbiBpcyBhY3R1YWxseSB0aGUgYmVzdCBtZXRob2QgaGVyZSwgb3IgaWYgdGhlIGNvbXBpbGVyIGlzIGlubGluaW5nIG9uZSBvZiB0aGUgc3RhdGljcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQwMTksIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzU6MTIuMDc4MDQzOTY1WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTg1NTEwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX25ldGlmYWNlNF91YWR0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MTk2PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6MTk3Omhhc2hfbmV0aWZhY2U0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xOTgtXFx0XFx0ICAgIGVudW0gaXBzZXRfYWR0IGFkdCwgdTMyICpsaW5lbm8sIHUzMiBmbGFncywgYm9vbCByZXRyaWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNToxMi4xNDc5MDM1MjNaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3NDA4Mzg0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQIFNldCBBZGRpdGlvbiBQcm9jZXNzKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB0cmFjZSB0aGUgYWRkaXRpb24gcHJvY2VzcyB3aXRoaW4gdGhlIElQIHNldCBmcmFtZXdvcmsuIEkndmUgY29uZmlybWVkLCB5ZXMsIHRoYXQgYXNwZWN0IEkgd2FzIGluaXRpYWxseSBsb29raW5nIGF0IGFwcGVhcnMgdG8gYmUgc3RhdGljLiBOb3csIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJIHdhcyBpbml0aWFsbHkgdGhpbmtpbmcgYWJvdXQgdGhlIGBpcF9zZXRfYWRkYCBmdW5jdGlvbiBpbiBgaXBfc2V0X2NvcmUuY2AsIGJ1dCB0aGF0IGZlZWxzIGxpa2UgaXQncyB0aGUgd3JvbmcgcGF0aC4gSXQncyBhIGdlbmVyaWMgZnVuY3Rpb24sIGFuZCBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgbmV0bGluayBpbnRlcmFjdGlvbi4gSSBiZWxpZXZlIGBpcF9zZXRfYWRkYCBoYW5kbGVzIGFkZGl0aW9ucyBmcm9tIGlwdGFibGVzL05ldGZpbHRlciBydWxlcyDigJMgdGhlIHBhY2tldCBwYXRoLCBub3QgdGhlIG1hbmFnZW1lbnQgcGxhbmUuIFRoZSBuZXRsaW5rIHBhdGjigKYgcmlnaHQsIGl0J3MgYGNhbGxfYWRgLiBJcyAqdGhhdCogc3RhdGljPyBZZXMsIGl0IGlzLiBBbmQgYGlwX3NldF9hZGA/IFRoYXQncyBhbHNvIHN0YXRpYy4gV2hhdCBhYm91dCBgaXBfc2V0X3VhZGRgPyBBaCwgd2FpdCBhIG1vbWVudC4gSSB0aGluayBJJ20gcHV0dGluZyB0aGUgcGllY2VzIHRvZ2V0aGVyIG5vdy4gIGBpcF9zZXRfYWRgIGlzIHRoZSBuZXRsaW5rIGhhbmRsZXIgZm9yIGBJUFNFVF9DTURfQUREYCBhbmQgYElQU0VUX0NNRF9ERUxgLiBUaGVyZWZvcmUsIEkgc2hvdWxkIHN3aXRjaCBteSBhdHRlbnRpb24gdG8gYGlwX3NldF9jb3JlLmNgIGFuZCBmb2N1cyBvbiB0aGUgbmV0bGluayBoYW5kbGVycy4gSSBuZWVkIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjAwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjE2LjcyMTk5MDM5NVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMyODc5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVBTRVRfQ01EX0FERFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTk0LVxcdH0sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxOTU6XFx0W0lQU0VUX0NNRF9BRERdXFx0PSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxOTYtXFx0XFx0LmNhbGxcXHRcXHQ9IGlwX3NldF91YWRkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNToxNi43NzUyODQ3MTNaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NjMxMzk1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIE5ldGxpbmsgRW50cnkgUG9pbnRzIGluIHRoZSBDb250ZXh0IG9mIGBpcHNldGAqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3Mgb2YgdGhpcyBpbnRlcmFjdGlvbi4gU28sIGBpcF9zZXRfdWFkZGAsIGBpcF9zZXRfdWRlbGAsIGFuZCBgaXBfc2V0X3V0ZXN0YCDigJMgdGhvc2UgYXJlIHRoZSBuZXRsaW5rIGVudHJ5IHBvaW50cywgdGhlIGhvb2tzIHRoYXQgcmVhbGx5IG1hdHRlci4gVGhleSdyZSB0aGUgZ2F0ZXMgdGhyb3VnaCB3aGljaCBhbGwgdGhlIGFkZCwgZGVsZXRlLCBhbmQgdGVzdCBjb21tYW5kcyBhcmUgZ29pbmcgdG8gZmxvdywgcmlnaHQ/IE15IGluaXRpYWwgZm9jdXMgc2hvdWxkIGJlIG9uIGhvdyB0aGVzZSBpbnRlcmZhY2VzIGFyZSBkZWZpbmVkIGFuZCBob3cgdGhleSBhcmUgaGFuZGxlZC4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVpciBsb2NhdGlvbnMgaW4gbWVtb3J5IGFyZSBzdGF0aWMuIFRoaXMgd2lsbCBpbmZsdWVuY2UgaG93IEkgYXBwcm9hY2ggdGhlIHJlc3Qgb2YgdGhpcyBhbmFseXNpcy4gSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhleSBhcmUsIGhvdyB0aGV5IGFyZSB1c2VkLCBhbmQgd2hldGhlciB0aGVpciBsb2NhdGlvbiBpcyBmaXhlZC4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdXJwcmlzZXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjE3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzU6MjAuMzMxNjAwNzg2WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM0NzkzNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X3VhZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xODE4PXN0YXRpYyBpbnQgaXBfc2V0X2FkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKmN0bmwsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTg3My1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTg3NDpzdGF0aWMgaW50IGlwX3NldF91YWRkKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE4NzUtXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBhdHRyW10pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MjE0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mbmxfY2FsbGJhY2sgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiW0lQU0VUX01TR19NQVhdID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxOTUtXFx0W0lQU0VUX0NNRF9BRERdXFx0PSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxOTY6XFx0XFx0LmNhbGxcXHRcXHQ9IGlwX3NldF91YWRkLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTk3LVxcdFxcdC50eXBlXFx0XFx0PSBORk5MX0NCX01VVEVYLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNToyMC40MzUwODQ4NDNaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUzNjAxOTc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU3RhdGljIEZ1bmN0aW9uIFZpc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkncmUgYWxsIHN0dWNrIGluIGEgc3RhdGljIHN0YXRlLCB3aGljaCBpc24ndCBpZGVhbCBmb3Igd2hhdCBJJ20gdHJ5aW5nIHRvIGRvLiBUaGUgZG9jdW1lbnRhdGlvbiBlbXBoYXNpemVzIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgZ2V0IHRoYXQgdGhlIGNvbXBpbGVyIGNhbiBqdXN0IGZvbGQgdGhlIHN0YXRpYyBvbmVzIGluLCBtZWFuaW5nIHRoZXkgd29uJ3QgaGF2ZSB0aGVpciBvd24gZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcywgYW5kIHRoYXQncyB0aGUgaHVyZGxlIGhlcmUuXG5cbkJ1dCB3YWl0LCBldmVuIHRob3VnaCB0aGV5J3JlIHN0YXRpYywgdGhlcmUncyBhIHNhdmluZyBncmFjZTogaWYgdGhleSAqYXJlbid0KiBpbmxpbmVkLCB0aGV5IHNob3VsZCBzdGlsbCBiZSB2aXNpYmxlLiBHb29kLCB3ZSBjYW4gc3RpbGwgdXNlIHRoaXMuIE5vdywgbGV0J3Mgc2VlLi4uIGBpcF9zZXRfdWFkZGAsIGBpcF9zZXRfdWRlbGAsIGFuZCBgaXBfc2V0X3V0ZXN0YCBhcmUgcmVnaXN0ZXJlZCBhcyBjYWxsYmFja3MuIFNpbmNlIHRoZXkncmUgYXNzaWduZWQgdG8gdGhlIGNhbGxiYWNrcyBzdHJ1Y3QsIHRoZXkncmUgZGVmaW5pdGVseSBub3QgaW5saW5lZC4gVGhhdCdzIGdvb2Q7IHRoZXkgaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMgYW5kIHNob3VsZCBiZSBlYXN5IHRvIGlkZW50aWZ5LlxuXG5BbmQgaG9sZCBvbiwgYGhhc2hfbmV0aWZhY2U0X3VhZHRgIGlzIGFub3RoZXIgb25lLiBJdCdzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYHNldC1cdTAwM2V2YXJpYW50LVx1MDAzZXVhZHRgLiBUaGF0IG1ha2VzIGl0IG5vbi1pbmxpbmVkIGFzIHdlbGwuIFRoYXQgaXMgZ3JlYXQhIE5vdywgdGhlIHByb2JsZW0gaXMsIGl0J3MgZ2VuZXJhdGVkIGJ5IGEgbWFjcm8uIFRoYXQgY291bGQgYmUgYSBuaWdodG1hcmUgdG8gY2hhc2UgZG93bi4gTm8sIHdhaXQsIGNoZWNraW5nIGBpcF9zZXRfaGFzaF9uZXRpZmFjZS5jYCBzcGVjaWZpY2FsbHkgZGVmaW5lcyBpdC4gRXhjZWxsZW50LCBsZXQncyBjb25maXJtIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODA1LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjI1Ljk3MTEwODk3NVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg2MzAwNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGFzaF9uZXRpZmFjZTRfdWFkdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTE5Nj1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjE5NzpoYXNoX25ldGlmYWNlNF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTk4LVxcdFxcdCAgICBlbnVtIGlwc2V0X2FkdCBhZHQsIHUzMiAqbGluZW5vLCB1MzIgZmxhZ3MsIGJvb2wgcmV0cmllZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzU6MjYuMDQ5NzQzNjEyWiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Njc3NDI2NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGRlZXAgaW4gdGhlIHdlZWRzIG9mIG5ldHdvcmsgcHJvZ3JhbW1pbmc6XG5cbioqUGlucG9pbnRpbmcgdGhlIFJlbGV2YW50IENvZGUqKlxuXG5BbHJpZ2h0LCB0aGUgb2JqZWN0aXZlIGlzIGNsZWFybHkgZGVmaW5lZCwgYW5kIHRoYXQncyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBNeSBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGlua2luZyBhYm91dCB3aGVyZSB0aGUgcmVsZXZhbnQgY29kZSB3b3VsZCByZXNpZGUsIGFuZCBpdCBtYWtlcyBzZW5zZSB0byBjb25maXJtIHRoYXQgYGhhc2hfbmV0cG9ydG5ldDRfdWFkdGAgZnVuY3Rpb24gaXMgdGhlIG9uZSB0byBpbnNwZWN0LiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uLiBJIGtub3cgZXhhY3RseSB3aGVyZSBJIG5lZWQgdG8gbG9vazogaXQgc2hvdWxkIGJlIGluIGBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNgLiBMZXQncyBkaXZlIGludG8gdGhhdCBmaWxlIGFuZCBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NTE4LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzU6MjkuNTE3NDkwODE3WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODkwNTg0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX25ldHBvcnRuZXQ0X3VhZHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9MTg4PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzoxODk6aGFzaF9uZXRwb3J0bmV0NF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xOTAtXFx0XFx0ICAgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjI5LjU5NjQwMjAxNVoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTk0Mjg2NjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqQ29uc2lkZXJpbmcgdGhlIEV4cGxpY2l0IERlZmluaXRpb25zKipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgc3RhdGVtZW50IGNvbmZpcm1zIHRoZSBwcmVzZW5jZSBvZiBleHBsaWNpdCBkZWZpbml0aW9ucywgd2hpY2ggaXMgZ29vZC4gVGhhdCdzIGEgZnVuZGFtZW50YWwgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBwb3RlbnRpYWwgZWRnZSBjYXNlIG9yIHNvbWV0aGluZyBsZXNzIG9idmlvdXMuIFdoYXQgYWJvdXQgdGhpcyBgaGFzaF9uZXQ0X3VhZHRgPyBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW1wbGljYXRpb25zIG9yIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIElzIGl0IGRpcmVjdGx5IGhhbmRsZWQ/IEluZGlyZWN0bHk/IE9yIGlzIHRoZXJlIHNvbWUgbnVhbmNlIGluIGhvdyBpdCdzIGhhbmRsZWQgdGhhdCBJIG5lZWQgdG8gY2xhcmlmeSB0byBlbnN1cmUgdGhvcm91Z2huZXNzIGFuZCBhdm9pZCBhbnkgaW5jb3JyZWN0IGFzc3VtcHRpb25zPyBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBpbXBsaWNhdGlvbiBvZiB0aGlzIGVsZW1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2ODc4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzU6MzIuNzkwNjkxNTg4WiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTk1MzM1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX25ldDRfdWFkdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MTM1PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjEzNjpoYXNoX25ldDRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0xMzctXFx0ICAgICAgIGVudW0gaXBzZXRfYWR0IGFkdCwgdTMyICpsaW5lbm8sIHUzMiBmbGFncywgYm9vbCByZXRyaWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNTozMi44NDY2NDkzMDZaIiwiU2VxIjo1NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3NzQwNDE4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJZGVudGlmeWluZyBGb2N1cyBTeW1ib2xzIGluIE5ldHdvcmsgSGFzaGluZyBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBgdWFkdGAgZnVuY3Rpb25zIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGV5J3JlIGV4cGxpY2l0bHkgZGVmaW5lZCBhbmQgdGllZCB0byBmdW5jdGlvbiBwb2ludGVycy4gVGhleSdyZSBwcmltZSBjYW5kaWRhdGVzIGZvciBpbmNsdXNpb24gaW4gbXkgYEZvY3VzU3ltYm9sc2Agc2V0LiBMZXQncyBzZWUsIEkndmUgZ290IGEgZmV3IG9mIHRoZW0gaGVyZTogYGhhc2hfbmV0NF91YWR0YCwgYGhhc2hfbmV0Nl91YWR0YCwgYGhhc2hfbmV0aWZhY2U0X3VhZHRgLCBgaGFzaF9uZXRpZmFjZTZfdWFkdGAsIGBoYXNoX25ldHBvcnRuZXQ0X3VhZHRgLCBhbmQgYGhhc2hfbmV0cG9ydG5ldDZfdWFkdGAuIFRoZXNlIGFsbCBsb29rIGxpa2UgZ29vZCBiZXRzLlxuXG5Ib2xkIG9uIGEgc2Vjb25kLi4uIHdoYXQgYWJvdXQgdGhlIHBhY2tldCBwYXRoIGl0c2VsZj8gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3JpdGljYWwuIEFoLCB5ZXMsIEknbSB1c2luZyBgaGFzaF9uZXRpZmFjZTRfa2FkdGAgaW4gdGhlIHBhY2tldCBwYXRoISBJIGhhdmUgdG8gY29uc2lkZXIgdGhhdCBhcyB3ZWxsLiBJdCBtYXkgaGF2ZSBhbiBpbnRlcmVzdGluZyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIHN5bWJvbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MjE1LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjM3LjQyNDA1NjM3N1oiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NjMzMDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhc2hfbmV0aWZhY2U0X2thZHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0xNTU9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxNTY6aGFzaF9uZXRpZmFjZTRfa2FkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTE1Ny1cXHRcXHQgICAgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNTozNy41MzM2OTY2MDRaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ4OTU0MzgyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBJUFNldCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBgaGFzaF9uZXRpZmFjZTRfa2FkdGAgaXMgZXhwbGljaXRseSBkZWZpbmVkLCBnb3QgaXQuIEhvd2V2ZXIsIHRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IHRoZSBwYWNrZXQgcGF0aCBvbmx5IGNhbGxzIGB0ZXN0YCwgYW5kIG9jY2FzaW9uYWxseSBgYWRkYCBvciBgZGVsYCB3aGVuIGEgdGFyZ2V0IGlzIGludm9sdmVkLCBzcGVjaWZpY2FsbHkgdGhlIGBTRVRgIHRhcmdldC4gVGhhdCBgU0VUYCB0YXJnZXQgaXMga2V5IGJlY2F1c2UgaXQgY2FsbHMgYGlwX3NldF9hZGRgIGFuZCBgaXBfc2V0X2RlbGAuIFRoZW4sIHRoZSBgc2V0YCBtYXRjaCwgYWxzbyBpbXBvcnRhbnRseSwgY2FsbHMgYGlwX3NldF90ZXN0YC4gVGhlc2UgYGlwX3NldGAgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCwgYW5kIGZvdW5kIGluIGBpcF9zZXRfY29yZS5jYC4gU28gd2UgaGF2ZSBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYW5kIGBpcF9zZXRfdGVzdGAuXG5cblRoZXJlZm9yZSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBnZXQgYWRkZWQgdG8gYEZvY3VzU3ltYm9sc2AuIEFuZCBsZXQncyBub3QgZm9yZ2V0IHRoZSB1c2VyLXNwYWNlIHZhcmlhbnRzOiBgaXBfc2V0X3VhZGRgLCBgaXBfc2V0X3VkZWxgLCBhbmQgYGlwX3NldF91dGVzdGAuIE5vdywgd2FpdCBhIG1pbnV0ZSwgSSBoYXZlIHRvIGNsYXJpZnkgdGhpcywgc2luY2UgdGhlIGludGVybmFsLCBleHBvcnRlZCBmdW5jdGlvbnMgYXJlIGRlZmluaXRlbHkgZGlzdGluY3Qgc3ltYm9scyBhbmQgaW1wb3J0YW50LCB3aGlsZSB0aGUgdXNlciBzcGFjZSBmdW5jdGlvbnMgYXJlIHN0YXRpYyBidXQgcmVnaXN0ZXJlZCBhcyBjYWxsYmFja3MuIEl0IGNoZWNrcyBvdXQsIHRoZXkgYXJlIGRpc3RpbmN0LiBTbywgbGV0J3MgY29uZmlybSB0aG9zZSBhcmUgZ29vZCBmb2N1cyBzeW1ib2xzLiBZZXMsIHRoZXkgYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBtb2RpZmllZCBjb2RlLCBzbyB0aGV5IHdpbGwgYmUgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhpcy5cblxuTm93LCBsZXQncyBzZWUgd2hhdCBLY29uZmlnIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIFRoZSBjb2RlIGlzIGxvY2F0ZWQgaW4gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvYCwgc28gbGV0J3MgbmF2aWdhdGUgdG8gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzI2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjQ0LjAyMzI2NjQ5OFoiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwOTI5Mjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyOm1lbnVjb25maWcgSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklQIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0PWlmIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTY6Y29uZmlnIElQX1NFVF9NQVhcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTctXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiBJUCBzZXRzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyODpjb25maWcgSVBfU0VUX0JJVE1BUF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM2LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozNzpjb25maWcgSVBfU0VUX0JJVE1BUF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00NS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDY6Y29uZmlnIElQX1NFVF9CSVRNQVBfUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOnBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTQtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NjU6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTczLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NDpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFjIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMwOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzgtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjQ0LjEzNDIwMDAzNFoiLCJTZXEiOjU5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM3MjA1OTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IE1lbnRhbCBDaGVja2xpc3QgZm9yIE5ldHdvcmsgU2V0IEltcGxlbWVudGF0aW9ucyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSBlc3NlbnRpYWwgZGF0YSBzdHJ1Y3R1cmVzIGFjY291bnRlZCBmb3IuIEknbSB0aGlua2luZywgcmlnaHQgb2ZmIHRoZSBiYXQsIHdlJ3JlIGdvaW5nIHRvIG5lZWQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgYmFzaWMgYElQX1NFVGAsIGFzIHdlbGwgYXMgdGhlIG1vcmUgY29tcGxleCBgSVBfU0VUX0hBU0hfTkVUSUZBQ0VgLCBgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVGAsIGBJUF9TRVRfSEFTSF9ORVRgLCBgSVBfU0VUX0hBU0hfTkVUTkVUYCwgYElQX1NFVF9IQVNIX05FVFBPUlRgLCBhbmQgYElQX1NFVF9IQVNIX0lQUE9SVE5FVGAgdmFyaWFudHMuIEdvdHRhIG1ha2Ugc3VyZSB3ZSd2ZSBnb3QgYWxsIHRoZSBiYXNlcyBjb3ZlcmVkIGZvciBlZmZpY2llbnQgbG9va3VwcyBhbmQgbWFuYWdlbWVudC5cblxuQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhhdCBiYXNlIGBJUF9TRVRgIHR5cGUuIFVuZGVyc3RhbmRpbmcgaXRzIHJlcXVpcmVtZW50cyB3aWxsIGJlIGNydWNpYWwgdG8gZ2V0dGluZyBldmVyeXRoaW5nIGVsc2Ugc3RydWN0dXJlZCBjb3JyZWN0bHkuIEdvdHRhIG1ha2Ugc3VyZSBub3RoaW5nIGdldHMgb3Zlcmxvb2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk2NDUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNTo0OC41NzE0NDI3NzlaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NDM0MTM0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mj1tZW51Y29uZmlnIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJUCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTUtXFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTY9Y29uZmlnIElQX1NFVF9NQVhcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xOS1cXHRyYW5nZSAyIDY1NTM0XFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjIwOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTIxLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0yOD1jb25maWcgSVBfU0VUX0JJVE1BUF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozMDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zMS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mzc9Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBNQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcImJpdG1hcDppcCxtYWMgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM5OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQwLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz00Nj1jb25maWcgSVBfU0VUX0JJVE1BUF9QT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJiaXRtYXA6cG9ydCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDg6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDktXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTU1PWNvbmZpZyBJUF9TRVRfSEFTSF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NTc6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTgtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTY1PWNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BUktcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFyayBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Njc6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjgtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTc0PWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzY6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzctXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTgzPWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo4NTpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04Ni1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9OTM9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6OTU6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEwMz1jb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTA1OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm1hYyBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTE0OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExNS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTIxPWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMzpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjQtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzMD1jb25maWcgSVBfU0VUX0hBU0hfTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMjpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzMtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzOT1jb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDE6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQyLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNDg9Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTA6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTUxLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNTg9Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2MDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjEtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE2OD1jb25maWcgSVBfU0VUX0xJU1RfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE3MDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNzEtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE3OD1jb25maWcgR0NPVl9QUk9GSUxFX0lQU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3OS1cXHRib29sIFxcXCJFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIGlwc2V0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxODA6XFx0ZGVwZW5kcyBvbiBHQ09WX0tFUk5FTFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xODEtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNTo0OC44MzU3OTAyOTFaIiwiU2VxIjo2MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ4NTg5NzUwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBLZXJuZWwgTW9kdWxlIENvbmZpZ3VyYXRpb24gQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBwdXR0aW5nIHRvZ2V0aGVyIGEga2VybmVsIG1vZHVsZSBhbmQgbmVlZCB0byBlbnN1cmUgdGhlIGNvcnJlY3QgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIFRoaW5raW5nIHRoaXMgdGhyb3VnaCwgYElORVRgIGFuZCBgTkVURklMVEVSYCBhcmUgZGVmaW5pdGVseSBmdW5kYW1lbnRhbCBwcmVyZXF1aXNpdGVzLiBMZXQncyBtYWtlIGEgY2hlY2tsaXN0OiBgSU5FVGAsIGBORVRGSUxURVJgLCBhbmQsIG9mIGNvdXJzZSwgYElQX1NFVGAuIFdlJ2xsIGFsc28gcmVxdWlyZSB0aGUgdmFyaW91cyBoYXNoIHR5cGVzIEkgbmVlZCBmb3IgdGhlIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSwgIGBJUF9TRVRfSEFTSF9ORVRJRkFDRWAsIGBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUYCwgYElQX1NFVF9IQVNIX05FVGAsIGBJUF9TRVRfSEFTSF9ORVRORVRgLCBgSVBfU0VUX0hBU0hfTkVUUE9SVGAsIGFuZCBgSVBfU0VUX0hBU0hfSVBQT1JUTkVUYC5cblxuQWgsIHJpZ2h0LCBgTkVURklMVEVSX05FVExJTktgIGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgYnkgYElQX1NFVGAsIHdoaWNoIHNpbXBsaWZpZXMgdGhlIGRpcmVjdCByZXF1aXJlbWVudHMgYSBiaXQsIG5vIG5lZWQgdG8gaW5jbHVkZSBpdCBkaXJlY3RseSBvbiB0aGUgbGlzdC4gU28sIHdlIHJlYWxseSBqdXN0IG5lZWQgYElORVRgLCBgTkVURklMVEVSYCwgYElQX1NFVGAsIGFuZCB0aGUgaGFzaCB0eXBlcy5cblxuTm93LCBsZXQgbWUgcmV2aWV3IHRoZSBcIkZvY3VzU3ltYm9scyxcIiB0aG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIHdhbnQgdG8gdGFyZ2V0IGZvciB0ZXN0aW5nLiBBbHJpZ2h0LCBoZXJlJ3Mgd2hhdCdzIHJlbGV2YW50IHRvIHRoaXMgbmV0bGluayBpbnRlcmFjdGlvbjogYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGFuZCB0aGUgZ2VuZXJpYyBvbmVzLCBgaXBfc2V0X2FkZGAsIGBpcF9zZXRfZGVsYCwgYGlwX3NldF90ZXN0YC4gIFxuXG5Ib2xkIG9uLCBJIHJlY2FsbCB0aGF0IGBpcF9zZXRfYWRkYCwgYGlwX3NldF9kZWxgLCBhbmQgYGlwX3NldF90ZXN0YCBhcmUgdXNlZCBkaXJlY3RseSBpbiBpcHRhYmxlcyBydWxlcywgdGhlc2UgbWF5IGJlIG9uIHRoZSBob3QgcGF0aC4gQnV0IEknbSBzcGVjaWZpY2FsbHkgZm9jdXNlZCBvbiB0aGUgbmV0bGluayBpbnRlcmZhY2UgaGVyZS4gVGhlIG5ldGxpbmsgaW50ZXJmYWNlLCB3aGVyZSB0aGUgcmVhbGx5IGludGVyZXN0aW5nIENJRFIgdHJhY2tpbmcgYW5kIHVwZGF0ZXMgaGFwcGVuLCBtYWtlcyB1c2Ugb2YgdGhlIGBpcF9zZXRfdWFkZGAsIGBpcF9zZXRfdWRlbGAsIGFuZCBgaXBfc2V0X3V0ZXN0YC4gVGhvc2UgYXJlIHRoZSBvbmVzIEkgcmVhbGx5IHdhbnQgdG8gZm9jdXMgb24gZm9yIHRoaXMgdGVzdGluZy4gIExldCdzIGtlZXAgdGhvc2UuXG5cbk5vdywgSSBzaG91bGQgZG91YmxlLWNoZWNrIGFib3V0IGBoYXNoX25ldDRfdWFkdGAgdG8gbWFrZSBzdXJlIGl0J3MgZXhwbGljaXRseSBzZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjUxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM1OjU2LjMyMTY5MDYwNFoiLCJTZXEiOjYyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI1NjQ0MjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhc2hfbmV0NF91YWR0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MTM1PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjEzNjpoYXNoX25ldDRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0xMzctXFx0ICAgICAgIGVudW0gaXBzZXRfYWR0IGFkdCwgdTMyICpsaW5lbm8sIHUzMiBmbGFncywgYm9vbCByZXRyaWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNTo1Ni42NDczNDE0ODVaIiwiU2VxIjo2MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk1NDM0NzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDb25zaWRlcmluZyB0aGUgTnVhbmNlcyoqXG5cblJpZ2h0LCB0aGF0J3Mgc2V0dGxlZC4gT2theSwgc28gbm93IEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gU3BlY2lmaWNhbGx5LCBJJ20gY29uc2lkZXJpbmcgYGhhc2hfbmV0Nl91YWR0YC4gSSBuZWVkIHRvIGV2YWx1YXRlIGl0cyBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBvdmVyYWxsIHN5c3RlbSBhcmNoaXRlY3R1cmUuIElzIHRoaXMgdGhlIHJpZ2h0IGxldmVsIG9mIGFic3RyYWN0aW9uPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHk/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGdvdGNoYXMgb3IgZWRnZSBjYXNlcyBJIG5lZWQgdG8gYW50aWNpcGF0ZT8gSSBtdXN0IGNvbnNpZGVyIHRoZSB0cmFkZS1vZmZzIGJldHdlZW4gdGhpcyBhcHByb2FjaCBhbmQgb3RoZXIgbWV0aG9kcy4gSXMgaXQgdGhlIG1vc3QgZWZmaWNpZW50IHNvbHV0aW9uLCBvciBhcmUgdGhlcmUgYWx0ZXJuYXRpdmVzIHRoYXQgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZSBmb3IgdGhpcyBzcGVjaWZpYyB1c2UtY2FzZT9cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2NDYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNjowMC42MDE2OTIxNjVaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzI3NzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhc2hfbmV0Nl91YWR0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM9MzA5PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjMxMDpoYXNoX25ldDZfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0zMTEtXFx0ICAgICAgIGVudW0gaXBzZXRfYWR0IGFkdCwgdTMyICpsaW5lbm8sIHUzMiBmbGFncywgYm9vbCByZXRyaWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNjowMC42NTg0MjMzMjNaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2MDg2NjkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBQb3NzaWJpbGl0eSoqXG5cblllcy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgSSBhZ3JlZS4gTm93LCBsZXQncyBzZWUuLi4gd2hhdCBhYm91dCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCB0aGUgYGhhc2hfbmV0bmV0NF91YWR0YCBpbXBsZW1lbnRhdGlvbj8gSSB3b25kZXIgaWYgZm9jdXNpbmcgb24gdGhhdCBwYXJ0aWN1bGFyIG1ldGhvZCBtaWdodCB5aWVsZCBzb21lIGludGVyZXN0aW5nIGluc2lnaHRzLCBvciBwcm92aWRlIGEgY2xlYXJlciBwYXRoIGZvcndhcmQuIFBlcmhhcHMgdGhhdCdzIHdoZXJlIHRoZSBjcml0aWNhbCBjb21wb25lbnQgbGllcy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgYXBwcm9hY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyOTY0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzY6MDQuMjE5Mjk0MTU1WiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjY0NDU1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX25ldG5ldDRfdWFkdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTE2Nz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYzoxNjg6aGFzaF9uZXRuZXQ0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMTY5LVxcdFxcdCAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM2OjA0LjMwNTk0NDYyMloiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDM0Mzk0NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqUmVmbGVjdGluZyBvbiB0aGUgQXJjaGl0ZWN0dXJlKipcblxuWWVzLCB0aGF0J3Mgd2hhdCBJJ20gdGhpbmtpbmcgdG9vLiBTZWVtcyBsaWtlIHRoZSByaWdodCBkaXJlY3Rpb24uIFRoZW4gdGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IHBvcHMgdXA6IFdoYXQncyB0aGUgc3RhdHVzIG9mIGBoYXNoX25ldHBvcnQ0X3VhZHRgPyBJdCdzIGEga2V5IGNvbXBvbmVudCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gdGFraW5nIHRoZSByaWdodCBhcHByb2FjaC4gTmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzI0NiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM2OjA3LjM0MDM0MTQ2WiIsIlNlcSI6NjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY4ODkxOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGFzaF9uZXRwb3J0NF91YWR0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jPTE1Mz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6MTU0Omhhc2hfbmV0cG9ydDRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMTU1LVxcdFxcdCAgIGVudW0gaXBzZXRfYWR0IGFkdCwgdTMyICpsaW5lbm8sIHUzMiBmbGFncywgYm9vbCByZXRyaWVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNjowNy40NDcyMzU0NTdaIiwiU2VxIjo2OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyOTE1NDYzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IEFja25vd2xlZGdtZW50IGFuZCBSZWZpbmVtZW50KipcblxuWWVzLiAqVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gV2UncmUgb24gdGhlIHJpZ2h0IHRyYWNrLiogV2hhdCBhYm91dCBgaGFzaF9pcHBvcnRuZXQ0X3VhZHRgPyAqTm93IEknbSBkaXZpbmcgZGVlcGVyLCBhbmQgSSdtIHRoaW5raW5nIGFib3V0IGEgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmUgb3IgZnVuY3Rpb24gbmFtZS4gSXQncyBhIGtleSBwaWVjZSwgcHJlc3VtYWJseSByZWxhdGVkIHRvIGhhc2hpbmcgSVAgYWRkcmVzc2VzLCBwb3J0cywgYW5kIHBvdGVudGlhbGx5IG5ldHdvcmsgaW5mb3JtYXRpb24gZm9yIElQdjQsIHVzaW5nIGEgdXNlci1kZWZpbmVkIGFic3RyYWN0IGRhdGEgdHlwZS4gSXMgaXQgdGhlIHJpZ2h0IG9uZSBmb3IgdGhpcyBzaXR1YXRpb24/IERvIHdlIGhhdmUgb3RoZXIgb3B0aW9ucz8gV2hhdCBhcmUgdGhlIHRyYWRlb2Zmcz8gSSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSd2ZSBpZGVudGlmaWVkIHRoZSBiZXN0LXN1aXRlZCBtZWNoYW5pc20gZnJvbSB0aGUgYXZhaWxhYmxlIHNvbHV0aW9ucy4gVGhlIGRldmlsIGlzIGluIHRoZSBkZXRhaWxzLCBzbyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIG5hbWluZyBjb252ZW50aW9uIGFuZCB0aGUgZGF0YSB0eXBlIGxpbmUgdXAgd2l0aCBjdXJyZW50IHJlcXVpcmVtZW50cywgYmVzdCBwcmFjdGljZXMsIGFuZCBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucy4qXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNTM3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MzY6MTEuNjc2Mzk0NDA5WiIsIlNlcSI6NzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzEwMzkzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNoX2lwcG9ydG5ldDRfdWFkdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTE1OT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYzoxNjA6aGFzaF9pcHBvcnRuZXQ0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMTYxLVxcdFxcdCAgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM2OjExLjczOTUwMjc2N1oiLCJTZXEiOjcxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDg4OTcwOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgQW5hbHlzaXMqKlxuXG5Pa2F5LCB5ZXMsIHRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBhbGwgdGhlc2UgYHVhZHRgIGZ1bmN0aW9ucyBhcmUgZXhwbGljaXRseSBkZWZpbmVkLiBUaGlzIG1lYW5zIEkgY2FuIGRlZmluaXRlbHkgaW5jbHVkZSB0aGVtIHdpdGhpbiBgRm9jdXNTeW1ib2xzYC4gTGV0J3MgbGlzdCB0aGVtIG91dCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueTogYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGBoYXNoX25ldDRfdWFkdGAsIGBoYXNoX25ldDZfdWFkdGAsIGBoYXNoX25ldGlmYWNlNF91YWR0YCwgYGhhc2hfbmV0aWZhY2U2X3VhZHRgLCBgaGFzaF9uZXRwb3J0bmV0NF91YWR0YCwgYGhhc2hfbmV0cG9ydG5ldDZfdWFkdGAsIGBoYXNoX25ldG5ldDRfdWFkdGAsIGBoYXNoX25ldG5ldDZfdWFkdGAsIGBoYXNoX25ldHBvcnQ0X3VhZHRgLCBgaGFzaF9uZXRwb3J0Nl91YWR0YCwgYGhhc2hfaXBwb3J0bmV0NF91YWR0YCwgYGhhc2hfaXBwb3J0bmV0Nl91YWR0YC5cblxuQWgsIGhhbmcgb24gYSBtb21lbnQuLi4gSSBzZWUgdGhhdCB0aGUgcGF0Y2ggYWxzbyBpbXBhY3RzIGBtdHlwZV9mbHVzaGAuIEkgbmVlZCB0byB2ZXJpZnkgaWYgdGhlcmUncyBhbiBhc3NvY2lhdGVkIGZsdXNoIGZ1bmN0aW9uLiBMZXQgbWUgZGlnIGludG8gdGhhdCBhIGxpdHRsZSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzkyMiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNjoxNi4yMjg0NzY3MVoiLCJTZXEiOjcyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQzNzE3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXR5cGVfZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTE4OD1zdGF0aWMgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyIHplcm9tYXNrID0ge307XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIyMy0jdW5kZWYgbXR5cGVfYWhhc2hfbWVtc2l6ZVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjI0OiN1bmRlZiBtdHlwZV9mbHVzaFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjI1LSN1bmRlZiBtdHlwZV9kZXN0cm95XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTI3MS0jZGVmaW5lIG10eXBlX2FoYXNoX21lbXNpemVcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2FoYXNoX21lbXNpemUpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNzI6I2RlZmluZSBtdHlwZV9mbHVzaFxcdFxcdElQU0VUX1RPS0VOKE1UWVBFLCBfZmx1c2gpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNzMtI2RlZmluZSBtdHlwZV9kZXN0cm95XFx0XFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9kZXN0cm95KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD01MDg9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjUwOTptdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC01MTAte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xNjMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZV92YXJpYW50ID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNjQwLVxcdC5kZXN0cm95ID0gbXR5cGVfZGVzdHJveSxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjE2NDE6XFx0LmZsdXNoXFx0PSBtdHlwZV9mbHVzaCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE2NDItXFx0LmhlYWRcXHQ9IG10eXBlX2hlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM2OjE2LjMyMjg1MzgwOFoiLCJTZXEiOjczLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzI4MjQ3OTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIEZsdXNoIE1lY2hhbmlzbSBpbiB0aGUgSVAgU2V0IENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGZsdXNoIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgaW4gdGhpcyBJUCBTZXQgY29kZS4gYG10eXBlX2ZsdXNoYCBpcyBiZWluZyBhc3NpZ25lZCB0byBgc2V0LVx1MDAzZXZhcmlhbnQtXHUwMDNlZmx1c2hgLiBSaWdodCwgdGhhdCdzIHRoZSBmdW5jdGlvbiBwb2ludGVyIGZvciB0aGUgZmx1c2ggb3BlcmF0aW9uIHdpdGhpbiBhIHNwZWNpZmljIHNldCB2YXJpYW50LiBOb3csIHRoZSBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoYXQgdGhpcyBgbXR5cGVfZmx1c2hgIGlzbid0IGRlZmluZWQgZGlyZWN0bHkgaW4gYSBDIGZpbGU7IGl0J3MgYmVpbmcgZ2VuZXJhdGVkIGJ5IHRoaXMgbWFjcm8sIGBJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKWAuIFNvIGl0J3MgZXNzZW50aWFsbHkgYmVpbmcgY29uc3RydWN0ZWQgYXQgY29tcGlsZSB0aW1lLCBiYXNlZCBvbiB0aGF0IG1hY3JvLiBJIG5lZWQgdG8gdHJhY2sgZG93biBleGFjdGx5ICpob3cqIHRoYXQgbWFjcm8gd29ya3MgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZmx1c2hpbmcgaW1wbGVtZW50YXRpb24uIEknbSBnb2luZyB0byBhc3N1bWUgdGhhdCB0aGUgYG5ldGxpbmtgIGhhbmRsZXIgZm9yIGZsdXNoIGlzIHByb2JhYmx5IGBpcF9zZXRfdWZsdXNoYCBvciBzb21ldGhpbmcgdmVyeSBzaW1pbGFyLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGhvdyB0aGUgZmx1c2ggaXMgaW5pdGlhdGVkIHRocm91Z2ggbmV0bGluay5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ4OTAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNjoyMS4wNTExMDYwMzRaIiwiU2VxIjo3NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0Mjk2MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklQU0VUX0NNRF9GTFVTSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTY0LVxcdH0sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxNjU6XFx0W0lQU0VUX0NNRF9GTFVTSF1cXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2Ni1cXHRcXHQuY2FsbFxcdFxcdD0gaXBfc2V0X2ZsdXNoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMTozNjoyMS4xMzU0MDY1MDJaIiwiU2VxIjo3NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE5NzU2NDUyODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhc29uaW5nIGZvciBGdXp6aW5nIEZvY3VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGlkZW50aWZ5IHRoZSBrZXkgbmV0bGluayBoYW5kbGVycyBtb2RpZmllZCBieSB0aGlzIHBhdGNoLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgaXBzZXQgZnVuY3Rpb25hbGl0eS4gSSBzdGFydGVkIHdpdGggYGlwX3NldF9mbHVzaGAgYXMgdGhlIHByaW1hcnkgdGFyZ2V0IGJlY2F1c2Ugb2YgaXRzIGltbWVkaWF0ZSByZWxldmFuY2UsIGJ1dCB0aGVuIEkgcmVhbGl6ZWQgaXQncyBqdXN0IG9uZSBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIHF1aWNrbHkgc2Nhbm5lZCBmb3Igb3RoZXIgbmV0bGluayBoYW5kbGVycywgbGlrZSBgaXBfc2V0X2NyZWF0ZWAsIGBpcF9zZXRfZGVzdHJveWAsIGV0Yy4gdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIGlkZW50aWZ5aW5nIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMuXG5cblRoZSBwYXRjaCBhcHBlYXJzIHRvIGJlIGZvY3VzZWQgb24gaW1wcm92aW5nIHRoZSBwZXJmb3JtYW5jZSBvZiBuZXR3b3JrIHByZWZpeCBoYW5kbGluZyB3aXRoaW4gY2VydGFpbiBpcHNldCBoYXNoIHR5cGVzLiBJIHNhdyB0aGF0IGBpcF9zZXRfdWFkZGAsIGBpcF9zZXRfdWRlbGAsIGBpcF9zZXRfdXRlc3RgLCBhbmQgYGlwX3NldF9mbHVzaGAgYXJlIHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMuIEkgY2hlY2tlZCB3aGljaCBgRW5hYmxlQ29uZmlnc2AgYXJlIGFzc29jaWF0ZWQgd2l0aCBpdCwgYW5kIGl0IHNlZW1zIHRvIGJlIHNwZWNpZmljIHRvIHR5cGVzIHN1cHBvcnRpbmcgbmV0d29yayBwcmVmaXhlcy4gVGhlIGNvcmUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCBhIGBzZXFjb3VudF9zcGlubG9ja190YCBmb3IgaW4tcGxhY2UgcmVvcmRlcmluZy4gVGhpcyBpbmRpY2F0ZXMgdGhlIGNoYW5nZSB0b3VjaGVzIENJRFIgdHJhY2tpbmcuXG5cblRoZXJlZm9yZSwgdGhlIHBhdGNoIGFsdGVycyB0aGUgQ0lEUiB0cmFja2luZyBsb2dpYyBmb3IgaXBzZXQgaGFzaCB0eXBlcyB0aGF0IHN1cHBvcnQgbmV0d29ya3MuIEdpdmVuIHRoZSBgSVBfU0VUX0hBU0hfV0lUSF9ORVRTYCBwcmVwcm9jZXNzb3IgY2hlY2tzLCBpdCBvbmx5IGFmZmVjdHMgYGhhc2g6bmV0YCwgYGhhc2g6bmV0LGlmYWNlYCBhbmQgc2ltaWxhciB0eXBlcy4gVGhlIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYG5ldF9wcmVmaXhlc2AgYXJyYXkgcmVvcmRlcmluZywgZGlyZWN0bHkgaW1wYWN0cyBob3cgbmV0d29yayBwcmVmaXhlcyBhcmUgYWRkZWQsIGRlbGV0ZWQsIHRlc3RlZCwgYW5kIGZsdXNoZWQuXG5cblVsdGltYXRlbHksIEkgd2FudCB0byB1c2UgYHNldC1yZXN1bHRzYCB0byBwcm9wZXJseSBmb2N1cyBmdXp6aW5nLiBCYXNlZCBvbiBteSByZXZpZXcsIEkndmUgY29tcGlsZWQgYSBsaXN0IG9mIGBGb2N1c1N5bWJvbHNgIHRoYXQgY292ZXJzIHRoZSBuZXRsaW5rIGhhbmRsZXJzIGFuZCB0aGUgY29ycmVzcG9uZGluZyBgdWFkdGAgZnVuY3Rpb25zIGZvciB0aGUgYWZmZWN0ZWQgaGFzaCB0eXBlczogYGlwX3NldF91YWRkYCwgYGlwX3NldF91ZGVsYCwgYGlwX3NldF91dGVzdGAsIGBpcF9zZXRfZmx1c2hgLCBhbmQgYWxsIHRoZSBgaGFzaF8qX3VhZHRgIHZhcmlhbnRzIEkgaWRlbnRpZmllZC4gVGhpcyBzaG91bGQgcHJvdmlkZSBhIGZvY3VzZWQgYW5kIGVmZmljaWVudCBmdXp6aW5nIHN0cmF0ZWd5IHRoYXQgYWRkcmVzc2VzIHRoZSBjb3JlIGNoYW5nZXMgYW5kIHRoZWlyIHBvdGVudGlhbCBpbXBhY3QuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUzNTEsIk91dHB1dFRva2VucyI6NDA1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjM2OjMzLjExMTA1NDU1OVoiLCJTZXEiOjc2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjk4OTY2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiTkVURklMVEVSXCIsXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVElGQUNFXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVE5FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUUE9SVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfSVBQT1JUTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfc2V0X3VhZGRcIixcbiAgICBcImlwX3NldF91ZGVsXCIsXG4gICAgXCJpcF9zZXRfdXRlc3RcIixcbiAgICBcImlwX3NldF9mbHVzaFwiLFxuICAgIFwiaGFzaF9uZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0Nl91YWR0XCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNF91YWR0XCIsXG4gICAgXCJoYXNoX25ldGlmYWNlNl91YWR0XCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0cG9ydG5ldDZfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRuZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0bmV0Nl91YWR0XCIsXG4gICAgXCJoYXNoX25ldHBvcnQ0X3VhZHRcIixcbiAgICBcImhhc2hfbmV0cG9ydDZfdWFkdFwiLFxuICAgIFwiaGFzaF9pcHBvcnRuZXQ0X3VhZHRcIixcbiAgICBcImhhc2hfaXBwb3J0bmV0Nl91YWR0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgQ0lEUiB0cmFja2luZyBsb2dpYyBpbiBpcHNldCBoYXNoIHR5cGVzIHRoYXQgc3VwcG9ydCBuZXR3b3JrcyAoZS5nLiwgaGFzaDpuZXQsIGhhc2g6bmV0LGlmYWNlKS4gSXQgaW50cm9kdWNlcyBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdG8gZ3VhcmQgaW4tcGxhY2UgcmVvcmRlcmluZyBvZiB0aGUgbmV0X3ByZWZpeGVzIGFycmF5LCByZXBsYWNpbmcgdGhlIHByZXZpb3VzIFJDVS1iYXNlZCByZWFsbG9jYXRpb24gYXBwcm9hY2ggZm9yIGRlbGV0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBpcHNldCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IG5ldHdvcmsgcHJlZml4ZXMgYXJlIGFkZGVkLCBkZWxldGVkLCB0ZXN0ZWQsIGFuZCBmbHVzaGVkLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBlbnRyeSBwb2ludHMgZm9yIGFkZGluZywgZGVsZXRpbmcsIHRlc3RpbmcsIGFuZCBmbHVzaGluZyBlbGVtZW50cyBpbiB0aGVzZSBzcGVjaWZpYyBoYXNoIHR5cGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIixcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiSVBfU0VUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRJRkFDRVwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFwiLFxuICAgIFwiSVBfU0VUX0hBU0hfTkVUXCIsXG4gICAgXCJJUF9TRVRfSEFTSF9ORVRORVRcIixcbiAgICBcIklQX1NFVF9IQVNIX05FVFBPUlRcIixcbiAgICBcIklQX1NFVF9IQVNIX0lQUE9SVE5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3NldF91YWRkXCIsXG4gICAgXCJpcF9zZXRfdWRlbFwiLFxuICAgIFwiaXBfc2V0X3V0ZXN0XCIsXG4gICAgXCJpcF9zZXRfZmx1c2hcIixcbiAgICBcImhhc2hfbmV0NF91YWR0XCIsXG4gICAgXCJoYXNoX25ldDZfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRpZmFjZTRfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRpZmFjZTZfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0bmV0NF91YWR0XCIsXG4gICAgXCJoYXNoX25ldHBvcnRuZXQ2X3VhZHRcIixcbiAgICBcImhhc2hfbmV0bmV0NF91YWR0XCIsXG4gICAgXCJoYXNoX25ldG5ldDZfdWFkdFwiLFxuICAgIFwiaGFzaF9uZXRwb3J0NF91YWR0XCIsXG4gICAgXCJoYXNoX25ldHBvcnQ2X3VhZHRcIixcbiAgICBcImhhc2hfaXBwb3J0bmV0NF91YWR0XCIsXG4gICAgXCJoYXNoX2lwcG9ydG5ldDZfdWFkdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIENJRFIgdHJhY2tpbmcgbG9naWMgaW4gaXBzZXQgaGFzaCB0eXBlcyB0aGF0IHN1cHBvcnQgbmV0d29ya3MgKGUuZy4sIGhhc2g6bmV0LCBoYXNoOm5ldCxpZmFjZSkuIEl0IGludHJvZHVjZXMgYSBzZXFjb3VudF9zcGlubG9ja190IHRvIGd1YXJkIGluLXBsYWNlIHJlb3JkZXJpbmcgb2YgdGhlIG5ldF9wcmVmaXhlcyBhcnJheSwgcmVwbGFjaW5nIHRoZSBwcmV2aW91cyBSQ1UtYmFzZWQgcmVhbGxvY2F0aW9uIGFwcHJvYWNoIGZvciBkZWxldGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgaXBzZXQgbG9naWMgdGhhdCBhZmZlY3RzIGhvdyBuZXR3b3JrIHByZWZpeGVzIGFyZSBhZGRlZCwgZGVsZXRlZCwgdGVzdGVkLCBhbmQgZmx1c2hlZC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldGxpbmsgZW50cnkgcG9pbnRzIGZvciBhZGRpbmcsIGRlbGV0aW5nLCB0ZXN0aW5nLCBhbmQgZmx1c2hpbmcgZWxlbWVudHMgaW4gdGhlc2Ugc3BlY2lmaWMgaGFzaCB0eXBlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow65scf[1] Phase: Succeeded StartedAt: 2026-08-06 21:36:44 +0000 UTC FinishedAt: 2026-08-06 21:36:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 21:36:44 +0000 UTC FinishedAt: 2026-08-06 21:36:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2] Phase: Succeeded StartedAt: 2026-08-06 21:36:44 +0000 UTC FinishedAt: 2026-08-07 01:16:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:36:44 +0000 UTC FinishedAt: 2026-08-07 01:16:37 +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":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:36:44 +0000 UTC FinishedAt: 2026-08-06 21:36:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:36:44 +0000 UTC FinishedAt: 2026-08-06 21:36:49 +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":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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-workflow65scf/series-workflow65scf-convert-artifact-700657107/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:36:54 +0000 UTC FinishedAt: 2026-08-06 21:54:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:36:54 +0000 UTC FinishedAt: 2026-08-06 21:54:08 +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:*2b77da8f-7eed-4086-a13d-10555b8d847d,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-workflow65scf/series-workflow65scf-convert-artifact-700657107/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": "ddb2dbf6-24e7-4175-a80c-539582c5cdce", "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-workflow65scf/series-workflow65scf-build-action-4189221121/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:36:54 +0000 UTC FinishedAt: 2026-08-06 21:53:58 +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:*2b77da8f-7eed-4086-a13d-10555b8d847d,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-workflow65scf/series-workflow65scf-convert-artifact-700657107/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": "ddb2dbf6-24e7-4175-a80c-539582c5cdce", "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-workflow65scf/series-workflow65scf-build-action-4189221121/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:54:08 +0000 UTC FinishedAt: 2026-08-06 21:54:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:54:08 +0000 UTC FinishedAt: 2026-08-06 21:54:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:54:08 +0000 UTC FinishedAt: 2026-08-06 21:54:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:54:08 +0000 UTC FinishedAt: 2026-08-06 21:54:12 +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":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-workflow65scf/series-workflow65scf-convert-artifact-292679882/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:54:18 +0000 UTC FinishedAt: 2026-08-06 21:56:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:54:18 +0000 UTC FinishedAt: 2026-08-06 21:56:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ddb2dbf6-24e7-4175-a80c-539582c5cdce,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-workflow65scf/series-workflow65scf-build-action-4189221121/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-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:56:24 +0000 UTC FinishedAt: 2026-08-06 21:56:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:56:24 +0000 UTC FinishedAt: 2026-08-06 21:56:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:56:24 +0000 UTC FinishedAt: 2026-08-06 22:13:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:56:24 +0000 UTC FinishedAt: 2026-08-06 22:13:07 +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:*2b77da8f-7eed-4086-a13d-10555b8d847d,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-workflow65scf/series-workflow65scf-convert-artifact-292679882/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": "15286b7c-11fc-49dc-baff-8c517009fa43", "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-workflow65scf/series-workflow65scf-build-action-1120556270/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 21:56:24 +0000 UTC FinishedAt: 2026-08-06 22:12:57 +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:*2b77da8f-7eed-4086-a13d-10555b8d847d,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-workflow65scf/series-workflow65scf-convert-artifact-292679882/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": "15286b7c-11fc-49dc-baff-8c517009fa43", "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-workflow65scf/series-workflow65scf-build-action-1120556270/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 22:13:07 +0000 UTC FinishedAt: 2026-08-06 22:13:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 22:13:07 +0000 UTC FinishedAt: 2026-08-06 22:13:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 22:13:07 +0000 UTC FinishedAt: 2026-08-06 22:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 22:13:07 +0000 UTC FinishedAt: 2026-08-06 22:14:47 +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:*15286b7c-11fc-49dc-baff-8c517009fa43,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-workflow65scf/series-workflow65scf-build-action-1120556270/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-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 22:14:57 +0000 UTC FinishedAt: 2026-08-07 01:16:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 22:14:57 +0000 UTC FinishedAt: 2026-08-07 01:16:37 +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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"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:*ddb2dbf6-24e7-4175-a80c-539582c5cdce,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*15286b7c-11fc-49dc-baff-8c517009fa43,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-workflow65scf/series-workflow65scf-build-action-4189221121/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-workflow65scf/series-workflow65scf-build-action-1120556270/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 22:14:57 +0000 UTC FinishedAt: 2026-08-06 22:15:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 22:14:57 +0000 UTC FinishedAt: 2026-08-06 22:15:02 +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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"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-workflow65scf/series-workflow65scf-convert-artifact-635796831/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 22:14:57 +0000 UTC FinishedAt: 2026-08-06 22:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 22:14:57 +0000 UTC FinishedAt: 2026-08-06 22:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 22:14:57 +0000 UTC FinishedAt: 2026-08-06 22:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 22:15:07 +0000 UTC FinishedAt: 2026-08-07 01:16:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow65scf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","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_net4_uadt","hash_net6_uadt","hash_netiface4_uadt","hash_netiface6_uadt","hash_netportnet4_uadt","hash_netportnet6_uadt","hash_netnet4_uadt","hash_netnet6_uadt","hash_netport4_uadt","hash_netport6_uadt","hash_ipportnet4_uadt","hash_ipportnet6_uadt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_HASH_NETIFACE","IP_SET_HASH_NETPORTNET","IP_SET_HASH_NET","IP_SET_HASH_NETNET","IP_SET_HASH_NETPORT","IP_SET_HASH_IPPORTNET"],"series_id":"8eba1ea9-172f-4324-a5b7-72f72d4ccef1","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-06 22:15:07 +0000 UTC FinishedAt: 2026-08-07 01:16:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ddb2dbf6-24e7-4175-a80c-539582c5cdce,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*15286b7c-11fc-49dc-baff-8c517009fa43,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-workflow65scf/series-workflow65scf-build-action-4189221121/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-workflow65scf/series-workflow65scf-build-action-1120556270/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-workflow65scf/series-workflow65scf-convert-artifact-635796831/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,}