Name: series-workflowq96qk Phase: Succeeded StartedAt: 2026-08-01 14:27:11 +0000 UTC FinishedAt: 2026-08-01 16:01:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[0] Phase: Succeeded StartedAt: 2026-08-01 14:27:11 +0000 UTC FinishedAt: 2026-08-01 14:30:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 14:27:11 +0000 UTC FinishedAt: 2026-08-01 14:30:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MEDIATEK", "MAC80211", "USB", "MT7921U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MEDIATEK", "MAC80211", "USB", "MT7921U" ], "series_id": "de74c332-a5ed-4d86-979a-da11a9d03215" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7921_run_firmware" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHdoZW4gcGFyc2luZyBmaXJtd2FyZSBkYXRhIGluIHRoZSBNZWRpYVRlayBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBhdHRhY2hlZCB2aWEgVVNCIChNVDc5MjFVKSwgd2hpY2ggaXMgZW11bGF0ZWQgYW5kIGZ1enphYmxlIGJ5IHN5emthbGxlci4gU3l6a2FsbGVyIGNhbiBhbHNvIGluamVjdCBtYWxpY2lvdXMgZmlybXdhcmUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUzYTBiNDA2NjA0NTI1NmZiOTgxMTQ2Y2VhNGU1NmVmNzI2YWFhNjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE0OjI4OjQ4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbmluZGV4IDI1Yjk0MzcyNTBmN2IuLjFjOTk2NDViODEyMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbkBAIC00NjcsNiAmIzQzOzQ2Nyw5IEBAIHN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gXHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcdTAwM2MgbGVuOyBvZmZzZXQgJiM0Mzs9IGxlMzJfdG9fY3B1KGNsYy1cdTAwM2VsZW4pKSB7XG4gXHRcdGNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTIxX2NsYyAqKShjbGNfYmFzZSAmIzQzOyBvZmZzZXQpO1xuIFxuJiM0MztcdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4gXHRcdC8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqL1xuIFx0XHRpZiAocGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSlcbiBcdFx0XHRjb250aW51ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3Mgd2hlbiBwYXJzaW5nIGZpcm13YXJlIGRhdGEgaW4gdGhlIE1lZGlhVGVrIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIGF0dGFjaGVkIHZpYSBVU0IgKE1UNzkyMVUpLCB3aGljaCBpcyBlbXVsYXRlZCBhbmQgZnV6emFibGUgYnkgc3l6a2FsbGVyLiBTeXprYWxsZXIgY2FuIGFsc28gaW5qZWN0IG1hbGljaW91cyBmaXJtd2FyZSB0byB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTNhMGI0MDY2MDQ1MjU2ZmI5ODExNDZjZWE0ZTU2ZWY3MjZhYWE2OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDEgMTQ6Mjg6NDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCmluZGV4IDI1Yjk0MzcyNTBmN2IuLjFjOTk2NDViODEyMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCkBAIC00NjcsNiAmIzQzOzQ2Nyw5IEBAIHN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpCiAJZm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgJmx0OyBsZW47IG9mZnNldCAmIzQzOz0gbGUzMl90b19jcHUoY2xjLSZndDtsZW4pKSB7CiAJCWNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTIxX2NsYyAqKShjbGNfYmFzZSAmIzQzOyBvZmZzZXQpOwogCiYjNDM7CQlpZiAoY2xjLSZndDtpZHggJmd0Oz0gQVJSQVlfU0laRShwaHktJmd0O2NsYykpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiAJCS8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqLwogCQlpZiAocGh5LSZndDtjbGNbY2xjLSZndDtpZHhdKQogCQkJY29udGludWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNgLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3ZlIGFkZGVkIGEgYm91bmRzIGNoZWNrIHdpdGhpbiB0aGUgYG10NzkyMV9sb2FkX2NsY2AgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgcHJvdGVjdGluZyBhZ2FpbnN0IGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHRvIGBwaHktJmd0O2NsY1tjbGMtJmd0O2lkeF1gLiBHb29kIGNhdGNoLCB0aGF0JiMzOTtzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5LiBXZSBkb24mIzM5O3Qgd2FudCB0byBiZSB3cml0aW5nIG91dHNpZGUgdGhlIGFycmF5JiMzOTtzIGFsbG9jYXRlZCBtZW1vcnkuCgpUaGUgZHJpdmVyIGl0c2VsZiBpcyB0aGUgTWVkaWFUZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgcmVhY2hhYmxlIGlzIHRoaXMgZHJpdmVyPyBJdCYjMzk7cyBhIHdpcmVsZXNzIGRyaXZlciBmb3Igc3BlY2lmaWMgaGFyZHdhcmUsIHNvIGl04oCZcyBsaWtlbHkgdGhhdCBpdCBuZWVkcyB0aGUgYWN0dWFsIE1UNzkyMSBoYXJkd2FyZSB0byBmdW5jdGlvbiBwcm9wZXJseS4gTW9zdCBvZiB0aGUgdGltZSB0aGVzZSBkcml2ZXJzIHJlcXVpcmUgZGlyZWN0IGhhcmR3YXJlIGFjY2Vzcy4gVW5sZXNzLCBvZiBjb3Vyc2UsIHRoZXJlJiMzOTtzIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRvciBhdCBwbGF5LCBvciBpZiBpdCYjMzk7cyBhIFVTQiBkcml2ZXIgdGhhdCBjYW4gYmUgZW11bGF0ZWQgdmlhIHNvbWV0aGluZyBsaWtlIGR1bW15X2hjZCBvciB1c2IgZ2FkZ2V0LCBvciBTRElPLCBvciBpZiBpdCYjMzk7cyBQQ0kuCgpJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhpcyBNVDc5MjEgZHJpdmVyIGlzIHN0cmljdGx5IFBDSSwgb3IgaWYgaXQgYWxzbyBoYXMgYSBVU0Igb3IgU0RJTyBpbnRlcmZhY2Ugd2hpY2ggd291bGQgbWFrZSBpdCBmYXIgZWFzaWVyIHRvIHRlc3QgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiBJIHdpbGwgcXVpY2tseSBzZWFyY2ggdGhlIGRyaXZlciBkaXJlY3RvcnkgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2AgdG8gY2hlY2sgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7aW5pdC5jJiMzNDssCiAgICAmIzM0O21hYy5jJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttY3UuYyYjMzQ7LAogICAgJiMzNDttY3UuaCYjMzQ7LAogICAgJiMzNDttdDc5MjEuaCYjMzQ7LAogICAgJiMzNDtwY2kuYyYjMzQ7LAogICAgJiMzNDtwY2lfbWFjLmMmIzM0OywKICAgICYjMzQ7cGNpX21jdS5jJiMzNDssCiAgICAmIzM0O3JlZ2QuYyYjMzQ7LAogICAgJiMzNDtyZWdkLmgmIzM0OywKICAgICYjMzQ7cmVncy5oJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvX21hYy5jJiMzNDssCiAgICAmIzM0O3NkaW9fbWN1LmMmIzM0OywKICAgICYjMzQ7dGVzdG1vZGUuYyYjMzQ7LAogICAgJiMzNDt1c2IuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAxNgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE1UNzkyMSBEcml2ZXIqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gc2VlaW5nOiB0aGUgcHJlc2VuY2Ugb2YgYHVzYi5jYCBhbmQgYHNkaW8uY2AgaW4gdGhpcyBjb250ZXh0IHJlYWxseSBvcGVucyB0aGluZ3MgdXAuIFNwZWNpZmljYWxseSwgdGhlIGluY2x1c2lvbiBvZiBgdXNiLmNgIHRlbGxzIG1lIHRoYXQgd2UgaGF2ZSB0aGUgcG90ZW50aWFsIHRvIGludGVyYWN0IHdpdGggdGhlIE1UNzkyMSBkcml2ZXIgdGhyb3VnaCBhIFVTQiBpbnRlcmZhY2UuIFRoaXMgaXMgZmFudGFzdGljIGJlY2F1c2UgaXQgbWVhbnMgd2UgY2FuIGxldmVyYWdlIHN5emthbGxlciYjMzk7cyBjYXBhYmlsaXRpZXMgd2l0aCBgZHVtbXlfaGNkYCBhbmQgYHJhdy1nYWRnZXRgIHRvIGVtdWxhdGUgYSBVU0IgaG9zdCBlbnZpcm9ubWVudC4gVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgd2UgY2FuIG5vdyAqcmVhY2gqIHRoZSByZWxldmFudCBjb2RlIHdpdGhpbiB0aGUgTVQ3OTIxIGRyaXZlciBhbmQsIGNydWNpYWxseSwgdGhhdCBpdOKAmXMgbm93ICpmdXp6YWJsZSouIFRoaXMgaXMgYW4gZXhjZWxsZW50IGZpbmQhIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvbmZpZyBvcHRpb25zIHRvIHNwZWNpZmljYWxseSB0YXJnZXQgYW5kIGlkZW50aWZ5IHRob3NlIHRoYXQgcGVydGFpbiB0byB0aGUgTVQ3OTIxJiMzOTtzIFVTQiBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5MjEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyODpjb25maWcgTVQ3OTIxVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NTYKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gYW5kIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBpcyBgTVQ3OTIxVWAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBkZWVwZXIgYW5kIHVuZGVyc3RhbmQgaXRzIGFzc29jaWF0ZWQgZWNvc3lzdGVtLiBXaGF0IGFyZSB0aGUgc3VwcG9ydGluZyBwYWNrYWdlcywgbGlicmFyaWVzLCBhbmQgaGFyZHdhcmUgaXQgcmVsaWVzIG9uPyBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgdHJvdWJsZXNob290aW5nLCBvcHRpbWl6YXRpb24sIG9yIHBvcnRpbmcgdGhpcyBjb25maWcgdG8gYSBuZXcgZW52aXJvbm1lbnQuIFRoaXMgZ2l2ZXMgbWUgYSBzdGFydGluZyBwb2ludCB0byBhc3Nlc3MgYW55IHBvdGVudGlhbCBpbnRlZ3JhdGlvbiBjaGFsbGVuZ2VzIG9yIGJvdHRsZW5lY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBrZXJuZWwsIGZpcm13YXJlLCBhbmQgdXNlci1zcGFjZSB1dGlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyODpcdGNvbmZpZyBNVDc5MjFVXG4gIDI5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMzA6XHRcdHNlbGVjdCBNVDc5MnhfVVNCXG4gIDMxOlx0XHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxuICAzMjpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAzMzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxuICAzNjpcdFxuICAzNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBtdDc5MjFfbG9hZF9jbGMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG10NzkyMV9sb2FkX2NsY2AgZnVuY3Rpb24uIFJpZ2h0IGF3YXksIG15IGJyYWluIGZsYWdzIHRoZSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLiBCYXNlZCBvbiB0aGUgY29udGV4dCwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtUaGlzIGlzIGNvbm5lY3RlZCB0byBib3RoIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBzbyB0aG9zZSBhcmUgdGhlIGFyZWFzIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gZmlyc3QuJiMzNDsgVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIGhvdyBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBhY3R1YWxseSBiZWluZyAqdXNlZCouIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGl0JiMzOTtzIGludm9sdmVkIGluIFVTQiBpbml0aWFsaXphdGlvbiwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBjYWxsIHNpdGVzIGFuZCB2ZXJpZnkgaWYgbXkgaHVuY2ggaXMgY29ycmVjdC4gSSBoYXZlIHRvIHNlZSBob3cgdGhlIHN5c3RlbSByZWFjaGVzIHRoYXQgZnVuY3Rpb24sIGFuZCB3aGV0aGVyIFVTQiBpbml0aWFsaXphdGlvbiBpcyB0aGUgdHJpZ2dlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTIxX2xvYWRfY2xjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTM5OT1pbnQgbXQ3OTIxX21jdV91bmlfcnhfYmEoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo0MTA6c3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQxMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjM4PWludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjUwOlx0ZXJyID0gbXQ3OTIxX2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjUxLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc0MAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIFNlcXVlbmNlKioKClJpZ2h0LCBzbyBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBkZWZpbml0ZWx5IGNhbGxlZCBieSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuIFRoYXQmIzM5O3MgdGhlIGVzdGFibGlzaGVkIHJlbGF0aW9uc2hpcC4gTm93LCB0byB0cnVseSB1bmRlcnN0YW5kIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgZm9yIHRoaXMgTVQ3OTIxIGNoaXAsIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoZW4qIGFuZCAqd2h5KiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgY2FsbGVkLiBXaGVyZSBhcmUgdGhlIGVudHJ5IHBvaW50cz8gS25vd2luZyB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCB3aWxsIGdpdmUgbWUgY3JpdGljYWwgaW5zaWdodHMgaW50byB0aGUgZHJpdmVyJiMzOTtzIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gYW5kIG9wZXJhdGlvbmFsIGZsb3cuIExldCYjMzk7cyBzZWUgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyBhY3R1YWxseSBpbnZva2VkLiBJIG5lZWQgdG8gZ2V0IGEgaGlnaC1sZXZlbCBwaWN0dXJlIG9mIGhvdyB0aGUgd2hvbGUgdGhpbmcgc3RhcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTYyNT1pbnQgbXQ3OTIxX21jdV9md19sb2dfMl9ob3N0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGN0cmwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjM4OmludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02Mzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2NTc6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3J1bl9maXJtd2FyZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MjA2PXZvaWQgbXQ3OTIxX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg6MjA3OmludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMjA4LWludCBtdDc5MjFfc2V0X2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmM9NTY9aW50IG10NzkyMWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jLTEwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYzoxMDY6XHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtMTA3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmM9NDE9aW50IG10NzkyMWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmM6NTg6XHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tYWMuYz0xNDc9aW50IG10NzkyMXNfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tYWMuYy0xODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jOjE4MTpcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmMtMTgyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jPTc0PWludCBtdDc5MjFzX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYy05MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmM6OTE6XHRyZXQgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jLTkyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz02NT1zdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy03OC1cdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzo3OTpcdHJldCA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTgwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz04OT1zdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTI3Olx0ZXJyID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTI4LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUxMQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzkyMSBVU0IgSW5pdGlhbGl6YXRpb24gUHJvY2VzcyoqCgpPa2F5LCBzbyBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgYSBrZXkgZnVuY3Rpb24sIGFuZCB0aGUgY29kZSBjbGVhcmx5IHNob3dzIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGJvdGggYG10NzkyMXVfbWN1X2luaXRgIGFuZCBgbXQ3OTIxdV9tYWNfcmVzZXRgIHdpdGhpbiBgdXNiLmNgLiBUaGF0IHBsYWNlcyBpdHMgZXhlY3V0aW9uIHNxdWFyZWx5IGluIHRoZSBVU0IgZGV2aWNlIGluaXRpYWxpemF0aW9uIHBoYXNlLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSYjMzk7ZCBleHBlY3QuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uICpkb2VzKi4gVGhlIGNvZGUgbWVudGlvbnMgYG10NzkyMV9sb2FkX2NsY2AsIHdoaWNoIGlzIGNsZWFybHkgYWJvdXQgcGFyc2luZyBmaXJtd2FyZSBkYXRhLiBUaGUgcXVlc3Rpb24gaXM6IFdoZXJlIGlzIGl0IGdldHRpbmcgdGhlIGZpcm13YXJlIGRhdGE/IElzIGl0IHB1bGxlZCBmcm9tIHRoZSBkZXZpY2UgaXRzZWxmIGR1cmluZyBhIGJvb3Qgc2VxdWVuY2UsIG9yIGlzIGl0IHJlYWRpbmcgYSBmaXJtd2FyZSBmaWxlIGZyb20gdGhlIGhvc3QgbWFjaGluZT8gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBmdW5jdGlvbiBgbXQ3OTIxX2xvYWRfY2xjYCB0byBmaWd1cmUgdGhhdCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQxMDpcdHN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gNDExOlx0e1xuIDQxMjpcdFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md190cmFpbGVyICpoZHI7XG4gNDEzOlx0XHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3JlZ2lvbiAqcmVnaW9uO1xuIDQxNDpcdFx0Y29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKmNsYztcbiA0MTU6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2O1xuIDQxNjpcdFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4gNDE3Olx0XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xuIDQxODpcdFx0aW50IHJldCwgaSwgbGVuLCBvZmZzZXQgPSAwO1xuIDQxOTpcdFx0dTggKmNsY19iYXNlID0gTlVMTCwgaHdfZW5jYXAgPSAwO1xuIDQyMDpcdFxuIDQyMTpcdFx0ZGV2LVx1MDAzZXBoeS5jbGNfY2hhbl9jb25mID0gMHhmZjtcbiA0MjI6XHRcdGRldi1cdTAwM2VyZWdkX3VzZXIgPSBmYWxzZTtcbiA0MjM6XHRcdGlmICghbXQ3OTIxX3JlZ2RfY2xjX3N1cHBvcnRlZChkZXYpKVxuIDQyNDpcdFx0XHRyZXR1cm4gMDtcbiA0MjU6XHRcbiA0MjY6XHRcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG4gNDI3Olx0XHRcdHJldCA9IG10NzkyMV9tY3VfcmVhZF9lZXByb20oZGV2LCBNVF9FRV9IV19UWVBFLCBcdTAwMjZod19lbmNhcCk7XG4gNDI4Olx0XHRcdGlmIChyZXQpXG4gNDI5Olx0XHRcdFx0cmV0dXJuIHJldDtcbiA0MzA6XHRcdFx0aHdfZW5jYXAgPSB1OF9nZXRfYml0cyhod19lbmNhcCwgTVRfRUVfSFdfVFlQRV9FTkNBUCk7XG4gNDMxOlx0XHR9XG4gNDMyOlx0XG4gNDMzOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3LCBmd19uYW1lLCBtZGV2LVx1MDAzZWRldik7XG4gNDM0Olx0XHRpZiAocmV0KVxuIDQzNTpcdFx0XHRyZXR1cm4gcmV0O1xuIDQzNjpcdFxuIDQzNzpcdFx0aWYgKCFmdyB8fCAhZnctXHUwMDNlZGF0YSB8fCBmdy1cdTAwM2VzaXplIFx1MDAzYyBzaXplb2YoKmhkcikpIHtcbiA0Mzg6XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBmaXJtd2FyZVxcblwmIzM0Oyk7XG4gNDM5Olx0XHRcdHJldCA9IC1FSU5WQUw7XG4gNDQwOlx0XHRcdGdvdG8gb3V0O1xuIDQ0MTpcdFx0fVxuIDQ0MjpcdFxuIDQ0MzpcdFx0aGRyID0gKGNvbnN0IHZvaWQgKikoZnctXHUwMDNlZGF0YSAmIzQzOyBmdy1cdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKTtcbiA0NDQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGhkci1cdTAwM2VuX3JlZ2lvbjsgaSYjNDM7JiM0MzspIHtcbiA0NDU6XHRcdFx0cmVnaW9uID0gKGNvbnN0IHZvaWQgKikoKGNvbnN0IHU4ICopaGRyIC1cbiA0NDY6XHRcdFx0XHRcdFx0KGhkci1cdTAwM2VuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTtcbiA0NDc6XHRcdFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVx1MDAzZWxlbik7XG4gNDQ4Olx0XG4gNDQ5Olx0XHRcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cbiA0NTA6XHRcdFx0aWYgKG9mZnNldCAmIzQzOyBsZW4gXHUwMDNlIGZ3LVx1MDAzZXNpemUpIHtcbiA0NTE6XHRcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcblwmIzM0Oyk7XG4gNDUyOlx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiA0NTM6XHRcdFx0XHRnb3RvIG91dDtcbiA0NTQ6XHRcdFx0fVxuIDQ1NTpcdFxuIDQ1NjpcdFx0XHRpZiAoKHJlZ2lvbi1cdTAwM2VmZWF0dXJlX3NldCBcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFx1MDAyNlx1MDAyNlxuIDQ1NzpcdFx0XHQgICAgcmVnaW9uLVx1MDAzZXR5cGUgPT0gRldfVFlQRV9DTEMpIHtcbiA0NTg6XHRcdFx0XHRjbGNfYmFzZSA9ICh1OCAqKShmdy1cdTAwM2VkYXRhICYjNDM7IG9mZnNldCk7XG4gNDU5Olx0XHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NTEKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAzMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBGaXJtd2FyZSBSZXF1ZXN0KioKCk9rYXksIHNvIEkgc2VlIHRoaXMgY29kZSBjYWxscyBgcmVxdWVzdF9maXJtd2FyZWAgYW5kIHRoZW4gcGFyc2VzIHRoZSBmaXJtd2FyZSBmaWxlLiBNeSBleHBlcnQgaW50dWl0aW9uIGltbWVkaWF0ZWx5IGtpY2tzIGluIOKAkyBjYW4gdGhpcyBiZSBmdXp6ZWQ/IEdpdmVuIHRoYXQgaXQmIzM5O3MgcHVsbGluZyBhIGZpbGUgZnJvbSB0aGUgaG9zdCwgdGhhdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gQW5kIEkga25vdyBTeXprYWxsZXIgaXMgY2FwYWJsZSBvZiBmdXp6aW5nIGZpcm13YXJlIGZpbGVzIGlmIGl0JiMzOTtzIHVzaW5nIHRoZSBmaXJtd2FyZSBpbmplY3Rpb24gbWVjaGFuaXNtLgoKSG1tLCBTeXprYWxsZXIgdHlwaWNhbGx5IGZvY3VzZXMgb24gZnV6emluZyBkZXZpY2UgaW5wdXRzIGxpa2UgVVNCIG9yIFBDSS4gQnV0IHdhaXQsIEkgcmVjYWxsIFN5emthbGxlciAqZG9lcyogaGF2ZSBzdXBwb3J0IGZvciBmaXJtd2FyZSBmdXp6aW5nISBJdCBpbnRlcmNlcHRzIGByZXF1ZXN0X2Zpcm13YXJlYCBjYWxscyBhbmQgaW5qZWN0cyBmdXp6ZWQgZGF0YS4gSSB0aGluayBpdCB1c2VzIGBzeXpfbW91bnRfaW1hZ2VgIG9yIGEgc2ltaWxhciBwc2V1ZG8tc3lzY2FsbCB0byBzdXBwbHkgdGhlIGZpcm13YXJlLiBCdXQsIHJpZ2h0LCBpdCBjYW4gYWxzbyB1c2UgYHN5el91c2JfY29ubmVjdGAgd2hpY2ggd291bGQgdHJpZ2dlciB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBhbmQgdGhlbiBpZiB0aGUgZHJpdmVyIHJlcXVlc3RzIGZpcm13YXJlLCBTeXprYWxsZXImIzM5O3MgZnV6emVyIHdpbGwgc3RlcCBpbi4KCkhvbGQgb24sIHRoZSBwYXRjaCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YCDigJMgdGhhdCYjMzk7cyBhIGRlYWQgZ2l2ZWF3YXkhIFRoaXMgbWVhbnMgU3l6a2FsbGVyIGZvdW5kIHRoZSBidWcsIHdoaWNoIG1lYW5zIGl04oCZcyBkZWZpbml0ZWx5IGZ1enphYmxlLgoKTm93LCBsZXQgbWUganVzdCByZS1leGFtaW5lIHRoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7bSBzZWVpbmcgYE1UNzkyMVVgIGlzIHRoZSBVU0IgZHJpdmVyLiBJdCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBhbmQgYWxzbyBgTVQ3OTIxX0NPTU1PTmAuIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2sgZGVwZW5kZW5jaWVzLiBZZXMsIGBNVDc5MjFVYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLiBJJiMzOTtsbCBhbHNvIGNoZWNrIGBXTEFOYCBhbmQgYFdMQU5fVkVORE9SX01FRElBVEVLYCB3aGlsZSBJJiMzOTttIGF0IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTIxVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZz0xNz1jb25maWcgTVQ3OTIxU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NTgKCQkJCQkJCW91dHB1dDogNTkKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIEluc3BlY3Rpb24gQmVnaW5zKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgcGFyZW50IGBLY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24uIFdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5PyBBcmUgdGhlcmUgYW55IHByZS1leGlzdGluZyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIG9uZT8gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG92ZXJhcmNoaW5nIGxvZ2ljIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBiZWZvcmUgZGlnZ2luZyBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBzcGVjaWZpYyBvcHRpb24gYXQgaGFuZC4gVGhpcyBpcyB0aGUgZm91bmRhdGlvbiB1cG9uIHdoaWNoIGV2ZXJ5dGhpbmcgZWxzZSBzaXRzOyB1bmRlcnN0YW5kaW5nIHRoZSBwYXJlbnQgaXMga2V5IHRvIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcJiMzNDsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTQ4PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDk6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy01MC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTg1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3NiBLY29uZmlnKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgbXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgcGxhY2UgdG8gc3RhcnQgd2hlbiBJIG5lZWQgdG8gY29uZmlndXJlIG9yIHRyb3VibGVzaG9vdCBhbnl0aGluZyB3aXRoaW4gYSBMaW51eCBrZXJuZWwgbW9kdWxlLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBLY29uZmlnIGZpbGUgd2lsbCBvdXRsaW5lIGFsbCB0aGUgYnVpbGQgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBNVDc2IHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggaXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2ggZm9yIHRoaXMga2luZCBvZiBrZXJuZWwgaW5mcmFzdHJ1Y3R1cmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqQ29uZmlndXJhdGlvbiBvcHRpb25zOioqIFdoYXQgZmVhdHVyZXMgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQ/IElzIHRoZXJlIHN1cHBvcnQgZm9yIHNwZWNpZmljIGNoaXBzZXRzLCBmcmVxdWVuY3kgYmFuZHMsIG9yIHdpcmVsZXNzIHN0YW5kYXJkcyBsaWtlIDgwMi4xMWF4PwoqICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBvciBkcml2ZXJzIGFyZSByZXF1aXJlZCBmb3IgdGhlIE1UNzYgZHJpdmVyIHRvIGZ1bmN0aW9uPyBUaGlzIG1pZ2h0IGluY2x1ZGUgdGhpbmdzIGxpa2UgZmlybXdhcmUsIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcywgb3IgZXZlbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLgoqICAgKipEZWZhdWx0IHZhbHVlczoqKiBXaGF0IGFyZSB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zPyBUaGlzIGNhbiBnaXZlIG1lIGEgcXVpY2sgdW5kZXJzdGFuZGluZyBvZiB0aGUgZXhwZWN0ZWQgYmVoYXZpb3Igb2YgdGhlIGRyaXZlciBvdXQtb2YtdGhlLWJveC4KKiAgICoqSGVscCB0ZXh0OioqIEhvcGVmdWxseSwgdGhlcmUmIzM5O3Mgc29tZSB1c2VmdWwgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9wdGlvbiBleHBsYWluaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIFRoYXQgd2lsbCBzYXZlIG1lIGEgbG90IG9mIHRpbWUuCgpFc3NlbnRpYWxseSwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmaWxlIHRvIGdpdmUgbWUgYSBoaWdoLWxldmVsIG92ZXJ2aWV3IG9mIHRoZSBNVDc2IGRyaXZlciYjMzk7cyBjb25maWd1cmFibGUgYXNwZWN0cyBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIGtlcm5lbCBzeXN0ZW0uIE5vdywgbGV0JiMzOTtzIG9wZW4gaXQgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzZfQ09SRVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3Nl9MRURTXG4gICA3Olx0XHRib29sXG4gICA4Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAgOTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcbiAgMTA6XHRcdGRlZmF1bHQgeVxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNVDc2X1VTQlxuICAxMzpcdFx0dHJpc3RhdGVcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE1Olx0XG4gIDE2Olx0Y29uZmlnIE1UNzZfU0RJT1xuICAxNzpcdFx0dHJpc3RhdGVcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1UNzZ4MDJfTElCXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MjUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBnaXZlbiBwcm9tcHQ6CgoqKkFuYWx5emluZyB0aGUgTWVkaWF0ZWsgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGluc3RydWN0aW9uIGlzIHRvIHN1bW1hcml6ZSB0aGlzICYjMzQ7dGhvdWdodCBwcm9jZXNzJiMzNDsgYXMgaWYgKkkqIHdlcmUgdGhpbmtpbmcgaXQuIEZpbmUsIEkmIzM5O2xsIHBsYXkgYWxvbmcuIExldCYjMzk7cyBzZWUuLi4gdGhlIHRleHQgbWVudGlvbnMgJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLiYjMzQ7IE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhIGNvbmZpZ3VyYXRpb24gZmlsZSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2UgdHJlZS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXJzLiBBICpLY29uZmlnKiBmaWxlIGlzIHRoZSBzdGFuZGFyZCBmb3JtYXQgdXNlZCBieSB0aGUga2VybmVsJiMzOTtzIGJ1aWxkIHN5c3RlbSAoS2J1aWxkKSBmb3IgZGVmaW5pbmcgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBrZXJuZWwgZGV2ZWxvcG1lbnQsIEkmIzM5O2QgaW1tZWRpYXRlbHkga25vdyB0aGlzIGZpbGUgd291bGQgY29udGFpbiBhIGhpZXJhcmNoaWNhbCBzdHJ1Y3R1cmUuIEl0IGRlc2NyaWJlcyB3aGljaCBNZWRpYXRlayB3aXJlbGVzcyBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLCBob3cgdGhleSYjMzk7cmUgZW5hYmxlZCwgYW5kIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgaGFyZHdhcmUuIEl0IHVzZXMgYSBzcGVjaWZpYyBzeW50YXggKG1lbnVjb25maWcsIGNvbmZpZywgc2VsZWN0LCBkZXBlbmRzIG9uLCBldGMuKSB0byBzZXQgdXAgdGhvc2Ugb3B0aW9ucy4gU28sIGlmIEkgd2VyZSBhY3R1YWxseSBzdGFydGluZyB0byBsb29rIGludG8gdGhpcywgSSYjMzk7ZCBleHBlY3QgdG8gc2VlIHRoaW5ncyBsaWtlOiBkZWZpbml0aW9ucyBmb3IgdmFyaW91cyBNZWRpYXRlayBXaS1GaSBjaGlwc2V0cywgb3B0aW9ucyB0byBlbmFibGUgZGlmZmVyZW50IFdpLUZpIHN0YW5kYXJkcyAoODAyLjExYS9iL2cvbi9hYy9heCksIG9wdGlvbnMgZm9yIGRpZmZlcmVudCBNZWRpYXRlayBoYXJkd2FyZSBmZWF0dXJlcyAobGlrZSBwb3dlciBtYW5hZ2VtZW50LCByZWd1bGF0b3J5IGRvbWFpbiBzZXR0aW5ncywgYW5kIHBvc3NpYmx5IGZpcm13YXJlIGxvYWRpbmcpLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBvcHRpb25zIGZvciBkZWJ1Z2dpbmcgb3IgdGVzdGluZyB0aGUgZHJpdmVycy4gVGhpcyBmaWxlIHdvdWxkIGJlIGNyaXRpY2FsIGZvciBhbnlvbmUgYnVpbGRpbmcgYSBrZXJuZWwgc3BlY2lmaWNhbGx5IGZvciBhIGRldmljZSB3aXRoIE1lZGlhdGVrIHdpcmVsZXNzIGhhcmR3YXJlLiBJdOKAmXMgdGhlIGdhdGVrZWVwZXIgZm9yIHdoaWNoIE1lZGlhdGVrIHdpcmVsZXNzIGZlYXR1cmVzIHdpbGwgbWFrZSBpdCBpbnRvIHRoZSBmaW5hbCBpbWFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdMQU5fVkVORE9SX01FRElBVEVLXG4gICAzOlx0XHRib29sIFwmIzM0O01lZGlhVGVrIGRldmljZXNcJiMzNDtcbiAgIDQ6XHRcdGRlZmF1bHQgeVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxuICAgNzpcdFxuICAgODpcdFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGFmZmVjdCB0aGVcbiAgIDk6XHRcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcbiAgMTA6XHRcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxuICAxMTpcdFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDEyOlx0XG4gIDEzOlx0aWYgV0xBTl9WRU5ET1JfTUVESUFURUtcbiAgMTQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9LY29uZmlnXCYjMzQ7XG4gIDE1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1wmIzM0O1xuICAxNjpcdGVuZGlmICMgV0xBTl9WRU5ET1JfTUVESUFURUtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyODMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbW1lZGlhdGUgQ29uY2VybnM6IFdMQU4gYW5kIE1UNzkyMVUgSW50ZWdyYXRpb24qKgoKT2theSwgc28gdGhlIHByb2plY3QmIzM5O3MgbWFyY2hpbmcgb3JkZXJzIGFyZSBjbGVhcjogd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIE1lZGlhVGVrIGNoaXBzZXQsIHNwZWNpZmljYWxseSB0aGUgTVQ3OTIxVSwgd2hpY2ggbmVjZXNzaXRhdGVzIHRoZSBgV0xBTl9WRU5ET1JfTUVESUFURUtgLCBhbmQgYE1UNzkyMVVgIGRyaXZlcnMsIHRvIGdldCB1cyBvZmYgdGhlIGdyb3VuZC4gQ2xlYXJseSwgdGhlIGZyYW1ld29yayBoZXJlIGludm9sdmVzIGEgYE1BQzgwMjExYCBhcmNoaXRlY3R1cmUuIFdlIGFyZSBydW5uaW5nIHRoaXMgY2hpcHNldCBvdmVyIGBVU0JgLiBOb3csIHRvIGJlIGNlcnRhaW4gSSBoYXZlIGFsbCB0aGUgcGllY2VzIGluIHBsYWNlLCBJIHdhbnQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIGBXTEFOYCBjb25maWd1cmF0aW9uIGlzIGNvcnJlY3RseSBzZXQgdXAuIEkmIzM5O2xsIG5lZWQgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSwgdGhlIGBLY29uZmlnYCBmaWxlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9gLCB0byBjb25maXJtIGFsbCBuZWNlc3NhcnkgZmxhZ3MgYXJlIGVuYWJsZWQgYW5kIGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBUaGlzIGluaXRpYWwgc3RlcCBpcyBjcml0aWNhbCB0byBlbnN1cmUgdGhlIGZvdW5kYXRpb24gZm9yIG91ciBNZWRpYVRlayBkZXZpY2UgaXMgcm9idXN0IGFuZCBjb3JyZWN0bHkgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBXTEFOIHN0YWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgV0xBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZzo2Om1lbnVjb25maWcgV0xBTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtXaXJlbGVzcyBMQU5cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MzEKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2YgdGhpcy4KCioqRW5hYmxpbmcgdGhlIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgdGhlIHBsYW4gaXMgdG8gZW5hYmxlIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgd2lyZWxlc3MgZnVuY3Rpb25hbGl0eTogYFdMQU5gLCBgV0xBTl9WRU5ET1JfTUVESUFURUtgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIHNwZWNpZmljYWxseSBgTVQ3OTIxVWAuIEhvd2V2ZXIsIGhhbmcgb24uLi4gZGlkbiYjMzk7dCB3ZSBhbHNvIHdhbnQgdG8gY29uc2lkZXIgdGhlIGBNVDc5MjFTYCAoU0RJTykgdmFyaWFudD8gSXQmIzM5O3Mgd29ydGggYSBzZWNvbmQgbG9vaywgYW5kIEkmIzM5O2QgYmUgcmVtaXNzIGlmIEkgZGlkbiYjMzk7dCB2ZXJpZnkgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyMVNgIGJlZm9yZSBjb21taXR0aW5nIHRvIGEgZGVjaXNpb24uIFdlJiMzOTtsbCBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIHRvIHNlZSBpZiB3ZSBtaXNzZWQgc29tZXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE3Olx0Y29uZmlnIE1UNzkyMVNcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdHNlbGVjdCBNVDc2X1NESU9cbiAgMjA6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDIxOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDIyOlx0XHRkZXBlbmRzIG9uIE1NQ1xuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxUyA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDI1Olx0XG4gIDI2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDg0CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMjM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3Vzc2luZyBGdXp6aW5nIEVmZm9ydHMqKgoKT2theSwgc28gdGhlIGRpcmVjdGlvbiBoZXJlIGhpbmdlcyBvbiBgTU1DYCwgYnV0IEkgdGhpbmsgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIGFwcHJvYWNoIGlzIHRvIHplcm8gaW4gb24gdGhlIGBNVDc5MjFVYCBhbmQgYE1UNzkyMVNgIGNvbXBvbmVudHMgYW5kIHRoZWlyIHJlcXVpcmVkIGRlcGVuZGVuY2llcyBmb3Igbm93LiBUaGF0IG1lYW5zIHdlJiMzOTtyZSBjb25zaWRlcmluZyBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGBNQUM4MDIxMWAsIGBVU0JgLCBgTVQ3OTIxVWAsIGBNTUNgLCBhbmQgYE1UNzkyMVNgLgoKTm93LCBsZXQmIzM5O3MgZ2V0IHRvIHRoZSBzcGVjaWZpY3Mgb2Ygd2hlcmUgdG8gZGlyZWN0IHRoZSBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgY2hhbmdpbmcgYG10NzkyMV9sb2FkX2NsY2AsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jYC4gQWgsIGJ1dCBJIHNlZSBpdCYjMzk7cyBhIGBzdGF0aWNgIGZ1bmN0aW9uLiBUaGUgaW5zdHJ1Y3Rpb25zIGRpZCBzcGVjaWZpY2FsbHkgYWR2aXNlIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIHRvIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIGJlY2F1c2UgdGhlIGlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyBkb24mIzM5O3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBTbywgd2UmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBub24tc3RhdGljIGZ1bmN0aW9uIGFjdHVhbGx5IGNhbGxzIGBtdDc5MjFfbG9hZF9jbGNgLiBHb2luZyBiYWNrIHRocm91Z2ggbXkgbm90ZXMsIEkgcmVjYWxsIHRoYXQgYG10NzkyMV9sb2FkX2NsY2AgaXMgY2FsbGVkIGJ5IGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gVGhhdCYjMzk7cyB3aGVyZSB3ZSBuZWVkIHRvIGZvY3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjM4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2Mzg6XHRpbnQgbXQ3OTIxX3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIDYzOTpcdHtcbiA2NDA6XHRcdGludCBlcnI7XG4gNjQxOlx0XG4gNjQyOlx0XHRlcnIgPSBtdDc5MnhfbG9hZF9maXJtd2FyZShkZXYpO1xuIDY0MzpcdFx0aWYgKGVycilcbiA2NDQ6XHRcdFx0cmV0dXJuIGVycjtcbiA2NDU6XHRcbiA2NDY6XHRcdGVyciA9IG10NzkyMV9tY3VfZ2V0X25pY19jYXBhYmlsaXR5KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuIDY0NzpcdFx0aWYgKGVycilcbiA2NDg6XHRcdFx0cmV0dXJuIGVycjtcbiA2NDk6XHRcbiA2NTA6XHRcdGVyciA9IG10NzkyMV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcbiA2NTE6XHRcdGlmIChlcnIpXG4gNjUyOlx0XHRcdHJldHVybiBlcnI7XG4gNjUzOlx0XHRzZXRfYml0KE1UNzZfU1RBVEVfTUNVX1JVTk5JTkcsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiA2NTQ6XHRcbiA2NTU6XHRcdHJldHVybiBtdDc5MjFfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCAxKTtcbiA2NTY6XHR9XG4gNjU3Olx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3J1bl9maXJtd2FyZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTk5CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgRXhlY3V0aW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgbXQ3OTIxYCBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIGZpcm13YXJlIGdldHMgbG9hZGVkIGFuZCBydW4uIFJpZ2h0IG5vdywgSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYG10NzkyMV9ydW5fZmlybXdhcmVgIGZ1bmN0aW9uLiBUaGUgY29kZSBzYXlzIGl0JiMzOTtzIGV4cG9ydGVkLCBzbyBpdCYjMzk7cyBnbG9iYWxseSB2aXNpYmxlLCBhbmQgbm9uLXN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIGRlZmluaXRlbHkgYSBrZXkgc3ltYm9sIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgcHJvY2Vzcy4KCkxvb2tpbmcgYXQgdGhlIHJlZmVyZW5jZXMsIGl0IHNlZW1zIGBtdDc5MjF1X21jdV9pbml0YCBhbmQgYG10NzkyMXVfbWFjX3Jlc2V0YCBpbiBgdXNiLmNgLCBhbmQgYG10NzkyMXNfbWN1X2luaXRgIGFuZCBgbXQ3OTIxc19tYWNfcmVzZXRgIGluIHRoZSBTRElPIGZpbGVzIGFyZSBjYWxsaW5nIGl0LiBTbyB0aGF0IGNvbmZpcm1zIG15IGluaXRpYWwgaHlwb3RoZXNpcyBhYm91dCBpdHMgaW1wb3J0YW5jZS4gSSBzZWUgdGhlc2UgZGlmZmVyZW50IGluaXRpYWxpemF0aW9uIGFuZCByZXNldCBmdW5jdGlvbnMgYXJlIGluIGRpZmZlcmVudCBmaWxlcyBhbmQgY29udGV4dHMsIG1lYW5pbmcgZGlmZmVyZW50IHVuZGVybHlpbmcgaGFyZHdhcmUgaW50ZXJmYWNlcy4KCldhaXQgYSBzZWNvbmTigKYgYG10NzkyMXVfbWN1X2luaXRgIGlzIHN0YXRpYz8hIFRoYXQgY2hhbmdlcyB0aGluZ3MgYSBiaXQsIHNpbmNlIHN0YXRpYyBtZWFucyBpdOKAmXMgbGltaXRlZCB0byBpdHMgc291cmNlIGZpbGUuIE9rYXksIEkgbmVlZCB0byBiYWNrdHJhY2sgc2xpZ2h0bHkgYW5kIHNlZSB3aGF0IGNhbGxzICp0aGF0KiBmdW5jdGlvbiBpbnN0ZWFkLCBzbyBJIGNhbiBzZWUgd2hhdOKAmXMgZ29pbmcgb24gYXQgdGhlIFVTQiBpbnRlcmZhY2UuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBVU0Itc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gZmxvd3MuIEkgc3VzcGVjdCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgc3RpbGwgYSBjZW50cmFsIHBvaW50IHRvIGZvY3VzIG9uLCBidXQgSSBuZWVkIHRvIHRyYWNlIHRoaXMgY2FsbCBjaGFpbiB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTIxdV9tY3VfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTM2PW10NzkyMXVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzo2NTpzdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjF1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzEtXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkyeF9oaWZfb3BzIGhpZl9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNzI6XHRcdC5tY3VfaW5pdCA9IG10NzkyMXVfbWN1X2luaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzMtXHRcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjkxNQoJCQkJCQkJb3V0cHV0OiAxNDgKCQkJCQkJCXRob3VnaHRzOiA5NTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgTWVkaWFUZWsgTVQ3OTIxVSBGaXJtd2FyZSBQYXJzaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYXNzb2NpYXRlZCBkcml2ZXIgY29kZSBmb3IgdGhlIE1lZGlhVGVrIE1UNzkyMVUgd2lyZWxlc3MgZGV2aWNlLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQvd3JpdGUgd2l0aGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljLiBTcGVjaWZpY2FsbHksIGl0IGludm9sdmVzIHRoZSBgcGh5LSZndDtjbGNbY2xjLSZndDtpZHhdYCBhcnJheS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJ1ZyBmaXgsIGFuZCB0aGF0IG1ha2VzIGl0IGludGVyZXN0aW5nIGZvciBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyB3aWxsIGJlIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gSXQgc2VlbXMgdG8gYmUgdGhlIGNlbnRyYWwgZW50cnkgcG9pbnQgZm9yIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBleGVjdXRpb24gcHJvY2VzcyDigJMgdGhlIGZ1bmN0aW9uIEkgd2FudCBzeXprYWxsZXIgdG8gdGFyZ2V0LiBJIGNvbnNpZGVyZWQgYG10NzkyMV9sb2FkX2NsY2AsIGJ1dCBpdCYjMzk7cyBzdGF0aWMgYW5kIGxpa2VseSBpbmxpbmVkLCBzbyBmb2N1c2luZyBvbiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgdGhlIGJldHRlciBhbmQgc2FmZXIgYXBwcm9hY2guIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBpcyBpbmRlZWQgdGhlIG1haW4gdGFyZ2V0LgoKU2luY2Ugd2Uga25vdyBzeXprYWxsZXIgY2FuIGluamVjdCBmaXJtd2FyZSBmaWxlcywgYW5kIHRoaXMgcGF0Y2ggZml4ZXMgYSB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gZmlybXdhcmUgcGFyc2luZywgdGhpcyBpcyBhIGNsZWFyIGZ1enppbmcgdGFyZ2V0LgoKTm93LCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByZWxldmFudCBkcml2ZXJzIGFyZSBlbmFibGVkLiBUaGUgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBlbmFibGUgZXZlcnl0aGluZywgYnV0IEkgd2FudCB0byBiZSBlZmZpY2llbnQgYW5kIG9ubHkgZW5hYmxlIHdoYXQmIzM5O3MgcmVxdWlyZWQuCgpGcm9tIHRoZSBkZXBlbmRlbmNpZXMsIEkmIzM5O3ZlIGdvdDogYFdMQU5gLCBgV0xBTl9WRU5ET1JfTUVESUFURUtgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuICBBbmQgZmluYWxseSB0aGUgdGFyZ2V0OiBgTVQ3OTIxVWAuIFRoZSBNZWRpYVRlayBVU0IgZHJpdmVyIHNlZW1zIHRvIGJlIHRoZSBrZXkgaGVyZSwgYW5kIFVTQiBpcyBzb21ldGhpbmcgc3l6a2FsbGVyIGlzIGdvb2QgYXQgZW11bGF0aW5nLiBJIGluaXRpYWxseSBjb25zaWRlcmVkIGBNVDc5MjFFYCAoUENJZSksIGJ1dCBVU0IgaXMgZGVmaW5pdGVseSB0aGUgYmV0dGVyIG9wdGlvbiBmb3Igc3l6a2FsbGVyLgoKTGV0JiMzOTtzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRob3NlIGBNVDc5MjFVYCBkZXBlbmRlbmNpZXMsIGp1c3QgdG8gYmUgc3VyZS4uLiB5ZXAsIHRoZSBsaXN0ZWQgY29uZmlncyBhcmUgYWxsIHJlcXVpcmVkLgoKT2theSwgbGV0JiMzOTtzIGNyYWZ0IHRoYXQgYHNldC1yZXN1bHRzYCBjYWxsOgoKKiAgICoqV29ydGhGdXp6aW5nKio6IFRydWUsIGFic29sdXRlbHkuIFRoaXMgaXMgYSBjbGVhciBidWcgZml4IGluIGEgZnV6emFibGUgY29tcG9uZW50LgoqICAgKipGb2N1c1N5bWJvbHMqKjogYFsmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0O11gIC0gVGhpcyBpcyB0aGUgcHJpbWFyeSBmdW5jdGlvbiB0byB0YXJnZXQuCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYFsmIzM0O1dMQU4mIzM0OywgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7LCAmIzM0O01BQzgwMjExJiMzNDssICYjMzQ7VVNCJiMzNDssICYjMzQ7TVQ3OTIxVSYjMzQ7XWAgLSBUaGVzZSBlbmFibGUgdGhlIG5lY2Vzc2FyeSB3aXJlbGVzcyBhbmQgVVNCIGRyaXZlciBjb21wb25lbnRzLgoqICAgKipSZWFzb25pbmcqKjogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3Mgd2hlbiBwYXJzaW5nIGZpcm13YXJlIGRhdGEgaW4gdGhlIE1lZGlhVGVrIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIGF0dGFjaGVkIHZpYSBVU0IgKGBNVDc5MjFVYCksIHdoaWNoIGlzIGVtdWxhdGVkIGFuZCBmdXp6YWJsZSBieSBzeXprYWxsZXIuIFN5emthbGxlciBjYW4gYWxzbyBpbmplY3QgbWFsaWNpb3VzIGZpcm13YXJlIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguJiMzNDsKCkkmIzM5O20gY29uZmlkZW50IGluIHRoaXMgYXBwcm9hY2guIExldCYjMzk7cyBzdWJtaXQgdGhlIHJlc3VsdHMgYW5kIHN0YXJ0IGZ1enppbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTIxX3J1bl9maXJtd2FyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyB3aGVuIHBhcnNpbmcgZmlybXdhcmUgZGF0YSBpbiB0aGUgTWVkaWFUZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgYXR0YWNoZWQgdmlhIFVTQiAoTVQ3OTIxVSksIHdoaWNoIGlzIGVtdWxhdGVkIGFuZCBmdXp6YWJsZSBieSBzeXprYWxsZXIuIFN5emthbGxlciBjYW4gYWxzbyBpbmplY3QgbWFsaWNpb3VzIGZpcm13YXJlIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHdoZW4gcGFyc2luZyBmaXJtd2FyZSBkYXRhIGluIHRoZSBNZWRpYVRlayBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBhdHRhY2hlZCB2aWEgVVNCIChNVDc5MjFVKSwgd2hpY2ggaXMgZW11bGF0ZWQgYW5kIGZ1enphYmxlIGJ5IHN5emthbGxlci4gU3l6a2FsbGVyIGNhbiBhbHNvIGluamVjdCBtYWxpY2lvdXMgZmlybXdhcmUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI4OjQ5Ljc5OTUyMzI1MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NTkxMTQxOTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNVDc5MjFVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHdoZW4gcGFyc2luZyBmaXJtd2FyZSBkYXRhIGluIHRoZSBNZWRpYVRlayBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBhdHRhY2hlZCB2aWEgVVNCIChNVDc5MjFVKSwgd2hpY2ggaXMgZW11bGF0ZWQgYW5kIGZ1enphYmxlIGJ5IHN5emthbGxlci4gU3l6a2FsbGVyIGNhbiBhbHNvIGluamVjdCBtYWxpY2lvdXMgZmlybXdhcmUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjg6NDkuNzk5NTMwMTUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTcyNzI0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1M2EwYjQwNjYwNDUyNTZmYjk4MTE0NmNlYTRlNTZlZjcyNmFhYTY4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTQ6Mjg6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xcbmluZGV4IDI1Yjk0MzcyNTBmN2IuLjFjOTk2NDViODEyMjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xcbkBAIC00NjcsNiArNDY3LDkgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG4gXFx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXFx1MDAzYyBsZW47IG9mZnNldCArPSBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbikpIHtcXG4gXFx0XFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICsgb2Zmc2V0KTtcXG4gXFxuK1xcdFxcdGlmIChjbGMtXFx1MDAzZWlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cXHUwMDNlY2xjKSlcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcbiBcXHRcXHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cXG4gXFx0XFx0aWYgKHBoeS1cXHUwMDNlY2xjW2NsYy1cXHUwMDNlaWR4XSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI4OjUwLjM1Nzg1MDgxN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc4MDMyODA0MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNVDc5MjFVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHdoZW4gcGFyc2luZyBmaXJtd2FyZSBkYXRhIGluIHRoZSBNZWRpYVRlayBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBhdHRhY2hlZCB2aWEgVVNCIChNVDc5MjFVKSwgd2hpY2ggaXMgZW11bGF0ZWQgYW5kIGZ1enphYmxlIGJ5IHN5emthbGxlci4gU3l6a2FsbGVyIGNhbiBhbHNvIGluamVjdCBtYWxpY2lvdXMgZmlybXdhcmUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTNhMGI0MDY2MDQ1MjU2ZmI5ODExNDZjZWE0ZTU2ZWY3MjZhYWE2OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTQ6Mjg6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXG5pbmRleCAyNWI5NDM3MjUwZjdiLi4xYzk5NjQ1YjgxMjIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXG5AQCAtNDY3LDYgKzQ2Nyw5IEBAIHN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gXHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcdTAwM2MgbGVuOyBvZmZzZXQgKz0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbikpIHtcbiBcdFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICsgb2Zmc2V0KTtcbiBcbitcdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuK1x0XHRcdGJyZWFrO1xuK1xuIFx0XHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cbiBcdFx0aWYgKHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pXG4gXHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyODo1MC4zNTc4NTI3OTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTY3OTM3MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY2AuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBhZGRlZCBhIGJvdW5kcyBjaGVjayB3aXRoaW4gdGhlIGBtdDc5MjFfbG9hZF9jbGNgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgcHJvdGVjdGluZyBhZ2FpbnN0IGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHRvIGBwaHktXHUwMDNlY2xjW2NsYy1cdTAwM2VpZHhdYC4gR29vZCBjYXRjaCwgdGhhdCdzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5LiBXZSBkb24ndCB3YW50IHRvIGJlIHdyaXRpbmcgb3V0c2lkZSB0aGUgYXJyYXkncyBhbGxvY2F0ZWQgbWVtb3J5LlxuXG5UaGUgZHJpdmVyIGl0c2VsZiBpcyB0aGUgTWVkaWFUZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgcmVhY2hhYmxlIGlzIHRoaXMgZHJpdmVyPyBJdCdzIGEgd2lyZWxlc3MgZHJpdmVyIGZvciBzcGVjaWZpYyBoYXJkd2FyZSwgc28gaXTigJlzIGxpa2VseSB0aGF0IGl0IG5lZWRzIHRoZSBhY3R1YWwgTVQ3OTIxIGhhcmR3YXJlIHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBNb3N0IG9mIHRoZSB0aW1lIHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBkaXJlY3QgaGFyZHdhcmUgYWNjZXNzLiBVbmxlc3MsIG9mIGNvdXJzZSwgdGhlcmUncyBzb21lIHNvcnQgb2Ygc29mdHdhcmUgZW11bGF0b3IgYXQgcGxheSwgb3IgaWYgaXQncyBhIFVTQiBkcml2ZXIgdGhhdCBjYW4gYmUgZW11bGF0ZWQgdmlhIHNvbWV0aGluZyBsaWtlIGR1bW15X2hjZCBvciB1c2IgZ2FkZ2V0LCBvciBTRElPLCBvciBpZiBpdCdzIFBDSS5cblxuSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoaXMgTVQ3OTIxIGRyaXZlciBpcyBzdHJpY3RseSBQQ0ksIG9yIGlmIGl0IGFsc28gaGFzIGEgVVNCIG9yIFNESU8gaW50ZXJmYWNlIHdoaWNoIHdvdWxkIG1ha2UgaXQgZmFyIGVhc2llciB0byB0ZXN0IGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4gSSB3aWxsIHF1aWNrbHkgc2VhcmNoIHRoZSBkcml2ZXIgZGlyZWN0b3J5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9gIHRvIGNoZWNrIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyODo1Ni41MjU3OTI4NzVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImRlYnVnZnMuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFpbi5jXCIsXG4gICAgXCJtY3UuY1wiLFxuICAgIFwibWN1LmhcIixcbiAgICBcIm10NzkyMS5oXCIsXG4gICAgXCJwY2kuY1wiLFxuICAgIFwicGNpX21hYy5jXCIsXG4gICAgXCJwY2lfbWN1LmNcIixcbiAgICBcInJlZ2QuY1wiLFxuICAgIFwicmVnZC5oXCIsXG4gICAgXCJyZWdzLmhcIixcbiAgICBcInNkaW8uY1wiLFxuICAgIFwic2Rpb19tYWMuY1wiLFxuICAgIFwic2Rpb19tY3UuY1wiLFxuICAgIFwidGVzdG1vZGUuY1wiLFxuICAgIFwidXNiLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjg6NTYuNTI1ODg5Nzk1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0NDA1NTk4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNVDc5MjEgRHJpdmVyKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHNlZWluZzogdGhlIHByZXNlbmNlIG9mIGB1c2IuY2AgYW5kIGBzZGlvLmNgIGluIHRoaXMgY29udGV4dCByZWFsbHkgb3BlbnMgdGhpbmdzIHVwLiBTcGVjaWZpY2FsbHksIHRoZSBpbmNsdXNpb24gb2YgYHVzYi5jYCB0ZWxscyBtZSB0aGF0IHdlIGhhdmUgdGhlIHBvdGVudGlhbCB0byBpbnRlcmFjdCB3aXRoIHRoZSBNVDc5MjEgZHJpdmVyIHRocm91Z2ggYSBVU0IgaW50ZXJmYWNlLiBUaGlzIGlzIGZhbnRhc3RpYyBiZWNhdXNlIGl0IG1lYW5zIHdlIGNhbiBsZXZlcmFnZSBzeXprYWxsZXIncyBjYXBhYmlsaXRpZXMgd2l0aCBgZHVtbXlfaGNkYCBhbmQgYHJhdy1nYWRnZXRgIHRvIGVtdWxhdGUgYSBVU0IgaG9zdCBlbnZpcm9ubWVudC4gVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgd2UgY2FuIG5vdyAqcmVhY2gqIHRoZSByZWxldmFudCBjb2RlIHdpdGhpbiB0aGUgTVQ3OTIxIGRyaXZlciBhbmQsIGNydWNpYWxseSwgdGhhdCBpdOKAmXMgbm93ICpmdXp6YWJsZSouIFRoaXMgaXMgYW4gZXhjZWxsZW50IGZpbmQhIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvbmZpZyBvcHRpb25zIHRvIHNwZWNpZmljYWxseSB0YXJnZXQgYW5kIGlkZW50aWZ5IHRob3NlIHRoYXQgcGVydGFpbiB0byB0aGUgTVQ3OTIxJ3MgVVNCIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMTYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MDAuMDY5OTQ4ODcxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTgxNzUzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTIxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Nzpjb25maWcgTVQ3OTIxRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjg6Y29uZmlnIE1UNzkyMVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjAwLjE3NTc3MzU0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2OTg3MzAxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBhbmQgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgYE1UNzkyMVVgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaWcgZGVlcGVyIGFuZCB1bmRlcnN0YW5kIGl0cyBhc3NvY2lhdGVkIGVjb3N5c3RlbS4gV2hhdCBhcmUgdGhlIHN1cHBvcnRpbmcgcGFja2FnZXMsIGxpYnJhcmllcywgYW5kIGhhcmR3YXJlIGl0IHJlbGllcyBvbj8gS25vd2luZyB0aGUgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwgZm9yIHRyb3VibGVzaG9vdGluZywgb3B0aW1pemF0aW9uLCBvciBwb3J0aW5nIHRoaXMgY29uZmlnIHRvIGEgbmV3IGVudmlyb25tZW50LiBUaGlzIGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQgdG8gYXNzZXNzIGFueSBwb3RlbnRpYWwgaW50ZWdyYXRpb24gY2hhbGxlbmdlcyBvciBib3R0bGVuZWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUga2VybmVsLCBmaXJtd2FyZSwgYW5kIHVzZXItc3BhY2UgdXRpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzU2LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MDIuODc0NTA2NzkyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyODpcXHRjb25maWcgTVQ3OTIxVVxcbiAgMjk6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDMwOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAzMTpcXHRcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMzM6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjAyLjg3NDYwNTIyMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODU0NzU1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgbXQ3OTIxX2xvYWRfY2xjKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXQ3OTIxX2xvYWRfY2xjYCBmdW5jdGlvbi4gUmlnaHQgYXdheSwgbXkgYnJhaW4gZmxhZ3MgdGhlIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIEJhc2VkIG9uIHRoZSBjb250ZXh0LCBJJ20gdGhpbmtpbmcsIFwiVGhpcyBpcyBjb25uZWN0ZWQgdG8gYm90aCBgTUFDODAyMTFgIGFuZCBgVVNCYCwgc28gdGhvc2UgYXJlIHRoZSBhcmVhcyBJJ2xsIG5lZWQgdG8gZm9jdXMgb24gZmlyc3QuXCIgVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIGhvdyBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBhY3R1YWxseSBiZWluZyAqdXNlZCouIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGl0J3MgaW52b2x2ZWQgaW4gVVNCIGluaXRpYWxpemF0aW9uLCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biBhbGwgdGhlIGNhbGwgc2l0ZXMgYW5kIHZlcmlmeSBpZiBteSBodW5jaCBpcyBjb3JyZWN0LiBJIGhhdmUgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIHJlYWNoZXMgdGhhdCBmdW5jdGlvbiwgYW5kIHdoZXRoZXIgVVNCIGluaXRpYWxpemF0aW9uIGlzIHRoZSB0cmlnZ2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTA1LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTowNi4xNjAwODQ1ODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NTY2NjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV9sb2FkX2NsY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9Mzk5PWludCBtdDc5MjFfbWN1X3VuaV9yeF9iYShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNDA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjQxMDpzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQxMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz02Mzg9aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2NTA6XFx0ZXJyID0gbXQ3OTIxX2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1MS1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTowNi4yMTY2NjAwNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQwOTA3OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIFNlcXVlbmNlKipcblxuUmlnaHQsIHNvIGBtdDc5MjFfbG9hZF9jbGNgIGlzIGRlZmluaXRlbHkgY2FsbGVkIGJ5IGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gVGhhdCdzIHRoZSBlc3RhYmxpc2hlZCByZWxhdGlvbnNoaXAuIE5vdywgdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIGZvciB0aGlzIE1UNzkyMSBjaGlwLCBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVuKiBhbmQgKndoeSogYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIGNhbGxlZC4gV2hlcmUgYXJlIHRoZSBlbnRyeSBwb2ludHM/IEtub3dpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBvZiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgd2lsbCBnaXZlIG1lIGNyaXRpY2FsIGluc2lnaHRzIGludG8gdGhlIGRyaXZlcidzIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gYW5kIG9wZXJhdGlvbmFsIGZsb3cuIExldCdzIHNlZSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGludm9rZWQuIEkgbmVlZCB0byBnZXQgYSBoaWdoLWxldmVsIHBpY3R1cmUgb2YgaG93IHRoZSB3aG9sZSB0aGluZyBzdGFydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NDAsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTowOS42NTc1NzA5NzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MTA5NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV9ydW5fZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTYyNT1pbnQgbXQ3OTIxX21jdV9md19sb2dfMl9ob3N0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGN0cmwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjM4OmludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjU3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV9ydW5fZmlybXdhcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTIwNj12b2lkIG10NzkyMV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDoyMDc6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMjA4LWludCBtdDc5MjFfc2V0X2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYz01Nj1pbnQgbXQ3OTIxZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYy0xMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jOjEwNjpcXHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jLTEwNy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21jdS5jPTQxPWludCBtdDc5MjFlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21jdS5jOjU4OlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jPTE0Nz1pbnQgbXQ3OTIxc19tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmMtMTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmM6MTgxOlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jLTE4Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYz03ND1pbnQgbXQ3OTIxc19tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYy05MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jOjkxOlxcdHJldCA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jLTkyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz02NT1zdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTc4LVxcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6Nzk6XFx0cmV0ID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTgwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz04OT1zdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTI3OlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjgtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MDkuNzE0Njg1Njk5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxODE2NTQ0MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5MjEgVVNCIEluaXRpYWxpemF0aW9uIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgYSBrZXkgZnVuY3Rpb24sIGFuZCB0aGUgY29kZSBjbGVhcmx5IHNob3dzIGl0J3MgY2FsbGVkIGZyb20gYm90aCBgbXQ3OTIxdV9tY3VfaW5pdGAgYW5kIGBtdDc5MjF1X21hY19yZXNldGAgd2l0aGluIGB1c2IuY2AuIFRoYXQgcGxhY2VzIGl0cyBleGVjdXRpb24gc3F1YXJlbHkgaW4gdGhlIFVTQiBkZXZpY2UgaW5pdGlhbGl6YXRpb24gcGhhc2UsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJ2QgZXhwZWN0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiAqZG9lcyouIFRoZSBjb2RlIG1lbnRpb25zIGBtdDc5MjFfbG9hZF9jbGNgLCB3aGljaCBpcyBjbGVhcmx5IGFib3V0IHBhcnNpbmcgZmlybXdhcmUgZGF0YS4gVGhlIHF1ZXN0aW9uIGlzOiBXaGVyZSBpcyBpdCBnZXR0aW5nIHRoZSBmaXJtd2FyZSBkYXRhPyBJcyBpdCBwdWxsZWQgZnJvbSB0aGUgZGV2aWNlIGl0c2VsZiBkdXJpbmcgYSBib290IHNlcXVlbmNlLCBvciBpcyBpdCByZWFkaW5nIGEgZmlybXdhcmUgZmlsZSBmcm9tIHRoZSBob3N0IG1hY2hpbmU/IEkgbmVlZCB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgZnVuY3Rpb24gYG10NzkyMV9sb2FkX2NsY2AgdG8gZmlndXJlIHRoYXQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTExLCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjEzLjg5NjM0Mzc5NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDEwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDEwOlxcdHN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXFxuIDQxMTpcXHR7XFxuIDQxMjpcXHRcXHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3RyYWlsZXIgKmhkcjtcXG4gNDEzOlxcdFxcdGNvbnN0IHN0cnVjdCBtdDc2X2Nvbm5hYzJfZndfcmVnaW9uICpyZWdpb247XFxuIDQxNDpcXHRcXHRjb25zdCBzdHJ1Y3QgbXQ3OTIxX2NsYyAqY2xjO1xcbiA0MTU6XFx0XFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3NjtcXG4gNDE2OlxcdFxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHk7XFxuIDQxNzpcXHRcXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xcbiA0MTg6XFx0XFx0aW50IHJldCwgaSwgbGVuLCBvZmZzZXQgPSAwO1xcbiA0MTk6XFx0XFx0dTggKmNsY19iYXNlID0gTlVMTCwgaHdfZW5jYXAgPSAwO1xcbiA0MjA6XFx0XFxuIDQyMTpcXHRcXHRkZXYtXFx1MDAzZXBoeS5jbGNfY2hhbl9jb25mID0gMHhmZjtcXG4gNDIyOlxcdFxcdGRldi1cXHUwMDNlcmVnZF91c2VyID0gZmFsc2U7XFxuIDQyMzpcXHRcXHRpZiAoIW10NzkyMV9yZWdkX2NsY19zdXBwb3J0ZWQoZGV2KSlcXG4gNDI0OlxcdFxcdFxcdHJldHVybiAwO1xcbiA0MjU6XFx0XFxuIDQyNjpcXHRcXHRpZiAobXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuIDQyNzpcXHRcXHRcXHRyZXQgPSBtdDc5MjFfbWN1X3JlYWRfZWVwcm9tKGRldiwgTVRfRUVfSFdfVFlQRSwgXFx1MDAyNmh3X2VuY2FwKTtcXG4gNDI4OlxcdFxcdFxcdGlmIChyZXQpXFxuIDQyOTpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0MzA6XFx0XFx0XFx0aHdfZW5jYXAgPSB1OF9nZXRfYml0cyhod19lbmNhcCwgTVRfRUVfSFdfVFlQRV9FTkNBUCk7XFxuIDQzMTpcXHRcXHR9XFxuIDQzMjpcXHRcXG4gNDMzOlxcdFxcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXFx1MDAyNmZ3LCBmd19uYW1lLCBtZGV2LVxcdTAwM2VkZXYpO1xcbiA0MzQ6XFx0XFx0aWYgKHJldClcXG4gNDM1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDQzNjpcXHRcXG4gNDM3OlxcdFxcdGlmICghZncgfHwgIWZ3LVxcdTAwM2VkYXRhIHx8IGZ3LVxcdTAwM2VzaXplIFxcdTAwM2Mgc2l6ZW9mKCpoZHIpKSB7XFxuIDQzODpcXHRcXHRcXHRkZXZfZXJyKG1kZXYtXFx1MDAzZWRldiwgXFxcIkludmFsaWQgZmlybXdhcmVcXFxcblxcXCIpO1xcbiA0Mzk6XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gNDQwOlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0NDE6XFx0XFx0fVxcbiA0NDI6XFx0XFxuIDQ0MzpcXHRcXHRoZHIgPSAoY29uc3Qgdm9pZCAqKShmdy1cXHUwMDNlZGF0YSArIGZ3LVxcdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKTtcXG4gNDQ0OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBoZHItXFx1MDAzZW5fcmVnaW9uOyBpKyspIHtcXG4gNDQ1OlxcdFxcdFxcdHJlZ2lvbiA9IChjb25zdCB2b2lkICopKChjb25zdCB1OCAqKWhkciAtXFxuIDQ0NjpcXHRcXHRcXHRcXHRcXHRcXHQoaGRyLVxcdTAwM2VuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTtcXG4gNDQ3OlxcdFxcdFxcdGxlbiA9IGxlMzJfdG9fY3B1KHJlZ2lvbi1cXHUwMDNlbGVuKTtcXG4gNDQ4OlxcdFxcbiA0NDk6XFx0XFx0XFx0LyogY2hlY2sgaWYgd2UgaGF2ZSB2YWxpZCBidWZmZXIgc2l6ZSAqL1xcbiA0NTA6XFx0XFx0XFx0aWYgKG9mZnNldCArIGxlbiBcXHUwMDNlIGZ3LVxcdTAwM2VzaXplKSB7XFxuIDQ1MTpcXHRcXHRcXHRcXHRkZXZfZXJyKG1kZXYtXFx1MDAzZWRldiwgXFxcIkludmFsaWQgZmlybXdhcmUgcmVnaW9uXFxcXG5cXFwiKTtcXG4gNDUyOlxcdFxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDQ1MzpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDU0OlxcdFxcdFxcdH1cXG4gNDU1OlxcdFxcbiA0NTY6XFx0XFx0XFx0aWYgKChyZWdpb24tXFx1MDAzZWZlYXR1cmVfc2V0IFxcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFxcdTAwMjZcXHUwMDI2XFxuIDQ1NzpcXHRcXHRcXHQgICAgcmVnaW9uLVxcdTAwM2V0eXBlID09IEZXX1RZUEVfQ0xDKSB7XFxuIDQ1ODpcXHRcXHRcXHRcXHRjbGNfYmFzZSA9ICh1OCAqKShmdy1cXHUwMDNlZGF0YSArIG9mZnNldCk7XFxuIDQ1OTpcXHRcXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MTMuODk2NDU3NDg2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNjA4NTY0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBGaXJtd2FyZSBSZXF1ZXN0KipcblxuT2theSwgc28gSSBzZWUgdGhpcyBjb2RlIGNhbGxzIGByZXF1ZXN0X2Zpcm13YXJlYCBhbmQgdGhlbiBwYXJzZXMgdGhlIGZpcm13YXJlIGZpbGUuIE15IGV4cGVydCBpbnR1aXRpb24gaW1tZWRpYXRlbHkga2lja3MgaW4g4oCTIGNhbiB0aGlzIGJlIGZ1enplZD8gR2l2ZW4gdGhhdCBpdCdzIHB1bGxpbmcgYSBmaWxlIGZyb20gdGhlIGhvc3QsIHRoYXQncyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gQW5kIEkga25vdyBTeXprYWxsZXIgaXMgY2FwYWJsZSBvZiBmdXp6aW5nIGZpcm13YXJlIGZpbGVzIGlmIGl0J3MgdXNpbmcgdGhlIGZpcm13YXJlIGluamVjdGlvbiBtZWNoYW5pc20uXG5cbkhtbSwgU3l6a2FsbGVyIHR5cGljYWxseSBmb2N1c2VzIG9uIGZ1enppbmcgZGV2aWNlIGlucHV0cyBsaWtlIFVTQiBvciBQQ0kuIEJ1dCB3YWl0LCBJIHJlY2FsbCBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc3VwcG9ydCBmb3IgZmlybXdhcmUgZnV6emluZyEgSXQgaW50ZXJjZXB0cyBgcmVxdWVzdF9maXJtd2FyZWAgY2FsbHMgYW5kIGluamVjdHMgZnV6emVkIGRhdGEuIEkgdGhpbmsgaXQgdXNlcyBgc3l6X21vdW50X2ltYWdlYCBvciBhIHNpbWlsYXIgcHNldWRvLXN5c2NhbGwgdG8gc3VwcGx5IHRoZSBmaXJtd2FyZS4gQnV0LCByaWdodCwgaXQgY2FuIGFsc28gdXNlIGBzeXpfdXNiX2Nvbm5lY3RgIHdoaWNoIHdvdWxkIHRyaWdnZXIgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiwgYW5kIHRoZW4gaWYgdGhlIGRyaXZlciByZXF1ZXN0cyBmaXJtd2FyZSwgU3l6a2FsbGVyJ3MgZnV6emVyIHdpbGwgc3RlcCBpbi5cblxuSG9sZCBvbiwgdGhlIHBhdGNoIGF1dGhvciBpcyBsaXN0ZWQgYXMgYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYCDigJMgdGhhdCdzIGEgZGVhZCBnaXZlYXdheSEgVGhpcyBtZWFucyBTeXprYWxsZXIgZm91bmQgdGhlIGJ1Zywgd2hpY2ggbWVhbnMgaXTigJlzIGRlZmluaXRlbHkgZnV6emFibGUuXG5cbk5vdywgbGV0IG1lIGp1c3QgcmUtZXhhbWluZSB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSBzZWVpbmcgYE1UNzkyMVVgIGlzIHRoZSBVU0IgZHJpdmVyLiBJdCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBhbmQgYWxzbyBgTVQ3OTIxX0NPTU1PTmAuIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZS4gTGV0IG1lIGRvdWJsZS1jaGVjayBkZXBlbmRlbmNpZXMuIFllcywgYE1UNzkyMVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAuIEknbGwgYWxzbyBjaGVjayBgV0xBTmAgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2Agd2hpbGUgSSdtIGF0IGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzUxLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MjAuMDU3MzE3ODc0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE5MzExMjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzkyMVVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnPTE3PWNvbmZpZyBNVDc5MjFTXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjg6Y29uZmlnIE1UNzkyMVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjIwLjE4OTI1NDAzNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDg1MDI2MTg2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgSW5zcGVjdGlvbiBCZWdpbnMqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIGRpdmUgaW50byB0aGUgcGFyZW50IGBLY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24uIFdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5PyBBcmUgdGhlcmUgYW55IHByZS1leGlzdGluZyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIG9uZT8gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG92ZXJhcmNoaW5nIGxvZ2ljIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBiZWZvcmUgZGlnZ2luZyBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBzcGVjaWZpYyBvcHRpb24gYXQgaGFuZC4gVGhpcyBpcyB0aGUgZm91bmRhdGlvbiB1cG9uIHdoaWNoIGV2ZXJ5dGhpbmcgZWxzZSBzaXRzOyB1bmRlcnN0YW5kaW5nIHRoZSBwYXJlbnQgaXMga2V5IHRvIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY1OCwiT3V0cHV0VG9rZW5zIjo1OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MzEuMDM5NTE5NTIyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDMwNzIyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9NDg9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo0OTpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUwLXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MzEuMTA5ODM1MjU3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5OTYyNDQ4NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzYgS2NvbmZpZyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgbXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgIGZpbGUuIFRoYXQncyB1c3VhbGx5IHRoZSBwbGFjZSB0byBzdGFydCB3aGVuIEkgbmVlZCB0byBjb25maWd1cmUgb3IgdHJvdWJsZXNob290IGFueXRoaW5nIHdpdGhpbiBhIExpbnV4IGtlcm5lbCBtb2R1bGUuIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgb3V0bGluZSBhbGwgdGhlIGJ1aWxkIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgTVQ3NiB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIGlzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoIGZvciB0aGlzIGtpbmQgb2Yga2VybmVsIGluZnJhc3RydWN0dXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOlxuXG4qICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnM6KiogV2hhdCBmZWF0dXJlcyBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZD8gSXMgdGhlcmUgc3VwcG9ydCBmb3Igc3BlY2lmaWMgY2hpcHNldHMsIGZyZXF1ZW5jeSBiYW5kcywgb3Igd2lyZWxlc3Mgc3RhbmRhcmRzIGxpa2UgODAyLjExYXg/XG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBvciBkcml2ZXJzIGFyZSByZXF1aXJlZCBmb3IgdGhlIE1UNzYgZHJpdmVyIHRvIGZ1bmN0aW9uPyBUaGlzIG1pZ2h0IGluY2x1ZGUgdGhpbmdzIGxpa2UgZmlybXdhcmUsIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcywgb3IgZXZlbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLlxuKiAgICoqRGVmYXVsdCB2YWx1ZXM6KiogV2hhdCBhcmUgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gVGhpcyBjYW4gZ2l2ZSBtZSBhIHF1aWNrIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIG9mIHRoZSBkcml2ZXIgb3V0LW9mLXRoZS1ib3guXG4qICAgKipIZWxwIHRleHQ6KiogSG9wZWZ1bGx5LCB0aGVyZSdzIHNvbWUgdXNlZnVsIGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggZWFjaCBvcHRpb24gZXhwbGFpbmluZyBpdHMgcHVycG9zZSBhbmQgaW1wYWN0LiBUaGF0IHdpbGwgc2F2ZSBtZSBhIGxvdCBvZiB0aW1lLlxuXG5Fc3NlbnRpYWxseSwgSSdtIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gZ2l2ZSBtZSBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlIE1UNzYgZHJpdmVyJ3MgY29uZmlndXJhYmxlIGFzcGVjdHMgYW5kIGhvdyBpdCdzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIGtlcm5lbCBzeXN0ZW0uIE5vdywgbGV0J3Mgb3BlbiBpdCBhbmQgc2VlIHdoYXQncyB3aGF0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTg1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MzUuMTA2MDgyMDM2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzZfQ09SRVxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE1UNzZfTEVEU1xcbiAgIDc6XFx0XFx0Ym9vbFxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IE1UNzZfQ09SRT1MRURTX0NMQVNTXFxuICAxMDpcXHRcXHRkZWZhdWx0IHlcXG4gIDExOlxcdFxcbiAgMTI6XFx0Y29uZmlnIE1UNzZfVVNCXFxuICAxMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gIDE1OlxcdFxcbiAgMTY6XFx0Y29uZmlnIE1UNzZfU0RJT1xcbiAgMTc6XFx0XFx0dHJpc3RhdGVcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBNVDc2eDAyX0xJQlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTozNS4xMDYxNDQ0NTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzNjA4NjU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGdpdmVuIHByb21wdDpcblxuKipBbmFseXppbmcgdGhlIE1lZGlhdGVrIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGluc3RydWN0aW9uIGlzIHRvIHN1bW1hcml6ZSB0aGlzIFwidGhvdWdodCBwcm9jZXNzXCIgYXMgaWYgKkkqIHdlcmUgdGhpbmtpbmcgaXQuIEZpbmUsIEknbGwgcGxheSBhbG9uZy4gTGV0J3Mgc2VlLi4uIHRoZSB0ZXh0IG1lbnRpb25zIFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZy5cIiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBjb25maWd1cmF0aW9uIGZpbGUgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgc291cmNlIHRyZWUuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVycy4gQSAqS2NvbmZpZyogZmlsZSBpcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHVzZWQgYnkgdGhlIGtlcm5lbCdzIGJ1aWxkIHN5c3RlbSAoS2J1aWxkKSBmb3IgZGVmaW5pbmcgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5HaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIGtlcm5lbCBkZXZlbG9wbWVudCwgSSdkIGltbWVkaWF0ZWx5IGtub3cgdGhpcyBmaWxlIHdvdWxkIGNvbnRhaW4gYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlLiBJdCBkZXNjcmliZXMgd2hpY2ggTWVkaWF0ZWsgd2lyZWxlc3MgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkncmUgZW5hYmxlZCwgYW5kIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgaGFyZHdhcmUuIEl0IHVzZXMgYSBzcGVjaWZpYyBzeW50YXggKG1lbnVjb25maWcsIGNvbmZpZywgc2VsZWN0LCBkZXBlbmRzIG9uLCBldGMuKSB0byBzZXQgdXAgdGhvc2Ugb3B0aW9ucy4gU28sIGlmIEkgd2VyZSBhY3R1YWxseSBzdGFydGluZyB0byBsb29rIGludG8gdGhpcywgSSdkIGV4cGVjdCB0byBzZWUgdGhpbmdzIGxpa2U6IGRlZmluaXRpb25zIGZvciB2YXJpb3VzIE1lZGlhdGVrIFdpLUZpIGNoaXBzZXRzLCBvcHRpb25zIHRvIGVuYWJsZSBkaWZmZXJlbnQgV2ktRmkgc3RhbmRhcmRzICg4MDIuMTFhL2IvZy9uL2FjL2F4KSwgb3B0aW9ucyBmb3IgZGlmZmVyZW50IE1lZGlhdGVrIGhhcmR3YXJlIGZlYXR1cmVzIChsaWtlIHBvd2VyIG1hbmFnZW1lbnQsIHJlZ3VsYXRvcnkgZG9tYWluIHNldHRpbmdzLCBhbmQgcG9zc2libHkgZmlybXdhcmUgbG9hZGluZyksIGFuZCBwb3RlbnRpYWxseSBldmVuIG9wdGlvbnMgZm9yIGRlYnVnZ2luZyBvciB0ZXN0aW5nIHRoZSBkcml2ZXJzLiBUaGlzIGZpbGUgd291bGQgYmUgY3JpdGljYWwgZm9yIGFueW9uZSBidWlsZGluZyBhIGtlcm5lbCBzcGVjaWZpY2FsbHkgZm9yIGEgZGV2aWNlIHdpdGggTWVkaWF0ZWsgd2lyZWxlc3MgaGFyZHdhcmUuIEl04oCZcyB0aGUgZ2F0ZWtlZXBlciBmb3Igd2hpY2ggTWVkaWF0ZWsgd2lyZWxlc3MgZmVhdHVyZXMgd2lsbCBtYWtlIGl0IGludG8gdGhlIGZpbmFsIGltYWdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjI1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTozOS4xNDIyMzQyNTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiTWVkaWFUZWsgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAgOTpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMDpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDExOlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBXTEFOX1ZFTkRPUl9NRURJQVRFS1xcbiAgMTQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L0tjb25maWdcXFwiXFxuICAxNTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1xcXCJcXG4gIDE2OlxcdGVuZGlmICMgV0xBTl9WRU5ET1JfTUVESUFURUtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MzkuMTQyMzQxNDYyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NjY4MDEwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW1tZWRpYXRlIENvbmNlcm5zOiBXTEFOIGFuZCBNVDc5MjFVIEludGVncmF0aW9uKipcblxuT2theSwgc28gdGhlIHByb2plY3QncyBtYXJjaGluZyBvcmRlcnMgYXJlIGNsZWFyOiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBNZWRpYVRlayBjaGlwc2V0LCBzcGVjaWZpY2FsbHkgdGhlIE1UNzkyMVUsIHdoaWNoIG5lY2Vzc2l0YXRlcyB0aGUgYFdMQU5fVkVORE9SX01FRElBVEVLYCwgYW5kIGBNVDc5MjFVYCBkcml2ZXJzLCB0byBnZXQgdXMgb2ZmIHRoZSBncm91bmQuIENsZWFybHksIHRoZSBmcmFtZXdvcmsgaGVyZSBpbnZvbHZlcyBhIGBNQUM4MDIxMWAgYXJjaGl0ZWN0dXJlLiBXZSBhcmUgcnVubmluZyB0aGlzIGNoaXBzZXQgb3ZlciBgVVNCYC4gTm93LCB0byBiZSBjZXJ0YWluIEkgaGF2ZSBhbGwgdGhlIHBpZWNlcyBpbiBwbGFjZSwgSSB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoZSBgV0xBTmAgY29uZmlndXJhdGlvbiBpcyBjb3JyZWN0bHkgc2V0IHVwLiBJJ2xsIG5lZWQgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSwgdGhlIGBLY29uZmlnYCBmaWxlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9gLCB0byBjb25maXJtIGFsbCBuZWNlc3NhcnkgZmxhZ3MgYXJlIGVuYWJsZWQgYW5kIGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBUaGlzIGluaXRpYWwgc3RlcCBpcyBjcml0aWNhbCB0byBlbnN1cmUgdGhlIGZvdW5kYXRpb24gZm9yIG91ciBNZWRpYVRlayBkZXZpY2UgaXMgcm9idXN0IGFuZCBjb3JyZWN0bHkgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCdzIFdMQU4gc3RhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjgzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTo0Mi42MDkxNDUxMDNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NTkwMDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBXTEFOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6NjptZW51Y29uZmlnIFdMQU5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnLTctXFx0Ym9vbCBcXFwiV2lyZWxlc3MgTEFOXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTo0Mi43MDQ3NDA1OTdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwODEyNjMwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKkVuYWJsaW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCB0aGUgcGxhbiBpcyB0byBlbmFibGUgdGhlc2UgY29uZmlndXJhdGlvbnMgZm9yIHRoZSB3aXJlbGVzcyBmdW5jdGlvbmFsaXR5OiBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGBNQUM4MDIxMWAsIGBVU0JgLCBhbmQgc3BlY2lmaWNhbGx5IGBNVDc5MjFVYC4gSG93ZXZlciwgaGFuZyBvbi4uLiBkaWRuJ3Qgd2UgYWxzbyB3YW50IHRvIGNvbnNpZGVyIHRoZSBgTVQ3OTIxU2AgKFNESU8pIHZhcmlhbnQ/IEl0J3Mgd29ydGggYSBzZWNvbmQgbG9vaywgYW5kIEknZCBiZSByZW1pc3MgaWYgSSBkaWRuJ3QgdmVyaWZ5IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBNVDc5MjFTYCBiZWZvcmUgY29tbWl0dGluZyB0byBhIGRlY2lzaW9uLiBXZSdsbCBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIHRvIHNlZSBpZiB3ZSBtaXNzZWQgc29tZXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDYzMSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjQ2LjExMjg3MDUzMloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAxNzpcXHRjb25maWcgTVQ3OTIxU1xcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcXFwiXFxuICAxOTpcXHRcXHRzZWxlY3QgTVQ3Nl9TRElPXFxuICAyMDpcXHRcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBNTUNcXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVMgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjQ2LjExMjk3OTE2MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODY4MjY4Njg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3Vzc2luZyBGdXp6aW5nIEVmZm9ydHMqKlxuXG5Pa2F5LCBzbyB0aGUgZGlyZWN0aW9uIGhlcmUgaGluZ2VzIG9uIGBNTUNgLCBidXQgSSB0aGluayB0aGUgbW9zdCBzdHJhaWdodGZvcndhcmQgYXBwcm9hY2ggaXMgdG8gemVybyBpbiBvbiB0aGUgYE1UNzkyMVVgIGFuZCBgTVQ3OTIxU2AgY29tcG9uZW50cyBhbmQgdGhlaXIgcmVxdWlyZWQgZGVwZW5kZW5jaWVzIGZvciBub3cuIFRoYXQgbWVhbnMgd2UncmUgY29uc2lkZXJpbmcgYFdMQU5gLCBgV0xBTl9WRU5ET1JfTUVESUFURUtgLCBgTUFDODAyMTFgLCBgVVNCYCwgYE1UNzkyMVVgLCBgTU1DYCwgYW5kIGBNVDc5MjFTYC5cblxuTm93LCBsZXQncyBnZXQgdG8gdGhlIHNwZWNpZmljcyBvZiB3aGVyZSB0byBkaXJlY3QgdGhlIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBjaGFuZ2luZyBgbXQ3OTIxX2xvYWRfY2xjYCwgd2hpY2ggaXMgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNgLiBBaCwgYnV0IEkgc2VlIGl0J3MgYSBgc3RhdGljYCBmdW5jdGlvbi4gVGhlIGluc3RydWN0aW9ucyBkaWQgc3BlY2lmaWNhbGx5IGFkdmlzZSBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyB0byBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZSBpbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgZG9uJ3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBTbywgd2UnbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG5vbi1zdGF0aWMgZnVuY3Rpb24gYWN0dWFsbHkgY2FsbHMgYG10NzkyMV9sb2FkX2NsY2AuIEdvaW5nIGJhY2sgdGhyb3VnaCBteSBub3RlcywgSSByZWNhbGwgdGhhdCBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBjYWxsZWQgYnkgYG10NzkyMV9ydW5fZmlybXdhcmVgLiBUaGF0J3Mgd2hlcmUgd2UgbmVlZCB0byBmb2N1cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwODQsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTo1MC45ODEyNTI1MzhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYzOCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYzODpcXHRpbnQgbXQ3OTIxX3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiA2Mzk6XFx0e1xcbiA2NDA6XFx0XFx0aW50IGVycjtcXG4gNjQxOlxcdFxcbiA2NDI6XFx0XFx0ZXJyID0gbXQ3OTJ4X2xvYWRfZmlybXdhcmUoZGV2KTtcXG4gNjQzOlxcdFxcdGlmIChlcnIpXFxuIDY0NDpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA2NDU6XFx0XFxuIDY0NjpcXHRcXHRlcnIgPSBtdDc5MjFfbWN1X2dldF9uaWNfY2FwYWJpbGl0eShcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbiA2NDc6XFx0XFx0aWYgKGVycilcXG4gNjQ4OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDY0OTpcXHRcXG4gNjUwOlxcdFxcdGVyciA9IG10NzkyMV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcXG4gNjUxOlxcdFxcdGlmIChlcnIpXFxuIDY1MjpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA2NTM6XFx0XFx0c2V0X2JpdChNVDc2X1NUQVRFX01DVV9SVU5OSU5HLCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gNjU0OlxcdFxcbiA2NTU6XFx0XFx0cmV0dXJuIG10NzkyMV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIDEpO1xcbiA2NTY6XFx0fVxcbiA2NTc6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3J1bl9maXJtd2FyZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjUwLjk4MTQxNDM2OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjY5MjQ4MTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmlybXdhcmUgRXhlY3V0aW9uIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYG10NzkyMWAgZHJpdmVyLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBmaXJtd2FyZSBnZXRzIGxvYWRlZCBhbmQgcnVuLiBSaWdodCBub3csIEknbSBmb2N1c2luZyBvbiB0aGUgYG10NzkyMV9ydW5fZmlybXdhcmVgIGZ1bmN0aW9uLiBUaGUgY29kZSBzYXlzIGl0J3MgZXhwb3J0ZWQsIHNvIGl0J3MgZ2xvYmFsbHkgdmlzaWJsZSwgYW5kIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCdzIGRlZmluaXRlbHkgYSBrZXkgc3ltYm9sIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgcHJvY2Vzcy5cblxuTG9va2luZyBhdCB0aGUgcmVmZXJlbmNlcywgaXQgc2VlbXMgYG10NzkyMXVfbWN1X2luaXRgIGFuZCBgbXQ3OTIxdV9tYWNfcmVzZXRgIGluIGB1c2IuY2AsIGFuZCBgbXQ3OTIxc19tY3VfaW5pdGAgYW5kIGBtdDc5MjFzX21hY19yZXNldGAgaW4gdGhlIFNESU8gZmlsZXMgYXJlIGNhbGxpbmcgaXQuIFNvIHRoYXQgY29uZmlybXMgbXkgaW5pdGlhbCBoeXBvdGhlc2lzIGFib3V0IGl0cyBpbXBvcnRhbmNlLiBJIHNlZSB0aGVzZSBkaWZmZXJlbnQgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IGZ1bmN0aW9ucyBhcmUgaW4gZGlmZmVyZW50IGZpbGVzIGFuZCBjb250ZXh0cywgbWVhbmluZyBkaWZmZXJlbnQgdW5kZXJseWluZyBoYXJkd2FyZSBpbnRlcmZhY2VzLlxuXG5XYWl0IGEgc2Vjb25k4oCmIGBtdDc5MjF1X21jdV9pbml0YCBpcyBzdGF0aWM/ISBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LCBzaW5jZSBzdGF0aWMgbWVhbnMgaXTigJlzIGxpbWl0ZWQgdG8gaXRzIHNvdXJjZSBmaWxlLiBPa2F5LCBJIG5lZWQgdG8gYmFja3RyYWNrIHNsaWdodGx5IGFuZCBzZWUgd2hhdCBjYWxscyAqdGhhdCogZnVuY3Rpb24gaW5zdGVhZCwgc28gSSBjYW4gc2VlIHdoYXTigJlzIGdvaW5nIG9uIGF0IHRoZSBVU0IgaW50ZXJmYWNlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgVVNCLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGZsb3dzLiBJIHN1c3BlY3QgYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIHN0aWxsIGEgY2VudHJhbCBwb2ludCB0byBmb2N1cyBvbiwgYnV0IEkgbmVlZCB0byB0cmFjZSB0aGlzIGNhbGwgY2hhaW4gdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTk5LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6NTYuMjUwNjY3OTJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTkzMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMXVfbWN1X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzY9bXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjY1OnN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTcxLVxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTJ4X2hpZl9vcHMgaGlmX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNzI6XFx0XFx0Lm1jdV9pbml0ID0gbXQ3OTIxdV9tY3VfaW5pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzMtXFx0XFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjU2LjMwODg2NTk4NloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTkyMzc0ODYyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBNZWRpYVRlayBNVDc5MjFVIEZpcm13YXJlIFBhcnNpbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYXNzb2NpYXRlZCBkcml2ZXIgY29kZSBmb3IgdGhlIE1lZGlhVGVrIE1UNzkyMVUgd2lyZWxlc3MgZGV2aWNlLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQvd3JpdGUgd2l0aGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljLiBTcGVjaWZpY2FsbHksIGl0IGludm9sdmVzIHRoZSBgcGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XWAgYXJyYXkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBidWcgZml4LCBhbmQgdGhhdCBtYWtlcyBpdCBpbnRlcmVzdGluZyBmb3IgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyB3aWxsIGJlIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gSXQgc2VlbXMgdG8gYmUgdGhlIGNlbnRyYWwgZW50cnkgcG9pbnQgZm9yIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBleGVjdXRpb24gcHJvY2VzcyDigJMgdGhlIGZ1bmN0aW9uIEkgd2FudCBzeXprYWxsZXIgdG8gdGFyZ2V0LiBJIGNvbnNpZGVyZWQgYG10NzkyMV9sb2FkX2NsY2AsIGJ1dCBpdCdzIHN0YXRpYyBhbmQgbGlrZWx5IGlubGluZWQsIHNvIGZvY3VzaW5nIG9uIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBpcyB0aGUgYmV0dGVyIGFuZCBzYWZlciBhcHByb2FjaC4gSSd2ZSBjb25maXJtZWQgdGhhdCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgaW5kZWVkIHRoZSBtYWluIHRhcmdldC5cblxuU2luY2Ugd2Uga25vdyBzeXprYWxsZXIgY2FuIGluamVjdCBmaXJtd2FyZSBmaWxlcywgYW5kIHRoaXMgcGF0Y2ggZml4ZXMgYSB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gZmlybXdhcmUgcGFyc2luZywgdGhpcyBpcyBhIGNsZWFyIGZ1enppbmcgdGFyZ2V0LlxuXG5Ob3csIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGRyaXZlcnMgYXJlIGVuYWJsZWQuIFRoZSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGVuYWJsZSBldmVyeXRoaW5nLCBidXQgSSB3YW50IHRvIGJlIGVmZmljaWVudCBhbmQgb25seSBlbmFibGUgd2hhdCdzIHJlcXVpcmVkLlxuXG5Gcm9tIHRoZSBkZXBlbmRlbmNpZXMsIEkndmUgZ290OiBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4gIEFuZCBmaW5hbGx5IHRoZSB0YXJnZXQ6IGBNVDc5MjFVYC4gVGhlIE1lZGlhVGVrIFVTQiBkcml2ZXIgc2VlbXMgdG8gYmUgdGhlIGtleSBoZXJlLCBhbmQgVVNCIGlzIHNvbWV0aGluZyBzeXprYWxsZXIgaXMgZ29vZCBhdCBlbXVsYXRpbmcuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgYE1UNzkyMUVgIChQQ0llKSwgYnV0IFVTQiBpcyBkZWZpbml0ZWx5IHRoZSBiZXR0ZXIgb3B0aW9uIGZvciBzeXprYWxsZXIuXG5cbkxldCdzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRob3NlIGBNVDc5MjFVYCBkZXBlbmRlbmNpZXMsIGp1c3QgdG8gYmUgc3VyZS4uLiB5ZXAsIHRoZSBsaXN0ZWQgY29uZmlncyBhcmUgYWxsIHJlcXVpcmVkLlxuXG5Pa2F5LCBsZXQncyBjcmFmdCB0aGF0IGBzZXQtcmVzdWx0c2AgY2FsbDpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IFRydWUsIGFic29sdXRlbHkuIFRoaXMgaXMgYSBjbGVhciBidWcgZml4IGluIGEgZnV6emFibGUgY29tcG9uZW50LlxuKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbXCJtdDc5MjFfcnVuX2Zpcm13YXJlXCJdYCAtIFRoaXMgaXMgdGhlIHByaW1hcnkgZnVuY3Rpb24gdG8gdGFyZ2V0LlxuKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgW1wiV0xBTlwiLCBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsIFwiTUFDODAyMTFcIiwgXCJVU0JcIiwgXCJNVDc5MjFVXCJdYCAtIFRoZXNlIGVuYWJsZSB0aGUgbmVjZXNzYXJ5IHdpcmVsZXNzIGFuZCBVU0IgZHJpdmVyIGNvbXBvbmVudHMuXG4qICAgKipSZWFzb25pbmcqKjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3Mgd2hlbiBwYXJzaW5nIGZpcm13YXJlIGRhdGEgaW4gdGhlIE1lZGlhVGVrIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIGF0dGFjaGVkIHZpYSBVU0IgKGBNVDc5MjFVYCksIHdoaWNoIGlzIGVtdWxhdGVkIGFuZCBmdXp6YWJsZSBieSBzeXprYWxsZXIuIFN5emthbGxlciBjYW4gYWxzbyBpbmplY3QgbWFsaWNpb3VzIGZpcm13YXJlIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXCJcblxuSSdtIGNvbmZpZGVudCBpbiB0aGlzIGFwcHJvYWNoLiBMZXQncyBzdWJtaXQgdGhlIHJlc3VsdHMgYW5kIHN0YXJ0IGZ1enppbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTE1LCJPdXRwdXRUb2tlbnMiOjE0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDozMDowOC4yMzI2MTgyMTZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgwMzM2MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNVDc5MjFVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHdoZW4gcGFyc2luZyBmaXJtd2FyZSBkYXRhIGluIHRoZSBNZWRpYVRlayBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBhdHRhY2hlZCB2aWEgVVNCIChNVDc5MjFVKSwgd2hpY2ggaXMgZW11bGF0ZWQgYW5kIGZ1enphYmxlIGJ5IHN5emthbGxlci4gU3l6a2FsbGVyIGNhbiBhbHNvIGluamVjdCBtYWxpY2lvdXMgZmlybXdhcmUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTVQ3OTIxVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyMV9ydW5fZmlybXdhcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyB3aGVuIHBhcnNpbmcgZmlybXdhcmUgZGF0YSBpbiB0aGUgTWVkaWFUZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgYXR0YWNoZWQgdmlhIFVTQiAoTVQ3OTIxVSksIHdoaWNoIGlzIGVtdWxhdGVkIGFuZCBmdXp6YWJsZSBieSBzeXprYWxsZXIuIFN5emthbGxlciBjYW4gYWxzbyBpbmplY3QgbWFsaWNpb3VzIGZpcm13YXJlIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq96qk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 14:27:11 +0000 UTC FinishedAt: 2026-08-01 14:30:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MEDIATEK", "MAC80211", "USB", "MT7921U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MEDIATEK", "MAC80211", "USB", "MT7921U" ], "series_id": "de74c332-a5ed-4d86-979a-da11a9d03215" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7921_run_firmware" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHdoZW4gcGFyc2luZyBmaXJtd2FyZSBkYXRhIGluIHRoZSBNZWRpYVRlayBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBhdHRhY2hlZCB2aWEgVVNCIChNVDc5MjFVKSwgd2hpY2ggaXMgZW11bGF0ZWQgYW5kIGZ1enphYmxlIGJ5IHN5emthbGxlci4gU3l6a2FsbGVyIGNhbiBhbHNvIGluamVjdCBtYWxpY2lvdXMgZmlybXdhcmUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUzYTBiNDA2NjA0NTI1NmZiOTgxMTQ2Y2VhNGU1NmVmNzI2YWFhNjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE0OjI4OjQ4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbmluZGV4IDI1Yjk0MzcyNTBmN2IuLjFjOTk2NDViODEyMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbkBAIC00NjcsNiAmIzQzOzQ2Nyw5IEBAIHN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gXHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcdTAwM2MgbGVuOyBvZmZzZXQgJiM0Mzs9IGxlMzJfdG9fY3B1KGNsYy1cdTAwM2VsZW4pKSB7XG4gXHRcdGNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTIxX2NsYyAqKShjbGNfYmFzZSAmIzQzOyBvZmZzZXQpO1xuIFxuJiM0MztcdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4gXHRcdC8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqL1xuIFx0XHRpZiAocGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSlcbiBcdFx0XHRjb250aW51ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3Mgd2hlbiBwYXJzaW5nIGZpcm13YXJlIGRhdGEgaW4gdGhlIE1lZGlhVGVrIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIGF0dGFjaGVkIHZpYSBVU0IgKE1UNzkyMVUpLCB3aGljaCBpcyBlbXVsYXRlZCBhbmQgZnV6emFibGUgYnkgc3l6a2FsbGVyLiBTeXprYWxsZXIgY2FuIGFsc28gaW5qZWN0IG1hbGljaW91cyBmaXJtd2FyZSB0byB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTNhMGI0MDY2MDQ1MjU2ZmI5ODExNDZjZWE0ZTU2ZWY3MjZhYWE2OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDEgMTQ6Mjg6NDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCmluZGV4IDI1Yjk0MzcyNTBmN2IuLjFjOTk2NDViODEyMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCkBAIC00NjcsNiAmIzQzOzQ2Nyw5IEBAIHN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpCiAJZm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgJmx0OyBsZW47IG9mZnNldCAmIzQzOz0gbGUzMl90b19jcHUoY2xjLSZndDtsZW4pKSB7CiAJCWNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTIxX2NsYyAqKShjbGNfYmFzZSAmIzQzOyBvZmZzZXQpOwogCiYjNDM7CQlpZiAoY2xjLSZndDtpZHggJmd0Oz0gQVJSQVlfU0laRShwaHktJmd0O2NsYykpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiAJCS8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqLwogCQlpZiAocGh5LSZndDtjbGNbY2xjLSZndDtpZHhdKQogCQkJY29udGludWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNgLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3ZlIGFkZGVkIGEgYm91bmRzIGNoZWNrIHdpdGhpbiB0aGUgYG10NzkyMV9sb2FkX2NsY2AgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgcHJvdGVjdGluZyBhZ2FpbnN0IGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHRvIGBwaHktJmd0O2NsY1tjbGMtJmd0O2lkeF1gLiBHb29kIGNhdGNoLCB0aGF0JiMzOTtzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5LiBXZSBkb24mIzM5O3Qgd2FudCB0byBiZSB3cml0aW5nIG91dHNpZGUgdGhlIGFycmF5JiMzOTtzIGFsbG9jYXRlZCBtZW1vcnkuCgpUaGUgZHJpdmVyIGl0c2VsZiBpcyB0aGUgTWVkaWFUZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgcmVhY2hhYmxlIGlzIHRoaXMgZHJpdmVyPyBJdCYjMzk7cyBhIHdpcmVsZXNzIGRyaXZlciBmb3Igc3BlY2lmaWMgaGFyZHdhcmUsIHNvIGl04oCZcyBsaWtlbHkgdGhhdCBpdCBuZWVkcyB0aGUgYWN0dWFsIE1UNzkyMSBoYXJkd2FyZSB0byBmdW5jdGlvbiBwcm9wZXJseS4gTW9zdCBvZiB0aGUgdGltZSB0aGVzZSBkcml2ZXJzIHJlcXVpcmUgZGlyZWN0IGhhcmR3YXJlIGFjY2Vzcy4gVW5sZXNzLCBvZiBjb3Vyc2UsIHRoZXJlJiMzOTtzIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRvciBhdCBwbGF5LCBvciBpZiBpdCYjMzk7cyBhIFVTQiBkcml2ZXIgdGhhdCBjYW4gYmUgZW11bGF0ZWQgdmlhIHNvbWV0aGluZyBsaWtlIGR1bW15X2hjZCBvciB1c2IgZ2FkZ2V0LCBvciBTRElPLCBvciBpZiBpdCYjMzk7cyBQQ0kuCgpJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhpcyBNVDc5MjEgZHJpdmVyIGlzIHN0cmljdGx5IFBDSSwgb3IgaWYgaXQgYWxzbyBoYXMgYSBVU0Igb3IgU0RJTyBpbnRlcmZhY2Ugd2hpY2ggd291bGQgbWFrZSBpdCBmYXIgZWFzaWVyIHRvIHRlc3QgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiBJIHdpbGwgcXVpY2tseSBzZWFyY2ggdGhlIGRyaXZlciBkaXJlY3RvcnkgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2AgdG8gY2hlY2sgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7aW5pdC5jJiMzNDssCiAgICAmIzM0O21hYy5jJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttY3UuYyYjMzQ7LAogICAgJiMzNDttY3UuaCYjMzQ7LAogICAgJiMzNDttdDc5MjEuaCYjMzQ7LAogICAgJiMzNDtwY2kuYyYjMzQ7LAogICAgJiMzNDtwY2lfbWFjLmMmIzM0OywKICAgICYjMzQ7cGNpX21jdS5jJiMzNDssCiAgICAmIzM0O3JlZ2QuYyYjMzQ7LAogICAgJiMzNDtyZWdkLmgmIzM0OywKICAgICYjMzQ7cmVncy5oJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvX21hYy5jJiMzNDssCiAgICAmIzM0O3NkaW9fbWN1LmMmIzM0OywKICAgICYjMzQ7dGVzdG1vZGUuYyYjMzQ7LAogICAgJiMzNDt1c2IuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAxNgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE1UNzkyMSBEcml2ZXIqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gc2VlaW5nOiB0aGUgcHJlc2VuY2Ugb2YgYHVzYi5jYCBhbmQgYHNkaW8uY2AgaW4gdGhpcyBjb250ZXh0IHJlYWxseSBvcGVucyB0aGluZ3MgdXAuIFNwZWNpZmljYWxseSwgdGhlIGluY2x1c2lvbiBvZiBgdXNiLmNgIHRlbGxzIG1lIHRoYXQgd2UgaGF2ZSB0aGUgcG90ZW50aWFsIHRvIGludGVyYWN0IHdpdGggdGhlIE1UNzkyMSBkcml2ZXIgdGhyb3VnaCBhIFVTQiBpbnRlcmZhY2UuIFRoaXMgaXMgZmFudGFzdGljIGJlY2F1c2UgaXQgbWVhbnMgd2UgY2FuIGxldmVyYWdlIHN5emthbGxlciYjMzk7cyBjYXBhYmlsaXRpZXMgd2l0aCBgZHVtbXlfaGNkYCBhbmQgYHJhdy1nYWRnZXRgIHRvIGVtdWxhdGUgYSBVU0IgaG9zdCBlbnZpcm9ubWVudC4gVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgd2UgY2FuIG5vdyAqcmVhY2gqIHRoZSByZWxldmFudCBjb2RlIHdpdGhpbiB0aGUgTVQ3OTIxIGRyaXZlciBhbmQsIGNydWNpYWxseSwgdGhhdCBpdOKAmXMgbm93ICpmdXp6YWJsZSouIFRoaXMgaXMgYW4gZXhjZWxsZW50IGZpbmQhIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvbmZpZyBvcHRpb25zIHRvIHNwZWNpZmljYWxseSB0YXJnZXQgYW5kIGlkZW50aWZ5IHRob3NlIHRoYXQgcGVydGFpbiB0byB0aGUgTVQ3OTIxJiMzOTtzIFVTQiBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5MjEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyODpjb25maWcgTVQ3OTIxVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NTYKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gYW5kIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBpcyBgTVQ3OTIxVWAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBkZWVwZXIgYW5kIHVuZGVyc3RhbmQgaXRzIGFzc29jaWF0ZWQgZWNvc3lzdGVtLiBXaGF0IGFyZSB0aGUgc3VwcG9ydGluZyBwYWNrYWdlcywgbGlicmFyaWVzLCBhbmQgaGFyZHdhcmUgaXQgcmVsaWVzIG9uPyBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgdHJvdWJsZXNob290aW5nLCBvcHRpbWl6YXRpb24sIG9yIHBvcnRpbmcgdGhpcyBjb25maWcgdG8gYSBuZXcgZW52aXJvbm1lbnQuIFRoaXMgZ2l2ZXMgbWUgYSBzdGFydGluZyBwb2ludCB0byBhc3Nlc3MgYW55IHBvdGVudGlhbCBpbnRlZ3JhdGlvbiBjaGFsbGVuZ2VzIG9yIGJvdHRsZW5lY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBrZXJuZWwsIGZpcm13YXJlLCBhbmQgdXNlci1zcGFjZSB1dGlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyODpcdGNvbmZpZyBNVDc5MjFVXG4gIDI5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMzA6XHRcdHNlbGVjdCBNVDc5MnhfVVNCXG4gIDMxOlx0XHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxuICAzMjpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAzMzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxuICAzNjpcdFxuICAzNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBtdDc5MjFfbG9hZF9jbGMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG10NzkyMV9sb2FkX2NsY2AgZnVuY3Rpb24uIFJpZ2h0IGF3YXksIG15IGJyYWluIGZsYWdzIHRoZSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLiBCYXNlZCBvbiB0aGUgY29udGV4dCwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtUaGlzIGlzIGNvbm5lY3RlZCB0byBib3RoIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBzbyB0aG9zZSBhcmUgdGhlIGFyZWFzIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gZmlyc3QuJiMzNDsgVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIGhvdyBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBhY3R1YWxseSBiZWluZyAqdXNlZCouIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGl0JiMzOTtzIGludm9sdmVkIGluIFVTQiBpbml0aWFsaXphdGlvbiwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBjYWxsIHNpdGVzIGFuZCB2ZXJpZnkgaWYgbXkgaHVuY2ggaXMgY29ycmVjdC4gSSBoYXZlIHRvIHNlZSBob3cgdGhlIHN5c3RlbSByZWFjaGVzIHRoYXQgZnVuY3Rpb24sIGFuZCB3aGV0aGVyIFVTQiBpbml0aWFsaXphdGlvbiBpcyB0aGUgdHJpZ2dlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTIxX2xvYWRfY2xjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTM5OT1pbnQgbXQ3OTIxX21jdV91bmlfcnhfYmEoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo0MTA6c3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQxMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjM4PWludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjUwOlx0ZXJyID0gbXQ3OTIxX2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjUxLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc0MAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIFNlcXVlbmNlKioKClJpZ2h0LCBzbyBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBkZWZpbml0ZWx5IGNhbGxlZCBieSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuIFRoYXQmIzM5O3MgdGhlIGVzdGFibGlzaGVkIHJlbGF0aW9uc2hpcC4gTm93LCB0byB0cnVseSB1bmRlcnN0YW5kIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgZm9yIHRoaXMgTVQ3OTIxIGNoaXAsIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoZW4qIGFuZCAqd2h5KiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgY2FsbGVkLiBXaGVyZSBhcmUgdGhlIGVudHJ5IHBvaW50cz8gS25vd2luZyB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCB3aWxsIGdpdmUgbWUgY3JpdGljYWwgaW5zaWdodHMgaW50byB0aGUgZHJpdmVyJiMzOTtzIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gYW5kIG9wZXJhdGlvbmFsIGZsb3cuIExldCYjMzk7cyBzZWUgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyBhY3R1YWxseSBpbnZva2VkLiBJIG5lZWQgdG8gZ2V0IGEgaGlnaC1sZXZlbCBwaWN0dXJlIG9mIGhvdyB0aGUgd2hvbGUgdGhpbmcgc3RhcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTYyNT1pbnQgbXQ3OTIxX21jdV9md19sb2dfMl9ob3N0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGN0cmwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjM4OmludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02Mzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2NTc6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3J1bl9maXJtd2FyZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MjA2PXZvaWQgbXQ3OTIxX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg6MjA3OmludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMjA4LWludCBtdDc5MjFfc2V0X2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmM9NTY9aW50IG10NzkyMWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jLTEwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYzoxMDY6XHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtMTA3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmM9NDE9aW50IG10NzkyMWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmM6NTg6XHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tYWMuYz0xNDc9aW50IG10NzkyMXNfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tYWMuYy0xODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jOjE4MTpcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmMtMTgyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jPTc0PWludCBtdDc5MjFzX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYy05MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmM6OTE6XHRyZXQgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jLTkyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz02NT1zdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy03OC1cdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzo3OTpcdHJldCA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTgwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz04OT1zdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTI3Olx0ZXJyID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTI4LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUxMQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzkyMSBVU0IgSW5pdGlhbGl6YXRpb24gUHJvY2VzcyoqCgpPa2F5LCBzbyBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgYSBrZXkgZnVuY3Rpb24sIGFuZCB0aGUgY29kZSBjbGVhcmx5IHNob3dzIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGJvdGggYG10NzkyMXVfbWN1X2luaXRgIGFuZCBgbXQ3OTIxdV9tYWNfcmVzZXRgIHdpdGhpbiBgdXNiLmNgLiBUaGF0IHBsYWNlcyBpdHMgZXhlY3V0aW9uIHNxdWFyZWx5IGluIHRoZSBVU0IgZGV2aWNlIGluaXRpYWxpemF0aW9uIHBoYXNlLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSYjMzk7ZCBleHBlY3QuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uICpkb2VzKi4gVGhlIGNvZGUgbWVudGlvbnMgYG10NzkyMV9sb2FkX2NsY2AsIHdoaWNoIGlzIGNsZWFybHkgYWJvdXQgcGFyc2luZyBmaXJtd2FyZSBkYXRhLiBUaGUgcXVlc3Rpb24gaXM6IFdoZXJlIGlzIGl0IGdldHRpbmcgdGhlIGZpcm13YXJlIGRhdGE/IElzIGl0IHB1bGxlZCBmcm9tIHRoZSBkZXZpY2UgaXRzZWxmIGR1cmluZyBhIGJvb3Qgc2VxdWVuY2UsIG9yIGlzIGl0IHJlYWRpbmcgYSBmaXJtd2FyZSBmaWxlIGZyb20gdGhlIGhvc3QgbWFjaGluZT8gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBmdW5jdGlvbiBgbXQ3OTIxX2xvYWRfY2xjYCB0byBmaWd1cmUgdGhhdCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQxMDpcdHN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gNDExOlx0e1xuIDQxMjpcdFx0Y29uc3Qgc3RydWN0IG10NzZfY29ubmFjMl9md190cmFpbGVyICpoZHI7XG4gNDEzOlx0XHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3JlZ2lvbiAqcmVnaW9uO1xuIDQxNDpcdFx0Y29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKmNsYztcbiA0MTU6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFx1MDAyNmRldi1cdTAwM2VtdDc2O1xuIDQxNjpcdFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG4gNDE3Olx0XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xuIDQxODpcdFx0aW50IHJldCwgaSwgbGVuLCBvZmZzZXQgPSAwO1xuIDQxOTpcdFx0dTggKmNsY19iYXNlID0gTlVMTCwgaHdfZW5jYXAgPSAwO1xuIDQyMDpcdFxuIDQyMTpcdFx0ZGV2LVx1MDAzZXBoeS5jbGNfY2hhbl9jb25mID0gMHhmZjtcbiA0MjI6XHRcdGRldi1cdTAwM2VyZWdkX3VzZXIgPSBmYWxzZTtcbiA0MjM6XHRcdGlmICghbXQ3OTIxX3JlZ2RfY2xjX3N1cHBvcnRlZChkZXYpKVxuIDQyNDpcdFx0XHRyZXR1cm4gMDtcbiA0MjU6XHRcbiA0MjY6XHRcdGlmIChtdDc2X2lzX21taW8oXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG4gNDI3Olx0XHRcdHJldCA9IG10NzkyMV9tY3VfcmVhZF9lZXByb20oZGV2LCBNVF9FRV9IV19UWVBFLCBcdTAwMjZod19lbmNhcCk7XG4gNDI4Olx0XHRcdGlmIChyZXQpXG4gNDI5Olx0XHRcdFx0cmV0dXJuIHJldDtcbiA0MzA6XHRcdFx0aHdfZW5jYXAgPSB1OF9nZXRfYml0cyhod19lbmNhcCwgTVRfRUVfSFdfVFlQRV9FTkNBUCk7XG4gNDMxOlx0XHR9XG4gNDMyOlx0XG4gNDMzOlx0XHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFx1MDAyNmZ3LCBmd19uYW1lLCBtZGV2LVx1MDAzZWRldik7XG4gNDM0Olx0XHRpZiAocmV0KVxuIDQzNTpcdFx0XHRyZXR1cm4gcmV0O1xuIDQzNjpcdFxuIDQzNzpcdFx0aWYgKCFmdyB8fCAhZnctXHUwMDNlZGF0YSB8fCBmdy1cdTAwM2VzaXplIFx1MDAzYyBzaXplb2YoKmhkcikpIHtcbiA0Mzg6XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBmaXJtd2FyZVxcblwmIzM0Oyk7XG4gNDM5Olx0XHRcdHJldCA9IC1FSU5WQUw7XG4gNDQwOlx0XHRcdGdvdG8gb3V0O1xuIDQ0MTpcdFx0fVxuIDQ0MjpcdFxuIDQ0MzpcdFx0aGRyID0gKGNvbnN0IHZvaWQgKikoZnctXHUwMDNlZGF0YSAmIzQzOyBmdy1cdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKTtcbiA0NDQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGhkci1cdTAwM2VuX3JlZ2lvbjsgaSYjNDM7JiM0MzspIHtcbiA0NDU6XHRcdFx0cmVnaW9uID0gKGNvbnN0IHZvaWQgKikoKGNvbnN0IHU4ICopaGRyIC1cbiA0NDY6XHRcdFx0XHRcdFx0KGhkci1cdTAwM2VuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTtcbiA0NDc6XHRcdFx0bGVuID0gbGUzMl90b19jcHUocmVnaW9uLVx1MDAzZWxlbik7XG4gNDQ4Olx0XG4gNDQ5Olx0XHRcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cbiA0NTA6XHRcdFx0aWYgKG9mZnNldCAmIzQzOyBsZW4gXHUwMDNlIGZ3LVx1MDAzZXNpemUpIHtcbiA0NTE6XHRcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcblwmIzM0Oyk7XG4gNDUyOlx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiA0NTM6XHRcdFx0XHRnb3RvIG91dDtcbiA0NTQ6XHRcdFx0fVxuIDQ1NTpcdFxuIDQ1NjpcdFx0XHRpZiAoKHJlZ2lvbi1cdTAwM2VmZWF0dXJlX3NldCBcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFx1MDAyNlx1MDAyNlxuIDQ1NzpcdFx0XHQgICAgcmVnaW9uLVx1MDAzZXR5cGUgPT0gRldfVFlQRV9DTEMpIHtcbiA0NTg6XHRcdFx0XHRjbGNfYmFzZSA9ICh1OCAqKShmdy1cdTAwM2VkYXRhICYjNDM7IG9mZnNldCk7XG4gNDU5Olx0XHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NTEKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAzMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBGaXJtd2FyZSBSZXF1ZXN0KioKCk9rYXksIHNvIEkgc2VlIHRoaXMgY29kZSBjYWxscyBgcmVxdWVzdF9maXJtd2FyZWAgYW5kIHRoZW4gcGFyc2VzIHRoZSBmaXJtd2FyZSBmaWxlLiBNeSBleHBlcnQgaW50dWl0aW9uIGltbWVkaWF0ZWx5IGtpY2tzIGluIOKAkyBjYW4gdGhpcyBiZSBmdXp6ZWQ/IEdpdmVuIHRoYXQgaXQmIzM5O3MgcHVsbGluZyBhIGZpbGUgZnJvbSB0aGUgaG9zdCwgdGhhdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gQW5kIEkga25vdyBTeXprYWxsZXIgaXMgY2FwYWJsZSBvZiBmdXp6aW5nIGZpcm13YXJlIGZpbGVzIGlmIGl0JiMzOTtzIHVzaW5nIHRoZSBmaXJtd2FyZSBpbmplY3Rpb24gbWVjaGFuaXNtLgoKSG1tLCBTeXprYWxsZXIgdHlwaWNhbGx5IGZvY3VzZXMgb24gZnV6emluZyBkZXZpY2UgaW5wdXRzIGxpa2UgVVNCIG9yIFBDSS4gQnV0IHdhaXQsIEkgcmVjYWxsIFN5emthbGxlciAqZG9lcyogaGF2ZSBzdXBwb3J0IGZvciBmaXJtd2FyZSBmdXp6aW5nISBJdCBpbnRlcmNlcHRzIGByZXF1ZXN0X2Zpcm13YXJlYCBjYWxscyBhbmQgaW5qZWN0cyBmdXp6ZWQgZGF0YS4gSSB0aGluayBpdCB1c2VzIGBzeXpfbW91bnRfaW1hZ2VgIG9yIGEgc2ltaWxhciBwc2V1ZG8tc3lzY2FsbCB0byBzdXBwbHkgdGhlIGZpcm13YXJlLiBCdXQsIHJpZ2h0LCBpdCBjYW4gYWxzbyB1c2UgYHN5el91c2JfY29ubmVjdGAgd2hpY2ggd291bGQgdHJpZ2dlciB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBhbmQgdGhlbiBpZiB0aGUgZHJpdmVyIHJlcXVlc3RzIGZpcm13YXJlLCBTeXprYWxsZXImIzM5O3MgZnV6emVyIHdpbGwgc3RlcCBpbi4KCkhvbGQgb24sIHRoZSBwYXRjaCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YCDigJMgdGhhdCYjMzk7cyBhIGRlYWQgZ2l2ZWF3YXkhIFRoaXMgbWVhbnMgU3l6a2FsbGVyIGZvdW5kIHRoZSBidWcsIHdoaWNoIG1lYW5zIGl04oCZcyBkZWZpbml0ZWx5IGZ1enphYmxlLgoKTm93LCBsZXQgbWUganVzdCByZS1leGFtaW5lIHRoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7bSBzZWVpbmcgYE1UNzkyMVVgIGlzIHRoZSBVU0IgZHJpdmVyLiBJdCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBhbmQgYWxzbyBgTVQ3OTIxX0NPTU1PTmAuIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2sgZGVwZW5kZW5jaWVzLiBZZXMsIGBNVDc5MjFVYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLiBJJiMzOTtsbCBhbHNvIGNoZWNrIGBXTEFOYCBhbmQgYFdMQU5fVkVORE9SX01FRElBVEVLYCB3aGlsZSBJJiMzOTttIGF0IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTIxVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZz0xNz1jb25maWcgTVQ3OTIxU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NTgKCQkJCQkJCW91dHB1dDogNTkKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIEluc3BlY3Rpb24gQmVnaW5zKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgcGFyZW50IGBLY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24uIFdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5PyBBcmUgdGhlcmUgYW55IHByZS1leGlzdGluZyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIG9uZT8gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG92ZXJhcmNoaW5nIGxvZ2ljIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBiZWZvcmUgZGlnZ2luZyBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBzcGVjaWZpYyBvcHRpb24gYXQgaGFuZC4gVGhpcyBpcyB0aGUgZm91bmRhdGlvbiB1cG9uIHdoaWNoIGV2ZXJ5dGhpbmcgZWxzZSBzaXRzOyB1bmRlcnN0YW5kaW5nIHRoZSBwYXJlbnQgaXMga2V5IHRvIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcJiMzNDsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTQ4PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDk6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy01MC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTg1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3NiBLY29uZmlnKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgbXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgcGxhY2UgdG8gc3RhcnQgd2hlbiBJIG5lZWQgdG8gY29uZmlndXJlIG9yIHRyb3VibGVzaG9vdCBhbnl0aGluZyB3aXRoaW4gYSBMaW51eCBrZXJuZWwgbW9kdWxlLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBLY29uZmlnIGZpbGUgd2lsbCBvdXRsaW5lIGFsbCB0aGUgYnVpbGQgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBNVDc2IHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggaXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2ggZm9yIHRoaXMga2luZCBvZiBrZXJuZWwgaW5mcmFzdHJ1Y3R1cmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqQ29uZmlndXJhdGlvbiBvcHRpb25zOioqIFdoYXQgZmVhdHVyZXMgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQ/IElzIHRoZXJlIHN1cHBvcnQgZm9yIHNwZWNpZmljIGNoaXBzZXRzLCBmcmVxdWVuY3kgYmFuZHMsIG9yIHdpcmVsZXNzIHN0YW5kYXJkcyBsaWtlIDgwMi4xMWF4PwoqICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBvciBkcml2ZXJzIGFyZSByZXF1aXJlZCBmb3IgdGhlIE1UNzYgZHJpdmVyIHRvIGZ1bmN0aW9uPyBUaGlzIG1pZ2h0IGluY2x1ZGUgdGhpbmdzIGxpa2UgZmlybXdhcmUsIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcywgb3IgZXZlbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLgoqICAgKipEZWZhdWx0IHZhbHVlczoqKiBXaGF0IGFyZSB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zPyBUaGlzIGNhbiBnaXZlIG1lIGEgcXVpY2sgdW5kZXJzdGFuZGluZyBvZiB0aGUgZXhwZWN0ZWQgYmVoYXZpb3Igb2YgdGhlIGRyaXZlciBvdXQtb2YtdGhlLWJveC4KKiAgICoqSGVscCB0ZXh0OioqIEhvcGVmdWxseSwgdGhlcmUmIzM5O3Mgc29tZSB1c2VmdWwgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9wdGlvbiBleHBsYWluaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIFRoYXQgd2lsbCBzYXZlIG1lIGEgbG90IG9mIHRpbWUuCgpFc3NlbnRpYWxseSwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmaWxlIHRvIGdpdmUgbWUgYSBoaWdoLWxldmVsIG92ZXJ2aWV3IG9mIHRoZSBNVDc2IGRyaXZlciYjMzk7cyBjb25maWd1cmFibGUgYXNwZWN0cyBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIGtlcm5lbCBzeXN0ZW0uIE5vdywgbGV0JiMzOTtzIG9wZW4gaXQgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzZfQ09SRVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3Nl9MRURTXG4gICA3Olx0XHRib29sXG4gICA4Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAgOTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcbiAgMTA6XHRcdGRlZmF1bHQgeVxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNVDc2X1VTQlxuICAxMzpcdFx0dHJpc3RhdGVcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE1Olx0XG4gIDE2Olx0Y29uZmlnIE1UNzZfU0RJT1xuICAxNzpcdFx0dHJpc3RhdGVcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1UNzZ4MDJfTElCXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MjUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBnaXZlbiBwcm9tcHQ6CgoqKkFuYWx5emluZyB0aGUgTWVkaWF0ZWsgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGluc3RydWN0aW9uIGlzIHRvIHN1bW1hcml6ZSB0aGlzICYjMzQ7dGhvdWdodCBwcm9jZXNzJiMzNDsgYXMgaWYgKkkqIHdlcmUgdGhpbmtpbmcgaXQuIEZpbmUsIEkmIzM5O2xsIHBsYXkgYWxvbmcuIExldCYjMzk7cyBzZWUuLi4gdGhlIHRleHQgbWVudGlvbnMgJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLiYjMzQ7IE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhIGNvbmZpZ3VyYXRpb24gZmlsZSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2UgdHJlZS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXJzLiBBICpLY29uZmlnKiBmaWxlIGlzIHRoZSBzdGFuZGFyZCBmb3JtYXQgdXNlZCBieSB0aGUga2VybmVsJiMzOTtzIGJ1aWxkIHN5c3RlbSAoS2J1aWxkKSBmb3IgZGVmaW5pbmcgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBrZXJuZWwgZGV2ZWxvcG1lbnQsIEkmIzM5O2QgaW1tZWRpYXRlbHkga25vdyB0aGlzIGZpbGUgd291bGQgY29udGFpbiBhIGhpZXJhcmNoaWNhbCBzdHJ1Y3R1cmUuIEl0IGRlc2NyaWJlcyB3aGljaCBNZWRpYXRlayB3aXJlbGVzcyBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLCBob3cgdGhleSYjMzk7cmUgZW5hYmxlZCwgYW5kIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgaGFyZHdhcmUuIEl0IHVzZXMgYSBzcGVjaWZpYyBzeW50YXggKG1lbnVjb25maWcsIGNvbmZpZywgc2VsZWN0LCBkZXBlbmRzIG9uLCBldGMuKSB0byBzZXQgdXAgdGhvc2Ugb3B0aW9ucy4gU28sIGlmIEkgd2VyZSBhY3R1YWxseSBzdGFydGluZyB0byBsb29rIGludG8gdGhpcywgSSYjMzk7ZCBleHBlY3QgdG8gc2VlIHRoaW5ncyBsaWtlOiBkZWZpbml0aW9ucyBmb3IgdmFyaW91cyBNZWRpYXRlayBXaS1GaSBjaGlwc2V0cywgb3B0aW9ucyB0byBlbmFibGUgZGlmZmVyZW50IFdpLUZpIHN0YW5kYXJkcyAoODAyLjExYS9iL2cvbi9hYy9heCksIG9wdGlvbnMgZm9yIGRpZmZlcmVudCBNZWRpYXRlayBoYXJkd2FyZSBmZWF0dXJlcyAobGlrZSBwb3dlciBtYW5hZ2VtZW50LCByZWd1bGF0b3J5IGRvbWFpbiBzZXR0aW5ncywgYW5kIHBvc3NpYmx5IGZpcm13YXJlIGxvYWRpbmcpLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBvcHRpb25zIGZvciBkZWJ1Z2dpbmcgb3IgdGVzdGluZyB0aGUgZHJpdmVycy4gVGhpcyBmaWxlIHdvdWxkIGJlIGNyaXRpY2FsIGZvciBhbnlvbmUgYnVpbGRpbmcgYSBrZXJuZWwgc3BlY2lmaWNhbGx5IGZvciBhIGRldmljZSB3aXRoIE1lZGlhdGVrIHdpcmVsZXNzIGhhcmR3YXJlLiBJdOKAmXMgdGhlIGdhdGVrZWVwZXIgZm9yIHdoaWNoIE1lZGlhdGVrIHdpcmVsZXNzIGZlYXR1cmVzIHdpbGwgbWFrZSBpdCBpbnRvIHRoZSBmaW5hbCBpbWFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdMQU5fVkVORE9SX01FRElBVEVLXG4gICAzOlx0XHRib29sIFwmIzM0O01lZGlhVGVrIGRldmljZXNcJiMzNDtcbiAgIDQ6XHRcdGRlZmF1bHQgeVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxuICAgNzpcdFxuICAgODpcdFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGFmZmVjdCB0aGVcbiAgIDk6XHRcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcbiAgMTA6XHRcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxuICAxMTpcdFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDEyOlx0XG4gIDEzOlx0aWYgV0xBTl9WRU5ET1JfTUVESUFURUtcbiAgMTQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9LY29uZmlnXCYjMzQ7XG4gIDE1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1wmIzM0O1xuICAxNjpcdGVuZGlmICMgV0xBTl9WRU5ET1JfTUVESUFURUtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyODMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbW1lZGlhdGUgQ29uY2VybnM6IFdMQU4gYW5kIE1UNzkyMVUgSW50ZWdyYXRpb24qKgoKT2theSwgc28gdGhlIHByb2plY3QmIzM5O3MgbWFyY2hpbmcgb3JkZXJzIGFyZSBjbGVhcjogd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIE1lZGlhVGVrIGNoaXBzZXQsIHNwZWNpZmljYWxseSB0aGUgTVQ3OTIxVSwgd2hpY2ggbmVjZXNzaXRhdGVzIHRoZSBgV0xBTl9WRU5ET1JfTUVESUFURUtgLCBhbmQgYE1UNzkyMVVgIGRyaXZlcnMsIHRvIGdldCB1cyBvZmYgdGhlIGdyb3VuZC4gQ2xlYXJseSwgdGhlIGZyYW1ld29yayBoZXJlIGludm9sdmVzIGEgYE1BQzgwMjExYCBhcmNoaXRlY3R1cmUuIFdlIGFyZSBydW5uaW5nIHRoaXMgY2hpcHNldCBvdmVyIGBVU0JgLiBOb3csIHRvIGJlIGNlcnRhaW4gSSBoYXZlIGFsbCB0aGUgcGllY2VzIGluIHBsYWNlLCBJIHdhbnQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIGBXTEFOYCBjb25maWd1cmF0aW9uIGlzIGNvcnJlY3RseSBzZXQgdXAuIEkmIzM5O2xsIG5lZWQgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSwgdGhlIGBLY29uZmlnYCBmaWxlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9gLCB0byBjb25maXJtIGFsbCBuZWNlc3NhcnkgZmxhZ3MgYXJlIGVuYWJsZWQgYW5kIGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBUaGlzIGluaXRpYWwgc3RlcCBpcyBjcml0aWNhbCB0byBlbnN1cmUgdGhlIGZvdW5kYXRpb24gZm9yIG91ciBNZWRpYVRlayBkZXZpY2UgaXMgcm9idXN0IGFuZCBjb3JyZWN0bHkgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBXTEFOIHN0YWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgV0xBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZzo2Om1lbnVjb25maWcgV0xBTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtXaXJlbGVzcyBMQU5cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MzEKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2YgdGhpcy4KCioqRW5hYmxpbmcgdGhlIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgdGhlIHBsYW4gaXMgdG8gZW5hYmxlIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgd2lyZWxlc3MgZnVuY3Rpb25hbGl0eTogYFdMQU5gLCBgV0xBTl9WRU5ET1JfTUVESUFURUtgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIHNwZWNpZmljYWxseSBgTVQ3OTIxVWAuIEhvd2V2ZXIsIGhhbmcgb24uLi4gZGlkbiYjMzk7dCB3ZSBhbHNvIHdhbnQgdG8gY29uc2lkZXIgdGhlIGBNVDc5MjFTYCAoU0RJTykgdmFyaWFudD8gSXQmIzM5O3Mgd29ydGggYSBzZWNvbmQgbG9vaywgYW5kIEkmIzM5O2QgYmUgcmVtaXNzIGlmIEkgZGlkbiYjMzk7dCB2ZXJpZnkgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyMVNgIGJlZm9yZSBjb21taXR0aW5nIHRvIGEgZGVjaXNpb24uIFdlJiMzOTtsbCBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIHRvIHNlZSBpZiB3ZSBtaXNzZWQgc29tZXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE3Olx0Y29uZmlnIE1UNzkyMVNcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdHNlbGVjdCBNVDc2X1NESU9cbiAgMjA6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDIxOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDIyOlx0XHRkZXBlbmRzIG9uIE1NQ1xuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxUyA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDI1Olx0XG4gIDI2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDg0CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMjM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3Vzc2luZyBGdXp6aW5nIEVmZm9ydHMqKgoKT2theSwgc28gdGhlIGRpcmVjdGlvbiBoZXJlIGhpbmdlcyBvbiBgTU1DYCwgYnV0IEkgdGhpbmsgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIGFwcHJvYWNoIGlzIHRvIHplcm8gaW4gb24gdGhlIGBNVDc5MjFVYCBhbmQgYE1UNzkyMVNgIGNvbXBvbmVudHMgYW5kIHRoZWlyIHJlcXVpcmVkIGRlcGVuZGVuY2llcyBmb3Igbm93LiBUaGF0IG1lYW5zIHdlJiMzOTtyZSBjb25zaWRlcmluZyBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGBNQUM4MDIxMWAsIGBVU0JgLCBgTVQ3OTIxVWAsIGBNTUNgLCBhbmQgYE1UNzkyMVNgLgoKTm93LCBsZXQmIzM5O3MgZ2V0IHRvIHRoZSBzcGVjaWZpY3Mgb2Ygd2hlcmUgdG8gZGlyZWN0IHRoZSBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgY2hhbmdpbmcgYG10NzkyMV9sb2FkX2NsY2AsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jYC4gQWgsIGJ1dCBJIHNlZSBpdCYjMzk7cyBhIGBzdGF0aWNgIGZ1bmN0aW9uLiBUaGUgaW5zdHJ1Y3Rpb25zIGRpZCBzcGVjaWZpY2FsbHkgYWR2aXNlIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIHRvIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zIGJlY2F1c2UgdGhlIGlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyBkb24mIzM5O3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBTbywgd2UmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBub24tc3RhdGljIGZ1bmN0aW9uIGFjdHVhbGx5IGNhbGxzIGBtdDc5MjFfbG9hZF9jbGNgLiBHb2luZyBiYWNrIHRocm91Z2ggbXkgbm90ZXMsIEkgcmVjYWxsIHRoYXQgYG10NzkyMV9sb2FkX2NsY2AgaXMgY2FsbGVkIGJ5IGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gVGhhdCYjMzk7cyB3aGVyZSB3ZSBuZWVkIHRvIGZvY3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjM4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2Mzg6XHRpbnQgbXQ3OTIxX3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIDYzOTpcdHtcbiA2NDA6XHRcdGludCBlcnI7XG4gNjQxOlx0XG4gNjQyOlx0XHRlcnIgPSBtdDc5MnhfbG9hZF9maXJtd2FyZShkZXYpO1xuIDY0MzpcdFx0aWYgKGVycilcbiA2NDQ6XHRcdFx0cmV0dXJuIGVycjtcbiA2NDU6XHRcbiA2NDY6XHRcdGVyciA9IG10NzkyMV9tY3VfZ2V0X25pY19jYXBhYmlsaXR5KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuIDY0NzpcdFx0aWYgKGVycilcbiA2NDg6XHRcdFx0cmV0dXJuIGVycjtcbiA2NDk6XHRcbiA2NTA6XHRcdGVyciA9IG10NzkyMV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcbiA2NTE6XHRcdGlmIChlcnIpXG4gNjUyOlx0XHRcdHJldHVybiBlcnI7XG4gNjUzOlx0XHRzZXRfYml0KE1UNzZfU1RBVEVfTUNVX1JVTk5JTkcsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiA2NTQ6XHRcbiA2NTU6XHRcdHJldHVybiBtdDc5MjFfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCAxKTtcbiA2NTY6XHR9XG4gNjU3Olx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3J1bl9maXJtd2FyZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTk5CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgRXhlY3V0aW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgbXQ3OTIxYCBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIGZpcm13YXJlIGdldHMgbG9hZGVkIGFuZCBydW4uIFJpZ2h0IG5vdywgSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYG10NzkyMV9ydW5fZmlybXdhcmVgIGZ1bmN0aW9uLiBUaGUgY29kZSBzYXlzIGl0JiMzOTtzIGV4cG9ydGVkLCBzbyBpdCYjMzk7cyBnbG9iYWxseSB2aXNpYmxlLCBhbmQgbm9uLXN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIGRlZmluaXRlbHkgYSBrZXkgc3ltYm9sIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgcHJvY2Vzcy4KCkxvb2tpbmcgYXQgdGhlIHJlZmVyZW5jZXMsIGl0IHNlZW1zIGBtdDc5MjF1X21jdV9pbml0YCBhbmQgYG10NzkyMXVfbWFjX3Jlc2V0YCBpbiBgdXNiLmNgLCBhbmQgYG10NzkyMXNfbWN1X2luaXRgIGFuZCBgbXQ3OTIxc19tYWNfcmVzZXRgIGluIHRoZSBTRElPIGZpbGVzIGFyZSBjYWxsaW5nIGl0LiBTbyB0aGF0IGNvbmZpcm1zIG15IGluaXRpYWwgaHlwb3RoZXNpcyBhYm91dCBpdHMgaW1wb3J0YW5jZS4gSSBzZWUgdGhlc2UgZGlmZmVyZW50IGluaXRpYWxpemF0aW9uIGFuZCByZXNldCBmdW5jdGlvbnMgYXJlIGluIGRpZmZlcmVudCBmaWxlcyBhbmQgY29udGV4dHMsIG1lYW5pbmcgZGlmZmVyZW50IHVuZGVybHlpbmcgaGFyZHdhcmUgaW50ZXJmYWNlcy4KCldhaXQgYSBzZWNvbmTigKYgYG10NzkyMXVfbWN1X2luaXRgIGlzIHN0YXRpYz8hIFRoYXQgY2hhbmdlcyB0aGluZ3MgYSBiaXQsIHNpbmNlIHN0YXRpYyBtZWFucyBpdOKAmXMgbGltaXRlZCB0byBpdHMgc291cmNlIGZpbGUuIE9rYXksIEkgbmVlZCB0byBiYWNrdHJhY2sgc2xpZ2h0bHkgYW5kIHNlZSB3aGF0IGNhbGxzICp0aGF0KiBmdW5jdGlvbiBpbnN0ZWFkLCBzbyBJIGNhbiBzZWUgd2hhdOKAmXMgZ29pbmcgb24gYXQgdGhlIFVTQiBpbnRlcmZhY2UuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBVU0Itc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gZmxvd3MuIEkgc3VzcGVjdCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgc3RpbGwgYSBjZW50cmFsIHBvaW50IHRvIGZvY3VzIG9uLCBidXQgSSBuZWVkIHRvIHRyYWNlIHRoaXMgY2FsbCBjaGFpbiB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTQ6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTIxdV9tY3VfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTM2PW10NzkyMXVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzo2NTpzdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjF1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzEtXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkyeF9oaWZfb3BzIGhpZl9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNzI6XHRcdC5tY3VfaW5pdCA9IG10NzkyMXVfbWN1X2luaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzMtXHRcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjkxNQoJCQkJCQkJb3V0cHV0OiAxNDgKCQkJCQkJCXRob3VnaHRzOiA5NTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgTWVkaWFUZWsgTVQ3OTIxVSBGaXJtd2FyZSBQYXJzaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYXNzb2NpYXRlZCBkcml2ZXIgY29kZSBmb3IgdGhlIE1lZGlhVGVrIE1UNzkyMVUgd2lyZWxlc3MgZGV2aWNlLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQvd3JpdGUgd2l0aGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljLiBTcGVjaWZpY2FsbHksIGl0IGludm9sdmVzIHRoZSBgcGh5LSZndDtjbGNbY2xjLSZndDtpZHhdYCBhcnJheS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJ1ZyBmaXgsIGFuZCB0aGF0IG1ha2VzIGl0IGludGVyZXN0aW5nIGZvciBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyB3aWxsIGJlIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gSXQgc2VlbXMgdG8gYmUgdGhlIGNlbnRyYWwgZW50cnkgcG9pbnQgZm9yIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBleGVjdXRpb24gcHJvY2VzcyDigJMgdGhlIGZ1bmN0aW9uIEkgd2FudCBzeXprYWxsZXIgdG8gdGFyZ2V0LiBJIGNvbnNpZGVyZWQgYG10NzkyMV9sb2FkX2NsY2AsIGJ1dCBpdCYjMzk7cyBzdGF0aWMgYW5kIGxpa2VseSBpbmxpbmVkLCBzbyBmb2N1c2luZyBvbiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgdGhlIGJldHRlciBhbmQgc2FmZXIgYXBwcm9hY2guIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBpcyBpbmRlZWQgdGhlIG1haW4gdGFyZ2V0LgoKU2luY2Ugd2Uga25vdyBzeXprYWxsZXIgY2FuIGluamVjdCBmaXJtd2FyZSBmaWxlcywgYW5kIHRoaXMgcGF0Y2ggZml4ZXMgYSB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gZmlybXdhcmUgcGFyc2luZywgdGhpcyBpcyBhIGNsZWFyIGZ1enppbmcgdGFyZ2V0LgoKTm93LCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByZWxldmFudCBkcml2ZXJzIGFyZSBlbmFibGVkLiBUaGUgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBlbmFibGUgZXZlcnl0aGluZywgYnV0IEkgd2FudCB0byBiZSBlZmZpY2llbnQgYW5kIG9ubHkgZW5hYmxlIHdoYXQmIzM5O3MgcmVxdWlyZWQuCgpGcm9tIHRoZSBkZXBlbmRlbmNpZXMsIEkmIzM5O3ZlIGdvdDogYFdMQU5gLCBgV0xBTl9WRU5ET1JfTUVESUFURUtgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuICBBbmQgZmluYWxseSB0aGUgdGFyZ2V0OiBgTVQ3OTIxVWAuIFRoZSBNZWRpYVRlayBVU0IgZHJpdmVyIHNlZW1zIHRvIGJlIHRoZSBrZXkgaGVyZSwgYW5kIFVTQiBpcyBzb21ldGhpbmcgc3l6a2FsbGVyIGlzIGdvb2QgYXQgZW11bGF0aW5nLiBJIGluaXRpYWxseSBjb25zaWRlcmVkIGBNVDc5MjFFYCAoUENJZSksIGJ1dCBVU0IgaXMgZGVmaW5pdGVseSB0aGUgYmV0dGVyIG9wdGlvbiBmb3Igc3l6a2FsbGVyLgoKTGV0JiMzOTtzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRob3NlIGBNVDc5MjFVYCBkZXBlbmRlbmNpZXMsIGp1c3QgdG8gYmUgc3VyZS4uLiB5ZXAsIHRoZSBsaXN0ZWQgY29uZmlncyBhcmUgYWxsIHJlcXVpcmVkLgoKT2theSwgbGV0JiMzOTtzIGNyYWZ0IHRoYXQgYHNldC1yZXN1bHRzYCBjYWxsOgoKKiAgICoqV29ydGhGdXp6aW5nKio6IFRydWUsIGFic29sdXRlbHkuIFRoaXMgaXMgYSBjbGVhciBidWcgZml4IGluIGEgZnV6emFibGUgY29tcG9uZW50LgoqICAgKipGb2N1c1N5bWJvbHMqKjogYFsmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0O11gIC0gVGhpcyBpcyB0aGUgcHJpbWFyeSBmdW5jdGlvbiB0byB0YXJnZXQuCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYFsmIzM0O1dMQU4mIzM0OywgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7LCAmIzM0O01BQzgwMjExJiMzNDssICYjMzQ7VVNCJiMzNDssICYjMzQ7TVQ3OTIxVSYjMzQ7XWAgLSBUaGVzZSBlbmFibGUgdGhlIG5lY2Vzc2FyeSB3aXJlbGVzcyBhbmQgVVNCIGRyaXZlciBjb21wb25lbnRzLgoqICAgKipSZWFzb25pbmcqKjogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3Mgd2hlbiBwYXJzaW5nIGZpcm13YXJlIGRhdGEgaW4gdGhlIE1lZGlhVGVrIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIGF0dGFjaGVkIHZpYSBVU0IgKGBNVDc5MjFVYCksIHdoaWNoIGlzIGVtdWxhdGVkIGFuZCBmdXp6YWJsZSBieSBzeXprYWxsZXIuIFN5emthbGxlciBjYW4gYWxzbyBpbmplY3QgbWFsaWNpb3VzIGZpcm13YXJlIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguJiMzNDsKCkkmIzM5O20gY29uZmlkZW50IGluIHRoaXMgYXBwcm9hY2guIExldCYjMzk7cyBzdWJtaXQgdGhlIHJlc3VsdHMgYW5kIHN0YXJ0IGZ1enppbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE0OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTIxX3J1bl9maXJtd2FyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyB3aGVuIHBhcnNpbmcgZmlybXdhcmUgZGF0YSBpbiB0aGUgTWVkaWFUZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgYXR0YWNoZWQgdmlhIFVTQiAoTVQ3OTIxVSksIHdoaWNoIGlzIGVtdWxhdGVkIGFuZCBmdXp6YWJsZSBieSBzeXprYWxsZXIuIFN5emthbGxlciBjYW4gYWxzbyBpbmplY3QgbWFsaWNpb3VzIGZpcm13YXJlIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHdoZW4gcGFyc2luZyBmaXJtd2FyZSBkYXRhIGluIHRoZSBNZWRpYVRlayBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBhdHRhY2hlZCB2aWEgVVNCIChNVDc5MjFVKSwgd2hpY2ggaXMgZW11bGF0ZWQgYW5kIGZ1enphYmxlIGJ5IHN5emthbGxlci4gU3l6a2FsbGVyIGNhbiBhbHNvIGluamVjdCBtYWxpY2lvdXMgZmlybXdhcmUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI4OjQ5Ljc5OTUyMzI1MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NTkxMTQxOTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNVDc5MjFVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHdoZW4gcGFyc2luZyBmaXJtd2FyZSBkYXRhIGluIHRoZSBNZWRpYVRlayBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBhdHRhY2hlZCB2aWEgVVNCIChNVDc5MjFVKSwgd2hpY2ggaXMgZW11bGF0ZWQgYW5kIGZ1enphYmxlIGJ5IHN5emthbGxlci4gU3l6a2FsbGVyIGNhbiBhbHNvIGluamVjdCBtYWxpY2lvdXMgZmlybXdhcmUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjg6NDkuNzk5NTMwMTUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTcyNzI0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1M2EwYjQwNjYwNDUyNTZmYjk4MTE0NmNlYTRlNTZlZjcyNmFhYTY4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTQ6Mjg6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xcbmluZGV4IDI1Yjk0MzcyNTBmN2IuLjFjOTk2NDViODEyMjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xcbkBAIC00NjcsNiArNDY3LDkgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG4gXFx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXFx1MDAzYyBsZW47IG9mZnNldCArPSBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbikpIHtcXG4gXFx0XFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICsgb2Zmc2V0KTtcXG4gXFxuK1xcdFxcdGlmIChjbGMtXFx1MDAzZWlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cXHUwMDNlY2xjKSlcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcbiBcXHRcXHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cXG4gXFx0XFx0aWYgKHBoeS1cXHUwMDNlY2xjW2NsYy1cXHUwMDNlaWR4XSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI4OjUwLjM1Nzg1MDgxN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc4MDMyODA0MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNVDc5MjFVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHdoZW4gcGFyc2luZyBmaXJtd2FyZSBkYXRhIGluIHRoZSBNZWRpYVRlayBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBhdHRhY2hlZCB2aWEgVVNCIChNVDc5MjFVKSwgd2hpY2ggaXMgZW11bGF0ZWQgYW5kIGZ1enphYmxlIGJ5IHN5emthbGxlci4gU3l6a2FsbGVyIGNhbiBhbHNvIGluamVjdCBtYWxpY2lvdXMgZmlybXdhcmUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTNhMGI0MDY2MDQ1MjU2ZmI5ODExNDZjZWE0ZTU2ZWY3MjZhYWE2OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTQ6Mjg6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXG5pbmRleCAyNWI5NDM3MjUwZjdiLi4xYzk5NjQ1YjgxMjIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXG5AQCAtNDY3LDYgKzQ2Nyw5IEBAIHN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gXHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcdTAwM2MgbGVuOyBvZmZzZXQgKz0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbikpIHtcbiBcdFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICsgb2Zmc2V0KTtcbiBcbitcdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuK1x0XHRcdGJyZWFrO1xuK1xuIFx0XHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cbiBcdFx0aWYgKHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pXG4gXHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyODo1MC4zNTc4NTI3OTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTY3OTM3MTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY2AuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBhZGRlZCBhIGJvdW5kcyBjaGVjayB3aXRoaW4gdGhlIGBtdDc5MjFfbG9hZF9jbGNgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgcHJvdGVjdGluZyBhZ2FpbnN0IGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHRvIGBwaHktXHUwMDNlY2xjW2NsYy1cdTAwM2VpZHhdYC4gR29vZCBjYXRjaCwgdGhhdCdzIGEgY2xhc3NpYyB2dWxuZXJhYmlsaXR5LiBXZSBkb24ndCB3YW50IHRvIGJlIHdyaXRpbmcgb3V0c2lkZSB0aGUgYXJyYXkncyBhbGxvY2F0ZWQgbWVtb3J5LlxuXG5UaGUgZHJpdmVyIGl0c2VsZiBpcyB0aGUgTWVkaWFUZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgcmVhY2hhYmxlIGlzIHRoaXMgZHJpdmVyPyBJdCdzIGEgd2lyZWxlc3MgZHJpdmVyIGZvciBzcGVjaWZpYyBoYXJkd2FyZSwgc28gaXTigJlzIGxpa2VseSB0aGF0IGl0IG5lZWRzIHRoZSBhY3R1YWwgTVQ3OTIxIGhhcmR3YXJlIHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBNb3N0IG9mIHRoZSB0aW1lIHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBkaXJlY3QgaGFyZHdhcmUgYWNjZXNzLiBVbmxlc3MsIG9mIGNvdXJzZSwgdGhlcmUncyBzb21lIHNvcnQgb2Ygc29mdHdhcmUgZW11bGF0b3IgYXQgcGxheSwgb3IgaWYgaXQncyBhIFVTQiBkcml2ZXIgdGhhdCBjYW4gYmUgZW11bGF0ZWQgdmlhIHNvbWV0aGluZyBsaWtlIGR1bW15X2hjZCBvciB1c2IgZ2FkZ2V0LCBvciBTRElPLCBvciBpZiBpdCdzIFBDSS5cblxuSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoaXMgTVQ3OTIxIGRyaXZlciBpcyBzdHJpY3RseSBQQ0ksIG9yIGlmIGl0IGFsc28gaGFzIGEgVVNCIG9yIFNESU8gaW50ZXJmYWNlIHdoaWNoIHdvdWxkIG1ha2UgaXQgZmFyIGVhc2llciB0byB0ZXN0IGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4gSSB3aWxsIHF1aWNrbHkgc2VhcmNoIHRoZSBkcml2ZXIgZGlyZWN0b3J5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9gIHRvIGNoZWNrIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyODo1Ni41MjU3OTI4NzVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImRlYnVnZnMuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFpbi5jXCIsXG4gICAgXCJtY3UuY1wiLFxuICAgIFwibWN1LmhcIixcbiAgICBcIm10NzkyMS5oXCIsXG4gICAgXCJwY2kuY1wiLFxuICAgIFwicGNpX21hYy5jXCIsXG4gICAgXCJwY2lfbWN1LmNcIixcbiAgICBcInJlZ2QuY1wiLFxuICAgIFwicmVnZC5oXCIsXG4gICAgXCJyZWdzLmhcIixcbiAgICBcInNkaW8uY1wiLFxuICAgIFwic2Rpb19tYWMuY1wiLFxuICAgIFwic2Rpb19tY3UuY1wiLFxuICAgIFwidGVzdG1vZGUuY1wiLFxuICAgIFwidXNiLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjg6NTYuNTI1ODg5Nzk1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0NDA1NTk4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNVDc5MjEgRHJpdmVyKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHNlZWluZzogdGhlIHByZXNlbmNlIG9mIGB1c2IuY2AgYW5kIGBzZGlvLmNgIGluIHRoaXMgY29udGV4dCByZWFsbHkgb3BlbnMgdGhpbmdzIHVwLiBTcGVjaWZpY2FsbHksIHRoZSBpbmNsdXNpb24gb2YgYHVzYi5jYCB0ZWxscyBtZSB0aGF0IHdlIGhhdmUgdGhlIHBvdGVudGlhbCB0byBpbnRlcmFjdCB3aXRoIHRoZSBNVDc5MjEgZHJpdmVyIHRocm91Z2ggYSBVU0IgaW50ZXJmYWNlLiBUaGlzIGlzIGZhbnRhc3RpYyBiZWNhdXNlIGl0IG1lYW5zIHdlIGNhbiBsZXZlcmFnZSBzeXprYWxsZXIncyBjYXBhYmlsaXRpZXMgd2l0aCBgZHVtbXlfaGNkYCBhbmQgYHJhdy1nYWRnZXRgIHRvIGVtdWxhdGUgYSBVU0IgaG9zdCBlbnZpcm9ubWVudC4gVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgd2UgY2FuIG5vdyAqcmVhY2gqIHRoZSByZWxldmFudCBjb2RlIHdpdGhpbiB0aGUgTVQ3OTIxIGRyaXZlciBhbmQsIGNydWNpYWxseSwgdGhhdCBpdOKAmXMgbm93ICpmdXp6YWJsZSouIFRoaXMgaXMgYW4gZXhjZWxsZW50IGZpbmQhIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvbmZpZyBvcHRpb25zIHRvIHNwZWNpZmljYWxseSB0YXJnZXQgYW5kIGlkZW50aWZ5IHRob3NlIHRoYXQgcGVydGFpbiB0byB0aGUgTVQ3OTIxJ3MgVVNCIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMTYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MDAuMDY5OTQ4ODcxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTgxNzUzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTIxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Nzpjb25maWcgTVQ3OTIxRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjg6Y29uZmlnIE1UNzkyMVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjAwLjE3NTc3MzU0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2OTg3MzAxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBhbmQgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgYE1UNzkyMVVgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaWcgZGVlcGVyIGFuZCB1bmRlcnN0YW5kIGl0cyBhc3NvY2lhdGVkIGVjb3N5c3RlbS4gV2hhdCBhcmUgdGhlIHN1cHBvcnRpbmcgcGFja2FnZXMsIGxpYnJhcmllcywgYW5kIGhhcmR3YXJlIGl0IHJlbGllcyBvbj8gS25vd2luZyB0aGUgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWwgZm9yIHRyb3VibGVzaG9vdGluZywgb3B0aW1pemF0aW9uLCBvciBwb3J0aW5nIHRoaXMgY29uZmlnIHRvIGEgbmV3IGVudmlyb25tZW50LiBUaGlzIGdpdmVzIG1lIGEgc3RhcnRpbmcgcG9pbnQgdG8gYXNzZXNzIGFueSBwb3RlbnRpYWwgaW50ZWdyYXRpb24gY2hhbGxlbmdlcyBvciBib3R0bGVuZWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUga2VybmVsLCBmaXJtd2FyZSwgYW5kIHVzZXItc3BhY2UgdXRpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzU2LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MDIuODc0NTA2NzkyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyODpcXHRjb25maWcgTVQ3OTIxVVxcbiAgMjk6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDMwOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAzMTpcXHRcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMzM6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjAyLjg3NDYwNTIyMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODU0NzU1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgbXQ3OTIxX2xvYWRfY2xjKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXQ3OTIxX2xvYWRfY2xjYCBmdW5jdGlvbi4gUmlnaHQgYXdheSwgbXkgYnJhaW4gZmxhZ3MgdGhlIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIEJhc2VkIG9uIHRoZSBjb250ZXh0LCBJJ20gdGhpbmtpbmcsIFwiVGhpcyBpcyBjb25uZWN0ZWQgdG8gYm90aCBgTUFDODAyMTFgIGFuZCBgVVNCYCwgc28gdGhvc2UgYXJlIHRoZSBhcmVhcyBJJ2xsIG5lZWQgdG8gZm9jdXMgb24gZmlyc3QuXCIgVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIGhvdyBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBhY3R1YWxseSBiZWluZyAqdXNlZCouIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGl0J3MgaW52b2x2ZWQgaW4gVVNCIGluaXRpYWxpemF0aW9uLCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biBhbGwgdGhlIGNhbGwgc2l0ZXMgYW5kIHZlcmlmeSBpZiBteSBodW5jaCBpcyBjb3JyZWN0LiBJIGhhdmUgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIHJlYWNoZXMgdGhhdCBmdW5jdGlvbiwgYW5kIHdoZXRoZXIgVVNCIGluaXRpYWxpemF0aW9uIGlzIHRoZSB0cmlnZ2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTA1LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTowNi4xNjAwODQ1ODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NTY2NjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV9sb2FkX2NsY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9Mzk5PWludCBtdDc5MjFfbWN1X3VuaV9yeF9iYShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNDA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjQxMDpzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQxMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz02Mzg9aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2NTA6XFx0ZXJyID0gbXQ3OTIxX2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1MS1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTowNi4yMTY2NjAwNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQwOTA3OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBGaXJtd2FyZSBMb2FkaW5nIFNlcXVlbmNlKipcblxuUmlnaHQsIHNvIGBtdDc5MjFfbG9hZF9jbGNgIGlzIGRlZmluaXRlbHkgY2FsbGVkIGJ5IGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gVGhhdCdzIHRoZSBlc3RhYmxpc2hlZCByZWxhdGlvbnNoaXAuIE5vdywgdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIGZvciB0aGlzIE1UNzkyMSBjaGlwLCBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVuKiBhbmQgKndoeSogYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIGNhbGxlZC4gV2hlcmUgYXJlIHRoZSBlbnRyeSBwb2ludHM/IEtub3dpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBvZiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgd2lsbCBnaXZlIG1lIGNyaXRpY2FsIGluc2lnaHRzIGludG8gdGhlIGRyaXZlcidzIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gYW5kIG9wZXJhdGlvbmFsIGZsb3cuIExldCdzIHNlZSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGludm9rZWQuIEkgbmVlZCB0byBnZXQgYSBoaWdoLWxldmVsIHBpY3R1cmUgb2YgaG93IHRoZSB3aG9sZSB0aGluZyBzdGFydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NDAsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTowOS42NTc1NzA5NzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MTA5NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMV9ydW5fZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTYyNT1pbnQgbXQ3OTIxX21jdV9md19sb2dfMl9ob3N0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGN0cmwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjM4OmludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NjU3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV9ydW5fZmlybXdhcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTIwNj12b2lkIG10NzkyMV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDoyMDc6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMjA4LWludCBtdDc5MjFfc2V0X2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYz01Nj1pbnQgbXQ3OTIxZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYy0xMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jOjEwNjpcXHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jLTEwNy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21jdS5jPTQxPWludCBtdDc5MjFlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21jdS5jOjU4OlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jPTE0Nz1pbnQgbXQ3OTIxc19tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmMtMTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmM6MTgxOlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jLTE4Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYz03ND1pbnQgbXQ3OTIxc19tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYy05MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jOjkxOlxcdHJldCA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jLTkyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz02NT1zdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTc4LVxcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6Nzk6XFx0cmV0ID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTgwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz04OT1zdGF0aWMgaW50IG10NzkyMXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTI3OlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjgtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MDkuNzE0Njg1Njk5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxODE2NTQ0MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5MjEgVVNCIEluaXRpYWxpemF0aW9uIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgYSBrZXkgZnVuY3Rpb24sIGFuZCB0aGUgY29kZSBjbGVhcmx5IHNob3dzIGl0J3MgY2FsbGVkIGZyb20gYm90aCBgbXQ3OTIxdV9tY3VfaW5pdGAgYW5kIGBtdDc5MjF1X21hY19yZXNldGAgd2l0aGluIGB1c2IuY2AuIFRoYXQgcGxhY2VzIGl0cyBleGVjdXRpb24gc3F1YXJlbHkgaW4gdGhlIFVTQiBkZXZpY2UgaW5pdGlhbGl6YXRpb24gcGhhc2UsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJ2QgZXhwZWN0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiAqZG9lcyouIFRoZSBjb2RlIG1lbnRpb25zIGBtdDc5MjFfbG9hZF9jbGNgLCB3aGljaCBpcyBjbGVhcmx5IGFib3V0IHBhcnNpbmcgZmlybXdhcmUgZGF0YS4gVGhlIHF1ZXN0aW9uIGlzOiBXaGVyZSBpcyBpdCBnZXR0aW5nIHRoZSBmaXJtd2FyZSBkYXRhPyBJcyBpdCBwdWxsZWQgZnJvbSB0aGUgZGV2aWNlIGl0c2VsZiBkdXJpbmcgYSBib290IHNlcXVlbmNlLCBvciBpcyBpdCByZWFkaW5nIGEgZmlybXdhcmUgZmlsZSBmcm9tIHRoZSBob3N0IG1hY2hpbmU/IEkgbmVlZCB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgZnVuY3Rpb24gYG10NzkyMV9sb2FkX2NsY2AgdG8gZmlndXJlIHRoYXQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTExLCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjEzLjg5NjM0Mzc5NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDEwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDEwOlxcdHN0YXRpYyBpbnQgbXQ3OTIxX2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXFxuIDQxMTpcXHR7XFxuIDQxMjpcXHRcXHRjb25zdCBzdHJ1Y3QgbXQ3Nl9jb25uYWMyX2Z3X3RyYWlsZXIgKmhkcjtcXG4gNDEzOlxcdFxcdGNvbnN0IHN0cnVjdCBtdDc2X2Nvbm5hYzJfZndfcmVnaW9uICpyZWdpb247XFxuIDQxNDpcXHRcXHRjb25zdCBzdHJ1Y3QgbXQ3OTIxX2NsYyAqY2xjO1xcbiA0MTU6XFx0XFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3NjtcXG4gNDE2OlxcdFxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHk7XFxuIDQxNzpcXHRcXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xcbiA0MTg6XFx0XFx0aW50IHJldCwgaSwgbGVuLCBvZmZzZXQgPSAwO1xcbiA0MTk6XFx0XFx0dTggKmNsY19iYXNlID0gTlVMTCwgaHdfZW5jYXAgPSAwO1xcbiA0MjA6XFx0XFxuIDQyMTpcXHRcXHRkZXYtXFx1MDAzZXBoeS5jbGNfY2hhbl9jb25mID0gMHhmZjtcXG4gNDIyOlxcdFxcdGRldi1cXHUwMDNlcmVnZF91c2VyID0gZmFsc2U7XFxuIDQyMzpcXHRcXHRpZiAoIW10NzkyMV9yZWdkX2NsY19zdXBwb3J0ZWQoZGV2KSlcXG4gNDI0OlxcdFxcdFxcdHJldHVybiAwO1xcbiA0MjU6XFx0XFxuIDQyNjpcXHRcXHRpZiAobXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuIDQyNzpcXHRcXHRcXHRyZXQgPSBtdDc5MjFfbWN1X3JlYWRfZWVwcm9tKGRldiwgTVRfRUVfSFdfVFlQRSwgXFx1MDAyNmh3X2VuY2FwKTtcXG4gNDI4OlxcdFxcdFxcdGlmIChyZXQpXFxuIDQyOTpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0MzA6XFx0XFx0XFx0aHdfZW5jYXAgPSB1OF9nZXRfYml0cyhod19lbmNhcCwgTVRfRUVfSFdfVFlQRV9FTkNBUCk7XFxuIDQzMTpcXHRcXHR9XFxuIDQzMjpcXHRcXG4gNDMzOlxcdFxcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXFx1MDAyNmZ3LCBmd19uYW1lLCBtZGV2LVxcdTAwM2VkZXYpO1xcbiA0MzQ6XFx0XFx0aWYgKHJldClcXG4gNDM1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDQzNjpcXHRcXG4gNDM3OlxcdFxcdGlmICghZncgfHwgIWZ3LVxcdTAwM2VkYXRhIHx8IGZ3LVxcdTAwM2VzaXplIFxcdTAwM2Mgc2l6ZW9mKCpoZHIpKSB7XFxuIDQzODpcXHRcXHRcXHRkZXZfZXJyKG1kZXYtXFx1MDAzZWRldiwgXFxcIkludmFsaWQgZmlybXdhcmVcXFxcblxcXCIpO1xcbiA0Mzk6XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gNDQwOlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0NDE6XFx0XFx0fVxcbiA0NDI6XFx0XFxuIDQ0MzpcXHRcXHRoZHIgPSAoY29uc3Qgdm9pZCAqKShmdy1cXHUwMDNlZGF0YSArIGZ3LVxcdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKTtcXG4gNDQ0OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBoZHItXFx1MDAzZW5fcmVnaW9uOyBpKyspIHtcXG4gNDQ1OlxcdFxcdFxcdHJlZ2lvbiA9IChjb25zdCB2b2lkICopKChjb25zdCB1OCAqKWhkciAtXFxuIDQ0NjpcXHRcXHRcXHRcXHRcXHRcXHQoaGRyLVxcdTAwM2VuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTtcXG4gNDQ3OlxcdFxcdFxcdGxlbiA9IGxlMzJfdG9fY3B1KHJlZ2lvbi1cXHUwMDNlbGVuKTtcXG4gNDQ4OlxcdFxcbiA0NDk6XFx0XFx0XFx0LyogY2hlY2sgaWYgd2UgaGF2ZSB2YWxpZCBidWZmZXIgc2l6ZSAqL1xcbiA0NTA6XFx0XFx0XFx0aWYgKG9mZnNldCArIGxlbiBcXHUwMDNlIGZ3LVxcdTAwM2VzaXplKSB7XFxuIDQ1MTpcXHRcXHRcXHRcXHRkZXZfZXJyKG1kZXYtXFx1MDAzZWRldiwgXFxcIkludmFsaWQgZmlybXdhcmUgcmVnaW9uXFxcXG5cXFwiKTtcXG4gNDUyOlxcdFxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDQ1MzpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDU0OlxcdFxcdFxcdH1cXG4gNDU1OlxcdFxcbiA0NTY6XFx0XFx0XFx0aWYgKChyZWdpb24tXFx1MDAzZWZlYXR1cmVfc2V0IFxcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFxcdTAwMjZcXHUwMDI2XFxuIDQ1NzpcXHRcXHRcXHQgICAgcmVnaW9uLVxcdTAwM2V0eXBlID09IEZXX1RZUEVfQ0xDKSB7XFxuIDQ1ODpcXHRcXHRcXHRcXHRjbGNfYmFzZSA9ICh1OCAqKShmdy1cXHUwMDNlZGF0YSArIG9mZnNldCk7XFxuIDQ1OTpcXHRcXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MTMuODk2NDU3NDg2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNjA4NTY0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBGaXJtd2FyZSBSZXF1ZXN0KipcblxuT2theSwgc28gSSBzZWUgdGhpcyBjb2RlIGNhbGxzIGByZXF1ZXN0X2Zpcm13YXJlYCBhbmQgdGhlbiBwYXJzZXMgdGhlIGZpcm13YXJlIGZpbGUuIE15IGV4cGVydCBpbnR1aXRpb24gaW1tZWRpYXRlbHkga2lja3MgaW4g4oCTIGNhbiB0aGlzIGJlIGZ1enplZD8gR2l2ZW4gdGhhdCBpdCdzIHB1bGxpbmcgYSBmaWxlIGZyb20gdGhlIGhvc3QsIHRoYXQncyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gQW5kIEkga25vdyBTeXprYWxsZXIgaXMgY2FwYWJsZSBvZiBmdXp6aW5nIGZpcm13YXJlIGZpbGVzIGlmIGl0J3MgdXNpbmcgdGhlIGZpcm13YXJlIGluamVjdGlvbiBtZWNoYW5pc20uXG5cbkhtbSwgU3l6a2FsbGVyIHR5cGljYWxseSBmb2N1c2VzIG9uIGZ1enppbmcgZGV2aWNlIGlucHV0cyBsaWtlIFVTQiBvciBQQ0kuIEJ1dCB3YWl0LCBJIHJlY2FsbCBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc3VwcG9ydCBmb3IgZmlybXdhcmUgZnV6emluZyEgSXQgaW50ZXJjZXB0cyBgcmVxdWVzdF9maXJtd2FyZWAgY2FsbHMgYW5kIGluamVjdHMgZnV6emVkIGRhdGEuIEkgdGhpbmsgaXQgdXNlcyBgc3l6X21vdW50X2ltYWdlYCBvciBhIHNpbWlsYXIgcHNldWRvLXN5c2NhbGwgdG8gc3VwcGx5IHRoZSBmaXJtd2FyZS4gQnV0LCByaWdodCwgaXQgY2FuIGFsc28gdXNlIGBzeXpfdXNiX2Nvbm5lY3RgIHdoaWNoIHdvdWxkIHRyaWdnZXIgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiwgYW5kIHRoZW4gaWYgdGhlIGRyaXZlciByZXF1ZXN0cyBmaXJtd2FyZSwgU3l6a2FsbGVyJ3MgZnV6emVyIHdpbGwgc3RlcCBpbi5cblxuSG9sZCBvbiwgdGhlIHBhdGNoIGF1dGhvciBpcyBsaXN0ZWQgYXMgYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYCDigJMgdGhhdCdzIGEgZGVhZCBnaXZlYXdheSEgVGhpcyBtZWFucyBTeXprYWxsZXIgZm91bmQgdGhlIGJ1Zywgd2hpY2ggbWVhbnMgaXTigJlzIGRlZmluaXRlbHkgZnV6emFibGUuXG5cbk5vdywgbGV0IG1lIGp1c3QgcmUtZXhhbWluZSB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSBzZWVpbmcgYE1UNzkyMVVgIGlzIHRoZSBVU0IgZHJpdmVyLiBJdCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBhbmQgYWxzbyBgTVQ3OTIxX0NPTU1PTmAuIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgaGVyZS4gTGV0IG1lIGRvdWJsZS1jaGVjayBkZXBlbmRlbmNpZXMuIFllcywgYE1UNzkyMVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAuIEknbGwgYWxzbyBjaGVjayBgV0xBTmAgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2Agd2hpbGUgSSdtIGF0IGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzUxLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MjAuMDU3MzE3ODc0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE5MzExMjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzkyMVVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnPTE3PWNvbmZpZyBNVDc5MjFTXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjg6Y29uZmlnIE1UNzkyMVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjIwLjE4OTI1NDAzNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDg1MDI2MTg2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgSW5zcGVjdGlvbiBCZWdpbnMqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIGRpdmUgaW50byB0aGUgcGFyZW50IGBLY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24uIFdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5PyBBcmUgdGhlcmUgYW55IHByZS1leGlzdGluZyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIG9uZT8gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG92ZXJhcmNoaW5nIGxvZ2ljIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBiZWZvcmUgZGlnZ2luZyBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBzcGVjaWZpYyBvcHRpb24gYXQgaGFuZC4gVGhpcyBpcyB0aGUgZm91bmRhdGlvbiB1cG9uIHdoaWNoIGV2ZXJ5dGhpbmcgZWxzZSBzaXRzOyB1bmRlcnN0YW5kaW5nIHRoZSBwYXJlbnQgaXMga2V5IHRvIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY1OCwiT3V0cHV0VG9rZW5zIjo1OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MzEuMDM5NTE5NTIyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDMwNzIyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9NDg9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo0OTpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUwLXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MzEuMTA5ODM1MjU3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5OTYyNDQ4NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzYgS2NvbmZpZyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgbXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgIGZpbGUuIFRoYXQncyB1c3VhbGx5IHRoZSBwbGFjZSB0byBzdGFydCB3aGVuIEkgbmVlZCB0byBjb25maWd1cmUgb3IgdHJvdWJsZXNob290IGFueXRoaW5nIHdpdGhpbiBhIExpbnV4IGtlcm5lbCBtb2R1bGUuIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgb3V0bGluZSBhbGwgdGhlIGJ1aWxkIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgTVQ3NiB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIGlzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoIGZvciB0aGlzIGtpbmQgb2Yga2VybmVsIGluZnJhc3RydWN0dXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOlxuXG4qICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnM6KiogV2hhdCBmZWF0dXJlcyBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZD8gSXMgdGhlcmUgc3VwcG9ydCBmb3Igc3BlY2lmaWMgY2hpcHNldHMsIGZyZXF1ZW5jeSBiYW5kcywgb3Igd2lyZWxlc3Mgc3RhbmRhcmRzIGxpa2UgODAyLjExYXg/XG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBvciBkcml2ZXJzIGFyZSByZXF1aXJlZCBmb3IgdGhlIE1UNzYgZHJpdmVyIHRvIGZ1bmN0aW9uPyBUaGlzIG1pZ2h0IGluY2x1ZGUgdGhpbmdzIGxpa2UgZmlybXdhcmUsIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcywgb3IgZXZlbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLlxuKiAgICoqRGVmYXVsdCB2YWx1ZXM6KiogV2hhdCBhcmUgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gVGhpcyBjYW4gZ2l2ZSBtZSBhIHF1aWNrIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIG9mIHRoZSBkcml2ZXIgb3V0LW9mLXRoZS1ib3guXG4qICAgKipIZWxwIHRleHQ6KiogSG9wZWZ1bGx5LCB0aGVyZSdzIHNvbWUgdXNlZnVsIGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggZWFjaCBvcHRpb24gZXhwbGFpbmluZyBpdHMgcHVycG9zZSBhbmQgaW1wYWN0LiBUaGF0IHdpbGwgc2F2ZSBtZSBhIGxvdCBvZiB0aW1lLlxuXG5Fc3NlbnRpYWxseSwgSSdtIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gZ2l2ZSBtZSBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlIE1UNzYgZHJpdmVyJ3MgY29uZmlndXJhYmxlIGFzcGVjdHMgYW5kIGhvdyBpdCdzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIGtlcm5lbCBzeXN0ZW0uIE5vdywgbGV0J3Mgb3BlbiBpdCBhbmQgc2VlIHdoYXQncyB3aGF0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTg1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MzUuMTA2MDgyMDM2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzZfQ09SRVxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE1UNzZfTEVEU1xcbiAgIDc6XFx0XFx0Ym9vbFxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IE1UNzZfQ09SRT1MRURTX0NMQVNTXFxuICAxMDpcXHRcXHRkZWZhdWx0IHlcXG4gIDExOlxcdFxcbiAgMTI6XFx0Y29uZmlnIE1UNzZfVVNCXFxuICAxMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gIDE1OlxcdFxcbiAgMTY6XFx0Y29uZmlnIE1UNzZfU0RJT1xcbiAgMTc6XFx0XFx0dHJpc3RhdGVcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBNVDc2eDAyX0xJQlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTozNS4xMDYxNDQ0NTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzNjA4NjU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGdpdmVuIHByb21wdDpcblxuKipBbmFseXppbmcgdGhlIE1lZGlhdGVrIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGluc3RydWN0aW9uIGlzIHRvIHN1bW1hcml6ZSB0aGlzIFwidGhvdWdodCBwcm9jZXNzXCIgYXMgaWYgKkkqIHdlcmUgdGhpbmtpbmcgaXQuIEZpbmUsIEknbGwgcGxheSBhbG9uZy4gTGV0J3Mgc2VlLi4uIHRoZSB0ZXh0IG1lbnRpb25zIFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZy5cIiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBjb25maWd1cmF0aW9uIGZpbGUgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgc291cmNlIHRyZWUuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVycy4gQSAqS2NvbmZpZyogZmlsZSBpcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHVzZWQgYnkgdGhlIGtlcm5lbCdzIGJ1aWxkIHN5c3RlbSAoS2J1aWxkKSBmb3IgZGVmaW5pbmcgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5HaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIGtlcm5lbCBkZXZlbG9wbWVudCwgSSdkIGltbWVkaWF0ZWx5IGtub3cgdGhpcyBmaWxlIHdvdWxkIGNvbnRhaW4gYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlLiBJdCBkZXNjcmliZXMgd2hpY2ggTWVkaWF0ZWsgd2lyZWxlc3MgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkncmUgZW5hYmxlZCwgYW5kIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgaGFyZHdhcmUuIEl0IHVzZXMgYSBzcGVjaWZpYyBzeW50YXggKG1lbnVjb25maWcsIGNvbmZpZywgc2VsZWN0LCBkZXBlbmRzIG9uLCBldGMuKSB0byBzZXQgdXAgdGhvc2Ugb3B0aW9ucy4gU28sIGlmIEkgd2VyZSBhY3R1YWxseSBzdGFydGluZyB0byBsb29rIGludG8gdGhpcywgSSdkIGV4cGVjdCB0byBzZWUgdGhpbmdzIGxpa2U6IGRlZmluaXRpb25zIGZvciB2YXJpb3VzIE1lZGlhdGVrIFdpLUZpIGNoaXBzZXRzLCBvcHRpb25zIHRvIGVuYWJsZSBkaWZmZXJlbnQgV2ktRmkgc3RhbmRhcmRzICg4MDIuMTFhL2IvZy9uL2FjL2F4KSwgb3B0aW9ucyBmb3IgZGlmZmVyZW50IE1lZGlhdGVrIGhhcmR3YXJlIGZlYXR1cmVzIChsaWtlIHBvd2VyIG1hbmFnZW1lbnQsIHJlZ3VsYXRvcnkgZG9tYWluIHNldHRpbmdzLCBhbmQgcG9zc2libHkgZmlybXdhcmUgbG9hZGluZyksIGFuZCBwb3RlbnRpYWxseSBldmVuIG9wdGlvbnMgZm9yIGRlYnVnZ2luZyBvciB0ZXN0aW5nIHRoZSBkcml2ZXJzLiBUaGlzIGZpbGUgd291bGQgYmUgY3JpdGljYWwgZm9yIGFueW9uZSBidWlsZGluZyBhIGtlcm5lbCBzcGVjaWZpY2FsbHkgZm9yIGEgZGV2aWNlIHdpdGggTWVkaWF0ZWsgd2lyZWxlc3MgaGFyZHdhcmUuIEl04oCZcyB0aGUgZ2F0ZWtlZXBlciBmb3Igd2hpY2ggTWVkaWF0ZWsgd2lyZWxlc3MgZmVhdHVyZXMgd2lsbCBtYWtlIGl0IGludG8gdGhlIGZpbmFsIGltYWdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjI1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTozOS4xNDIyMzQyNTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiTWVkaWFUZWsgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAgOTpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMDpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDExOlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBXTEFOX1ZFTkRPUl9NRURJQVRFS1xcbiAgMTQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L0tjb25maWdcXFwiXFxuICAxNTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1xcXCJcXG4gIDE2OlxcdGVuZGlmICMgV0xBTl9WRU5ET1JfTUVESUFURUtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6MzkuMTQyMzQxNDYyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NjY4MDEwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW1tZWRpYXRlIENvbmNlcm5zOiBXTEFOIGFuZCBNVDc5MjFVIEludGVncmF0aW9uKipcblxuT2theSwgc28gdGhlIHByb2plY3QncyBtYXJjaGluZyBvcmRlcnMgYXJlIGNsZWFyOiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBNZWRpYVRlayBjaGlwc2V0LCBzcGVjaWZpY2FsbHkgdGhlIE1UNzkyMVUsIHdoaWNoIG5lY2Vzc2l0YXRlcyB0aGUgYFdMQU5fVkVORE9SX01FRElBVEVLYCwgYW5kIGBNVDc5MjFVYCBkcml2ZXJzLCB0byBnZXQgdXMgb2ZmIHRoZSBncm91bmQuIENsZWFybHksIHRoZSBmcmFtZXdvcmsgaGVyZSBpbnZvbHZlcyBhIGBNQUM4MDIxMWAgYXJjaGl0ZWN0dXJlLiBXZSBhcmUgcnVubmluZyB0aGlzIGNoaXBzZXQgb3ZlciBgVVNCYC4gTm93LCB0byBiZSBjZXJ0YWluIEkgaGF2ZSBhbGwgdGhlIHBpZWNlcyBpbiBwbGFjZSwgSSB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoZSBgV0xBTmAgY29uZmlndXJhdGlvbiBpcyBjb3JyZWN0bHkgc2V0IHVwLiBJJ2xsIG5lZWQgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZSwgdGhlIGBLY29uZmlnYCBmaWxlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9gLCB0byBjb25maXJtIGFsbCBuZWNlc3NhcnkgZmxhZ3MgYXJlIGVuYWJsZWQgYW5kIGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBUaGlzIGluaXRpYWwgc3RlcCBpcyBjcml0aWNhbCB0byBlbnN1cmUgdGhlIGZvdW5kYXRpb24gZm9yIG91ciBNZWRpYVRlayBkZXZpY2UgaXMgcm9idXN0IGFuZCBjb3JyZWN0bHkgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCdzIFdMQU4gc3RhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjgzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTo0Mi42MDkxNDUxMDNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NTkwMDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBXTEFOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6NjptZW51Y29uZmlnIFdMQU5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnLTctXFx0Ym9vbCBcXFwiV2lyZWxlc3MgTEFOXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTo0Mi43MDQ3NDA1OTdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwODEyNjMwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKkVuYWJsaW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCB0aGUgcGxhbiBpcyB0byBlbmFibGUgdGhlc2UgY29uZmlndXJhdGlvbnMgZm9yIHRoZSB3aXJlbGVzcyBmdW5jdGlvbmFsaXR5OiBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGBNQUM4MDIxMWAsIGBVU0JgLCBhbmQgc3BlY2lmaWNhbGx5IGBNVDc5MjFVYC4gSG93ZXZlciwgaGFuZyBvbi4uLiBkaWRuJ3Qgd2UgYWxzbyB3YW50IHRvIGNvbnNpZGVyIHRoZSBgTVQ3OTIxU2AgKFNESU8pIHZhcmlhbnQ/IEl0J3Mgd29ydGggYSBzZWNvbmQgbG9vaywgYW5kIEknZCBiZSByZW1pc3MgaWYgSSBkaWRuJ3QgdmVyaWZ5IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBNVDc5MjFTYCBiZWZvcmUgY29tbWl0dGluZyB0byBhIGRlY2lzaW9uLiBXZSdsbCBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIHRvIHNlZSBpZiB3ZSBtaXNzZWQgc29tZXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDYzMSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjQ2LjExMjg3MDUzMloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAxNzpcXHRjb25maWcgTVQ3OTIxU1xcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcXFwiXFxuICAxOTpcXHRcXHRzZWxlY3QgTVQ3Nl9TRElPXFxuICAyMDpcXHRcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBNTUNcXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVMgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjQ2LjExMjk3OTE2MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODY4MjY4Njg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3Vzc2luZyBGdXp6aW5nIEVmZm9ydHMqKlxuXG5Pa2F5LCBzbyB0aGUgZGlyZWN0aW9uIGhlcmUgaGluZ2VzIG9uIGBNTUNgLCBidXQgSSB0aGluayB0aGUgbW9zdCBzdHJhaWdodGZvcndhcmQgYXBwcm9hY2ggaXMgdG8gemVybyBpbiBvbiB0aGUgYE1UNzkyMVVgIGFuZCBgTVQ3OTIxU2AgY29tcG9uZW50cyBhbmQgdGhlaXIgcmVxdWlyZWQgZGVwZW5kZW5jaWVzIGZvciBub3cuIFRoYXQgbWVhbnMgd2UncmUgY29uc2lkZXJpbmcgYFdMQU5gLCBgV0xBTl9WRU5ET1JfTUVESUFURUtgLCBgTUFDODAyMTFgLCBgVVNCYCwgYE1UNzkyMVVgLCBgTU1DYCwgYW5kIGBNVDc5MjFTYC5cblxuTm93LCBsZXQncyBnZXQgdG8gdGhlIHNwZWNpZmljcyBvZiB3aGVyZSB0byBkaXJlY3QgdGhlIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBjaGFuZ2luZyBgbXQ3OTIxX2xvYWRfY2xjYCwgd2hpY2ggaXMgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNgLiBBaCwgYnV0IEkgc2VlIGl0J3MgYSBgc3RhdGljYCBmdW5jdGlvbi4gVGhlIGluc3RydWN0aW9ucyBkaWQgc3BlY2lmaWNhbGx5IGFkdmlzZSBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyB0byBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZSBpbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgZG9uJ3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBTbywgd2UnbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG5vbi1zdGF0aWMgZnVuY3Rpb24gYWN0dWFsbHkgY2FsbHMgYG10NzkyMV9sb2FkX2NsY2AuIEdvaW5nIGJhY2sgdGhyb3VnaCBteSBub3RlcywgSSByZWNhbGwgdGhhdCBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBjYWxsZWQgYnkgYG10NzkyMV9ydW5fZmlybXdhcmVgLiBUaGF0J3Mgd2hlcmUgd2UgbmVlZCB0byBmb2N1cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwODQsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDoyOTo1MC45ODEyNTI1MzhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYzOCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYzODpcXHRpbnQgbXQ3OTIxX3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiA2Mzk6XFx0e1xcbiA2NDA6XFx0XFx0aW50IGVycjtcXG4gNjQxOlxcdFxcbiA2NDI6XFx0XFx0ZXJyID0gbXQ3OTJ4X2xvYWRfZmlybXdhcmUoZGV2KTtcXG4gNjQzOlxcdFxcdGlmIChlcnIpXFxuIDY0NDpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA2NDU6XFx0XFxuIDY0NjpcXHRcXHRlcnIgPSBtdDc5MjFfbWN1X2dldF9uaWNfY2FwYWJpbGl0eShcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbiA2NDc6XFx0XFx0aWYgKGVycilcXG4gNjQ4OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDY0OTpcXHRcXG4gNjUwOlxcdFxcdGVyciA9IG10NzkyMV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcXG4gNjUxOlxcdFxcdGlmIChlcnIpXFxuIDY1MjpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA2NTM6XFx0XFx0c2V0X2JpdChNVDc2X1NUQVRFX01DVV9SVU5OSU5HLCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gNjU0OlxcdFxcbiA2NTU6XFx0XFx0cmV0dXJuIG10NzkyMV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIDEpO1xcbiA2NTY6XFx0fVxcbiA2NTc6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3J1bl9maXJtd2FyZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjUwLjk4MTQxNDM2OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjY5MjQ4MTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmlybXdhcmUgRXhlY3V0aW9uIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYG10NzkyMWAgZHJpdmVyLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBmaXJtd2FyZSBnZXRzIGxvYWRlZCBhbmQgcnVuLiBSaWdodCBub3csIEknbSBmb2N1c2luZyBvbiB0aGUgYG10NzkyMV9ydW5fZmlybXdhcmVgIGZ1bmN0aW9uLiBUaGUgY29kZSBzYXlzIGl0J3MgZXhwb3J0ZWQsIHNvIGl0J3MgZ2xvYmFsbHkgdmlzaWJsZSwgYW5kIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCdzIGRlZmluaXRlbHkgYSBrZXkgc3ltYm9sIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgcHJvY2Vzcy5cblxuTG9va2luZyBhdCB0aGUgcmVmZXJlbmNlcywgaXQgc2VlbXMgYG10NzkyMXVfbWN1X2luaXRgIGFuZCBgbXQ3OTIxdV9tYWNfcmVzZXRgIGluIGB1c2IuY2AsIGFuZCBgbXQ3OTIxc19tY3VfaW5pdGAgYW5kIGBtdDc5MjFzX21hY19yZXNldGAgaW4gdGhlIFNESU8gZmlsZXMgYXJlIGNhbGxpbmcgaXQuIFNvIHRoYXQgY29uZmlybXMgbXkgaW5pdGlhbCBoeXBvdGhlc2lzIGFib3V0IGl0cyBpbXBvcnRhbmNlLiBJIHNlZSB0aGVzZSBkaWZmZXJlbnQgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IGZ1bmN0aW9ucyBhcmUgaW4gZGlmZmVyZW50IGZpbGVzIGFuZCBjb250ZXh0cywgbWVhbmluZyBkaWZmZXJlbnQgdW5kZXJseWluZyBoYXJkd2FyZSBpbnRlcmZhY2VzLlxuXG5XYWl0IGEgc2Vjb25k4oCmIGBtdDc5MjF1X21jdV9pbml0YCBpcyBzdGF0aWM/ISBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LCBzaW5jZSBzdGF0aWMgbWVhbnMgaXTigJlzIGxpbWl0ZWQgdG8gaXRzIHNvdXJjZSBmaWxlLiBPa2F5LCBJIG5lZWQgdG8gYmFja3RyYWNrIHNsaWdodGx5IGFuZCBzZWUgd2hhdCBjYWxscyAqdGhhdCogZnVuY3Rpb24gaW5zdGVhZCwgc28gSSBjYW4gc2VlIHdoYXTigJlzIGdvaW5nIG9uIGF0IHRoZSBVU0IgaW50ZXJmYWNlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgVVNCLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGZsb3dzLiBJIHN1c3BlY3QgYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIHN0aWxsIGEgY2VudHJhbCBwb2ludCB0byBmb2N1cyBvbiwgYnV0IEkgbmVlZCB0byB0cmFjZSB0aGlzIGNhbGwgY2hhaW4gdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTk5LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTQ6Mjk6NTYuMjUwNjY3OTJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTkzMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyMXVfbWN1X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzY9bXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjY1OnN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTcxLVxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTJ4X2hpZl9vcHMgaGlmX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNzI6XFx0XFx0Lm1jdV9pbml0ID0gbXQ3OTIxdV9tY3VfaW5pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzMtXFx0XFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE0OjI5OjU2LjMwODg2NTk4NloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTkyMzc0ODYyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBNZWRpYVRlayBNVDc5MjFVIEZpcm13YXJlIFBhcnNpbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYXNzb2NpYXRlZCBkcml2ZXIgY29kZSBmb3IgdGhlIE1lZGlhVGVrIE1UNzkyMVUgd2lyZWxlc3MgZGV2aWNlLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBpdCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQvd3JpdGUgd2l0aGluIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljLiBTcGVjaWZpY2FsbHksIGl0IGludm9sdmVzIHRoZSBgcGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XWAgYXJyYXkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBidWcgZml4LCBhbmQgdGhhdCBtYWtlcyBpdCBpbnRlcmVzdGluZyBmb3IgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyB3aWxsIGJlIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gSXQgc2VlbXMgdG8gYmUgdGhlIGNlbnRyYWwgZW50cnkgcG9pbnQgZm9yIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBleGVjdXRpb24gcHJvY2VzcyDigJMgdGhlIGZ1bmN0aW9uIEkgd2FudCBzeXprYWxsZXIgdG8gdGFyZ2V0LiBJIGNvbnNpZGVyZWQgYG10NzkyMV9sb2FkX2NsY2AsIGJ1dCBpdCdzIHN0YXRpYyBhbmQgbGlrZWx5IGlubGluZWQsIHNvIGZvY3VzaW5nIG9uIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBpcyB0aGUgYmV0dGVyIGFuZCBzYWZlciBhcHByb2FjaC4gSSd2ZSBjb25maXJtZWQgdGhhdCBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgaW5kZWVkIHRoZSBtYWluIHRhcmdldC5cblxuU2luY2Ugd2Uga25vdyBzeXprYWxsZXIgY2FuIGluamVjdCBmaXJtd2FyZSBmaWxlcywgYW5kIHRoaXMgcGF0Y2ggZml4ZXMgYSB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gZmlybXdhcmUgcGFyc2luZywgdGhpcyBpcyBhIGNsZWFyIGZ1enppbmcgdGFyZ2V0LlxuXG5Ob3csIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGRyaXZlcnMgYXJlIGVuYWJsZWQuIFRoZSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGVuYWJsZSBldmVyeXRoaW5nLCBidXQgSSB3YW50IHRvIGJlIGVmZmljaWVudCBhbmQgb25seSBlbmFibGUgd2hhdCdzIHJlcXVpcmVkLlxuXG5Gcm9tIHRoZSBkZXBlbmRlbmNpZXMsIEkndmUgZ290OiBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4gIEFuZCBmaW5hbGx5IHRoZSB0YXJnZXQ6IGBNVDc5MjFVYC4gVGhlIE1lZGlhVGVrIFVTQiBkcml2ZXIgc2VlbXMgdG8gYmUgdGhlIGtleSBoZXJlLCBhbmQgVVNCIGlzIHNvbWV0aGluZyBzeXprYWxsZXIgaXMgZ29vZCBhdCBlbXVsYXRpbmcuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgYE1UNzkyMUVgIChQQ0llKSwgYnV0IFVTQiBpcyBkZWZpbml0ZWx5IHRoZSBiZXR0ZXIgb3B0aW9uIGZvciBzeXprYWxsZXIuXG5cbkxldCdzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRob3NlIGBNVDc5MjFVYCBkZXBlbmRlbmNpZXMsIGp1c3QgdG8gYmUgc3VyZS4uLiB5ZXAsIHRoZSBsaXN0ZWQgY29uZmlncyBhcmUgYWxsIHJlcXVpcmVkLlxuXG5Pa2F5LCBsZXQncyBjcmFmdCB0aGF0IGBzZXQtcmVzdWx0c2AgY2FsbDpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IFRydWUsIGFic29sdXRlbHkuIFRoaXMgaXMgYSBjbGVhciBidWcgZml4IGluIGEgZnV6emFibGUgY29tcG9uZW50LlxuKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbXCJtdDc5MjFfcnVuX2Zpcm13YXJlXCJdYCAtIFRoaXMgaXMgdGhlIHByaW1hcnkgZnVuY3Rpb24gdG8gdGFyZ2V0LlxuKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgW1wiV0xBTlwiLCBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsIFwiTUFDODAyMTFcIiwgXCJVU0JcIiwgXCJNVDc5MjFVXCJdYCAtIFRoZXNlIGVuYWJsZSB0aGUgbmVjZXNzYXJ5IHdpcmVsZXNzIGFuZCBVU0IgZHJpdmVyIGNvbXBvbmVudHMuXG4qICAgKipSZWFzb25pbmcqKjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3Mgd2hlbiBwYXJzaW5nIGZpcm13YXJlIGRhdGEgaW4gdGhlIE1lZGlhVGVrIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIGF0dGFjaGVkIHZpYSBVU0IgKGBNVDc5MjFVYCksIHdoaWNoIGlzIGVtdWxhdGVkIGFuZCBmdXp6YWJsZSBieSBzeXprYWxsZXIuIFN5emthbGxlciBjYW4gYWxzbyBpbmplY3QgbWFsaWNpb3VzIGZpcm13YXJlIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXCJcblxuSSdtIGNvbmZpZGVudCBpbiB0aGlzIGFwcHJvYWNoLiBMZXQncyBzdWJtaXQgdGhlIHJlc3VsdHMgYW5kIHN0YXJ0IGZ1enppbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTE1LCJPdXRwdXRUb2tlbnMiOjE0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNDozMDowOC4yMzI2MTgyMTZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgwMzM2MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNVDc5MjFVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHdoZW4gcGFyc2luZyBmaXJtd2FyZSBkYXRhIGluIHRoZSBNZWRpYVRlayBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBhdHRhY2hlZCB2aWEgVVNCIChNVDc5MjFVKSwgd2hpY2ggaXMgZW11bGF0ZWQgYW5kIGZ1enphYmxlIGJ5IHN5emthbGxlci4gU3l6a2FsbGVyIGNhbiBhbHNvIGluamVjdCBtYWxpY2lvdXMgZmlybXdhcmUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTVQ3OTIxVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyMV9ydW5fZmlybXdhcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyB3aGVuIHBhcnNpbmcgZmlybXdhcmUgZGF0YSBpbiB0aGUgTWVkaWFUZWsgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgYXR0YWNoZWQgdmlhIFVTQiAoTVQ3OTIxVSksIHdoaWNoIGlzIGVtdWxhdGVkIGFuZCBmdXp6YWJsZSBieSBzeXprYWxsZXIuIFN5emthbGxlciBjYW4gYWxzbyBpbmplY3QgbWFsaWNpb3VzIGZpcm13YXJlIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq96qk[1] Phase: Succeeded StartedAt: 2026-08-01 14:30:19 +0000 UTC FinishedAt: 2026-08-01 14:30:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 14:30:19 +0000 UTC FinishedAt: 2026-08-01 14:30:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2] Phase: Succeeded StartedAt: 2026-08-01 14:30:19 +0000 UTC FinishedAt: 2026-08-01 16:01:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-01 14:30:19 +0000 UTC FinishedAt: 2026-08-01 16:01:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-01 14:30:19 +0000 UTC FinishedAt: 2026-08-01 14:30:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-01 14:30:19 +0000 UTC FinishedAt: 2026-08-01 14:30:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq96qk/series-workflowq96qk-convert-artifact-3463380081/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-01 14:30:29 +0000 UTC FinishedAt: 2026-08-01 14:50:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-01 14:30:29 +0000 UTC FinishedAt: 2026-08-01 14:50:50 +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:*6d182186-8555-4a91-b02a-9a5db59f7697,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-workflowq96qk/series-workflowq96qk-convert-artifact-3463380081/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": "30f8610f-d25d-4775-86d4-4159f5adc1c6", "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-workflowq96qk/series-workflowq96qk-build-action-4208572063/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-01 14:30:29 +0000 UTC FinishedAt: 2026-08-01 14:50:40 +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:*6d182186-8555-4a91-b02a-9a5db59f7697,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-workflowq96qk/series-workflowq96qk-convert-artifact-3463380081/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": "30f8610f-d25d-4775-86d4-4159f5adc1c6", "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-workflowq96qk/series-workflowq96qk-build-action-4208572063/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-01 14:50:50 +0000 UTC FinishedAt: 2026-08-01 14:50:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-01 14:50:50 +0000 UTC FinishedAt: 2026-08-01 14:50:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-01 14:50:50 +0000 UTC FinishedAt: 2026-08-01 14:51:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-01 14:50:50 +0000 UTC FinishedAt: 2026-08-01 14:50:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq96qk/series-workflowq96qk-convert-artifact-1084532164/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-01 14:51:00 +0000 UTC FinishedAt: 2026-08-01 14:52:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-01 14:51:00 +0000 UTC FinishedAt: 2026-08-01 14:52:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*30f8610f-d25d-4775-86d4-4159f5adc1c6,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-workflowq96qk/series-workflowq96qk-build-action-4208572063/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-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-01 14:52:58 +0000 UTC FinishedAt: 2026-08-01 14:52:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-01 14:52:58 +0000 UTC FinishedAt: 2026-08-01 14:52:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-01 14:52:58 +0000 UTC FinishedAt: 2026-08-01 15:09:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-01 14:52:58 +0000 UTC FinishedAt: 2026-08-01 15:09:40 +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:*6d182186-8555-4a91-b02a-9a5db59f7697,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-workflowq96qk/series-workflowq96qk-convert-artifact-1084532164/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": "895bd2cb-5cde-4a98-bf8d-d8a93c0c8f95", "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-workflowq96qk/series-workflowq96qk-build-action-2954546640/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-01 14:52:58 +0000 UTC FinishedAt: 2026-08-01 15:09:30 +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:*6d182186-8555-4a91-b02a-9a5db59f7697,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-workflowq96qk/series-workflowq96qk-convert-artifact-1084532164/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": "895bd2cb-5cde-4a98-bf8d-d8a93c0c8f95", "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-workflowq96qk/series-workflowq96qk-build-action-2954546640/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-01 15:09:40 +0000 UTC FinishedAt: 2026-08-01 15:09:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-01 15:09:40 +0000 UTC FinishedAt: 2026-08-01 15:09:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-01 15:09:40 +0000 UTC FinishedAt: 2026-08-01 15:11:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-01 15:09:40 +0000 UTC FinishedAt: 2026-08-01 15:11:22 +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:*895bd2cb-5cde-4a98-bf8d-d8a93c0c8f95,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-workflowq96qk/series-workflowq96qk-build-action-2954546640/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-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-01 15:11:32 +0000 UTC FinishedAt: 2026-08-01 16:01:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-01 15:11:32 +0000 UTC FinishedAt: 2026-08-01 16:01:42 +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":["mt7921_run_firmware"],"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:*30f8610f-d25d-4775-86d4-4159f5adc1c6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*895bd2cb-5cde-4a98-bf8d-d8a93c0c8f95,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-workflowq96qk/series-workflowq96qk-build-action-4208572063/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-workflowq96qk/series-workflowq96qk-build-action-2954546640/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-01 15:11:32 +0000 UTC FinishedAt: 2026-08-01 15:11:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-01 15:11:32 +0000 UTC FinishedAt: 2026-08-01 15:11:36 +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":["mt7921_run_firmware"],"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-workflowq96qk/series-workflowq96qk-convert-artifact-3634498509/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-01 15:11:32 +0000 UTC FinishedAt: 2026-08-01 15:11:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-01 15:11:32 +0000 UTC FinishedAt: 2026-08-01 15:11:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-01 15:11:32 +0000 UTC FinishedAt: 2026-08-01 15:11:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-01 15:11:42 +0000 UTC FinishedAt: 2026-08-01 16:01:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq96qk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","MAC80211","USB","MT7921U"],"series_id":"de74c332-a5ed-4d86-979a-da11a9d03215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-01 15:11:42 +0000 UTC FinishedAt: 2026-08-01 16:01:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*30f8610f-d25d-4775-86d4-4159f5adc1c6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*895bd2cb-5cde-4a98-bf8d-d8a93c0c8f95,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-workflowq96qk/series-workflowq96qk-build-action-4208572063/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-workflowq96qk/series-workflowq96qk-build-action-2954546640/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-workflowq96qk/series-workflowq96qk-convert-artifact-3634498509/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,}