Name: series-workflowrs4q9 Phase: Succeeded StartedAt: 2026-08-05 02:25:41 +0000 UTC FinishedAt: 2026-08-05 03:14:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[0] Phase: Succeeded StartedAt: 2026-08-05 02:25:41 +0000 UTC FinishedAt: 2026-08-05 02:29:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 02:25:41 +0000 UTC FinishedAt: 2026-08-05 02:29:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MAC80211", "USB", "DEBUG_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MAC80211", "USB", "DEBUG_FS" ], "series_id": "07b142bd-49fc-46aa-8fd5-80d04e02b326" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_mcu_regval" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X21jdV9yZWd2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBjb21tYW5kIGxlbmd0aCBjYWxjdWxhdGlvbiBpbiBtdDc5MjVfbWN1X3JlZ3ZhbCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBkZWJ1Z2ZzIGluIHRoZSBtdDc5MjUgVVNCIFdpLUZpIGRyaXZlci4gVGhpcyBkcml2ZXIgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15IEhDRCwgbWFraW5nIGl0IGZ1enphYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2EwNWJjZWQ4ZmNiYTIxYjM1YmQ5NTA4MDI2NWFkMjM4YzYyNjhiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMDI6Mjc6MzEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuaW5kZXggZmEyOWM0ODZhNDU1My4uODI4ZjBiNGE3YmU2YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuQEAgLTk5LDYgJiM0Mzs5OSw3IEBAIGludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpXG4gXHRcdH07XG4gXHR9IF9fcGFja2VkICogcmVzLCByZXE7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuJiM0MztcdGludCBjbWRfbGVuO1xuIFx0aW50IHJldDtcbiBcbiBcdGlmICh1MzJfZ2V0X2JpdHMocmVnaWR4LCBNVF9SRl9SRUdfSERSKSA9PSBSRl9SRUdfUFJFRklYKSB7XG5AQCAtMTA3LDIwICYjNDM7MTA4LDIyIEBAIGludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpXG4gXHRcdHJlcS5yZl9yZWcuYW50ID0gY3B1X3RvX2xlMTYodTMyX2dldF9iaXRzKHJlZ2lkeCwgTVRfUkZfUkVHX0FOVCkpO1xuIFx0XHRyZXEucmZfcmVnLmlkeCA9IGNwdV90b19sZTMyKHJlZ2lkeCk7XG4gXHRcdHJlcS5yZl9yZWcuZGF0YSA9IHNldCA/IGNwdV90b19sZTMyKCp2YWwpIDogMDtcbiYjNDM7XHRcdGNtZF9sZW4gPSBzaXplb2YocmVxLl9fcnN2KSAmIzQzOyBzaXplb2YocmVxLnJmX3JlZyk7XG4gXHR9IGVsc2Uge1xuIFx0XHRyZXEucmVnLnRhZyA9IGNwdV90b19sZTE2KFVOSV9DTURfQUNDRVNTX1JFR19CQVNJQyk7XG4gXHRcdHJlcS5yZWcubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS5yZWcpKTtcbiBcdFx0cmVxLnJlZy5pZHggPSBjcHVfdG9fbGUzMihyZWdpZHgpO1xuIFx0XHRyZXEucmVnLmRhdGEgPSBzZXQgPyBjcHVfdG9fbGUzMigqdmFsKSA6IDA7XG4mIzQzO1x0XHRjbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgJiM0Mzsgc2l6ZW9mKHJlcS5yZWcpO1xuIFx0fVxuIFxuIFx0aWYgKHNldClcbiBcdFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRChSRUdfQUNDRVNTKSxcbi1cdFx0XHRcdFx0IFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUpO1xuJiM0MztcdFx0XHRcdFx0IFx1MDAyNnJlcSwgY21kX2xlbiwgdHJ1ZSk7XG4gXG4gXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LFxuIFx0XHRcdFx0XHRNQ1VfV01fVU5JX0NNRF9RVUVSWShSRUdfQUNDRVNTKSxcbi1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbiYjNDM7XHRcdFx0XHRcdFx1MDAyNnJlcSwgY21kX2xlbiwgdHJ1ZSwgXHUwMDI2c2tiKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X21jdV9yZWd2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBjb21tYW5kIGxlbmd0aCBjYWxjdWxhdGlvbiBpbiBtdDc5MjVfbWN1X3JlZ3ZhbCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBkZWJ1Z2ZzIGluIHRoZSBtdDc5MjUgVVNCIFdpLUZpIGRyaXZlci4gVGhpcyBkcml2ZXIgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15IEhDRCwgbWFraW5nIGl0IGZ1enphYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2EwNWJjZWQ4ZmNiYTIxYjM1YmQ5NTA4MDI2NWFkMjM4YzYyNjhiMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDUgMDI6Mjc6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jCmluZGV4IGZhMjljNDg2YTQ1NTMuLjgyOGYwYjRhN2JlNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jCkBAIC05OSw2ICYjNDM7OTksNyBAQCBpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KQogCQl9OwogCX0gX19wYWNrZWQgKiByZXMsIHJlcTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwlpbnQgY21kX2xlbjsKIAlpbnQgcmV0OwogCiAJaWYgKHUzMl9nZXRfYml0cyhyZWdpZHgsIE1UX1JGX1JFR19IRFIpID09IFJGX1JFR19QUkVGSVgpIHsKQEAgLTEwNywyMCAmIzQzOzEwOCwyMiBAQCBpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KQogCQlyZXEucmZfcmVnLmFudCA9IGNwdV90b19sZTE2KHUzMl9nZXRfYml0cyhyZWdpZHgsIE1UX1JGX1JFR19BTlQpKTsKIAkJcmVxLnJmX3JlZy5pZHggPSBjcHVfdG9fbGUzMihyZWdpZHgpOwogCQlyZXEucmZfcmVnLmRhdGEgPSBzZXQgPyBjcHVfdG9fbGUzMigqdmFsKSA6IDA7CiYjNDM7CQljbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgJiM0Mzsgc2l6ZW9mKHJlcS5yZl9yZWcpOwogCX0gZWxzZSB7CiAJCXJlcS5yZWcudGFnID0gY3B1X3RvX2xlMTYoVU5JX0NNRF9BQ0NFU1NfUkVHX0JBU0lDKTsKIAkJcmVxLnJlZy5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLnJlZykpOwogCQlyZXEucmVnLmlkeCA9IGNwdV90b19sZTMyKHJlZ2lkeCk7CiAJCXJlcS5yZWcuZGF0YSA9IHNldCA/IGNwdV90b19sZTMyKCp2YWwpIDogMDsKJiM0MzsJCWNtZF9sZW4gPSBzaXplb2YocmVxLl9fcnN2KSAmIzQzOyBzaXplb2YocmVxLnJlZyk7CiAJfQogCiAJaWYgKHNldCkKIAkJcmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKCZhbXA7ZGV2LSZndDttdDc2LCBNQ1VfV01fVU5JX0NNRChSRUdfQUNDRVNTKSwKLQkJCQkJICZhbXA7cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSk7CiYjNDM7CQkJCQkgJmFtcDtyZXEsIGNtZF9sZW4sIHRydWUpOwogCiAJcmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZygmYW1wO2Rldi0mZ3Q7bXQ3NiwKIAkJCQkJTUNVX1dNX1VOSV9DTURfUVVFUlkoUkVHX0FDQ0VTUyksCi0JCQkJCSZhbXA7cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgJmFtcDtza2IpOwomIzQzOwkJCQkJJmFtcDtyZXEsIGNtZF9sZW4sIHRydWUsICZhbXA7c2tiKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2UgaW4gYG10NzkyNV9tY3VfcmVndmFsYCB0byBjYWxjdWxhdGUgYGNtZF9sZW5gIGluc3RlYWQgb2Ygc2ltcGx5IHVzaW5nIGBzaXplb2YocmVxKWAuIFJpZ2h0IGF3YXksIEkgc2VlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYSBwb3RlbnRpYWwgYnVnIGZpeCBvciBvcHRpbWl6YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIGVzcGVjaWFsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzaW5jZSBJIGtub3cgdGhvc2UgY2FuIHNvbWV0aW1lcyBleHBvc2Ugc3VidGxlIGlzc3VlcyB3aXRoIGRyaXZlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZS4KCmBtdDc5MjVgLi4uIHRoYXQmIzM5O3MgdGhlIE1lZGlhVGVrIFdpLUZpIDcgZHJpdmVyLCByaWdodD8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGEgUENJZSBvciBVU0IgZHJpdmVyIGJlY2F1c2UgdGhhdCBjb250ZXh0IHdpbGwgYmUgaW1wb3J0YW50LiBMZXQgbWUgdGFrZSBhIHF1aWNrIHBlZWsgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9gIGRpcmVjdG9yeSBhbmQgc2VlIGlmIHRoZSB1bmRlcmx5aW5nIGNvbW11bmljYXRpb24gc2NoZW1lIGlzIG9idmlvdXMgZnJvbSB0aGUgZmlsZXMgd2l0aGluLiBHb3R0YSBhc3Nlc3MgdGhlIGFjY2VzcyBtZXRob2QgZm9yIGFueSBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDttYWMuYyYjMzQ7LAogICAgJiMzNDttYWMuaCYjMzQ7LAogICAgJiMzNDttYWluLmMmIzM0OywKICAgICYjMzQ7bWN1LmMmIzM0OywKICAgICYjMzQ7bWN1LmgmIzM0OywKICAgICYjMzQ7bXQ3OTI1LmgmIzM0OywKICAgICYjMzQ7bmFuLmMmIzM0OywKICAgICYjMzQ7bmFuLmgmIzM0OywKICAgICYjMzQ7cGNpLmMmIzM0OywKICAgICYjMzQ7cGNpX21hYy5jJiMzNDssCiAgICAmIzM0O3BjaV9tY3UuYyYjMzQ7LAogICAgJiMzNDtyZWdkLmMmIzM0OywKICAgICYjMzQ7cmVnZC5oJiMzNDssCiAgICAmIzM0O3JlZ3MuaCYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5jJiMzNDssCiAgICAmIzM0O3VzYi5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTAxCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCBxdWljayBtZW50YWwgc2NhbiwgYXMgYSBzZWFzb25lZCBkZXZlbG9wZXI6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogRGV2aWNlIEFyY2hpdGVjdHVyZSAmYW1wOyBQb3RlbnRpYWwgRW11bGF0aW9uIFBhdGhzKioKCkFscmlnaHQsIHRoZSBwcmVzZW5jZSBvZiBgdXNiLmNgIGFuZCBgcGNpLmNgIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgc3lzdGVtIGlzIGRlc2lnbmVkIHRvIGludGVyZmFjZSB3aXRoIGVpdGhlciBVU0Igb3IgUENJIGJ1c2VzLiBUaGF0IG9wZW5zIHVwIGEgZmV3IGludGVyZXN0aW5nIGF2ZW51ZXMgZm9yIGVtdWxhdGlvbiBvciB0ZXN0aW5nLiBJJiMzOTttIHRoaW5raW5nLCBwb3RlbnRpYWxseSwgYSBVU0IgZ2FkZ2V0IHNldHVwIG9yIGV2ZW4gdGhlIG9sZCBkdW1teSBIQ0QgYXBwcm9hY2ggY291bGQgZG8gdGhlIHRyaWNrIGlmIEkgd2FudCB0byBzaW11bGF0ZSBVU0IgZGV2aWNlIGJlaGF2aW9yLiBPZiBjb3Vyc2UsIHN5emthbGxlciYjMzk7cyB2aGNpIGlzIGFsd2F5cyBhIGNvbnRlbmRlciBmb3IgbW9yZSBjb250cm9sbGVkIGFuZCBwb3RlbnRpYWxseSBtb3JlIGluc2lnaHRmdWwgZnV6emluZy4KCk5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBhIGxpa2VseSBhcmVhIG9mIGludGVyZXN0IOKAkyBmaXJtd2FyZSBvciByZWdpc3RlciBhY2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpbnRlcmFjdHMgd2l0aCBpdHMgTUNVLiBUbyB0aGF0IGVuZCwgSSBzaG91bGQgaW52ZXN0aWdhdGUgYG10NzkyNV9tY3VfcmVndmFsYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgbG9va3MgcHJvbWlzaW5nIOKAkyByZWdpc3RlciB2YWx1ZSBhY2Nlc3Mgd2l0aGluIHRoZSBNQ1UgZnJhbWV3b3JrLiBJdCBzaG91bGQgZ2l2ZSBtZSBzb21lIGNyaXRpY2FsIGluc2lnaHRzIGludG8gaXRzIHVuZGVybHlpbmcgaGFyZHdhcmUgaW50ZXJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X21jdV9yZWd2YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTg9bXQ3OTI1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0Olx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxPW10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNy1cdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg6XHRyZXQgPSBtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcdTAwMjZyZWd2YWwsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOS1cdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9NzU9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjc3OmludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTM5LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjE0MDpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3JlZ3ZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzgzPWludCBtdDc5MjVfc2V0X3R4X3Nhcl9wd3Ioc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6Mzg2OmludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzg3LWludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzk2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYG10NzkyNV9tY3VfcmVndmFsYCoqCgpSaWdodCwgc28gYG10NzkyNV9tY3VfcmVndmFsYCBhcHBlYXJzIHRvIGJlIGNvbmZpbmVkIHRvIGBkZWJ1Z2ZzLmNgLiBUaGF0IHNlZW1zLi4uIG9kZC4gSXMgaXQgdHJ1bHkgb25seSB1c2VkIHdpdGhpbiB0aGF0IHNwZWNpZmljIGZpbGU/IEkgbmVlZCB0byB2ZXJpZnkgaXRzIHZpc2liaWxpdHkuCgpGaXJzdCwgbGV0JiMzOTtzIGNoZWNrIHRoZSBzeW1ib2wgZXhwb3J0IHN0YXR1cy4gT2theSwgaXQgKmlzKiBleHBvcnRlZCwgbWVhbmluZyBpdCYjMzk7cyBwb3RlbnRpYWxseSBhY2Nlc3NpYmxlIG91dHNpZGUgb2YgYGRlYnVnZnMuY2AuIE5vdywgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gVGltZSBmb3IgYSBmdWxsLXNjYWxlIHNlYXJjaC4gSSYjMzk7bGwgc2NvdXIgdGhlIGVudGlyZSBjb2RlIHRyZWUgZm9yIGFueSBvdGhlciBvY2N1cnJlbmNlcyBvZiBgbXQ3OTI1X21jdV9yZWd2YWxgLiBUaGlzIHdpbGwgY29uZmlybSB3aGV0aGVyIHRoaXMgdmFyaWFibGUgaXMgZ2VudWluZWx5IGxvY2FsIG9yIGlzIGJlaW5nIGFjY2Vzc2VkIGVsc2V3aGVyZSwgcG9zc2libHkgd2l0aCB1bmludGVuZGVkIGNvbnNlcXVlbmNlcy4gVGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNvdWxkIHZhcnksIHNvIEkmIzM5O2xsIHN0YXkgYXR0ZW50aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9tY3VfcmVndmFsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz04PW10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzLVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcdG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTUtXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMT1tdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjctXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4Olx0cmV0ID0gbXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjktXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTc1PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3NzppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9yZWd2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM4Mz1pbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM4NjppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4Ny1pbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU5NQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGhpcyBEZWJ1Z2ZzIEVudHJ5OiBBIFF1aWNrIEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhpcyBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBkZWJ1Z2ZzLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBJcyB0aGlzIGV2ZW4gKndvcnRoKiB0aGUgZWZmb3J0IG9mIGZ1enppbmc/IERlYnVnZnMsIGJ5IGl0cyBuYXR1cmUsIGlzIHVzdWFsbHkgYWNjZXNzaWJsZSB3aXRoIHJvb3QgcHJpdmlsZWdlcywgYW5kIG15IGV4cGVyaWVuY2Ugd2l0aCBzeXprYWxsZXIgdGVsbHMgbWUgaXQgKmRvZXMqIHRhcmdldCBkZWJ1Z2ZzIGVudHJpZXMuIEJ1dCBJIG5lZWQgdG8gYmUgc3VyZTsganVzdCBiZWNhdXNlIHN5emthbGxlciBmdXp6ZXMgZGVidWdmcyBpbiBnZW5lcmFsIGRvZXNuJiMzOTt0IG1lYW4gKnRoaXMqIHNwZWNpZmljIGZpbGUgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGFuZCBpbnRlcmVzdGluZy4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIGBtdDc5MjVfcmVnX3NldGAgYW5kIGBtdDc5MjVfcmVnX2dldGAgdG8gc2VlIGlmIHRoZXkmIzM5O3JlIGFjdHVhbGx5IHJlbGV2YW50IHRvIGZ1enppbmcuIEdvdHRhIGNoZWNrIHRoZSBjYWxsIHNpdGVzIHRvIGRldGVybWluZSBpZiB0aGVyZSYjMzk7cyBhbnkgcmVhbGlzdGljIGNoYW5jZSBvZiB0cmlnZ2VyaW5nIGludGVyZXN0aW5nIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjVfcmVnX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODptdDc5MjVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMT1tdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc5MjVfcmVnX2dldCwgbXQ3OTI1X3JlZ19zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzctXHRcdFx0IFwmIzM0OzB4JTA4bGx4XFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE5OQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBmb3BzX3JlZ3ZhbGAgVXNhZ2UqKgoKQWxyaWdodCwgc28gdGhlIGNvZGUmIzM5O3MgcG9pbnRlZCBtZSB0b3dhcmRzIGBmb3BzX3JlZ3ZhbGAuIFRpbWUgdG8gZGlnIGluLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIHV0aWxpemF0aW9uIG9mIHRoaXMgc3BlY2lmaWMgdmFyaWFibGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgbWFuaXB1bGF0ZWQuIFRoZSBnb2FsIGhlcmUgaXMgYSBxdWljaywgZGVlcCBkaXZlIGludG8gdGhlIGNvZGUuIExldCYjMzk7cyBzZWUgaG93IGl0JiMzOTtzIGJlaW5nIGVtcGxveWVkIHRocm91Z2hvdXQgdGhlIHByb2plY3QuIFdoZXJlIGFyZSB0aGUgcmVmZXJlbmNlcyB0byB0aGlzIG9uZT8gSXMgaXQgYSBrZXkgdG8gYSBzcGVjaWZpYyBwcm9jZXNzPyBJcyBpdCByZWxhdGVkIHRvIEkvTz8gT3IgYXJlIHdlIHRhbGtpbmcgbWVtb3J5PwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmb3BzX3JlZ3ZhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE9bXQ3OTI1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM3LVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI4OT1pbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjkzOlx0ZGlyID0gbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIFx1MDAyNmZvcHNfcmVndmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NzMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbXQ3OTI1YCBEcml2ZXIgRGVidWdmcyBJbnRlcmZhY2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgYG10NzkyNWAgZHJpdmVyIGV4cG9zZXMgaXRzIGludGVybmFsIHJlZ2lzdGVycy4gVGhlIGNvZGUgdGVsbHMgbWUgaXQmIzM5O3MgZG9uZSB0aHJvdWdoIGBtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wc2AuIEFoLCByaWdodCwgdGhhdCBmdW5jdGlvbiByZWdpc3RlcnMgdGhlIGByZWd2YWxgIGRlYnVnZnMgZmlsZS4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBJIGNhbiBpbnRlcmFjdCB3aXRoIGl0OyBpcyB0aGlzIGRyaXZlciBldmVuIGFjY2Vzc2libGUgaW4gbXkgUUVNVSBzZXR1cD8gTGV0JiMzOTtzIHNlZS4uLiBZZXAsIGxvb2tzIGxpa2UgdGhlIGBtdDc5MjVgIGRyaXZlciAqZG9lcyogaGF2ZSBhIFVTQiBkcml2ZXIgKGB1c2IuY2ApLiBQZXJmZWN0LiBOb3csIG15IG5leHQgbW92ZSBpcyB0byBjaGVjayB0aGUgVVNCIGRyaXZlciBzcGVjaWZpY2FsbHkgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuY2ApIHRvIGNvbmZpcm0gaG93IGl0JiMzOTtzIGJlaW5nIHJlZ2lzdGVyZWQgYXMgYSBVU0IgZHJpdmVyLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGhvdyB0byBob29rIGludG8gdGhlIHN5c3RlbSB0byBzdGFydCB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VzYl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzUzPU1PRFVMRV9GSVJNV0FSRShNVDc5MjVfUk9NX1BBVENIKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM1NTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTI1dV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNTYtXHQubmFtZVx0XHQ9IEtCVUlMRF9NT0ROQU1FLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2Ny19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzY4Om1vZHVsZV91c2JfZHJpdmVyKG10NzkyNXVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM5NgoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDM4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIFVTQiBEcml2ZXIqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBVU0IgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBvZiBmdXp6aW5nIHBvdGVudGlhbCB1c2luZyBlaXRoZXIgYSBVU0IgZ2FkZ2V0IG9yIGEgZHVtbXkgSENEIHNldHVwLiBUaGUgdGFyZ2V0IGlzIHRoZSBgbXQ3OTI1X21jdV9yZWd2YWxgIGZ1bmN0aW9uLCBhbmQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBhY2Nlc3NpYmxlIHZpYSBkZWJ1Z2ZzIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uIFRoYXQgbWFrZXMgaXQgbW9yZSBhY2Nlc3NpYmxlIHRvIG1hbmlwdWxhdGlvbi4gVGhlIHF1ZXN0aW9uIG5vdyBpczogaXMgaXQgd29ydGggdGhlIGVmZm9ydCBvZiBhIGZ1enppbmcgY2FtcGFpZ24/CgpUaGUgcGF0Y2ggaXRzZWxmIHBvaW50cyB0byBhbiBpc3N1ZSB3aGVyZSBgc2l6ZW9mKHJlcSlgIHdhcyB1c2VkIGluIHRoZSBsZW5ndGggY2FsY3VsYXRpb24sIHJhdGhlciB0aGFuIHRoZSBpbnRlbmRlZCBgY21kX2xlbmAuIEFscmlnaHQsIHNvIGByZXFgIGlzIGEgdW5pb24uIFRoYXQgbWVhbnMgYHNpemVvZihyZXEpYCB3aWxsIHJlc29sdmUgdG8gdGhlIHNpemUgb2YgaXRzIGxhcmdlc3QgbWVtYmVyLCB3aGljaCBpcyBwcm9iYWJseSBhIHByb2JsZW0uIEJ1dCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYHJlcWAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uIG9rYXksIGhlcmUgaXQgaXM6CgpgYGBjCglzdHJ1Y3QgewoJCV9fbGUxNiB0YWc7CgkJX19sZTE2IGxlbjsKCQl1bmlvbiB7CgkJCXN0cnVjdCB7CgkJCQlfX2xlMzIgaWR4OwoJCQkJX19sZTMyIGRhdGE7CgkJCX0gcmVnOwoJCQlzdHJ1Y3QgewoJCQkJX19sZTE2IGFudDsKCQkJCV9fbGUxNiByc3Y7CgkJCQlfX2xlMzIgaWR4OwoJCQkJX19sZTMyIGRhdGE7CgkJCX0gcmZfcmVnOwoJCX07Cgl9IF9fcGFja2VkICogcmVzLCByZXE7CmBgYAoKQWgsIHJpZ2h0LiBOb3cgSSBnZXQgaXQuIFRoZSBwYXRjaCAqaXRzZWxmKiBkb2VzbiYjMzk7dCBsb29rIGxpa2UgaXQmIzM5O3MgdGhlIGFjdHVhbCBjb2RlLiBJdCYjMzk7cyBqdXN0IHNob3dpbmcgdGhlIGByZXFgIHN0cnVjdCwgYnV0IGRvZXNuJiMzOTt0IHNob3cgYW55IG1vZGlmaWNhdGlvbnMuIFRoaXMgbWVhbnMgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGxvb2tpbmcgYXQgdGhlIGFjdHVhbCBkZWZpbml0aW9uIG9mIGByZXFgIGluIGBtdDc5MjVfbWN1X3JlZ3ZhbGAuIE5vdyBsZXQgbWUgc2VlIHdoYXQmIzM5O3MgcmVhbGx5IGhhcHBlbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzc6XHRpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuICA3ODpcdHtcbiAgNzk6XHQjZGVmaW5lIE1UX1JGX1JFR19IRFIgICAgICAgICAgIEdFTk1BU0soMzEsIDI0KVxuICA4MDpcdCNkZWZpbmUgTVRfUkZfUkVHX0FOVCAgICAgICAgICAgR0VOTUFTSygyMywgMTYpXG4gIDgxOlx0I2RlZmluZSBSRl9SRUdfUFJFRklYICAgICAgICAgICAweDk5XG4gIDgyOlx0XHRzdHJ1Y3Qge1xuICA4MzpcdFx0XHR1OCBfX3Jzdls0XTtcbiAgODQ6XHRcdFx0dW5pb24ge1xuICA4NTpcdFx0XHRcdHN0cnVjdCB1bmlfY21kX2FjY2Vzc19yZWdfYmFzaWMge1xuICA4NjpcdFx0XHRcdFx0X19sZTE2IHRhZztcbiAgODc6XHRcdFx0XHRcdF9fbGUxNiBsZW47XG4gIDg4Olx0XHRcdFx0XHRfX2xlMzIgaWR4O1xuICA4OTpcdFx0XHRcdFx0X19sZTMyIGRhdGE7XG4gIDkwOlx0XHRcdFx0fSBfX3BhY2tlZCByZWc7XG4gIDkxOlx0XHRcdFx0c3RydWN0IHVuaV9jbWRfYWNjZXNzX3JmX3JlZ19iYXNpYyB7XG4gIDkyOlx0XHRcdFx0XHRfX2xlMTYgdGFnO1xuICA5MzpcdFx0XHRcdFx0X19sZTE2IGxlbjtcbiAgOTQ6XHRcdFx0XHRcdF9fbGUxNiBhbnQ7XG4gIDk1Olx0XHRcdFx0XHR1OCBfX3JzdlsyXTtcbiAgOTY6XHRcdFx0XHRcdF9fbGUzMiBpZHg7XG4gIDk3Olx0XHRcdFx0XHRfX2xlMzIgZGF0YTtcbiAgOTg6XHRcdFx0XHR9IF9fcGFja2VkIHJmX3JlZztcbiAgOTk6XHRcdFx0fTtcbiAxMDA6XHRcdH0gX19wYWNrZWQgKiByZXMsIHJlcTtcbiAxMDE6XHRcdHN0cnVjdCBza19idWZmICpza2I7XG4gMTAyOlx0XHRpbnQgY21kX2xlbjtcbiAxMDM6XHRcdGludCByZXQ7XG4gMTA0Olx0XG4gMTA1Olx0XHRpZiAodTMyX2dldF9iaXRzKHJlZ2lkeCwgTVRfUkZfUkVHX0hEUikgPT0gUkZfUkVHX1BSRUZJWCkge1xuIDEwNjpcdFx0XHRyZXEucmZfcmVnLnRhZyA9IGNwdV90b19sZTE2KFVOSV9DTURfQUNDRVNTX1JGX1JFR19CQVNJQyk7XG4gMTA3Olx0XHRcdHJlcS5yZl9yZWcubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS5yZl9yZWcpKTtcbiAxMDg6XHRcdFx0cmVxLnJmX3JlZy5hbnQgPSBjcHVfdG9fbGUxNih1MzJfZ2V0X2JpdHMocmVnaWR4LCBNVF9SRl9SRUdfQU5UKSk7XG4gMTA5Olx0XHRcdHJlcS5yZl9yZWcuaWR4ID0gY3B1X3RvX2xlMzIocmVnaWR4KTtcbiAxMTA6XHRcdFx0cmVxLnJmX3JlZy5kYXRhID0gc2V0ID8gY3B1X3RvX2xlMzIoKnZhbCkgOiAwO1xuIDExMTpcdFx0XHRjbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgJiM0Mzsgc2l6ZW9mKHJlcS5yZl9yZWcpO1xuIDExMjpcdFx0fSBlbHNlIHtcbiAxMTM6XHRcdFx0cmVxLnJlZy50YWcgPSBjcHVfdG9fbGUxNihVTklfQ01EX0FDQ0VTU19SRUdfQkFTSUMpO1xuIDExNDpcdFx0XHRyZXEucmVnLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEucmVnKSk7XG4gMTE1Olx0XHRcdHJlcS5yZWcuaWR4ID0gY3B1X3RvX2xlMzIocmVnaWR4KTtcbiAxMTY6XHRcdFx0cmVxLnJlZy5kYXRhID0gc2V0ID8gY3B1X3RvX2xlMzIoKnZhbCkgOiAwO1xuIDExNzpcdFx0XHRjbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgJiM0Mzsgc2l6ZW9mKHJlcS5yZWcpO1xuIDExODpcdFx0fVxuIDExOTpcdFxuIDEyMDpcdFx0aWYgKHNldClcbiAxMjE6XHRcdFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRChSRUdfQUNDRVNTKSxcbiAxMjI6XHRcdFx0XHRcdFx0IFx1MDAyNnJlcSwgY21kX2xlbiwgdHJ1ZSk7XG4gMTIzOlx0XG4gMTI0Olx0XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LFxuIDEyNTpcdFx0XHRcdFx0XHRNQ1VfV01fVU5JX0NNRF9RVUVSWShSRUdfQUNDRVNTKSxcbiAxMjY6XHRcdFx0XHRcdFx0XHUwMDI2cmVxLCBjbWRfbGVuLCB0cnVlLCBcdTAwMjZza2IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTcyCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIE1DVSBDb21tYW5kIExlbmd0aCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyB0aGUgbGVuZ3RoIG9mIHRoZSBjb21tYW5kIGJlaW5nIHNlbnQgdG8gdGhlIE1DVS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIHRhbmdpYmxlIGZpeC4gVGhlIG5leHQgbG9naWNhbCBxdWVzdGlvbjogaXMgdGhpcyBldmVuIHRlc3RhYmxlPyBBbmQsIHllcywgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhY2Nlc3NpYmxlIHRocm91Z2ggYGRlYnVnZnNgLCB3aGljaCBpcyBncmVhdCBmb3IgdGFyZ2V0ZWQgdGVzdGluZy4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgZHJpdmVyLCBhbmQgY29uc2lkZXJpbmcgdGhlIE1DVSBjb21tdW5pY2F0aW9uIGNhbiBiZSBlbXVsYXRlZCBvdmVyIFVTQiwgZnV6emluZyBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgYSB2YWx1YWJsZSBhcHByb2FjaCB0byBldmFsdWF0ZSBzdGFiaWxpdHkuIEhvbGQgb24sIHRob3VnaC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgbXQ3OTI1X21jdV9yZWd2YWxgIGlzICpleGNsdXNpdmVseSogcmVhY2hlZCB2aWEgZGVidWdmcy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlIHRvIGJlIGNlcnRhaW4gaXQmIzM5O3Mgbm90IGV4cG9zZWQgZWxzZXdoZXJlIGFuZCBjb3VsZCBiZSBhIG1vcmUgd2lkZS1yZWFjaGluZyBjaGFuZ2UgdGhhbiBpdCBhcHBlYXJzLiBOZWVkIHRvIHZlcmlmeSBpdHMgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9tY3VfcmVndmFsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz04PW10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzLVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcdG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTUtXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMT1tdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjctXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4Olx0cmV0ID0gbXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjktXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTc1PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3NzppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9yZWd2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM4Mz1pbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM4NjppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4Ny1pbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDA0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWJ1Z2ZzLmM6IEEgUXVpY2sgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyB0aGlzIGlzIG9ubHkgdXNlZCBpbiBgZGVidWdmcy5jYC4gSG1tbSwgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGlzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyBJIG1lYW4sIGl0JiMzOTtzIG5vdCBhIHdpZGVseSB1c2VkIGZlYXR1cmUsIGFuZCB0aGUgaW5pdGlhbCBpbnN0aW5jdCBtaWdodCBiZSB0byBmb2N1cyBvbiBtb3JlIGNyaXRpY2FsIGFyZWFzLiBIb3dldmVyLCBJIHJlY2FsbCBzeXprYWxsZXIgdGFyZ2V0aW5nIGRlYnVnZnMsIHdoaWNoIGRlZmluaXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJZiBpdCYjMzk7cyBhbHJlYWR5IGluIHRoZWlyIGZ1enppbmcgdGFyZ2V0cywgdGhlcmUgbXVzdCBiZSBhIHJlYXNvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBtaWdodCBiZSBuZWVkZWQgdG8gZW5hYmxlIHRoaXMgcGFydCBvZiBkZWJ1Z2ZzIHRvIGVuc3VyZSB0aGUgZnV6emVyIGlzIGFjdHVhbGx5IGhpdHRpbmcgaXQuIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AuIFRoYXQgc2hvdWxkIHByb3ZpZGUgc29tZSBjbGFyaXR5IG9uIHRoZSBkZXBlbmRlbmNpZXMuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzkyeF9MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFxuICAgNzpcdGNvbmZpZyBNVDc5MjVFXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4gICA5Olx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAxMDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXG4gIDE0Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAxNTpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIE1UNzkyNVVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMjI6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDI0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxuICAyNzpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMjg6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTE4MQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gTmVlZHMqKgoKT2theSwgc28gSSYjMzk7bSBjb25maWd1cmluZyB0aGlzIHN5c3RlbSwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IHdlIGRlZmluaXRlbHkgbmVlZCB0aGUgYE1UNzkyNVVgIG1vZHVsZS4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBkcml2ZXIgd2UmIzM5O3JlIHVzaW5nLCB3aGljaCBpbiB0dXJuIG1lYW5zIHdlJiMzOTtsbCBhbHNvIG5lZWQgdGhlIGNvbW1vbiBjb21wb25lbnRzIGluY2x1ZGVkIHZpYSBgTVQ3OTI1X0NPTU1PTmAuIFRoYXQgbWFrZXMgc2Vuc2UuIFdlJiMzOTtyZSBhbHNvIGdvaW5nIHRvIGJlIHJlbHlpbmcgb24gYE1BQzgwMjExYCBhbmQgb2J2aW91c2x5IG5lZWQgYFVTQmAgc3VwcG9ydCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLiBIb2xkIG9uLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBJZiBgTVQ3OTI1X0NPTU1PTmAgaXMgdGhlIG9uZSBjb21waWxpbmcgYG1jdS5jYCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGF0JiMzOTtzIHRoZSBjb3JyZWN0IGJlaGF2aW9yLiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYE1ha2VmaWxlYCB0byBiZSBzdXJlLiBJdCYjMzk7cyBiZXN0IHRvIGJlIHByZWNpc2UsIGVzcGVjaWFsbHkgd2hlbiBidWlsZGluZyB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0XG4gICAzOlx0b2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICYjNDM7PSBtdDc5MjUtY29tbW9uLm9cbiAgIDQ6XHRvYmotJChDT05GSUdfTVQ3OTI1RSkgJiM0Mzs9IG10NzkyNWUub1xuICAgNTpcdG9iai0kKENPTkZJR19NVDc5MjVVKSAmIzQzOz0gbXQ3OTI1dS5vXG4gICA2Olx0XG4gICA3Olx0bXQ3OTI1LWNvbW1vbi15IDo9IG1hYy5vIG1jdS5vIHJlZ2QubyBtYWluLm8gaW5pdC5vIGRlYnVnZnMubyBuYW4ub1xuICAgODpcdG10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbiAgIDk6XHRtdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xuICAxMDpcdG10NzkyNXUteSA6PSB1c2Iub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTcxNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIE1UNzkyNSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgZW5hYmxpbmcgYG1jdS5jYCBmb3IgdGhlIE1UNzkyNSwgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3Mgd2l0aGluIGBtdDc5MjUtY29tbW9uLXlgLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhhdCBzdWdnZXN0cyB0aGF0IGBDT05GSUdfTVQ3OTI1VWAgc2hvdWxkIGJlIGVub3VnaCB0byBwdWxsIGl0IGluLiBCdXQgbm93IEkmIzM5O20gcXVlc3Rpb25pbmcgd2hldGhlciBJIGhhdmUgdGhlIGRlYnVnZnMgZW5hYmxlZCBjb3JyZWN0bHkuIEkgcmVjYWxsIHRoYXQgZGVidWdmcyBzdXBwb3J0IGlzIGNvbnRyb2xsZWQgYnkgZGlmZmVyZW50IEtjb25maWcgb3B0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHdpcmVsZXNzIGRyaXZlciBmcmFtZXdvcmsuIElzIGl0IGBDT05GSUdfTUFDODAyMTFfREVCVUdGU2Agb3Igc29tZXRoaW5nIHNwZWNpZmljIHRvIE1UNzYsIGxpa2UgYENPTkZJR19NVDc2X0RFQlVHRlNgPyBUaW1lIHRvIGRyaWxsIGRvd24gaW50byB0aGUgS2NvbmZpZyBmb3IgdGhlIE1lZGlhdGVrIGRyaXZlciBpdHNlbGYsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYC4gSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBvcHRpb24gaGFuZGxlcyB0aGUgZGVidWcgZmlsZXN5c3RlbSB2aXNpYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtERUJVR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM9MTc9bXQ3Nl9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM6MjU6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc2X3JlZ19nZXQsIG10NzZfcmVnX3NldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jLTI2LVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM9NDM9bXQ3Nl9uYXBpX3RocmVhZGVkX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jOjUxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX25hcGlfdGhyZWFkZWQsIG10NzZfbmFwaV90aHJlYWRlZF9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy01Mi1cdFx0XHQgbXQ3Nl9uYXBpX3RocmVhZGVkX3NldCwgXCYjMzQ7JWxsdVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jPTYxPW10NzYwM19lZGNjYV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jLTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jOjY5OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2VkY2NhLCBtdDc2MDNfZWRjY2FfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jLTcwLVx0XHRcdCBtdDc2MDNfZWRjY2Ffc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTg9bXQ3NjE1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI5OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3NjE1X3JlZ19nZXQsIG10NzYxNV9yZWdfc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMwLVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTMzPW10NzYxNV9yYWRhcl9wYXR0ZXJuX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yYWRhcl9wYXR0ZXJuLCBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQ5LVx0XHRcdCBtdDc2MTVfcmFkYXJfcGF0dGVybl9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz01MT1zdGF0aWMgaW50IG10NzYxNV9jb25maWcodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjM6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfY29uZmlnLCBOVUxMLCBtdDc2MTVfY29uZmlnLCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy02NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9ODM9bXQ3NjE1X3Njc19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjkyOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3NjcywgbXQ3NjE1X3Njc19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtOTMtXHRcdFx0IG10NzYxNV9zY3Nfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTM3PW10NzYxNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxNDY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG0sIG10NzYxNV9wbV9nZXQsIG10NzYxNV9wbV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTc5PW10NzYxNV9wbV9pZGxlX3RpbWVvdXRfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTg4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3NjE1X3BtX2lkbGVfdGltZW91dF9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTg5LVx0XHRcdCBtdDc2MTVfcG1faWRsZV90aW1lb3V0X3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTIwOD1tdDc2MTVfZGJkY19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZGJkYywgbXQ3NjE1X2RiZGNfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIxOC1cdFx0XHQgbXQ3NjE1X2RiZGNfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MjM4PW10NzYxNV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNDc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzYxNV9md19kZWJ1Z19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjQ4LVx0XHRcdCBtdDc2MTVfZndfZGVidWdfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MjUxPW10NzYxNV9yZXNldF90ZXN0X3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjcyOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0X3Rlc3QsIE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjczLVx0XHRcdCBtdDc2MTVfcmVzZXRfdGVzdF9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz00Mjc9bXQ3NjE1X3JmX3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MzY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmZfcmVnLCBtdDc2MTVfcmZfcmVnX2dldCwgbXQ3NjE1X3JmX3JlZ19zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDM3LVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2RlYnVnZnMuYz0xMDY9bXQ3Nl9lZGNjYV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2RlYnVnZnMuYy0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfZGVidWdmcy5jOjExNDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19lZGNjYSwgbXQ3Nl9lZGNjYV9nZXQsIG10NzZfZWRjY2Ffc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2RlYnVnZnMuYy0xMTUtXHRcdFx0IFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0zNT1tdDc5MTVfaW1wbGljaXRfdHhiZl9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2ltcGxpY2l0X3R4YmYsIG10NzkxNV9pbXBsaWNpdF90eGJmX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00NS1cdFx0XHQgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjAxPW10NzkxNV9yYWRhcl90cmlnZ2VyKHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMjc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfdHJpZ2dlciwgTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMjgtXHRcdFx0IG10NzkxNV9yYWRhcl90cmlnZ2VyLCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjQyPW10NzkxNV9tdXJ1X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1MTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19tdXJ1X2RlYnVnLCBtdDc5MTVfbXVydV9kZWJ1Z19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjUyLVx0XHRcdCBtdDc5MTVfbXVydV9kZWJ1Z19zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01NDk9bXQ3OTE1X2Z3X2RlYnVnX3dtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU1ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193bSwgbXQ3OTE1X2Z3X2RlYnVnX3dtX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NTktXHRcdFx0IG10NzkxNV9md19kZWJ1Z193bV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01ODM9bXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU5MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193YSwgbXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01OTMtXHRcdFx0IG10NzkxNV9md19kZWJ1Z193YV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02NDI9bXQ3OTE1X2Z3X2RlYnVnX2Jpbl9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NTE6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfYmluLCBtdDc5MTVfZndfZGVidWdfYmluX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NTItXHRcdFx0IG10NzkxNV9md19kZWJ1Z19iaW5fc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MTI3MD1tdDc5MTVfcmZfcmVndmFsX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEyNzg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmZfcmVndmFsLCBtdDc5MTVfcmZfcmVndmFsX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjc5LVx0XHRcdCBtdDc5MTVfcmZfcmVndmFsX3NldCwgXCYjMzQ7MHglMDhsbHhcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0xMzc2PWJvb2wgbXQ3OTE1X2RlYnVnZnNfcnhfbG9nKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEzODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTM4NzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMzg4LS8qKiBwZXItc3RhdGlvbiBkZWJ1Z2ZzICoqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzc2PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkxNV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4MjUtXHRDRkc4MDIxMV9URVNUTU9ERV9EVU1QKG10NzZfdGVzdG1vZGVfZHVtcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxODI2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4MjctXHQuc3RhX2FkZF9kZWJ1Z2ZzID0gbXQ3OTE1X3N0YV9hZGRfZGVidWdmcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaD02Mzc9Ym9vbCBtdDc5MTVfZGVidWdmc19yeF9sb2coc3RydWN0IG10NzkxNV9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo2Mzg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC02Mzktdm9pZCBtdDc5MTVfc3RhX2FkZF9kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xOT1tdDc5MjFfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MzA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc5MjFfcmVnX2dldCwgbXQ3OTIxX3JlZ19zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMzEtXHRcdFx0IFwmIzM0OzB4JTA4bGx4XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9NDg9bXQ3OTIxX2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6NTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzkyMV9md19kZWJ1Z19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNTgtXHRcdFx0IG10NzkyMV9md19kZWJ1Z19zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xNzY9bXQ3OTIxX3BtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE4NTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTIxX3BtX2dldCwgbXQ3OTIxX3BtX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTg2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yMTI9bXQ3OTIxX2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjIxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RzLCBtdDc5MjFfZGVlcF9zbGVlcF9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjIyLVx0XHRcdCBtdDc5MjFfZGVlcF9zbGVlcF9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMjQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG1faWRsZV90aW1lb3V0LCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMjUtXHRcdFx0IG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjI3PXN0YXRpYyBpbnQgbXQ3OTIxX2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI0ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZXNldCwgTlVMTCwgbXQ3OTIxX2NoaXBfcmVzZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI0OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE9bXQ3OTI1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM3LVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTU0PW10NzkyNV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjYzOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnLCBtdDc5MjVfZndfZGVidWdfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTY0LVx0XHRcdCBtdDc5MjVfZndfZGVidWdfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE1PW10NzkyNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG0sIG10NzkyNV9wbV9nZXQsIG10NzkyNV9wbV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjUxPW10NzkyNV9kZWVwX3NsZWVwX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19kcywgbXQ3OTI1X2RlZXBfc2xlZXBfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI2MS1cdFx0XHQgbXQ3OTI1X2RlZXBfc2xlZXBfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjYzOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjY0LVx0XHRcdCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI2Nj1zdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTM3PW10Nzk5Nl9pbXBsaWNpdF90eGJmX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfaW1wbGljaXRfdHhiZiwgbXQ3OTk2X2ltcGxpY2l0X3R4YmZfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ3LVx0XHRcdCBtdDc5OTZfaW1wbGljaXRfdHhiZl9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0yMjM9bXQ3OTk2X3JhZGFyX3RyaWdnZXIodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjI2MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yYWRhcl90cmlnZ2VyLCBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI2My1cdFx0XHQgbXQ3OTk2X3JhZGFyX3RyaWdnZXIsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zNjA9bXQ3OTk2X2Z3X2RlYnVnX3dtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM2OTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193bSwgbXQ3OTk2X2Z3X2RlYnVnX3dtX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zNzAtXHRcdFx0IG10Nzk5Nl9md19kZWJ1Z193bV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zODk9bXQ3OTk2X2Z3X2RlYnVnX3dhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM5ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193YSwgbXQ3OTk2X2Z3X2RlYnVnX3dhX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zOTktXHRcdFx0IG10Nzk5Nl9md19kZWJ1Z193YV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz00NDg9bXQ3OTk2X2Z3X2RlYnVnX2Jpbl9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0NTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfYmluLCBtdDc5OTZfZndfZGVidWdfYmluX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NTgtXHRcdFx0IG10Nzk5Nl9md19kZWJ1Z19iaW5fc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9ODYyPW10Nzk5Nl9yZl9yZWd2YWxfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NzA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmZfcmVndmFsLCBtdDc5OTZfcmZfcmVndmFsX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NzEtXHRcdFx0IG10Nzk5Nl9yZl9yZWd2YWxfc2V0LCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTk1OT1ib29sIG10Nzk5Nl9kZWJ1Z2ZzX3J4X2xvZyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTcwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk3MS0vKiogcGVyLXN0YXRpb24gZGVidWdmcyAqKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjU0NT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5OTZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNTkzLVx0LnR3dF90ZWFyZG93bl9yZXF1ZXN0ID0gbXQ3OTk2X3R3dF90ZWFyZG93bl9yZXF1ZXN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI1OTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjU5NS1cdC5zdGFfYWRkX2RlYnVnZnMgPSBtdDc5OTZfc3RhX2FkZF9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oPTkzND1pbnQgbXQ3OTk2X21jdV9zZXRfZW1sc3JfbW9kZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTkzNy1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2VtbF9wYXJhbXMgKmVtbF9wYXJhbXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg6OTM4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtOTM5LXZvaWQgbXQ3OTk2X3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNTcKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBjb2RlOgoKKipDb25kaXRpb25hbCBDb21waWxhdGlvbiBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgc2VlIGBtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wc2AgYmVpbmcgY2FsbGVkIHdpdGhpbiBgbXQ3OTI1X2luaXRfZGVidWdmc2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCB3aGV0aGVyIGBtdDc5MjVfaW5pdF9kZWJ1Z2ZzYCBpdHNlbGYgaXMgY29tcGlsZWQgY29uZGl0aW9uYWxseS4gV2Uga25vdyBob3cgTWVkaWF0ZWsgYW5kIHRoZWlyIGRyaXZlciBtb2R1bGVzIGNhbiBiZSwgYW5kIGl0JiMzOTtzIGFsd2F5cyB3b3J0aCB2ZXJpZnlpbmcgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGEgY29uZmlndXJhdGlvbiBmbGFnIG9yIGEgcGxhdGZvcm0tc3BlY2lmaWMgY2hlY2sgc3Vycm91bmRpbmcgdGhhdCBmdW5jdGlvbi4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgY291bGQgYmUgY3J1Y2lhbCB0byBzb21lIGRvd25zdHJlYW0gaXNzdWUuIEkmIzM5O2xsIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzIGFuZCBzdXJyb3VuZGluZyBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gVGhpcyBraW5kIG9mIGRldGFpbCBjYW4gc2F2ZSBhIGxvdCBvZiBkZWJ1Z2dpbmcgdGltZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X2luaXRfZGVidWdmcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Mjg3PURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjVfY2hpcF9yZXNldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OTppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jPTE5MD1zdGF0aWMgdm9pZCBtdDc5MjVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIxOTpcdHJldCA9IG10NzkyNV9pbml0X2RlYnVnZnMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzIxPWludCBtdDc5MjVfaW5pdF9tbG9fY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMyMjppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MTYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2YgdGhpcy4KCioqRGVidWdnaW5nIHRoZSBEZXBlbmRlbmN5IFB1enpsZSoqCgpBbHJpZ2h0LCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGEgZGVwZW5kZW5jeSBpc3N1ZSwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gc29tZXRoaW5nIGJlaW5nICphbHdheXMqIGNvbXBpbGVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7T2theSwgaXQmIzM5O3MgYWx3YXlzIGNvbXBpbGVkLiYjMzQ7IFRoYXQgbGVhZHMgbWUgdG8gYSBxdWljayByZWFsaXphdGlvbiB0aGF0IGBkZWJ1Z2ZzLm9gIGlzIGNvbnNpc3RlbnRseSBwcmVzZW50IHdpdGhpbiBgbXQ3OTI1LWNvbW1vbi15YC4gU28sIG15IG5leHQgYXNzdW1wdGlvbiwgdGhlbiwgaXMgdGhhdCBzaW1wbHkgZW5hYmxpbmcgYENPTkZJR19NVDc5MjVVYCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBlbmFibGUgaXQuIEJ1dCB0aGVuIEkgaGl0IGEgc25hZy4gV2hhdCBhYm91dCBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgPyBEb2VzICp0aGF0KiBjb21lIGludG8gcGxheSBzb21laG93PyBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0LiBUaGVyZWZvcmUsIEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBmdW5jdGlvbiBgbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHNgIGhhcyBhIGRlcGVuZGVuY3kgb24gYENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTYCB0byBkZXRlcm1pbmUgaWYgSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZyBpbXBvcnRhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM9MTAzPXN0cnVjdCBkZW50cnkgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM6MTA0Om10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKHN0cnVjdCBtdDc2X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMtMTA1LVx0XHRcdCAgIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKm9wcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy0xMjUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM6MTI2OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzMzPXN0cnVjdCBtdDc2X3BoeSAqbXQ3Nl92aWZfcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMzM2OnN0cnVjdCBkZW50cnkgKm10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKHN0cnVjdCBtdDc2X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMzNy1cdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpvcHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTMzOD1zdGF0aWMgaW5saW5lIHN0cnVjdCBkZW50cnkgKm10NzZfcmVnaXN0ZXJfZGVidWdmcyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMzkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTM0MDpcdHJldHVybiBtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhcdTAwMjZkZXYtXHUwMDNlcGh5LCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzNDEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz01NDg9aW50IG10NzYxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU1MjpcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBcdTAwMjZmb3BzX3JlZ3ZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0xMjgxPWludCBtdDc5MTVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEyODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTI4NzpcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKHBoeS1cdTAwM2VtdDc2LCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjg4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yNjQ9aW50IG10NzkyMV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI2ODpcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBcdTAwMjZmb3BzX3JlZ3ZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yODk9aW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI5MzpcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBcdTAwMjZmb3BzX3JlZ3ZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjk0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz04NzM9aW50IG10Nzk5Nl9pbml0X2RlYnVnZnMoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg3NzpcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTkzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuY2AgZmlsZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIGl0cyBkZXBlbmRlbmN5LCBvciBsYWNrIHRoZXJlb2YsIG9uIHRoZSBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBLbm93aW5nIHRoaXMgaXMgY3JpdGljYWwsIGFzIGl0IGRpcmVjdGx5IGltcGFjdHMgaG93IEkgYXBwcm9hY2ggZGVidWdnaW5nIGFuZCBmZWF0dXJlIGVuYWJsZW1lbnQgcmVsYXRlZCB0byB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVycywgYW5kIGhvdyBJIGNvbnNpZGVyIHJlbGF0ZWQgY29kZSBwYXRocy4gVW5kZXJzdGFuZGluZyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncyBsaWtlIHRoaXMgaXMgY29yZSB0byBlZmZlY3RpdmVseSBuYXZpZ2F0aW5nIGFuZCBtb2RpZnlpbmcga2VybmVsIG1vZHVsZXMsIGVzcGVjaWFsbHkgb25lcyB3aXRoIHNvIG1hbnkgY29uZmlndXJhYmxlIGNvbXBvbmVudHMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtERUJVR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODE3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgb2YgdGhlIHRob3VnaHQgcHJvY2VzcyBkZXNjcmliZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc2IE1ha2VmaWxlKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhlIE1lZGlhdGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVyLiBUaGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgYW55IGtlcm5lbCBtb2R1bGUgYnVpbGQgcHJvY2VzcyBpcyB0aGUgYE1ha2VmaWxlYCwgc28gbGV0JiMzOTtzIGhlYWQgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlYC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgc3RhbmRhcmQgc3RydWN0dXJlIGhlcmU6IG9iamVjdCBmaWxlIGRlZmluaXRpb25zLCBkZXBlbmRlbmN5IHRyYWNraW5nLCBtYXliZSBzb21lIHBsYXRmb3JtLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBhbmQgaG9wZWZ1bGx5IGEgd2VsbC1jb21tZW50ZWQgb3JnYW5pemF0aW9uLiBJJiMzOTtsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgY2x1ZXMgYWJvdXQgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIGZpcm13YXJlIGxvYWRpbmcsIHBvd2VyIG1hbmFnZW1lbnQgaG9va3MsIGFuZCBhbnkgdW51c3VhbCBidWlsZCBmbGFncyBvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgTVQ3NiBjaGlwc2V0IHZhcmlhbnRzLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciB3aGVyZSBJ4oCZbGwgZmluZCB0aGUgcGFpbiBwb2ludHMsIGRlcGVuZGluZy4gTGV04oCZcyBzZWUgd2hhdCB0aGV5JiMzOTt2ZSBjb29rZWQgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdG9iai0kKENPTkZJR19NVDc2X0NPUkUpICYjNDM7PSBtdDc2Lm9cbiAgIDM6XHRvYmotJChDT05GSUdfTVQ3Nl9VU0IpICYjNDM7PSBtdDc2LXVzYi5vXG4gICA0Olx0b2JqLSQoQ09ORklHX01UNzZfU0RJTykgJiM0Mzs9IG10NzYtc2Rpby5vXG4gICA1Olx0b2JqLSQoQ09ORklHX01UNzZ4MDJfTElCKSAmIzQzOz0gbXQ3NngwMi1saWIub1xuICAgNjpcdG9iai0kKENPTkZJR19NVDc2eDAyX1VTQikgJiM0Mzs9IG10NzZ4MDItdXNiLm9cbiAgIDc6XHRvYmotJChDT05GSUdfTVQ3Nl9DT05OQUNfTElCKSAmIzQzOz0gbXQ3Ni1jb25uYWMtbGliLm9cbiAgIDg6XHRvYmotJChDT05GSUdfTVQ3OTJ4X0xJQikgJiM0Mzs9IG10NzkyeC1saWIub1xuICAgOTpcdG9iai0kKENPTkZJR19NVDc5MnhfVVNCKSAmIzQzOz0gbXQ3OTJ4LXVzYi5vXG4gIDEwOlx0XG4gIDExOlx0bXQ3Ni15IDo9IFxcXG4gIDEyOlx0XHRtbWlvLm8gdXRpbC5vIHRyYWNlLm8gZG1hLm8gbWFjODAyMTEubyBkZWJ1Z2ZzLm8gZWVwcm9tLm8gXFxcbiAgMTM6XHRcdHR4Lm8gYWdnLXJ4Lm8gbWN1Lm8gd2VkLm8gc2Nhbi5vIGNoYW5uZWwub1xuICAxNDpcdFxuICAxNTpcdGlmZGVmIENPTkZJR19NVDc2X05QVVxuICAxNjpcdCMgQ09ORklHX01UNzZfTlBVIGlzIHRyaXN0YXRlIHRvIHNpbXBsaWZ5IGRlcGVuZGVuY3kgdHJhY2tpbmcsXG4gIDE3Olx0IyBidXQgaXQgYmVoYXZlcyBhcyBhIGJvb2wgc3ltYm9sIGhlcmUuXG4gIDE4Olx0bXQ3Ni15ICYjNDM7PSBucHUub1xuICAxOTpcdGVuZGlmXG4gIDIwOlx0bXQ3Ni0kKENPTkZJR19QQ0kpICYjNDM7PSBwY2kub1xuICAyMTpcdG10NzYtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbiAgMjI6XHRcbiAgMjM6XHRtdDc2LXVzYi15IDo9IHVzYi5vIHVzYl90cmFjZS5vXG4gIDI0Olx0bXQ3Ni1zZGlvLXkgOj0gc2Rpby5vIHNkaW9fdHhyeC5vXG4gIDI1Olx0XG4gIDI2Olx0Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcbiAgMjc6XHRDRkxBR1NfdXNiX3RyYWNlLm8gOj0gLUkkKHNyYylcbiAgMjg6XHRDRkxBR1NfbXQ3NngwMl90cmFjZS5vIDo9IC1JJChzcmMpXG4gIDI5Olx0Q0ZMQUdTX210NzkyeF90cmFjZS5vIDo9IC1JJChzcmMpXG4gIDMwOlx0XG4gIDMxOlx0bXQ3NngwMi1saWIteSA6PSBtdDc2eDAyX3V0aWwubyBtdDc2eDAyX21hYy5vIG10NzZ4MDJfbWN1Lm8gXFxcbiAgMzI6XHRcdFx0IG10NzZ4MDJfZWVwcm9tLm8gbXQ3NngwMl9waHkubyBtdDc2eDAyX21taW8ubyBcXFxuICAzMzpcdFx0XHQgbXQ3NngwMl90eHJ4Lm8gbXQ3NngwMl90cmFjZS5vIG10NzZ4MDJfZGVidWdmcy5vIFxcXG4gIDM0Olx0XHRcdCBtdDc2eDAyX2Rmcy5vIG10NzZ4MDJfYmVhY29uLm9cbiAgMzU6XHRcbiAgMzY6XHRtdDc2eDAyLXVzYi15IDo9IG10NzZ4MDJfdXNiX21jdS5vIG10NzZ4MDJfdXNiX2NvcmUub1xuICAzNzpcdFxuICAzODpcdG10NzYtY29ubmFjLWxpYi15IDo9IG10NzZfY29ubmFjX21jdS5vIG10NzZfY29ubmFjX21hYy5vIG10NzZfY29ubmFjM19tYWMub1xuICAzOTpcdFxuICA0MDpcdG10NzkyeC1saWIteSA6PSBtdDc5MnhfY29yZS5vIG10NzkyeF9tYWMubyBtdDc5MnhfdHJhY2UubyBcXFxuICA0MTpcdFx0XHRtdDc5MnhfZGVidWdmcy5vIG10NzkyeF9kbWEub1xuICA0MjpcdG10NzkyeC1saWItJChDT05GSUdfQUNQSSkgJiM0Mzs9IG10NzkyeF9hY3BpX3Nhci5vXG4gIDQzOlx0bXQ3OTJ4LXVzYi15IDo9IG10NzkyeF91c2Iub1xuICA0NDpcdFxuICA0NTpcdG9iai0kKENPTkZJR19NVDc2eDBfQ09NTU9OKSAmIzQzOz0gbXQ3NngwL1xuICA0NjpcdG9iai0kKENPTkZJR19NVDc2eDJfQ09NTU9OKSAmIzQzOz0gbXQ3NngyL1xuICA0NzpcdG9iai0kKENPTkZJR19NVDc2MDNFKSAmIzQzOz0gbXQ3NjAzL1xuICA0ODpcdG9iai0kKENPTkZJR19NVDc2MTVfQ09NTU9OKSAmIzQzOz0gbXQ3NjE1L1xuICA0OTpcdG9iai0kKENPTkZJR19NVDc5MTVFKSAmIzQzOz0gbXQ3OTE1L1xuICA1MDpcdG9iai0kKENPTkZJR19NVDc5MjFfQ09NTU9OKSAmIzQzOz0gbXQ3OTIxL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI0NQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyB0aGUgTVQ3NiBEZWJ1Z2ZzIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIGBkZWJ1Z2ZzLm9gIGlzIGNvbnNpc3RlbnRseSBiZWluZyBidWlsdCBpbnRvIHRoZSBgbXQ3NmAgbW9kdWxlIOKAkyB0aGF0JiMzOTtzIGEgZ2l2ZW4sIHBhcnQgb2YgdGhlIHN0YW5kYXJkIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIEkgc2VlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgc28gdGhhdCYjMzk7cyBleHBlY3RlZC4gV2hlcmUgZG9lcyB0aGlzIGZ1bmN0aW9uYWxpdHkgYWN0dWFsbHkgKmxpdmUqPyYjMzQ7IFRoZW4sIGl0IGNsaWNrczogYG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzYCBpcyBzaXR0aW5nIHJpZ2h0IHRoZXJlIGluIGBkZWJ1Z2ZzLmNgLiBOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBhcmlzZXM6IERvZXMgdGhpcyBmdW5jdGlvbiAqYWN0dWFsbHkqIGNyZWF0ZSBhbnkgZGVidWdmcyBmaWxlcyBvciBpcyBpdCBqdXN0IGRlY2xhcmluZyB0aGUgc2V0dXA/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGRvaW5nIHdoYXQgaXRzIG5hbWUgaW1wbGllcywgb3IgZWxzZSBJIGFtIGxvb2tpbmcgYXQgYSBtaXNjb25maWd1cmF0aW9uLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHNlZSB3aGF0IGl0IGRvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMDpcdH1cbiAxMDE6XHRFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3NlcV9wdXRzX2FycmF5KTtcbiAxMDI6XHRcbiAxMDM6XHRzdHJ1Y3QgZGVudHJ5ICpcbiAxMDQ6XHRtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSxcbiAxMDU6XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpvcHMpXG4gMTA2Olx0e1xuIDEwNzpcdFx0Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZm9wcyA9IG9wcyA/IG9wcyA6IFx1MDAyNmZvcHNfcmVndmFsO1xuIDEwODpcdFx0c3RydWN0IG10NzZfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuIDEwOTpcdFx0c3RydWN0IGRlbnRyeSAqZGlyO1xuIDExMDpcdFxuIDExMTpcdFx0ZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKFwmIzM0O210NzZcJiMzNDssIHBoeS1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VkZWJ1Z2ZzZGlyKTtcbiAxMTI6XHRcbiAxMTM6XHRcdGRlYnVnZnNfY3JlYXRlX3U4KFwmIzM0O2xlZF9waW5cJiMzNDssIDA2MDAsIGRpciwgXHUwMDI2cGh5LVx1MDAzZWxlZHMucGluKTtcbiAxMTQ6XHRcdGRlYnVnZnNfY3JlYXRlX3UzMihcJiMzNDtyZWdpZHhcJiMzNDssIDA2MDAsIGRpciwgXHUwMDI2ZGV2LVx1MDAzZWRlYnVnZnNfcmVnKTtcbiAxMTU6XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfdW5zYWZlKFwmIzM0O3JlZ3ZhbFwmIzM0OywgMDYwMCwgZGlyLCBkZXYsIGZvcHMpO1xuIDExNjpcdFx0ZGVidWdmc19jcmVhdGVfZmlsZV91bnNhZmUoXCYjMzQ7bmFwaV90aHJlYWRlZFwmIzM0OywgMDYwMCwgZGlyLCBkZXYsXG4gMTE3Olx0XHRcdFx0XHQgICBcdTAwMjZmb3BzX25hcGlfdGhyZWFkZWQpO1xuIDExODpcdFx0ZGVidWdmc19jcmVhdGVfYmxvYihcJiMzNDtlZXByb21cJiMzNDssIDA0MDAsIGRpciwgXHUwMDI2ZGV2LVx1MDAzZWVlcHJvbSk7XG4gMTE5Olx0XHRpZiAoZGV2LVx1MDAzZW90cC5kYXRhKVxuIDEyMDpcdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9ibG9iKFwmIzM0O290cFwmIzM0OywgMDQwMCwgZGlyLCBcdTAwMjZkZXYtXHUwMDNlb3RwKTtcbiAxMjE6XHRcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlZGV2LCBcJiMzNDtyeC1xdWV1ZXNcJiMzNDssIGRpcixcbiAxMjI6XHRcdFx0XHRcdCAgICBtdDc2X3J4X3F1ZXVlc19yZWFkKTtcbiAxMjM6XHRcbiAxMjQ6XHRcdHJldHVybiBkaXI7XG4gMTI1Olx0fVxuIDEyNjpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUwNjkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBEZWJ1Z2ZzIERpcmVjdG9yeSoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBwaHktJmd0O2h3LSZndDt3aXBoeS0mZ3Q7ZGVidWdmc2RpcmAgaXMgYmVpbmcgdXNlZCBoZXJlLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rLCAmIzM0O0FoLCB0aGF0JiMzOTtzIGEgbWFjODAyMTEgdGhpbmcuJiMzNDsgTWFjODAyMTEgaXMgdGhlIHVzdWFsIGN1bHByaXQgZm9yIGRlYnVnZnMgaW50ZWdyYXRpb24gaW4gdGhlIHdpcmVsZXNzIHN0YWNrLiBUaGUgcXVlc3Rpb24gbm93IGlzOiB3aGVuICpleGFjdGx5KiBkb2VzIG1hYzgwMjExIGNyZWF0ZSB0aGlzIGRpcmVjdG9yeT8gSXMgaXQgY29uZGl0aW9uYWwsIG9yIGlzIGl0IGFsd2F5cyB0aGVyZT8gU3BlY2lmaWNhbGx5LCBkb2VzIGl0IG9ubHkgY3JlYXRlIGBkZWJ1Z2ZzZGlyYCB3aGVuIGBDT05GSUdfTUFDODAyMTFfREVCVUdGU2AgaXMgZW5hYmxlZD8gVGltZSB0byBkaWcgaW50byB0aGUgc291cmNlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGVpdGhlciBgaW5jbHVkZS9uZXQvbWFjODAyMTEuaGAgZm9yIHRoZSBtYWNybyBkZWZpbml0aW9ucyBvciBwb3NzaWJseSBgbmV0L21hYzgwMjExL2RlYnVnZnMuY2AgdG8gc2VlIHRoZSBhY3R1YWwgZGlyZWN0b3J5IGNyZWF0aW9uIGxvZ2ljLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBhbnN3ZXIgd2lsbCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVidWdmc2RpciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L21hYzgwMjExLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbWFjODAyMTEuaD03MzQ1PXN0cnVjdCByYXRlX2NvbnRyb2xfb3BzIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTczNDktXHR2b2lkICgqYWRkX2RlYnVnZnMpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB2b2lkICpwcml2LFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3MzUwOlx0XHRcdCAgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzZGlyKTtcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzM1MS1cdHZvaWQgKCpmcmVlKSh2b2lkICpwcml2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1MzYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgdGhlIExheSBvZiB0aGUgTGFuZDogY2ZnODAyMTEuaCBhbmQgZGVidWdmc2RpcioqCgpSaWdodCwgbGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIGJhc2ljcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIHN0dWZmIGlzIHN0cnVjdHVyZWQgaW4gdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIFdpLUZpIFBIWSBpbnRlcmZhY2UsIGB3aXBoeWAsIGFuZCBob3cgaXRzIGRlYnVnZnMgaW50ZXJmYWNlIGlzIGhhbmRsZWQuIExldCYjMzk7cyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGhvdyB0byBkZWJ1ZyB0aGlzIHByb3Blcmx5LiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYHdpcGh5YCBzdHJ1Y3R1cmUsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBgZGVidWdmc2RpcmAgd2l0aGluIGBpbmNsdWRlL25ldC9jZmc4MDIxMS5oYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSByZWxldmFudCBwb2ludGVycyBvciBtZXRob2RzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBkZWJ1ZyBmaWxlc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgZGVidWcgaW50ZXJmYWNlIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIExldCYjMzk7cyBnbyB0aHJvdWdoIHRoZSBkZXRhaWxzIG9mIGhvdyB0aGUgV2ktRmkgUEhZJiMzOTtzIGRlYnVnIGZpbGVzeXN0ZW0gZGlyZWN0b3J5IGlzIHNldCB1cCBhbmQgdXNlZC4gS25vd2luZyB3aGVyZSB0aGlzIGlzIGRlZmluZWQgd2lsbCBoZWxwIG1lIHF1aWNrbHkgdW5kZXJzdGFuZCBob3cgdG8gZGlhZ25vc2UgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgZGVidWcgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVidWdmc2RpciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2NmZzgwMjExLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02MjA1PXN0cnVjdCB3aXBoeV9pZnR5cGVfYWttX3N1aXRlcyB7XG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02MjE3LSAqXHQtMSAoZGVmYXVsdCkgPSBSVFMvQ1RTIGRpc2FibGVkXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjYyMTg6ICogQHJhZGlvX2RlYnVnZnNkaXI6IFBvaW50ZXIgdG8gZGVidWdmcyBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcmFkaW8tXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTYyMTktICpcdHNwZWNpZmljIHBhcmFtZXRlcnMuXG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02MjIyPXN0cnVjdCB3aXBoeV9yYWRpb19jZmcge1xuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02MjIzLVx0dTMyIHJ0c190aHJlc2hvbGQ7XG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjYyMjQ6XHRzdHJ1Y3QgZGVudHJ5ICpyYWRpb19kZWJ1Z2ZzZGlyO1xuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02MjI1LX07XG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02Mjk3PXN0cnVjdCB3aXBoeV9uYW5fY2FwYSB7XG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02MzU0LSAqXHR1bnJlZ2lzdGVyIGhhcmR3YXJlXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjYzNTU6ICogQGRlYnVnZnNkaXI6IGRlYnVnZnMgZGlyZWN0b3J5IHVzZWQgZm9yIHRoaXMgd2lwaHkgKGllZWU4MDIxMS9cdTAwM2N3aXBoeW5hbWVcdTAwM2UpLlxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02MzU2LSAqXHRJdCB3aWxsIGJlIHJlbmFtZWQgYXV0b21hdGljYWxseSBvbiB3aXBoeSByZW5hbWVzXG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02NTQyPXN0cnVjdCB3aXBoeSB7XG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02NjM3LVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo2NjM4Olx0c3RydWN0IGRlbnRyeSAqZGVidWdmc2RpcjtcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNjYzOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyOTUKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqSW52ZXN0aWdhdGluZyB0aGUgT3JpZ2lucyBvZiBgd2lwaHktJmd0O2RlYnVnZnNkaXJgKioKClJpZ2h0LCBzbyBgd2lwaHktJmd0O2RlYnVnZnNkaXJgLi4uIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGRlYnVnZnMgZGlyZWN0b3J5IHJlbGF0ZWQgdG8gYSB3aXJlbGVzcyBwaHksIGFuZCBJIGtub3cgaXQmIzM5O3MgY3JlYXRlZCBieSBjZmc4MDIxMS4gQnV0ICpob3cqIGlzIGl0IGNyZWF0ZWQ/IElzIGl0IGFuIHVuY29uZGl0aW9uYWwgdGhpbmcsIG9yIGRvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBiZWluZyBlbmFibGVkPyBJIHN1c3BlY3QgdGhlcmUmIzM5O3MgYSBjb25kaXRpb25hbCBhc3BlY3QgdG8gaXQuIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0ICp3aGVuKiB0aGF0IGRpcmVjdG9yeSBnZXRzIGNyZWF0ZWQuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGl0JiMzOTtzIHRpZWQgdG8gZWl0aGVyIGBDT05GSUdfQ0ZHODAyMTFfREVCVUdGU2Agb3IgYENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTYCBiZWluZyBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnLiBUaGF0JiMzOTtzIHRoZSBtb3N0IGxpa2VseSBzY2VuYXJpbywgaXNuJiMzOTt0IGl0PyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgY29uZmlncyBkcml2ZSB0aGUgaW5zdGFudGlhdGlvbiBvZiB0aGF0IHBhcnRpY3VsYXIgZGVidWdmcyBkaXJlY3RvcnkuIEtub3dpbmcgdGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB3aGVuIGFuZCB3aHkgdGhlIGRpcmVjdG9yeSBhcHBlYXJzLCB3aGljaCB3aWxsIGJlIGVzc2VudGlhbCB3aGVuIEkgZ28gdG8gdHJvdWJsZXNob290IGFueSBmdXR1cmUgaXNzdWVzIHJlbGF0ZWQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlYnVnZnNkaXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9jb3JlLmM9MTI5PWludCBjZmc4MDIxMV9kZXZfcmVuYW1lKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE0OC1cbm5ldC93aXJlbGVzcy9jb3JlLmM6MTQ5Olx0ZGVidWdmc19jaGFuZ2VfbmFtZShyZGV2LVx1MDAzZXdpcGh5LmRlYnVnZnNkaXIsIFwmIzM0OyVzXCYjMzQ7LCBuZXduYW1lKTtcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTUwLVxuLS1cbm5ldC93aXJlbGVzcy9jb3JlLmM9ODUzPWludCB3aXBoeV9yZWdpc3RlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxuLS1cbm5ldC93aXJlbGVzcy9jb3JlLmMtMTE2OS1cdC8qIGFkZCB0byBkZWJ1Z2ZzICovXG5uZXQvd2lyZWxlc3MvY29yZS5jOjExNzA6XHRyZGV2LVx1MDAzZXdpcGh5LmRlYnVnZnNkaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIod2lwaHlfbmFtZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5KSxcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTE3MS1cdFx0XHRcdFx0XHQgICAgaWVlZTgwMjExX2RlYnVnZnNfZGlyKTtcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jLTExNzgtXHRcdFx0XHQgIGlkeCk7XG5uZXQvd2lyZWxlc3MvY29yZS5jOjExNzk6XHRcdFx0d2lwaHktXHUwMDNlcmFkaW9fY2ZnW2lkeF0ucmFkaW9fZGVidWdmc2RpciA9XG5uZXQvd2lyZWxlc3MvY29yZS5jLTExODAtXHRcdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kaXIocmFkaW9fbmFtZSxcbm5ldC93aXJlbGVzcy9jb3JlLmM6MTE4MTpcdFx0XHRcdFx0XHQgICByZGV2LVx1MDAzZXdpcGh5LmRlYnVnZnNkaXIpO1xubmV0L3dpcmVsZXNzL2NvcmUuYy0xMTgyLVx0XHR9XG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYz0xMjkwPXZvaWQgd2lwaHlfdW5yZWdpc3RlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxuLS1cbm5ldC93aXJlbGVzcy9jb3JlLmMtMTMxNC1cdCAqL1xubmV0L3dpcmVsZXNzL2NvcmUuYzoxMzE1Olx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKHJkZXYtXHUwMDNld2lwaHkuZGVidWdmc2Rpcik7XG5uZXQvd2lyZWxlc3MvY29yZS5jLTEzMTYtXHRsaXN0X2RlbF9yY3UoXHUwMDI2cmRldi1cdTAwM2VsaXN0KTtcbi0tXG5uZXQvd2lyZWxlc3MvZGVidWdmcy5jPTEyOT12b2lkIGNmZzgwMjExX2RlYnVnZnNfcmRldl9hZGQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2KVxubmV0L3dpcmVsZXNzL2RlYnVnZnMuYy0xMzAte1xubmV0L3dpcmVsZXNzL2RlYnVnZnMuYzoxMzE6XHRzdHJ1Y3QgZGVudHJ5ICpwaHlkID0gcmRldi1cdTAwM2V3aXBoeS5kZWJ1Z2ZzZGlyO1xubmV0L3dpcmVsZXNzL2RlYnVnZnMuYy0xMzItXHRzdHJ1Y3QgZGVudHJ5ICpyYWRpb2Q7XG4tLVxubmV0L3dpcmVsZXNzL2RlYnVnZnMuYy0xNDEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyByZGV2LVx1MDAzZXdpcGh5Lm5fcmFkaW87IGkmIzQzOyYjNDM7KSB7XG5uZXQvd2lyZWxlc3MvZGVidWdmcy5jOjE0MjpcdFx0cmFkaW9kID0gcmRldi1cdTAwM2V3aXBoeS5yYWRpb19jZmdbaV0ucmFkaW9fZGVidWdmc2Rpcjtcbm5ldC93aXJlbGVzcy9kZWJ1Z2ZzLmMtMTQzLVx0XHRERUJVR0ZTX1JBRElPX0FERChyYWRpb19ydHNfdGhyZXNob2xkLCBpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyODYKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRGVidWdmcyBEaWxlbW1hKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHdpcGh5YCByZWdpc3RyYXRpb24uIEl0IHNlZW1zIHRoYXQgYHdpcGh5LSZndDtkZWJ1Z2ZzZGlyYCBnZXRzIGNyZWF0ZWQgcmlnaHQgYXdheSBpbiBgd2lwaHlfcmVnaXN0ZXJgLCBhcyBsb25nIGFzIGBkZWJ1Z2ZzX2NyZWF0ZV9kaXJgIGlzIGRlZmluZWQsIHdoaWNoIG9mIGNvdXJzZSBkZXBlbmRzIG9uIGBDT05GSUdfREVCVUdfRlNgLiBTbywgY2xlYXJseSBgQ09ORklHX0RFQlVHX0ZTYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgaGVyZSwgd2hpY2ggaXNuJiMzOTt0IGlkZWFsIGZvciByZXNvdXJjZS1jb25zdHJhaW5lZCBzeXN0ZW1zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgYWNjaWRlbnRhbGx5IGdldCBlbmFibGVkIHdoZW4gaXQgc2hvdWxkbiYjMzk7dC4gV2FpdCBhIHNlY29uZCwgdGhlIGBkZWJ1Z2ZzLmNgIGZpbGUgd2l0aGluIHRoZSBgbXQ3NmAgZHJpdmVyIHNlZW1zIHRvIGJlIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSwgd2hpY2ggaXMgY29uY2VybmluZy4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbiBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0LyogQ29weXJpZ2h0IChDKSAyMDIzIE1lZGlhVGVrIEluYy4gKi9cbiAgIDM6XHRcbiAgIDQ6XHQjaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuICAgNTpcdCNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG4gICA2Olx0XG4gICA3Olx0c3RhdGljIGludFxuICAgODpcdG10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4gICA5Olx0e1xuICAxMDpcdFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XG4gIDExOlx0XHR1MzIgcmVndmFsID0gdmFsO1xuICAxMjpcdFxuICAxMzpcdFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbiAgMTQ6XHRcdG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XG4gIDE1Olx0XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuICAxNjpcdFxuICAxNzpcdFx0cmV0dXJuIDA7XG4gIDE4Olx0fVxuICAxOTpcdFxuICAyMDpcdHN0YXRpYyBpbnRcbiAgMjE6XHRtdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbiAgMjI6XHR7XG4gIDIzOlx0XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbiAgMjQ6XHRcdHUzMiByZWd2YWw7XG4gIDI1Olx0XHRpbnQgcmV0O1xuICAyNjpcdFxuICAyNzpcdFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbiAgMjg6XHRcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgZmFsc2UpO1xuICAyOTpcdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbiAgMzA6XHRcdGlmICghcmV0KVxuICAzMTpcdFx0XHQqdmFsID0gcmVndmFsO1xuICAzMjpcdFxuICAzMzpcdFx0cmV0dXJuIDA7XG4gIDM0Olx0fVxuICAzNTpcdFxuICAzNjpcdERFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxuICAzNzpcdFx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4gIDM4Olx0c3RhdGljIGludFxuICAzOTpcdG10NzkyNV9md19kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbiAgNDA6XHR7XG4gIDQxOlx0XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbiAgNDI6XHRcbiAgNDM6XHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG4gIDQ0Olx0XG4gIDQ1Olx0XHRkZXYtXHUwMDNlZndfZGVidWcgPSAodTgpdmFsO1xuICA0NjpcdFx0bXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVx1MDAzZWZ3X2RlYnVnKTtcbiAgNDc6XHRcbiAgNDg6XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4gIDQ5Olx0XG4gIDUwOlx0XHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzNDIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTVQ3OTI1IE1DVSBSZWdpc3RlciBWYWx1ZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG10NzkyNV9tY3VfcmVndmFsYCBmdW5jdGlvbi4gSXQmIzM5O3Mgb25seSBleHBvc2VkIHRocm91Z2ggdGhlIGRlYnVnZnMgYHJlZ3ZhbGAgaW50ZXJmYWNlLCByaWdodD8gVGhlIHF1ZXN0aW9uIGlzLCBpcyBpdCB3b3J0aCB0aGUgZWZmb3J0IHRvIGZ1enogaXQ/IFdlbGwsIGdpdmVuIHRoYXQgc3l6a2FsbGVyICpkb2VzKiB0YXJnZXQgZGVidWdmcyBmaWxlcywgSSYjMzk7ZCBzYXkgdGhlIGFuc3dlciBpcyBsaWtlbHkgeWVzLgoKVGhlIHBhdGNoIEkmIzM5O20gZXhhbWluaW5nIGFkZHJlc3NlcyBhIGJ1ZywgYSBtaXNjYWxjdWxhdGlvbiBvZiBgY21kX2xlbmAgaW4gZmFjdCwgYW5kIHRoaXMgc2VlbXMgdG8gb3BlbiB0aGUgZG9vciB0byBvdXQtb2YtYm91bmRzIHJlYWQvd3JpdGUgaXNzdWVzIG9yIGV2ZW4gdGhlIGRyZWFkZWQgTUNVIGZpcm13YXJlIGNyYXNoLiBDbGFzc2ljLiBOb3csIHRoZSBjb25maWdzIG5lZWRlZCB0byB0cmlnZ2VyIHRoaXMgc2VlbSB0byBiZSBgTVQ3OTI1VWAsIGBNQUM4MDIxMWAsIGBVU0JgLCBhbmQgb2YgY291cnNlIGBERUJVR19GU2AuCgpIYW5nIG9uIGEgc2Vjb25kLiBgTUFDODAyMTFgIGFuZCBgVVNCYCBhcmUgYmFzaWNhbGx5IGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyNVVgLCB0aGV5IGhhdmUgdG8gYmUgZW5hYmxlZCBmb3IgdGhhdCB0byB3b3JrLiBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgdGhvc2UgYE1UNzkyNVVgIGRlcGVuZGVuY2llcyBhZ2FpbiwganVzdCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkyNV9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3OTJ4X0xJQlxuICAgNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA2Olx0XG4gICA3Olx0Y29uZmlnIE1UNzkyNUVcbiAgIDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcbiAgMTQ6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDE1Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVQ3OTI1VVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRzZWxlY3QgTVQ3OTJ4X1VTQlxuICAyMjpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMjM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMjQ6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXG4gIDI3Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAyODpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjY5CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3OTI1VSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBgTVQ3OTI1VWAgY29uZmlnIGlzIHRoZSBwcmltYXJ5IGZvY3VzIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgcHJvcGVybHkuIE15IG5leHQgdGhvdWdodCByZXZvbHZlcyBhcm91bmQgYERFQlVHX0ZTYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgYWN0dWFsbHkgcmVxdWlyZWQgaW4gdGhpcyBzZXR1cC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlLiBBaCwgeWVzLCBpdCBhcHBlYXJzIHRoYXQgYGRlYnVnZnNgIGlzIGVzc2VudGlhbDsgaXQmIzM5O3MgdGhlIG1lY2hhbmlzbSB0aGF0IGV4cG9zZXMgYHJlZ3ZhbGAuIEV4Y2VsbGVudC4gSG93ZXZlciwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgd2hlcmUgZWxzZSBgbXQ3OTI1X21jdV9yZWd2YWxgIGlzIGVtcGxveWVkLiBJdCBtaWdodCBhZmZlY3Qgb3RoZXIgY29kZSBwYXRocyB0aGF0IGFyZSBub3QgcmVsYXRlZCB0byBgREVCVUdfRlNgLiBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9gIGRpcmVjdG9yeSBhbmQgc2VlIHdoYXQgcG9wcyB1cCwgZW5zdXJpbmcgSSYjMzk7bSBjb25zaWRlcmluZyB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9tY3VfcmVndmFsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz04PW10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzLVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcdG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTUtXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMT1tdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjctXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4Olx0cmV0ID0gbXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjktXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTc1PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3NzppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9yZWd2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM4Mz1pbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM4NjppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4Ny1pbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTI5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIHRoZSBEZWJ1Z0ZTIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoaXMgYGRlYnVnZnMuY2AgZmlsZS4gUmlnaHQsIEkgc2VlIGl0JiMzOTtzIG9ubHkgYmVpbmcgdXNlZCB0aGVyZS4gVGhhdCBzdWdnZXN0cyBgREVCVUdfRlNgIGlzIGEgcmVxdWlyZW1lbnQuIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSBzdXJlLiBIb2xkIG9uLCB3YXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBgTUFDODAyMTFfREVCVUdGU2A/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyLCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jYCwgaXNuJiMzOTt0IGFsc28gYWZmZWN0ZWQgYnkgdGhpcyBmbGFnLiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRocm91Z2ggaXQgYWdhaW4gYW5kIGNvbmZpcm0gdGhhdCBgREVCVUdfRlNgIGlzIHRoZSBvbmx5IHByZS1yZXF1aXNpdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDODAyMTFfREVCVUdGUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODExCgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDU0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFRhcmdldCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGxldmVyYWdpbmcgYE1BQzgwMjExX0RFQlVHRlNgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gQnV0IHdhaXQsIGB3aXBoeV9yZWdpc3RlcmAgZG9lcyBjcmVhdGUgYGRlYnVnZnNkaXJgIHVuY29uZGl0aW9uYWxseSBpZiBgREVCVUdfRlNgIGlzIGVuYWJsZWQsIHNvIHRoYXQmIzM5O3MgYWN0dWFsbHkgdGhlIGtleS4gVGhlIGBERUJVR19GU2AgY29uZmlndXJhdGlvbiBzZWVtcyB0byBiZSBzdWZmaWNpZW50LgoKTGV0IG1lIHplcm8gaW4gb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBgbXQ3OTI1X21jdV9yZWd2YWxgLCBhbmQgc2VlIGlmIGl0JiMzOTtzIHRoZSBvbmx5IHJlbGV2YW50IHBhcnQuIFllcCwgaXQgaXMuIFRoZSBjaGFuZ2UgaXMgaXNvbGF0ZWQgdGhlcmUuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIHRoaXMgd29ydGggZnV6emluZz8gQWJzb2x1dGVseS4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciwgYW5kIHRoYXQgZHJpdmVyICh0aGUgbXQ3OTI1IFVTQiBXaS1GaSBkcml2ZXIpIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCLCBhbmQgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggZGVidWdmcy4gVGhhdCBpcyBmdXp6YWJsZS4KCkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb25zLiBUaGUgaW1tZWRpYXRlIG9uZXMgc2VlbSB0byBiZSBgTVQ3OTI1VWAsIGBNQUM4MDIxMWAsIGBVU0JgLCBhbmQgYERFQlVHX0ZTYC4gSG9sZCBvbiwgYE1BQzgwMjExYCBhbmQgYFVTQmAgYXJlIGRlcGVuZGVuY2llcyBvZiBgTVQ3OTI1VWAuIFNvLCBJJiMzOTtsbCBsaXN0IGBNVDc5MjVVYCwgYE1BQzgwMjExYCwgYFVTQmAsIGBERUJVR19GU2AuCgpIYW5nIG9uLCBgTUFDODAyMTFgIGhhcyBhIGRlcGVuZGVuY3kgb24gYENGRzgwMjExYC4gQnV0IHRoYXQmIzM5O3Mgbm90IGEgZGlyZWN0IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jeSB0byBsaXN0LCBzbyBJIGNhbiBzdGljayB3aXRoIG15IGxpc3Qgb2YgYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBERUJVR19GU2AuCgpKdXN0IHRvIGNvbmZpcm0sIGBNVDc5MjVVYCBpcyB0aGUgY29ycmVjdCBjb25maWcsIGFuZCBJIHNlZSBpdCYjMzk7cyBmb3IgdGhlIFVTQiBkcml2ZXIuIE9rYXksIGFsbCBnb29kIHRoZXJlLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbXQ3OTI1X21jdV9yZWd2YWxgIGlzbiYjMzk7dCBzdGF0aWMgYW5kIGlzIGV4cG9ydGVkLCBzbyBpdCYjMzk7cyBhY2Nlc3NpYmxlLiBZZXAsIGl0IGlzIGV4cG9ydGVkIHZpYSBgRVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9yZWd2YWwpYC4KClNvLCBoZXJlJiMzOTtzIHRoZSBmaW5hbCBicmVha2Rvd246CgoqICAgKipXb3J0aEZ1enppbmc6IHRydWUqKgoqICAgKipGb2N1c1N5bWJvbHM6IFxbJiMzNDttdDc5MjVcX21jdVxfcmVndmFsJiMzNDtcXSoqCiogICAqKkVuYWJsZUNvbmZpZ3M6IFxbJiMzNDtNVDc5MjVVJiMzNDssICYjMzQ7TUFDODAyMTEmIzM0OywgJiMzNDtVU0ImIzM0OywgJiMzNDtERUJVR1xfRlMmIzM0O1xdKioKKiAgICoqUmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGNvbW1hbmQgbGVuZ3RoIGNhbGN1bGF0aW9uIGluIG10NzkyNVxfbWN1XF9yZWd2YWwsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgZGVidWdmcyBpbiB0aGUgbXQ3OTI1IFVTQiBXaS1GaSBkcml2ZXIuIFRoaXMgZHJpdmVyIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCIGdhZGdldC9kdW1teSBIQ0QsIG1ha2luZyBpdCBmdXp6YWJsZS4mIzM0OyoqCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9tY3VfcmVndmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgY29tbWFuZCBsZW5ndGggY2FsY3VsYXRpb24gaW4gbXQ3OTI1X21jdV9yZWd2YWwsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgZGVidWdmcyBpbiB0aGUgbXQ3OTI1IFVTQiBXaS1GaSBkcml2ZXIuIFRoaXMgZHJpdmVyIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCIGdhZGdldC9kdW1teSBIQ0QsIG1ha2luZyBpdCBmdXp6YWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfbWN1X3JlZ3ZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGNvbW1hbmQgbGVuZ3RoIGNhbGN1bGF0aW9uIGluIG10NzkyNV9tY3VfcmVndmFsLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIGRlYnVnZnMgaW4gdGhlIG10NzkyNSBVU0IgV2ktRmkgZHJpdmVyLiBUaGlzIGRyaXZlciBjYW4gYmUgZW11bGF0ZWQgdmlhIFVTQiBnYWRnZXQvZHVtbXkgSENELCBtYWtpbmcgaXQgZnV6emFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyNzozMi4yNzA1Mzc4OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjcxMjM4MzM2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJERUJVR19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNV9tY3VfcmVndmFsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBjb21tYW5kIGxlbmd0aCBjYWxjdWxhdGlvbiBpbiBtdDc5MjVfbWN1X3JlZ3ZhbCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBkZWJ1Z2ZzIGluIHRoZSBtdDc5MjUgVVNCIFdpLUZpIGRyaXZlci4gVGhpcyBkcml2ZXIgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15IEhDRCwgbWFraW5nIGl0IGZ1enphYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyNzozMi4yNzA1NDUwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg4NDUzMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2EwNWJjZWQ4ZmNiYTIxYjM1YmQ5NTA4MDI2NWFkMjM4YzYyNjhiMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyA1IDAyOjI3OjMxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG5pbmRleCBmYTI5YzQ4NmE0NTUzLi44MjhmMGI0YTdiZTZiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG5AQCAtOTksNiArOTksNyBAQCBpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxcbiBcXHRcXHR9O1xcbiBcXHR9IF9fcGFja2VkICogcmVzLCByZXE7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcdGludCBjbWRfbGVuO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKHUzMl9nZXRfYml0cyhyZWdpZHgsIE1UX1JGX1JFR19IRFIpID09IFJGX1JFR19QUkVGSVgpIHtcXG5AQCAtMTA3LDIwICsxMDgsMjIgQEAgaW50IG10NzkyNV9tY3VfcmVndmFsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldClcXG4gXFx0XFx0cmVxLnJmX3JlZy5hbnQgPSBjcHVfdG9fbGUxNih1MzJfZ2V0X2JpdHMocmVnaWR4LCBNVF9SRl9SRUdfQU5UKSk7XFxuIFxcdFxcdHJlcS5yZl9yZWcuaWR4ID0gY3B1X3RvX2xlMzIocmVnaWR4KTtcXG4gXFx0XFx0cmVxLnJmX3JlZy5kYXRhID0gc2V0ID8gY3B1X3RvX2xlMzIoKnZhbCkgOiAwO1xcbitcXHRcXHRjbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgKyBzaXplb2YocmVxLnJmX3JlZyk7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdHJlcS5yZWcudGFnID0gY3B1X3RvX2xlMTYoVU5JX0NNRF9BQ0NFU1NfUkVHX0JBU0lDKTtcXG4gXFx0XFx0cmVxLnJlZy5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLnJlZykpO1xcbiBcXHRcXHRyZXEucmVnLmlkeCA9IGNwdV90b19sZTMyKHJlZ2lkeCk7XFxuIFxcdFxcdHJlcS5yZWcuZGF0YSA9IHNldCA/IGNwdV90b19sZTMyKCp2YWwpIDogMDtcXG4rXFx0XFx0Y21kX2xlbiA9IHNpemVvZihyZXEuX19yc3YpICsgc2l6ZW9mKHJlcS5yZWcpO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoc2V0KVxcbiBcXHRcXHRyZXR1cm4gbXQ3Nl9tY3Vfc2VuZF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1dNX1VOSV9DTUQoUkVHX0FDQ0VTUyksXFxuLVxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSk7XFxuK1xcdFxcdFxcdFxcdFxcdCBcXHUwMDI2cmVxLCBjbWRfbGVuLCB0cnVlKTtcXG4gXFxuIFxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NixcXG4gXFx0XFx0XFx0XFx0XFx0TUNVX1dNX1VOSV9DTURfUVVFUlkoUkVHX0FDQ0VTUyksXFxuLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4rXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJlcSwgY21kX2xlbiwgdHJ1ZSwgXFx1MDAyNnNrYik7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyNzozMi42NTk2ODg0ODdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDIzMjMyMjQyNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbWN1X3JlZ3ZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgY29tbWFuZCBsZW5ndGggY2FsY3VsYXRpb24gaW4gbXQ3OTI1X21jdV9yZWd2YWwsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgZGVidWdmcyBpbiB0aGUgbXQ3OTI1IFVTQiBXaS1GaSBkcml2ZXIuIFRoaXMgZHJpdmVyIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCIGdhZGdldC9kdW1teSBIQ0QsIG1ha2luZyBpdCBmdXp6YWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgY2EwNWJjZWQ4ZmNiYTIxYjM1YmQ5NTA4MDI2NWFkMjM4YzYyNjhiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMDI6Mjc6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBmYTI5YzQ4NmE0NTUzLi44MjhmMGI0YTdiZTZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5AQCAtOTksNiArOTksNyBAQCBpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuIFx0XHR9O1xuIFx0fSBfX3BhY2tlZCAqIHJlcywgcmVxO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdGludCBjbWRfbGVuO1xuIFx0aW50IHJldDtcbiBcbiBcdGlmICh1MzJfZ2V0X2JpdHMocmVnaWR4LCBNVF9SRl9SRUdfSERSKSA9PSBSRl9SRUdfUFJFRklYKSB7XG5AQCAtMTA3LDIwICsxMDgsMjIgQEAgaW50IG10NzkyNV9tY3VfcmVndmFsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldClcbiBcdFx0cmVxLnJmX3JlZy5hbnQgPSBjcHVfdG9fbGUxNih1MzJfZ2V0X2JpdHMocmVnaWR4LCBNVF9SRl9SRUdfQU5UKSk7XG4gXHRcdHJlcS5yZl9yZWcuaWR4ID0gY3B1X3RvX2xlMzIocmVnaWR4KTtcbiBcdFx0cmVxLnJmX3JlZy5kYXRhID0gc2V0ID8gY3B1X3RvX2xlMzIoKnZhbCkgOiAwO1xuK1x0XHRjbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgKyBzaXplb2YocmVxLnJmX3JlZyk7XG4gXHR9IGVsc2Uge1xuIFx0XHRyZXEucmVnLnRhZyA9IGNwdV90b19sZTE2KFVOSV9DTURfQUNDRVNTX1JFR19CQVNJQyk7XG4gXHRcdHJlcS5yZWcubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS5yZWcpKTtcbiBcdFx0cmVxLnJlZy5pZHggPSBjcHVfdG9fbGUzMihyZWdpZHgpO1xuIFx0XHRyZXEucmVnLmRhdGEgPSBzZXQgPyBjcHVfdG9fbGUzMigqdmFsKSA6IDA7XG4rXHRcdGNtZF9sZW4gPSBzaXplb2YocmVxLl9fcnN2KSArIHNpemVvZihyZXEucmVnKTtcbiBcdH1cbiBcbiBcdGlmIChzZXQpXG4gXHRcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1dNX1VOSV9DTUQoUkVHX0FDQ0VTUyksXG4tXHRcdFx0XHRcdCBcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlKTtcbitcdFx0XHRcdFx0IFx1MDAyNnJlcSwgY21kX2xlbiwgdHJ1ZSk7XG4gXG4gXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LFxuIFx0XHRcdFx0XHRNQ1VfV01fVU5JX0NNRF9RVUVSWShSRUdfQUNDRVNTKSxcbi1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbitcdFx0XHRcdFx0XHUwMDI2cmVxLCBjbWRfbGVuLCB0cnVlLCBcdTAwMjZza2IpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI3OjMyLjY1OTY4OTU0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDQ2NjMxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jYC4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlIGluIGBtdDc5MjVfbWN1X3JlZ3ZhbGAgdG8gY2FsY3VsYXRlIGBjbWRfbGVuYCBpbnN0ZWFkIG9mIHNpbXBseSB1c2luZyBgc2l6ZW9mKHJlcSlgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgcG90ZW50aWFsIGJ1ZyBmaXggb3Igb3B0aW1pemF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLCBlc3BlY2lhbGx5IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgc2luY2UgSSBrbm93IHRob3NlIGNhbiBzb21ldGltZXMgZXhwb3NlIHN1YnRsZSBpc3N1ZXMgd2l0aCBkcml2ZXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUuXG5cbmBtdDc5MjVgLi4uIHRoYXQncyB0aGUgTWVkaWFUZWsgV2ktRmkgNyBkcml2ZXIsIHJpZ2h0PyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgaXQncyBhIFBDSWUgb3IgVVNCIGRyaXZlciBiZWNhdXNlIHRoYXQgY29udGV4dCB3aWxsIGJlIGltcG9ydGFudC4gTGV0IG1lIHRha2UgYSBxdWljayBwZWVrIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvYCBkaXJlY3RvcnkgYW5kIHNlZSBpZiB0aGUgdW5kZXJseWluZyBjb21tdW5pY2F0aW9uIHNjaGVtZSBpcyBvYnZpb3VzIGZyb20gdGhlIGZpbGVzIHdpdGhpbi4gR290dGEgYXNzZXNzIHRoZSBhY2Nlc3MgbWV0aG9kIGZvciBhbnkgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTU5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjc6MzYuMzY0MzU1ODM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImluaXQuY1wiLFxuICAgIFwibWFjLmNcIixcbiAgICBcIm1hYy5oXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1jdS5jXCIsXG4gICAgXCJtY3UuaFwiLFxuICAgIFwibXQ3OTI1LmhcIixcbiAgICBcIm5hbi5jXCIsXG4gICAgXCJuYW4uaFwiLFxuICAgIFwicGNpLmNcIixcbiAgICBcInBjaV9tYWMuY1wiLFxuICAgIFwicGNpX21jdS5jXCIsXG4gICAgXCJyZWdkLmNcIixcbiAgICBcInJlZ2QuaFwiLFxuICAgIFwicmVncy5oXCIsXG4gICAgXCJ0ZXN0bW9kZS5jXCIsXG4gICAgXCJ1c2IuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyNzozNi4zNjQ0MjkxMTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk4ODA4NTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCBxdWljayBtZW50YWwgc2NhbiwgYXMgYSBzZWFzb25lZCBkZXZlbG9wZXI6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEZXZpY2UgQXJjaGl0ZWN0dXJlIFx1MDAyNiBQb3RlbnRpYWwgRW11bGF0aW9uIFBhdGhzKipcblxuQWxyaWdodCwgdGhlIHByZXNlbmNlIG9mIGB1c2IuY2AgYW5kIGBwY2kuY2AgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBzeXN0ZW0gaXMgZGVzaWduZWQgdG8gaW50ZXJmYWNlIHdpdGggZWl0aGVyIFVTQiBvciBQQ0kgYnVzZXMuIFRoYXQgb3BlbnMgdXAgYSBmZXcgaW50ZXJlc3RpbmcgYXZlbnVlcyBmb3IgZW11bGF0aW9uIG9yIHRlc3RpbmcuIEknbSB0aGlua2luZywgcG90ZW50aWFsbHksIGEgVVNCIGdhZGdldCBzZXR1cCBvciBldmVuIHRoZSBvbGQgZHVtbXkgSENEIGFwcHJvYWNoIGNvdWxkIGRvIHRoZSB0cmljayBpZiBJIHdhbnQgdG8gc2ltdWxhdGUgVVNCIGRldmljZSBiZWhhdmlvci4gT2YgY291cnNlLCBzeXprYWxsZXIncyB2aGNpIGlzIGFsd2F5cyBhIGNvbnRlbmRlciBmb3IgbW9yZSBjb250cm9sbGVkIGFuZCBwb3RlbnRpYWxseSBtb3JlIGluc2lnaHRmdWwgZnV6emluZy5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duIGludG8gYSBsaWtlbHkgYXJlYSBvZiBpbnRlcmVzdCDigJMgZmlybXdhcmUgb3IgcmVnaXN0ZXIgYWNjZXNzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpbnRlcmFjdHMgd2l0aCBpdHMgTUNVLiBUbyB0aGF0IGVuZCwgSSBzaG91bGQgaW52ZXN0aWdhdGUgYG10NzkyNV9tY3VfcmVndmFsYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgbG9va3MgcHJvbWlzaW5nIOKAkyByZWdpc3RlciB2YWx1ZSBhY2Nlc3Mgd2l0aGluIHRoZSBNQ1UgZnJhbWV3b3JrLiBJdCBzaG91bGQgZ2l2ZSBtZSBzb21lIGNyaXRpY2FsIGluc2lnaHRzIGludG8gaXRzIHVuZGVybHlpbmcgaGFyZHdhcmUgaW50ZXJhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMDEsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjc6NDAuMzYzMjQxMTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4MDI1NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X21jdV9yZWd2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz04PW10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ6XFx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXFx1MDAzZW10NzYuZGVidWdmc19yZWcsIFxcdTAwMjZyZWd2YWwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxPW10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OlxcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NT1FWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3NzppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTQwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcmVndmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zODM9aW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozODY6aW50IG10NzkyNV9tY3VfcmVndmFsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzg3LWludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjc6NDAuNDEyMDUzNjM4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1NTM5MTQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYG10NzkyNV9tY3VfcmVndmFsYCoqXG5cblJpZ2h0LCBzbyBgbXQ3OTI1X21jdV9yZWd2YWxgIGFwcGVhcnMgdG8gYmUgY29uZmluZWQgdG8gYGRlYnVnZnMuY2AuIFRoYXQgc2VlbXMuLi4gb2RkLiBJcyBpdCB0cnVseSBvbmx5IHVzZWQgd2l0aGluIHRoYXQgc3BlY2lmaWMgZmlsZT8gSSBuZWVkIHRvIHZlcmlmeSBpdHMgdmlzaWJpbGl0eS5cblxuRmlyc3QsIGxldCdzIGNoZWNrIHRoZSBzeW1ib2wgZXhwb3J0IHN0YXR1cy4gT2theSwgaXQgKmlzKiBleHBvcnRlZCwgbWVhbmluZyBpdCdzIHBvdGVudGlhbGx5IGFjY2Vzc2libGUgb3V0c2lkZSBvZiBgZGVidWdmcy5jYC4gTm93LCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBUaW1lIGZvciBhIGZ1bGwtc2NhbGUgc2VhcmNoLiBJJ2xsIHNjb3VyIHRoZSBlbnRpcmUgY29kZSB0cmVlIGZvciBhbnkgb3RoZXIgb2NjdXJyZW5jZXMgb2YgYG10NzkyNV9tY3VfcmVndmFsYC4gVGhpcyB3aWxsIGNvbmZpcm0gd2hldGhlciB0aGlzIHZhcmlhYmxlIGlzIGdlbnVpbmVseSBsb2NhbCBvciBpcyBiZWluZyBhY2Nlc3NlZCBlbHNld2hlcmUsIHBvc3NpYmx5IHdpdGggdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb3VsZCB2YXJ5LCBzbyBJJ2xsIHN0YXkgYXR0ZW50aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzk2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjc6NDQuMDY3NDQ4MDIyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODgwODk2MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X21jdV9yZWd2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz04PW10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ6XFx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXFx1MDAzZW10NzYuZGVidWdmc19yZWcsIFxcdTAwMjZyZWd2YWwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxPW10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OlxcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NT1FWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3NzppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTQwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcmVndmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zODM9aW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozODY6aW50IG10NzkyNV9tY3VfcmVndmFsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzg3LWludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjc6NDUuODU1NTQxNjA0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4NDAyMTQ1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRoaXMgRGVidWdmcyBFbnRyeTogQSBRdWljayBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhpcyBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBkZWJ1Z2ZzLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBJcyB0aGlzIGV2ZW4gKndvcnRoKiB0aGUgZWZmb3J0IG9mIGZ1enppbmc/IERlYnVnZnMsIGJ5IGl0cyBuYXR1cmUsIGlzIHVzdWFsbHkgYWNjZXNzaWJsZSB3aXRoIHJvb3QgcHJpdmlsZWdlcywgYW5kIG15IGV4cGVyaWVuY2Ugd2l0aCBzeXprYWxsZXIgdGVsbHMgbWUgaXQgKmRvZXMqIHRhcmdldCBkZWJ1Z2ZzIGVudHJpZXMuIEJ1dCBJIG5lZWQgdG8gYmUgc3VyZTsganVzdCBiZWNhdXNlIHN5emthbGxlciBmdXp6ZXMgZGVidWdmcyBpbiBnZW5lcmFsIGRvZXNuJ3QgbWVhbiAqdGhpcyogc3BlY2lmaWMgZmlsZSBpcyBhY3R1YWxseSByZWFjaGFibGUgYW5kIGludGVyZXN0aW5nLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgYG10NzkyNV9yZWdfc2V0YCBhbmQgYG10NzkyNV9yZWdfZ2V0YCB0byBzZWUgaWYgdGhleSdyZSBhY3R1YWxseSByZWxldmFudCB0byBmdXp6aW5nLiBHb3R0YSBjaGVjayB0aGUgY2FsbCBzaXRlcyB0byBkZXRlcm1pbmUgaWYgdGhlcmUncyBhbnkgcmVhbGlzdGljIGNoYW5jZSBvZiB0cmlnZ2VyaW5nIGludGVyZXN0aW5nIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTk1LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjc6NDkuOTM5NTY1NzYzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTM1OTI1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVfcmVnX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo4Om10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxPW10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZWd2YWwsIG10NzkyNV9yZWdfZ2V0LCBtdDc5MjVfcmVnX3NldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzctXFx0XFx0XFx0IFxcXCIweCUwOGxseFxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI3OjQ5Ljk4NDkzNjkwMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI3OTg3NjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBmb3BzX3JlZ3ZhbGAgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29kZSdzIHBvaW50ZWQgbWUgdG93YXJkcyBgZm9wc19yZWd2YWxgLiBUaW1lIHRvIGRpZyBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSB1dGlsaXphdGlvbiBvZiB0aGlzIHNwZWNpZmljIHZhcmlhYmxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgaG93IGl0J3MgYmVpbmcgbWFuaXB1bGF0ZWQuIFRoZSBnb2FsIGhlcmUgaXMgYSBxdWljaywgZGVlcCBkaXZlIGludG8gdGhlIGNvZGUuIExldCdzIHNlZSBob3cgaXQncyBiZWluZyBlbXBsb3llZCB0aHJvdWdob3V0IHRoZSBwcm9qZWN0LiBXaGVyZSBhcmUgdGhlIHJlZmVyZW5jZXMgdG8gdGhpcyBvbmU/IElzIGl0IGEga2V5IHRvIGEgc3BlY2lmaWMgcHJvY2Vzcz8gSXMgaXQgcmVsYXRlZCB0byBJL08/IE9yIGFyZSB3ZSB0YWxraW5nIG1lbW9yeT9cblxuXG4iLCJJbnB1dFRva2VucyI6NjE5OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI3OjUzLjAxMjkyNjY2NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MTc2MzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZvcHNfcmVndmFsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE9bXQ3OTI1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yODk9aW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI5MzpcXHRkaXIgPSBtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCBcXHUwMDI2Zm9wc19yZWd2YWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI3OjUzLjI5MDEwODA4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQ0OTI2MTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG10NzkyNWAgRHJpdmVyIERlYnVnZnMgSW50ZXJmYWNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBgbXQ3OTI1YCBkcml2ZXIgZXhwb3NlcyBpdHMgaW50ZXJuYWwgcmVnaXN0ZXJzLiBUaGUgY29kZSB0ZWxscyBtZSBpdCdzIGRvbmUgdGhyb3VnaCBgbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHNgLiBBaCwgcmlnaHQsIHRoYXQgZnVuY3Rpb24gcmVnaXN0ZXJzIHRoZSBgcmVndmFsYCBkZWJ1Z2ZzIGZpbGUuIE5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgSSBjYW4gaW50ZXJhY3Qgd2l0aCBpdDsgaXMgdGhpcyBkcml2ZXIgZXZlbiBhY2Nlc3NpYmxlIGluIG15IFFFTVUgc2V0dXA/IExldCdzIHNlZS4uLiBZZXAsIGxvb2tzIGxpa2UgdGhlIGBtdDc5MjVgIGRyaXZlciAqZG9lcyogaGF2ZSBhIFVTQiBkcml2ZXIgKGB1c2IuY2ApLiBQZXJmZWN0LiBOb3csIG15IG5leHQgbW92ZSBpcyB0byBjaGVjayB0aGUgVVNCIGRyaXZlciBzcGVjaWZpY2FsbHkgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuY2ApIHRvIGNvbmZpcm0gaG93IGl0J3MgYmVpbmcgcmVnaXN0ZXJlZCBhcyBhIFVTQiBkcml2ZXIuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaG93IHRvIGhvb2sgaW50byB0aGUgc3lzdGVtIHRvIHN0YXJ0IHRlc3RpbmcgYW5kIGRlYnVnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc3MywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyNzo1Ni45MzUwMzY4OTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDIxNjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTM1Mz1NT0RVTEVfRklSTVdBUkUoTVQ3OTI1X1JPTV9QQVRDSCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM1NTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTI1dV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzU2LVxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2Ny19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2ODptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjV1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyNzo1Ni45NzgwNjM3OThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk3Mzc3OTk1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGEgVVNCIGRyaXZlciwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgb2YgZnV6emluZyBwb3RlbnRpYWwgdXNpbmcgZWl0aGVyIGEgVVNCIGdhZGdldCBvciBhIGR1bW15IEhDRCBzZXR1cC4gVGhlIHRhcmdldCBpcyB0aGUgYG10NzkyNV9tY3VfcmVndmFsYCBmdW5jdGlvbiwgYW5kIHRoZSBmYWN0IHRoYXQgaXQncyBhY2Nlc3NpYmxlIHZpYSBkZWJ1Z2ZzIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uIFRoYXQgbWFrZXMgaXQgbW9yZSBhY2Nlc3NpYmxlIHRvIG1hbmlwdWxhdGlvbi4gVGhlIHF1ZXN0aW9uIG5vdyBpczogaXMgaXQgd29ydGggdGhlIGVmZm9ydCBvZiBhIGZ1enppbmcgY2FtcGFpZ24/XG5cblRoZSBwYXRjaCBpdHNlbGYgcG9pbnRzIHRvIGFuIGlzc3VlIHdoZXJlIGBzaXplb2YocmVxKWAgd2FzIHVzZWQgaW4gdGhlIGxlbmd0aCBjYWxjdWxhdGlvbiwgcmF0aGVyIHRoYW4gdGhlIGludGVuZGVkIGBjbWRfbGVuYC4gQWxyaWdodCwgc28gYHJlcWAgaXMgYSB1bmlvbi4gVGhhdCBtZWFucyBgc2l6ZW9mKHJlcSlgIHdpbGwgcmVzb2x2ZSB0byB0aGUgc2l6ZSBvZiBpdHMgbGFyZ2VzdCBtZW1iZXIsIHdoaWNoIGlzIHByb2JhYmx5IGEgcHJvYmxlbS4gQnV0IGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgcmVxYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uLi4gb2theSwgaGVyZSBpdCBpczpcblxuYGBgY1xuXHRzdHJ1Y3Qge1xuXHRcdF9fbGUxNiB0YWc7XG5cdFx0X19sZTE2IGxlbjtcblx0XHR1bmlvbiB7XG5cdFx0XHRzdHJ1Y3Qge1xuXHRcdFx0XHRfX2xlMzIgaWR4O1xuXHRcdFx0XHRfX2xlMzIgZGF0YTtcblx0XHRcdH0gcmVnO1xuXHRcdFx0c3RydWN0IHtcblx0XHRcdFx0X19sZTE2IGFudDtcblx0XHRcdFx0X19sZTE2IHJzdjtcblx0XHRcdFx0X19sZTMyIGlkeDtcblx0XHRcdFx0X19sZTMyIGRhdGE7XG5cdFx0XHR9IHJmX3JlZztcblx0XHR9O1xuXHR9IF9fcGFja2VkICogcmVzLCByZXE7XG5gYGBcblxuQWgsIHJpZ2h0LiBOb3cgSSBnZXQgaXQuIFRoZSBwYXRjaCAqaXRzZWxmKiBkb2Vzbid0IGxvb2sgbGlrZSBpdCdzIHRoZSBhY3R1YWwgY29kZS4gSXQncyBqdXN0IHNob3dpbmcgdGhlIGByZXFgIHN0cnVjdCwgYnV0IGRvZXNuJ3Qgc2hvdyBhbnkgbW9kaWZpY2F0aW9ucy4gVGhpcyBtZWFucyBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gbG9va2luZyBhdCB0aGUgYWN0dWFsIGRlZmluaXRpb24gb2YgYHJlcWAgaW4gYG10NzkyNV9tY3VfcmVndmFsYC4gTm93IGxldCBtZSBzZWUgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczOTYsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MDIuOTUxODQ2MTU3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MTU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3NzpcXHRpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxcbiAgNzg6XFx0e1xcbiAgNzk6XFx0I2RlZmluZSBNVF9SRl9SRUdfSERSICAgICAgICAgICBHRU5NQVNLKDMxLCAyNClcXG4gIDgwOlxcdCNkZWZpbmUgTVRfUkZfUkVHX0FOVCAgICAgICAgICAgR0VOTUFTSygyMywgMTYpXFxuICA4MTpcXHQjZGVmaW5lIFJGX1JFR19QUkVGSVggICAgICAgICAgIDB4OTlcXG4gIDgyOlxcdFxcdHN0cnVjdCB7XFxuICA4MzpcXHRcXHRcXHR1OCBfX3Jzdls0XTtcXG4gIDg0OlxcdFxcdFxcdHVuaW9uIHtcXG4gIDg1OlxcdFxcdFxcdFxcdHN0cnVjdCB1bmlfY21kX2FjY2Vzc19yZWdfYmFzaWMge1xcbiAgODY6XFx0XFx0XFx0XFx0XFx0X19sZTE2IHRhZztcXG4gIDg3OlxcdFxcdFxcdFxcdFxcdF9fbGUxNiBsZW47XFxuICA4ODpcXHRcXHRcXHRcXHRcXHRfX2xlMzIgaWR4O1xcbiAgODk6XFx0XFx0XFx0XFx0XFx0X19sZTMyIGRhdGE7XFxuICA5MDpcXHRcXHRcXHRcXHR9IF9fcGFja2VkIHJlZztcXG4gIDkxOlxcdFxcdFxcdFxcdHN0cnVjdCB1bmlfY21kX2FjY2Vzc19yZl9yZWdfYmFzaWMge1xcbiAgOTI6XFx0XFx0XFx0XFx0XFx0X19sZTE2IHRhZztcXG4gIDkzOlxcdFxcdFxcdFxcdFxcdF9fbGUxNiBsZW47XFxuICA5NDpcXHRcXHRcXHRcXHRcXHRfX2xlMTYgYW50O1xcbiAgOTU6XFx0XFx0XFx0XFx0XFx0dTggX19yc3ZbMl07XFxuICA5NjpcXHRcXHRcXHRcXHRcXHRfX2xlMzIgaWR4O1xcbiAgOTc6XFx0XFx0XFx0XFx0XFx0X19sZTMyIGRhdGE7XFxuICA5ODpcXHRcXHRcXHRcXHR9IF9fcGFja2VkIHJmX3JlZztcXG4gIDk5OlxcdFxcdFxcdH07XFxuIDEwMDpcXHRcXHR9IF9fcGFja2VkICogcmVzLCByZXE7XFxuIDEwMTpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbiAxMDI6XFx0XFx0aW50IGNtZF9sZW47XFxuIDEwMzpcXHRcXHRpbnQgcmV0O1xcbiAxMDQ6XFx0XFxuIDEwNTpcXHRcXHRpZiAodTMyX2dldF9iaXRzKHJlZ2lkeCwgTVRfUkZfUkVHX0hEUikgPT0gUkZfUkVHX1BSRUZJWCkge1xcbiAxMDY6XFx0XFx0XFx0cmVxLnJmX3JlZy50YWcgPSBjcHVfdG9fbGUxNihVTklfQ01EX0FDQ0VTU19SRl9SRUdfQkFTSUMpO1xcbiAxMDc6XFx0XFx0XFx0cmVxLnJmX3JlZy5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLnJmX3JlZykpO1xcbiAxMDg6XFx0XFx0XFx0cmVxLnJmX3JlZy5hbnQgPSBjcHVfdG9fbGUxNih1MzJfZ2V0X2JpdHMocmVnaWR4LCBNVF9SRl9SRUdfQU5UKSk7XFxuIDEwOTpcXHRcXHRcXHRyZXEucmZfcmVnLmlkeCA9IGNwdV90b19sZTMyKHJlZ2lkeCk7XFxuIDExMDpcXHRcXHRcXHRyZXEucmZfcmVnLmRhdGEgPSBzZXQgPyBjcHVfdG9fbGUzMigqdmFsKSA6IDA7XFxuIDExMTpcXHRcXHRcXHRjbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgKyBzaXplb2YocmVxLnJmX3JlZyk7XFxuIDExMjpcXHRcXHR9IGVsc2Uge1xcbiAxMTM6XFx0XFx0XFx0cmVxLnJlZy50YWcgPSBjcHVfdG9fbGUxNihVTklfQ01EX0FDQ0VTU19SRUdfQkFTSUMpO1xcbiAxMTQ6XFx0XFx0XFx0cmVxLnJlZy5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLnJlZykpO1xcbiAxMTU6XFx0XFx0XFx0cmVxLnJlZy5pZHggPSBjcHVfdG9fbGUzMihyZWdpZHgpO1xcbiAxMTY6XFx0XFx0XFx0cmVxLnJlZy5kYXRhID0gc2V0ID8gY3B1X3RvX2xlMzIoKnZhbCkgOiAwO1xcbiAxMTc6XFx0XFx0XFx0Y21kX2xlbiA9IHNpemVvZihyZXEuX19yc3YpICsgc2l6ZW9mKHJlcS5yZWcpO1xcbiAxMTg6XFx0XFx0fVxcbiAxMTk6XFx0XFxuIDEyMDpcXHRcXHRpZiAoc2V0KVxcbiAxMjE6XFx0XFx0XFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9XTV9VTklfQ01EKFJFR19BQ0NFU1MpLFxcbiAxMjI6XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZyZXEsIGNtZF9sZW4sIHRydWUpO1xcbiAxMjM6XFx0XFxuIDEyNDpcXHRcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsXFxuIDEyNTpcXHRcXHRcXHRcXHRcXHRcXHRNQ1VfV01fVU5JX0NNRF9RVUVSWShSRUdfQUNDRVNTKSxcXG4gMTI2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIGNtZF9sZW4sIHRydWUsIFxcdTAwMjZza2IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODowMi45NTIxMTkzNDdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5Mzg5MDk2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgTUNVIENvbW1hbmQgTGVuZ3RoIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBkaXJlY3RseSBhZGRyZXNzZXMgdGhlIGxlbmd0aCBvZiB0aGUgY29tbWFuZCBiZWluZyBzZW50IHRvIHRoZSBNQ1UuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSB0YW5naWJsZSBmaXguIFRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb246IGlzIHRoaXMgZXZlbiB0ZXN0YWJsZT8gQW5kLCB5ZXMsIGl0IGxvb2tzIGxpa2UgaXQncyBhY2Nlc3NpYmxlIHRocm91Z2ggYGRlYnVnZnNgLCB3aGljaCBpcyBncmVhdCBmb3IgdGFyZ2V0ZWQgdGVzdGluZy4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgZHJpdmVyLCBhbmQgY29uc2lkZXJpbmcgdGhlIE1DVSBjb21tdW5pY2F0aW9uIGNhbiBiZSBlbXVsYXRlZCBvdmVyIFVTQiwgZnV6emluZyBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgYSB2YWx1YWJsZSBhcHByb2FjaCB0byBldmFsdWF0ZSBzdGFiaWxpdHkuIEhvbGQgb24sIHRob3VnaC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgbXQ3OTI1X21jdV9yZWd2YWxgIGlzICpleGNsdXNpdmVseSogcmVhY2hlZCB2aWEgZGVidWdmcy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlIHRvIGJlIGNlcnRhaW4gaXQncyBub3QgZXhwb3NlZCBlbHNld2hlcmUgYW5kIGNvdWxkIGJlIGEgbW9yZSB3aWRlLXJlYWNoaW5nIGNoYW5nZSB0aGFuIGl0IGFwcGVhcnMuIE5lZWQgdG8gdmVyaWZ5IGl0cyB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE3MiwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MDYuNjQ2MDEyMzc5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjU2MDUzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVfbWN1X3JlZ3ZhbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTg9bXQ3OTI1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMy1cXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcXHRtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE9bXQ3OTI1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjctXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg6XFx0cmV0ID0gbXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXFx1MDAzZW10NzYuZGVidWdmc19yZWcsIFxcdTAwMjZyZWd2YWwsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjktXFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTc1PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjc3OmludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTM5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9yZWd2YWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTE0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM4Mz1pbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM4NjppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zODctaW50IG10NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODowNi42ODg1NzcyMDhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4MDgyMjM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlYnVnZnMuYzogQSBRdWljayBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhpcyBpcyBvbmx5IHVzZWQgaW4gYGRlYnVnZnMuY2AuIEhtbW0sIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gSSBtZWFuLCBpdCdzIG5vdCBhIHdpZGVseSB1c2VkIGZlYXR1cmUsIGFuZCB0aGUgaW5pdGlhbCBpbnN0aW5jdCBtaWdodCBiZSB0byBmb2N1cyBvbiBtb3JlIGNyaXRpY2FsIGFyZWFzLiBIb3dldmVyLCBJIHJlY2FsbCBzeXprYWxsZXIgdGFyZ2V0aW5nIGRlYnVnZnMsIHdoaWNoIGRlZmluaXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJZiBpdCdzIGFscmVhZHkgaW4gdGhlaXIgZnV6emluZyB0YXJnZXRzLCB0aGVyZSBtdXN0IGJlIGEgcmVhc29uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIG5lZWRlZCB0byBlbmFibGUgdGhpcyBwYXJ0IG9mIGRlYnVnZnMgdG8gZW5zdXJlIHRoZSBmdXp6ZXIgaXMgYWN0dWFsbHkgaGl0dGluZyBpdC4gTGV0IG1lIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnYC4gVGhhdCBzaG91bGQgcHJvdmlkZSBzb21lIGNsYXJpdHkgb24gdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MDQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODoxMS4yNjk0MDE3MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU5MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzkyNV9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3OTJ4X0xJQlxcbiAgIDU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgNjpcXHRcXG4gICA3OlxcdGNvbmZpZyBNVDc5MjVFXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcXG4gIDE0OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXFxuICAxNTpcXHRcXHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVQ3OTI1VVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAyMjpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDI1OlxcdFxcdGhlbHBcXG4gIDI2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBVU0IgZGV2aWNlcyxcXG4gIDI3OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXFxuICAyODpcXHRcXHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODoxMS4yNjk0Njg3NzJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk4NTg0MDExMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIE5lZWRzKipcblxuT2theSwgc28gSSdtIGNvbmZpZ3VyaW5nIHRoaXMgc3lzdGVtLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgd2UgZGVmaW5pdGVseSBuZWVkIHRoZSBgTVQ3OTI1VWAgbW9kdWxlLiBUaGF0J3MgdGhlIHByaW1hcnkgZHJpdmVyIHdlJ3JlIHVzaW5nLCB3aGljaCBpbiB0dXJuIG1lYW5zIHdlJ2xsIGFsc28gbmVlZCB0aGUgY29tbW9uIGNvbXBvbmVudHMgaW5jbHVkZWQgdmlhIGBNVDc5MjVfQ09NTU9OYC4gVGhhdCBtYWtlcyBzZW5zZS4gV2UncmUgYWxzbyBnb2luZyB0byBiZSByZWx5aW5nIG9uIGBNQUM4MDIxMWAgYW5kIG9idmlvdXNseSBuZWVkIGBVU0JgIHN1cHBvcnQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4gSG9sZCBvbi4uLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gSWYgYE1UNzkyNV9DT01NT05gIGlzIHRoZSBvbmUgY29tcGlsaW5nIGBtY3UuY2AsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhhdCdzIHRoZSBjb3JyZWN0IGJlaGF2aW9yLiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYE1ha2VmaWxlYCB0byBiZSBzdXJlLiBJdCdzIGJlc3QgdG8gYmUgcHJlY2lzZSwgZXNwZWNpYWxseSB3aGVuIGJ1aWxkaW5nIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTgxLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODoxNS4yNTUzMTA5NTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRcXG4gICAzOlxcdG9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSArPSBtdDc5MjUtY29tbW9uLm9cXG4gICA0OlxcdG9iai0kKENPTkZJR19NVDc5MjVFKSArPSBtdDc5MjVlLm9cXG4gICA1OlxcdG9iai0kKENPTkZJR19NVDc5MjVVKSArPSBtdDc5MjV1Lm9cXG4gICA2OlxcdFxcbiAgIDc6XFx0bXQ3OTI1LWNvbW1vbi15IDo9IG1hYy5vIG1jdS5vIHJlZ2QubyBtYWluLm8gaW5pdC5vIGRlYnVnZnMubyBuYW4ub1xcbiAgIDg6XFx0bXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuICAgOTpcXHRtdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xcbiAgMTA6XFx0bXQ3OTI1dS15IDo9IHVzYi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI4OjE1LjI1NTUwOTM3NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzcxMTA5NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIE1UNzkyNSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGVuYWJsaW5nIGBtY3UuY2AgZm9yIHRoZSBNVDc5MjUsIGFuZCBpdCBsb29rcyBsaWtlIGl0J3Mgd2l0aGluIGBtdDc5MjUtY29tbW9uLXlgLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhhdCBzdWdnZXN0cyB0aGF0IGBDT05GSUdfTVQ3OTI1VWAgc2hvdWxkIGJlIGVub3VnaCB0byBwdWxsIGl0IGluLiBCdXQgbm93IEknbSBxdWVzdGlvbmluZyB3aGV0aGVyIEkgaGF2ZSB0aGUgZGVidWdmcyBlbmFibGVkIGNvcnJlY3RseS4gSSByZWNhbGwgdGhhdCBkZWJ1Z2ZzIHN1cHBvcnQgaXMgY29udHJvbGxlZCBieSBkaWZmZXJlbnQgS2NvbmZpZyBvcHRpb25zIGRlcGVuZGluZyBvbiB0aGUgd2lyZWxlc3MgZHJpdmVyIGZyYW1ld29yay4gSXMgaXQgYENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTYCBvciBzb21ldGhpbmcgc3BlY2lmaWMgdG8gTVQ3NiwgbGlrZSBgQ09ORklHX01UNzZfREVCVUdGU2A/IFRpbWUgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBLY29uZmlnIGZvciB0aGUgTWVkaWF0ZWsgZHJpdmVyIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgLiBJIG5lZWQgdG8gdmVyaWZ5IHdoaWNoIG9wdGlvbiBoYW5kbGVzIHRoZSBkZWJ1ZyBmaWxlc3lzdGVtIHZpc2liaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzE2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODoxOS4wMjY2MjIxNDRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0OTEwNTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRFQlVHRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM9MTc9bXQ3Nl9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM6MjU6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc2X3JlZ19nZXQsIG10NzZfcmVnX3NldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy0yNi1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jPTQzPW10NzZfbmFwaV90aHJlYWRlZF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy01MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYzo1MTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19uYXBpX3RocmVhZGVkLCBtdDc2X25hcGlfdGhyZWFkZWRfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jLTUyLVxcdFxcdFxcdCBtdDc2X25hcGlfdGhyZWFkZWRfc2V0LCBcXFwiJWxsdVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmM9NjE9bXQ3NjAzX2VkY2NhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RlYnVnZnMuYy02OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmM6Njk6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZWRjY2EsIG10NzYwM19lZGNjYV9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jLTcwLVxcdFxcdFxcdCBtdDc2MDNfZWRjY2Ffc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTg9bXQ3NjE1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI5OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3NjE1X3JlZ19nZXQsIG10NzYxNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMC1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zMz1tdDc2MTVfcmFkYXJfcGF0dGVybl9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfcGF0dGVybiwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDktXFx0XFx0XFx0IG10NzYxNV9yYWRhcl9wYXR0ZXJuX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTUxPXN0YXRpYyBpbnQgbXQ3NjE1X2NvbmZpZyh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19jb25maWcsIE5VTEwsIG10NzYxNV9jb25maWcsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNjQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9ODM9bXQ3NjE1X3Njc19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjkyOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3NjcywgbXQ3NjE1X3Njc19nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTkzLVxcdFxcdFxcdCBtdDc2MTVfc2NzX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTEzNz1tdDc2MTVfcG1fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTQ2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtLCBtdDc2MTVfcG1fZ2V0LCBtdDc2MTVfcG1fc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0xNzk9bXQ3NjE1X3BtX2lkbGVfdGltZW91dF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxODg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG1faWRsZV90aW1lb3V0LCBtdDc2MTVfcG1faWRsZV90aW1lb3V0X2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTg5LVxcdFxcdFxcdCBtdDc2MTVfcG1faWRsZV90aW1lb3V0X3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTIwOD1tdDc2MTVfZGJkY19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZGJkYywgbXQ3NjE1X2RiZGNfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMTgtXFx0XFx0XFx0IG10NzYxNV9kYmRjX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTIzOD1tdDc2MTVfZndfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjQ3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnLCBtdDc2MTVfZndfZGVidWdfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNDgtXFx0XFx0XFx0IG10NzYxNV9md19kZWJ1Z19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yNTE9bXQ3NjE1X3Jlc2V0X3Rlc3Rfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNzI6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXRfdGVzdCwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjczLVxcdFxcdFxcdCBtdDc2MTVfcmVzZXRfdGVzdF9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz00Mjc9bXQ3NjE1X3JmX3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MzY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmZfcmVnLCBtdDc2MTVfcmZfcmVnX2dldCwgbXQ3NjE1X3JmX3JlZ19zZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQzNy1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9kZWJ1Z2ZzLmM9MTA2PW10NzZfZWRjY2FfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2RlYnVnZnMuYy0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2RlYnVnZnMuYzoxMTQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZWRjY2EsIG10NzZfZWRjY2FfZ2V0LCBtdDc2X2VkY2NhX3NldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfZGVidWdmcy5jLTExNS1cXHRcXHRcXHQgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTM1PW10NzkxNV9pbXBsaWNpdF90eGJmX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfaW1wbGljaXRfdHhiZiwgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00NS1cXHRcXHRcXHQgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjAxPW10NzkxNV9yYWRhcl90cmlnZ2VyKHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMjc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfdHJpZ2dlciwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjI4LVxcdFxcdFxcdCBtdDc5MTVfcmFkYXJfdHJpZ2dlciwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTI0Mj1tdDc5MTVfbXVydV9kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNTE6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfbXVydV9kZWJ1ZywgbXQ3OTE1X211cnVfZGVidWdfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNTItXFx0XFx0XFx0IG10NzkxNV9tdXJ1X2RlYnVnX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTU0OT1tdDc5MTVfZndfZGVidWdfd21fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTU4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX3dtLCBtdDc5MTVfZndfZGVidWdfd21fZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NTktXFx0XFx0XFx0IG10NzkxNV9md19kZWJ1Z193bV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01ODM9bXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU5MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193YSwgbXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTkzLVxcdFxcdFxcdCBtdDc5MTVfZndfZGVidWdfd2Ffc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjQyPW10NzkxNV9md19kZWJ1Z19iaW5fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjUxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX2JpbiwgbXQ3OTE1X2Z3X2RlYnVnX2Jpbl9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1Mi1cXHRcXHRcXHQgbXQ3OTE1X2Z3X2RlYnVnX2Jpbl9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0xMjcwPW10NzkxNV9yZl9yZWd2YWxfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTI3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTI3ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZl9yZWd2YWwsIG10NzkxNV9yZl9yZWd2YWxfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjc5LVxcdFxcdFxcdCBtdDc5MTVfcmZfcmVndmFsX3NldCwgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0xMzc2PWJvb2wgbXQ3OTE1X2RlYnVnZnNfcnhfbG9nKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTM4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTM4NzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTM4OC0vKiogcGVyLXN0YXRpb24gZGVidWdmcyAqKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzc2PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkxNV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyNS1cXHRDRkc4MDIxMV9URVNUTU9ERV9EVU1QKG10NzZfdGVzdG1vZGVfZHVtcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM6MTgyNjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyNy1cXHQuc3RhX2FkZF9kZWJ1Z2ZzID0gbXQ3OTE1X3N0YV9hZGRfZGVidWdmcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTYzNz1ib29sIG10NzkxNV9kZWJ1Z2ZzX3J4X2xvZyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo2Mzg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgtNjM5LXZvaWQgbXQ3OTE1X3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xOT1tdDc5MjFfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MzA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc5MjFfcmVnX2dldCwgbXQ3OTIxX3JlZ19zZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTMxLVxcdFxcdFxcdCBcXFwiMHglMDhsbHhcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTQ4PW10NzkyMV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjU3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnLCBtdDc5MjFfZndfZGVidWdfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy01OC1cXHRcXHRcXHQgbXQ3OTIxX2Z3X2RlYnVnX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTE3Nj1tdDc5MjFfcG1fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTg1OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtLCBtdDc5MjFfcG1fZ2V0LCBtdDc5MjFfcG1fc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yMTI9bXQ3OTIxX2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjIxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RzLCBtdDc5MjFfZGVlcF9zbGVlcF9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyMi1cXHRcXHRcXHQgbXQ3OTIxX2RlZXBfc2xlZXBfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjI0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyNS1cXHRcXHRcXHQgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yMjc9c3RhdGljIGludCBtdDc5MjFfY2hpcF9yZXNldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjQ4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjFfY2hpcF9yZXNldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE9bXQ3OTI1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz01ND1tdDc5MjVfZndfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTI1X2Z3X2RlYnVnX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNjQtXFx0XFx0XFx0IG10NzkyNV9md19kZWJ1Z19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMTU9bXQ3OTI1X3BtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIyNDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTI1X3BtX2dldCwgbXQ3OTI1X3BtX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjUxPW10NzkyNV9kZWVwX3NsZWVwX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19kcywgbXQ3OTI1X2RlZXBfc2xlZXBfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjEtXFx0XFx0XFx0IG10NzkyNV9kZWVwX3NsZWVwX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbV9pZGxlX3RpbWVvdXQsIG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjQtXFx0XFx0XFx0IG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjY2PXN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4NzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZXNldCwgTlVMTCwgbXQ3OTI1X2NoaXBfcmVzZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTM3PW10Nzk5Nl9pbXBsaWNpdF90eGJmX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfaW1wbGljaXRfdHhiZiwgbXQ3OTk2X2ltcGxpY2l0X3R4YmZfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00Ny1cXHRcXHRcXHQgbXQ3OTk2X2ltcGxpY2l0X3R4YmZfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9MjIzPW10Nzk5Nl9yYWRhcl90cmlnZ2VyKHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyNjI6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfdHJpZ2dlciwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjYzLVxcdFxcdFxcdCBtdDc5OTZfcmFkYXJfdHJpZ2dlciwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTM2MD1tdDc5OTZfZndfZGVidWdfd21fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzY5OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX3dtLCBtdDc5OTZfZndfZGVidWdfd21fZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zNzAtXFx0XFx0XFx0IG10Nzk5Nl9md19kZWJ1Z193bV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zODk9bXQ3OTk2X2Z3X2RlYnVnX3dhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM5ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193YSwgbXQ3OTk2X2Z3X2RlYnVnX3dhX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzk5LVxcdFxcdFxcdCBtdDc5OTZfZndfZGVidWdfd2Ffc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NDQ4PW10Nzk5Nl9md19kZWJ1Z19iaW5fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDU3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX2JpbiwgbXQ3OTk2X2Z3X2RlYnVnX2Jpbl9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ1OC1cXHRcXHRcXHQgbXQ3OTk2X2Z3X2RlYnVnX2Jpbl9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz04NjI9bXQ3OTk2X3JmX3JlZ3ZhbF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg3MDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZl9yZWd2YWwsIG10Nzk5Nl9yZl9yZWd2YWxfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NzEtXFx0XFx0XFx0IG10Nzk5Nl9yZl9yZWd2YWxfc2V0LCBcXFwiMHglMDhsbHhcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTk1OT1ib29sIG10Nzk5Nl9kZWJ1Z2ZzX3J4X2xvZyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTcwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NzEtLyoqIHBlci1zdGF0aW9uIGRlYnVnZnMgKiovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjU0NT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5OTZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI1OTMtXFx0LnR3dF90ZWFyZG93bl9yZXF1ZXN0ID0gbXQ3OTk2X3R3dF90ZWFyZG93bl9yZXF1ZXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNTk0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNTk1LVxcdC5zdGFfYWRkX2RlYnVnZnMgPSBtdDc5OTZfc3RhX2FkZF9kZWJ1Z2ZzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg9OTM0PWludCBtdDc5OTZfbWN1X3NldF9lbWxzcl9tb2RlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC05MzctXFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9lbWxfcGFyYW1zICplbWxfcGFyYW1zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo5Mzg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtOTM5LXZvaWQgbXQ3OTk2X3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MTkuMDkxNTM2OTgyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MjY3NDczODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBjb2RlOlxuXG4qKkNvbmRpdGlvbmFsIENvbXBpbGF0aW9uIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHNlZSBgbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHNgIGJlaW5nIGNhbGxlZCB3aXRoaW4gYG10NzkyNV9pbml0X2RlYnVnZnNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCB3aGV0aGVyIGBtdDc5MjVfaW5pdF9kZWJ1Z2ZzYCBpdHNlbGYgaXMgY29tcGlsZWQgY29uZGl0aW9uYWxseS4gV2Uga25vdyBob3cgTWVkaWF0ZWsgYW5kIHRoZWlyIGRyaXZlciBtb2R1bGVzIGNhbiBiZSwgYW5kIGl0J3MgYWx3YXlzIHdvcnRoIHZlcmlmeWluZyB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUncyBhIGNvbmZpZ3VyYXRpb24gZmxhZyBvciBhIHBsYXRmb3JtLXNwZWNpZmljIGNoZWNrIHN1cnJvdW5kaW5nIHRoYXQgZnVuY3Rpb24uIE15IGd1dCB0ZWxscyBtZSB0aGlzIGNvdWxkIGJlIGNydWNpYWwgdG8gc29tZSBkb3duc3RyZWFtIGlzc3VlLiBJJ2xsIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzIGFuZCBzdXJyb3VuZGluZyBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gVGhpcyBraW5kIG9mIGRldGFpbCBjYW4gc2F2ZSBhIGxvdCBvZiBkZWJ1Z2dpbmcgdGltZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxNTcsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODoyMi44MTgyODY3NDNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDQ4MTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV9pbml0X2RlYnVnZnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yODc9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg5OmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MTkwPXN0YXRpYyB2b2lkIG10NzkyNV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjE5OlxcdHJldCA9IG10NzkyNV9pbml0X2RlYnVnZnMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjIwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTMyMT1pbnQgbXQ3OTI1X2luaXRfbWxvX2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzIyOmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MjIuODU5NzM4MjAyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMTk0MzQ5MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2YgdGhpcy5cblxuKipEZWJ1Z2dpbmcgdGhlIERlcGVuZGVuY3kgUHV6emxlKipcblxuQWxyaWdodCwgSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGEgZGVwZW5kZW5jeSBpc3N1ZSwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gc29tZXRoaW5nIGJlaW5nICphbHdheXMqIGNvbXBpbGVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiT2theSwgaXQncyBhbHdheXMgY29tcGlsZWQuXCIgVGhhdCBsZWFkcyBtZSB0byBhIHF1aWNrIHJlYWxpemF0aW9uIHRoYXQgYGRlYnVnZnMub2AgaXMgY29uc2lzdGVudGx5IHByZXNlbnQgd2l0aGluIGBtdDc5MjUtY29tbW9uLXlgLiBTbywgbXkgbmV4dCBhc3N1bXB0aW9uLCB0aGVuLCBpcyB0aGF0IHNpbXBseSBlbmFibGluZyBgQ09ORklHX01UNzkyNVVgIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGVuYWJsZSBpdC4gQnV0IHRoZW4gSSBoaXQgYSBzbmFnLiBXaGF0IGFib3V0IGBDT05GSUdfTUFDODAyMTFfREVCVUdGU2A/IERvZXMgKnRoYXQqIGNvbWUgaW50byBwbGF5IHNvbWVob3c/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGBtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wc2AgaGFzIGEgZGVwZW5kZW5jeSBvbiBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgIHRvIGRldGVybWluZSBpZiBJJ20gbWlzc2luZyBzb21ldGhpbmcgaW1wb3J0YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkxNiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI4OjI3LjA3OTE3NTg4N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI0NzI2NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM9MTAzPXN0cnVjdCBkZW50cnkgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jOjEwNDptdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy0xMDUtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMtMTI1LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYzoxMjY6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTMzMz1zdHJ1Y3QgbXQ3Nl9waHkgKm10NzZfdmlmX3BoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTMzNjpzdHJ1Y3QgZGVudHJ5ICptdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzM3LVxcdFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqb3BzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzM4PXN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMzkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzNDA6XFx0cmV0dXJuIG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTM0MS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9NTQ4PWludCBtdDc2MTVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NTI6XFx0ZGlyID0gbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHMoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgXFx1MDAyNmZvcHNfcmVndmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTEyODE9aW50IG10NzkxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMjg3OlxcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKHBoeS1cXHUwMDNlbXQ3NiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEyODgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjY0PWludCBtdDc5MjFfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyNjg6XFx0ZGlyID0gbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHMoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgXFx1MDAyNmZvcHNfcmVndmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI4OT1pbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjkzOlxcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIFxcdTAwMjZmb3BzX3JlZ3ZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz04NzM9aW50IG10Nzk5Nl9pbml0X2RlYnVnZnMoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg3NzpcXHRkaXIgPSBtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODc4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODoyNy4xNzE2NTUwODRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NTY3NTY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmNgIGZpbGUuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIGl0cyBkZXBlbmRlbmN5LCBvciBsYWNrIHRoZXJlb2YsIG9uIHRoZSBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBLbm93aW5nIHRoaXMgaXMgY3JpdGljYWwsIGFzIGl0IGRpcmVjdGx5IGltcGFjdHMgaG93IEkgYXBwcm9hY2ggZGVidWdnaW5nIGFuZCBmZWF0dXJlIGVuYWJsZW1lbnQgcmVsYXRlZCB0byB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVycywgYW5kIGhvdyBJIGNvbnNpZGVyIHJlbGF0ZWQgY29kZSBwYXRocy4gVW5kZXJzdGFuZGluZyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncyBsaWtlIHRoaXMgaXMgY29yZSB0byBlZmZlY3RpdmVseSBuYXZpZ2F0aW5nIGFuZCBtb2RpZnlpbmcga2VybmVsIG1vZHVsZXMsIGVzcGVjaWFsbHkgb25lcyB3aXRoIHNvIG1hbnkgY29uZmlndXJhYmxlIGNvbXBvbmVudHMuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjU5MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI4OjMwLjM1NzMzMzA4MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ2NTkwNjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRFQlVHRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MzAuNDIyMDA3NzlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwMzUzOTg0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc2IE1ha2VmaWxlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBNZWRpYXRlayBNVDc2IHdpcmVsZXNzIGRyaXZlci4gVGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBrZXJuZWwgbW9kdWxlIGJ1aWxkIHByb2Nlc3MgaXMgdGhlIGBNYWtlZmlsZWAsIHNvIGxldCdzIGhlYWQgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlYC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBzdHJ1Y3R1cmUgaGVyZTogb2JqZWN0IGZpbGUgZGVmaW5pdGlvbnMsIGRlcGVuZGVuY3kgdHJhY2tpbmcsIG1heWJlIHNvbWUgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGFuZCBob3BlZnVsbHkgYSB3ZWxsLWNvbW1lbnRlZCBvcmdhbml6YXRpb24uIEknbGwgYmUgbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIGNsdWVzIGFib3V0IGhvdyB0aGV5J3JlIGhhbmRsaW5nIGZpcm13YXJlIGxvYWRpbmcsIHBvd2VyIG1hbmFnZW1lbnQgaG9va3MsIGFuZCBhbnkgdW51c3VhbCBidWlsZCBmbGFncyBvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgTVQ3NiBjaGlwc2V0IHZhcmlhbnRzLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciB3aGVyZSBJ4oCZbGwgZmluZCB0aGUgcGFpbiBwb2ludHMsIGRlcGVuZGluZy4gTGV04oCZcyBzZWUgd2hhdCB0aGV5J3ZlIGNvb2tlZCB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MTcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODozNC40MjU1NTA3NjJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdG9iai0kKENPTkZJR19NVDc2X0NPUkUpICs9IG10NzYub1xcbiAgIDM6XFx0b2JqLSQoQ09ORklHX01UNzZfVVNCKSArPSBtdDc2LXVzYi5vXFxuICAgNDpcXHRvYmotJChDT05GSUdfTVQ3Nl9TRElPKSArPSBtdDc2LXNkaW8ub1xcbiAgIDU6XFx0b2JqLSQoQ09ORklHX01UNzZ4MDJfTElCKSArPSBtdDc2eDAyLWxpYi5vXFxuICAgNjpcXHRvYmotJChDT05GSUdfTVQ3NngwMl9VU0IpICs9IG10NzZ4MDItdXNiLm9cXG4gICA3OlxcdG9iai0kKENPTkZJR19NVDc2X0NPTk5BQ19MSUIpICs9IG10NzYtY29ubmFjLWxpYi5vXFxuICAgODpcXHRvYmotJChDT05GSUdfTVQ3OTJ4X0xJQikgKz0gbXQ3OTJ4LWxpYi5vXFxuICAgOTpcXHRvYmotJChDT05GSUdfTVQ3OTJ4X1VTQikgKz0gbXQ3OTJ4LXVzYi5vXFxuICAxMDpcXHRcXG4gIDExOlxcdG10NzYteSA6PSBcXFxcXFxuICAxMjpcXHRcXHRtbWlvLm8gdXRpbC5vIHRyYWNlLm8gZG1hLm8gbWFjODAyMTEubyBkZWJ1Z2ZzLm8gZWVwcm9tLm8gXFxcXFxcbiAgMTM6XFx0XFx0dHgubyBhZ2ctcngubyBtY3UubyB3ZWQubyBzY2FuLm8gY2hhbm5lbC5vXFxuICAxNDpcXHRcXG4gIDE1OlxcdGlmZGVmIENPTkZJR19NVDc2X05QVVxcbiAgMTY6XFx0IyBDT05GSUdfTVQ3Nl9OUFUgaXMgdHJpc3RhdGUgdG8gc2ltcGxpZnkgZGVwZW5kZW5jeSB0cmFja2luZyxcXG4gIDE3OlxcdCMgYnV0IGl0IGJlaGF2ZXMgYXMgYSBib29sIHN5bWJvbCBoZXJlLlxcbiAgMTg6XFx0bXQ3Ni15ICs9IG5wdS5vXFxuICAxOTpcXHRlbmRpZlxcbiAgMjA6XFx0bXQ3Ni0kKENPTkZJR19QQ0kpICs9IHBjaS5vXFxuICAyMTpcXHRtdDc2LSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG4gIDIyOlxcdFxcbiAgMjM6XFx0bXQ3Ni11c2IteSA6PSB1c2IubyB1c2JfdHJhY2Uub1xcbiAgMjQ6XFx0bXQ3Ni1zZGlvLXkgOj0gc2Rpby5vIHNkaW9fdHhyeC5vXFxuICAyNTpcXHRcXG4gIDI2OlxcdENGTEFHU190cmFjZS5vIDo9IC1JJChzcmMpXFxuICAyNzpcXHRDRkxBR1NfdXNiX3RyYWNlLm8gOj0gLUkkKHNyYylcXG4gIDI4OlxcdENGTEFHU19tdDc2eDAyX3RyYWNlLm8gOj0gLUkkKHNyYylcXG4gIDI5OlxcdENGTEFHU19tdDc5MnhfdHJhY2UubyA6PSAtSSQoc3JjKVxcbiAgMzA6XFx0XFxuICAzMTpcXHRtdDc2eDAyLWxpYi15IDo9IG10NzZ4MDJfdXRpbC5vIG10NzZ4MDJfbWFjLm8gbXQ3NngwMl9tY3UubyBcXFxcXFxuICAzMjpcXHRcXHRcXHQgbXQ3NngwMl9lZXByb20ubyBtdDc2eDAyX3BoeS5vIG10NzZ4MDJfbW1pby5vIFxcXFxcXG4gIDMzOlxcdFxcdFxcdCBtdDc2eDAyX3R4cngubyBtdDc2eDAyX3RyYWNlLm8gbXQ3NngwMl9kZWJ1Z2ZzLm8gXFxcXFxcbiAgMzQ6XFx0XFx0XFx0IG10NzZ4MDJfZGZzLm8gbXQ3NngwMl9iZWFjb24ub1xcbiAgMzU6XFx0XFxuICAzNjpcXHRtdDc2eDAyLXVzYi15IDo9IG10NzZ4MDJfdXNiX21jdS5vIG10NzZ4MDJfdXNiX2NvcmUub1xcbiAgMzc6XFx0XFxuICAzODpcXHRtdDc2LWNvbm5hYy1saWIteSA6PSBtdDc2X2Nvbm5hY19tY3UubyBtdDc2X2Nvbm5hY19tYWMubyBtdDc2X2Nvbm5hYzNfbWFjLm9cXG4gIDM5OlxcdFxcbiAgNDA6XFx0bXQ3OTJ4LWxpYi15IDo9IG10NzkyeF9jb3JlLm8gbXQ3OTJ4X21hYy5vIG10NzkyeF90cmFjZS5vIFxcXFxcXG4gIDQxOlxcdFxcdFxcdG10NzkyeF9kZWJ1Z2ZzLm8gbXQ3OTJ4X2RtYS5vXFxuICA0MjpcXHRtdDc5MngtbGliLSQoQ09ORklHX0FDUEkpICs9IG10NzkyeF9hY3BpX3Nhci5vXFxuICA0MzpcXHRtdDc5MngtdXNiLXkgOj0gbXQ3OTJ4X3VzYi5vXFxuICA0NDpcXHRcXG4gIDQ1OlxcdG9iai0kKENPTkZJR19NVDc2eDBfQ09NTU9OKSArPSBtdDc2eDAvXFxuICA0NjpcXHRvYmotJChDT05GSUdfTVQ3NngyX0NPTU1PTikgKz0gbXQ3NngyL1xcbiAgNDc6XFx0b2JqLSQoQ09ORklHX01UNzYwM0UpICs9IG10NzYwMy9cXG4gIDQ4OlxcdG9iai0kKENPTkZJR19NVDc2MTVfQ09NTU9OKSArPSBtdDc2MTUvXFxuICA0OTpcXHRvYmotJChDT05GSUdfTVQ3OTE1RSkgKz0gbXQ3OTE1L1xcbiAgNTA6XFx0b2JqLSQoQ09ORklHX01UNzkyMV9DT01NT04pICs9IG10NzkyMS9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MzQuNDI1NjY5MzUyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjI4NTMwNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVidWdnaW5nIHRoZSBNVDc2IERlYnVnZnMgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBgZGVidWdmcy5vYCBpcyBjb25zaXN0ZW50bHkgYmVpbmcgYnVpbHQgaW50byB0aGUgYG10NzZgIG1vZHVsZSDigJMgdGhhdCdzIGEgZ2l2ZW4sIHBhcnQgb2YgdGhlIHN0YW5kYXJkIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIEkgc2VlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgc28gdGhhdCdzIGV4cGVjdGVkLiBXaGVyZSBkb2VzIHRoaXMgZnVuY3Rpb25hbGl0eSBhY3R1YWxseSAqbGl2ZSo/XCIgVGhlbiwgaXQgY2xpY2tzOiBgbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHNgIGlzIHNpdHRpbmcgcmlnaHQgdGhlcmUgaW4gYGRlYnVnZnMuY2AuIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGFyaXNlczogRG9lcyB0aGlzIGZ1bmN0aW9uICphY3R1YWxseSogY3JlYXRlIGFueSBkZWJ1Z2ZzIGZpbGVzIG9yIGlzIGl0IGp1c3QgZGVjbGFyaW5nIHRoZSBzZXR1cD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgZG9pbmcgd2hhdCBpdHMgbmFtZSBpbXBsaWVzLCBvciBlbHNlIEkgYW0gbG9va2luZyBhdCBhIG1pc2NvbmZpZ3VyYXRpb24uIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmIGFuZCBzZWUgd2hhdCBpdCBkb2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI0NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MzguNTQ4NTI2MTlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMDpcXHR9XFxuIDEwMTpcXHRFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3NlcV9wdXRzX2FycmF5KTtcXG4gMTAyOlxcdFxcbiAxMDM6XFx0c3RydWN0IGRlbnRyeSAqXFxuIDEwNDpcXHRtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSxcXG4gMTA1OlxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKm9wcylcXG4gMTA2OlxcdHtcXG4gMTA3OlxcdFxcdGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMgPSBvcHMgPyBvcHMgOiBcXHUwMDI2Zm9wc19yZWd2YWw7XFxuIDEwODpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbiAxMDk6XFx0XFx0c3RydWN0IGRlbnRyeSAqZGlyO1xcbiAxMTA6XFx0XFxuIDExMTpcXHRcXHRkaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoXFxcIm10NzZcXFwiLCBwaHktXFx1MDAzZWh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlZGVidWdmc2Rpcik7XFxuIDExMjpcXHRcXG4gMTEzOlxcdFxcdGRlYnVnZnNfY3JlYXRlX3U4KFxcXCJsZWRfcGluXFxcIiwgMDYwMCwgZGlyLCBcXHUwMDI2cGh5LVxcdTAwM2VsZWRzLnBpbik7XFxuIDExNDpcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV91MzIoXFxcInJlZ2lkeFxcXCIsIDA2MDAsIGRpciwgXFx1MDAyNmRldi1cXHUwMDNlZGVidWdmc19yZWcpO1xcbiAxMTU6XFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZV91bnNhZmUoXFxcInJlZ3ZhbFxcXCIsIDA2MDAsIGRpciwgZGV2LCBmb3BzKTtcXG4gMTE2OlxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfdW5zYWZlKFxcXCJuYXBpX3RocmVhZGVkXFxcIiwgMDYwMCwgZGlyLCBkZXYsXFxuIDExNzpcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2Zm9wc19uYXBpX3RocmVhZGVkKTtcXG4gMTE4OlxcdFxcdGRlYnVnZnNfY3JlYXRlX2Jsb2IoXFxcImVlcHJvbVxcXCIsIDA0MDAsIGRpciwgXFx1MDAyNmRldi1cXHUwMDNlZWVwcm9tKTtcXG4gMTE5OlxcdFxcdGlmIChkZXYtXFx1MDAzZW90cC5kYXRhKVxcbiAxMjA6XFx0XFx0XFx0ZGVidWdmc19jcmVhdGVfYmxvYihcXFwib3RwXFxcIiwgMDQwMCwgZGlyLCBcXHUwMDI2ZGV2LVxcdTAwM2VvdHApO1xcbiAxMjE6XFx0XFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlZGV2LCBcXFwicngtcXVldWVzXFxcIiwgZGlyLFxcbiAxMjI6XFx0XFx0XFx0XFx0XFx0ICAgIG10NzZfcnhfcXVldWVzX3JlYWQpO1xcbiAxMjM6XFx0XFxuIDEyNDpcXHRcXHRyZXR1cm4gZGlyO1xcbiAxMjU6XFx0fVxcbiAxMjY6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODozOC41NDg2NDIwM1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjc5MzYyNDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIERlYnVnZnMgRGlyZWN0b3J5KipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgcGh5LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZWRlYnVnZnNkaXJgIGlzIGJlaW5nIHVzZWQgaGVyZS4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgXCJBaCwgdGhhdCdzIGEgbWFjODAyMTEgdGhpbmcuXCIgTWFjODAyMTEgaXMgdGhlIHVzdWFsIGN1bHByaXQgZm9yIGRlYnVnZnMgaW50ZWdyYXRpb24gaW4gdGhlIHdpcmVsZXNzIHN0YWNrLiBUaGUgcXVlc3Rpb24gbm93IGlzOiB3aGVuICpleGFjdGx5KiBkb2VzIG1hYzgwMjExIGNyZWF0ZSB0aGlzIGRpcmVjdG9yeT8gSXMgaXQgY29uZGl0aW9uYWwsIG9yIGlzIGl0IGFsd2F5cyB0aGVyZT8gU3BlY2lmaWNhbGx5LCBkb2VzIGl0IG9ubHkgY3JlYXRlIGBkZWJ1Z2ZzZGlyYCB3aGVuIGBDT05GSUdfTUFDODAyMTFfREVCVUdGU2AgaXMgZW5hYmxlZD8gVGltZSB0byBkaWcgaW50byB0aGUgc291cmNlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgZWl0aGVyIGBpbmNsdWRlL25ldC9tYWM4MDIxMS5oYCBmb3IgdGhlIG1hY3JvIGRlZmluaXRpb25zIG9yIHBvc3NpYmx5IGBuZXQvbWFjODAyMTEvZGVidWdmcy5jYCB0byBzZWUgdGhlIGFjdHVhbCBkaXJlY3RvcnkgY3JlYXRpb24gbG9naWMuIFRoYXQncyB3aGVyZSB0aGUgYW5zd2VyIHdpbGwgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MDY5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODo0Mi4yMjgwMDcwMjNaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNjA0NzI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWJ1Z2ZzZGlyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L21hYzgwMjExLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbWFjODAyMTEuaD03MzQ1PXN0cnVjdCByYXRlX2NvbnRyb2xfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzM0OS1cXHR2b2lkICgqYWRkX2RlYnVnZnMpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB2b2lkICpwcml2LFxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NzM1MDpcXHRcXHRcXHQgICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc2Rpcik7XFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03MzUxLVxcdHZvaWQgKCpmcmVlKSh2b2lkICpwcml2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6NDIuNTM0MDU5NTEzWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDM0NjY5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIHRoZSBMYXkgb2YgdGhlIExhbmQ6IGNmZzgwMjExLmggYW5kIGRlYnVnZnNkaXIqKlxuXG5SaWdodCwgbGV0J3Mgc3RhcnQgd2l0aCB0aGUgYmFzaWNzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgc3R1ZmYgaXMgc3RydWN0dXJlZCBpbiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyB0aGUgV2ktRmkgUEhZIGludGVyZmFjZSwgYHdpcGh5YCwgYW5kIGhvdyBpdHMgZGVidWdmcyBpbnRlcmZhY2UgaXMgaGFuZGxlZC4gTGV0J3MgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBob3cgdG8gZGVidWcgdGhpcyBwcm9wZXJseS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYHdpcGh5YCBzdHJ1Y3R1cmUsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBgZGVidWdmc2RpcmAgd2l0aGluIGBpbmNsdWRlL25ldC9jZmc4MDIxMS5oYC4gVGhhdCdzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IHBvaW50ZXJzIG9yIG1ldGhvZHMgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIGRlYnVnIGZpbGVzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBkZWJ1ZyBpbnRlcmZhY2UgaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZy4gTGV0J3MgZ28gdGhyb3VnaCB0aGUgZGV0YWlscyBvZiBob3cgdGhlIFdpLUZpIFBIWSdzIGRlYnVnIGZpbGVzeXN0ZW0gZGlyZWN0b3J5IGlzIHNldCB1cCBhbmQgdXNlZC4gS25vd2luZyB3aGVyZSB0aGlzIGlzIGRlZmluZWQgd2lsbCBoZWxwIG1lIHF1aWNrbHkgdW5kZXJzdGFuZCBob3cgdG8gZGlhZ25vc2UgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgZGVidWcgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU1MzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODo0Ni4yNzc1MjkyOTNaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjgxMTcwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWJ1Z2ZzZGlyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L2NmZzgwMjExLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02MjA1PXN0cnVjdCB3aXBoeV9pZnR5cGVfYWttX3N1aXRlcyB7XFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTYyMTctICpcXHQtMSAoZGVmYXVsdCkgPSBSVFMvQ1RTIGRpc2FibGVkXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo2MjE4OiAqIEByYWRpb19kZWJ1Z2ZzZGlyOiBQb2ludGVyIHRvIGRlYnVnZnMgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHJhZGlvLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNjIxOS0gKlxcdHNwZWNpZmljIHBhcmFtZXRlcnMuXFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oPTYyMjI9c3RydWN0IHdpcGh5X3JhZGlvX2NmZyB7XFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02MjIzLVxcdHUzMiBydHNfdGhyZXNob2xkO1xcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6NjIyNDpcXHRzdHJ1Y3QgZGVudHJ5ICpyYWRpb19kZWJ1Z2ZzZGlyO1xcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNjIyNS19O1xcbi0tXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02Mjk3PXN0cnVjdCB3aXBoeV9uYW5fY2FwYSB7XFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTYzNTQtICpcXHR1bnJlZ2lzdGVyIGhhcmR3YXJlXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo2MzU1OiAqIEBkZWJ1Z2ZzZGlyOiBkZWJ1Z2ZzIGRpcmVjdG9yeSB1c2VkIGZvciB0aGlzIHdpcGh5IChpZWVlODAyMTEvXFx1MDAzY3dpcGh5bmFtZVxcdTAwM2UpLlxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNjM1Ni0gKlxcdEl0IHdpbGwgYmUgcmVuYW1lZCBhdXRvbWF0aWNhbGx5IG9uIHdpcGh5IHJlbmFtZXNcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg9NjU0Mj1zdHJ1Y3Qgd2lwaHkge1xcbi0tXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02NjM3LVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6NjYzODpcXHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzZGlyO1xcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNjYzOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6NDYuNDcwMzQ2NzI3WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MTAyODIyMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgT3JpZ2lucyBvZiBgd2lwaHktXHUwMDNlZGVidWdmc2RpcmAqKlxuXG5SaWdodCwgc28gYHdpcGh5LVx1MDAzZWRlYnVnZnNkaXJgLi4uIHRoYXQncyBkZWZpbml0ZWx5IGEgZGVidWdmcyBkaXJlY3RvcnkgcmVsYXRlZCB0byBhIHdpcmVsZXNzIHBoeSwgYW5kIEkga25vdyBpdCdzIGNyZWF0ZWQgYnkgY2ZnODAyMTEuIEJ1dCAqaG93KiBpcyBpdCBjcmVhdGVkPyBJcyBpdCBhbiB1bmNvbmRpdGlvbmFsIHRoaW5nLCBvciBkb2VzIGl0IGRlcGVuZCBvbiBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgYmVpbmcgZW5hYmxlZD8gSSBzdXNwZWN0IHRoZXJlJ3MgYSBjb25kaXRpb25hbCBhc3BlY3QgdG8gaXQuIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0ICp3aGVuKiB0aGF0IGRpcmVjdG9yeSBnZXRzIGNyZWF0ZWQuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGl0J3MgdGllZCB0byBlaXRoZXIgYENPTkZJR19DRkc4MDIxMV9ERUJVR0ZTYCBvciBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgIGJlaW5nIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIFRoYXQncyB0aGUgbW9zdCBsaWtlbHkgc2NlbmFyaW8sIGlzbid0IGl0PyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgY29uZmlncyBkcml2ZSB0aGUgaW5zdGFudGlhdGlvbiBvZiB0aGF0IHBhcnRpY3VsYXIgZGVidWdmcyBkaXJlY3RvcnkuIEtub3dpbmcgdGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB3aGVuIGFuZCB3aHkgdGhlIGRpcmVjdG9yeSBhcHBlYXJzLCB3aGljaCB3aWxsIGJlIGVzc2VudGlhbCB3aGVuIEkgZ28gdG8gdHJvdWJsZXNob290IGFueSBmdXR1cmUgaXNzdWVzIHJlbGF0ZWQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Mjk1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6NTEuMzgwNjMxWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Nzk1MzkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWJ1Z2ZzZGlyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL2NvcmUuYz0xMjk9aW50IGNmZzgwMjExX2Rldl9yZW5hbWUoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNDgtXFxubmV0L3dpcmVsZXNzL2NvcmUuYzoxNDk6XFx0ZGVidWdmc19jaGFuZ2VfbmFtZShyZGV2LVxcdTAwM2V3aXBoeS5kZWJ1Z2ZzZGlyLCBcXFwiJXNcXFwiLCBuZXduYW1lKTtcXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE1MC1cXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmM9ODUzPWludCB3aXBoeV9yZWdpc3RlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxcbi0tXFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xMTY5LVxcdC8qIGFkZCB0byBkZWJ1Z2ZzICovXFxubmV0L3dpcmVsZXNzL2NvcmUuYzoxMTcwOlxcdHJkZXYtXFx1MDAzZXdpcGh5LmRlYnVnZnNkaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIod2lwaHlfbmFtZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHkpLFxcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTE3MS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgaWVlZTgwMjExX2RlYnVnZnNfZGlyKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTE3OC1cXHRcXHRcXHRcXHQgIGlkeCk7XFxubmV0L3dpcmVsZXNzL2NvcmUuYzoxMTc5OlxcdFxcdFxcdHdpcGh5LVxcdTAwM2VyYWRpb19jZmdbaWR4XS5yYWRpb19kZWJ1Z2ZzZGlyID1cXG5uZXQvd2lyZWxlc3MvY29yZS5jLTExODAtXFx0XFx0XFx0XFx0ZGVidWdmc19jcmVhdGVfZGlyKHJhZGlvX25hbWUsXFxubmV0L3dpcmVsZXNzL2NvcmUuYzoxMTgxOlxcdFxcdFxcdFxcdFxcdFxcdCAgIHJkZXYtXFx1MDAzZXdpcGh5LmRlYnVnZnNkaXIpO1xcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTE4Mi1cXHRcXHR9XFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jPTEyOTA9dm9pZCB3aXBoeV91bnJlZ2lzdGVyKHN0cnVjdCB3aXBoeSAqd2lwaHkpXFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jLTEzMTQtXFx0ICovXFxubmV0L3dpcmVsZXNzL2NvcmUuYzoxMzE1OlxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShyZGV2LVxcdTAwM2V3aXBoeS5kZWJ1Z2ZzZGlyKTtcXG5uZXQvd2lyZWxlc3MvY29yZS5jLTEzMTYtXFx0bGlzdF9kZWxfcmN1KFxcdTAwMjZyZGV2LVxcdTAwM2VsaXN0KTtcXG4tLVxcbm5ldC93aXJlbGVzcy9kZWJ1Z2ZzLmM9MTI5PXZvaWQgY2ZnODAyMTFfZGVidWdmc19yZGV2X2FkZChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYpXFxubmV0L3dpcmVsZXNzL2RlYnVnZnMuYy0xMzAte1xcbm5ldC93aXJlbGVzcy9kZWJ1Z2ZzLmM6MTMxOlxcdHN0cnVjdCBkZW50cnkgKnBoeWQgPSByZGV2LVxcdTAwM2V3aXBoeS5kZWJ1Z2ZzZGlyO1xcbm5ldC93aXJlbGVzcy9kZWJ1Z2ZzLmMtMTMyLVxcdHN0cnVjdCBkZW50cnkgKnJhZGlvZDtcXG4tLVxcbm5ldC93aXJlbGVzcy9kZWJ1Z2ZzLmMtMTQxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyByZGV2LVxcdTAwM2V3aXBoeS5uX3JhZGlvOyBpKyspIHtcXG5uZXQvd2lyZWxlc3MvZGVidWdmcy5jOjE0MjpcXHRcXHRyYWRpb2QgPSByZGV2LVxcdTAwM2V3aXBoeS5yYWRpb19jZmdbaV0ucmFkaW9fZGVidWdmc2RpcjtcXG5uZXQvd2lyZWxlc3MvZGVidWdmcy5jLTE0My1cXHRcXHRERUJVR0ZTX1JBRElPX0FERChyYWRpb19ydHNfdGhyZXNob2xkLCBpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6NTEuNDY4NTkwMTc3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODkyMzU0NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRGVidWdmcyBEaWxlbW1hKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGB3aXBoeWAgcmVnaXN0cmF0aW9uLiBJdCBzZWVtcyB0aGF0IGB3aXBoeS1cdTAwM2VkZWJ1Z2ZzZGlyYCBnZXRzIGNyZWF0ZWQgcmlnaHQgYXdheSBpbiBgd2lwaHlfcmVnaXN0ZXJgLCBhcyBsb25nIGFzIGBkZWJ1Z2ZzX2NyZWF0ZV9kaXJgIGlzIGRlZmluZWQsIHdoaWNoIG9mIGNvdXJzZSBkZXBlbmRzIG9uIGBDT05GSUdfREVCVUdfRlNgLiBTbywgY2xlYXJseSBgQ09ORklHX0RFQlVHX0ZTYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgaGVyZSwgd2hpY2ggaXNuJ3QgaWRlYWwgZm9yIHJlc291cmNlLWNvbnN0cmFpbmVkIHN5c3RlbXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGFjY2lkZW50YWxseSBnZXQgZW5hYmxlZCB3aGVuIGl0IHNob3VsZG4ndC4gV2FpdCBhIHNlY29uZCwgdGhlIGBkZWJ1Z2ZzLmNgIGZpbGUgd2l0aGluIHRoZSBgbXQ3NmAgZHJpdmVyIHNlZW1zIHRvIGJlIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSwgd2hpY2ggaXMgY29uY2VybmluZy4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNgIHRvIHNlZSBpZiB0aGVyZSdzIGFuIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzI4NiwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODo1NS4yNTc4Mjc4OTZaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdC8qIENvcHlyaWdodCAoQykgMjAyMyBNZWRpYVRlayBJbmMuICovXFxuICAgMzpcXHRcXG4gICA0OlxcdCNpbmNsdWRlIFxcXCJtdDc5MjUuaFxcXCJcXG4gICA1OlxcdCNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG4gICA2OlxcdFxcbiAgIDc6XFx0c3RhdGljIGludFxcbiAgIDg6XFx0bXQ3OTI1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4gICA5OlxcdHtcXG4gIDEwOlxcdFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbiAgMTE6XFx0XFx0dTMyIHJlZ3ZhbCA9IHZhbDtcXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG4gIDE0OlxcdFxcdG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCB0cnVlKTtcXG4gIDE1OlxcdFxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdHJldHVybiAwO1xcbiAgMTg6XFx0fVxcbiAgMTk6XFx0XFxuICAyMDpcXHRzdGF0aWMgaW50XFxuICAyMTpcXHRtdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4gIDIyOlxcdHtcXG4gIDIzOlxcdFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbiAgMjQ6XFx0XFx0dTMyIHJlZ3ZhbDtcXG4gIDI1OlxcdFxcdGludCByZXQ7XFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuICAyODpcXHRcXHRyZXQgPSBtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgZmFsc2UpO1xcbiAgMjk6XFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4gIDMwOlxcdFxcdGlmICghcmV0KVxcbiAgMzE6XFx0XFx0XFx0KnZhbCA9IHJlZ3ZhbDtcXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0cmV0dXJuIDA7XFxuICAzNDpcXHR9XFxuICAzNTpcXHRcXG4gIDM2OlxcdERFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxcbiAgMzc6XFx0XFx0XFx0XFx0IFxcXCIweCUwOGxseFxcXFxuXFxcIik7XFxuICAzODpcXHRzdGF0aWMgaW50XFxuICAzOTpcXHRtdDc5MjVfZndfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuICA0MDpcXHR7XFxuICA0MTpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ZGV2LVxcdTAwM2Vmd19kZWJ1ZyA9ICh1OCl2YWw7XFxuICA0NjpcXHRcXHRtdDc5MjVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBkZXYtXFx1MDAzZWZ3X2RlYnVnKTtcXG4gIDQ3OlxcdFxcbiAgNDg6XFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4gIDQ5OlxcdFxcbiAgNTA6XFx0XFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI4OjU1LjI1NzkzMDU5NloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTcxNDM4MDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1UNzkyNSBNQ1UgUmVnaXN0ZXIgVmFsdWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXQ3OTI1X21jdV9yZWd2YWxgIGZ1bmN0aW9uLiBJdCdzIG9ubHkgZXhwb3NlZCB0aHJvdWdoIHRoZSBkZWJ1Z2ZzIGByZWd2YWxgIGludGVyZmFjZSwgcmlnaHQ/IFRoZSBxdWVzdGlvbiBpcywgaXMgaXQgd29ydGggdGhlIGVmZm9ydCB0byBmdXp6IGl0PyBXZWxsLCBnaXZlbiB0aGF0IHN5emthbGxlciAqZG9lcyogdGFyZ2V0IGRlYnVnZnMgZmlsZXMsIEknZCBzYXkgdGhlIGFuc3dlciBpcyBsaWtlbHkgeWVzLlxuXG5UaGUgcGF0Y2ggSSdtIGV4YW1pbmluZyBhZGRyZXNzZXMgYSBidWcsIGEgbWlzY2FsY3VsYXRpb24gb2YgYGNtZF9sZW5gIGluIGZhY3QsIGFuZCB0aGlzIHNlZW1zIHRvIG9wZW4gdGhlIGRvb3IgdG8gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGlzc3VlcyBvciBldmVuIHRoZSBkcmVhZGVkIE1DVSBmaXJtd2FyZSBjcmFzaC4gQ2xhc3NpYy4gTm93LCB0aGUgY29uZmlncyBuZWVkZWQgdG8gdHJpZ2dlciB0aGlzIHNlZW0gdG8gYmUgYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIG9mIGNvdXJzZSBgREVCVUdfRlNgLlxuXG5IYW5nIG9uIGEgc2Vjb25kLiBgTUFDODAyMTFgIGFuZCBgVVNCYCBhcmUgYmFzaWNhbGx5IGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyNVVgLCB0aGV5IGhhdmUgdG8gYmUgZW5hYmxlZCBmb3IgdGhhdCB0byB3b3JrLiBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgdGhvc2UgYE1UNzkyNVVgIGRlcGVuZGVuY2llcyBhZ2FpbiwganVzdCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM0MiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI4OjU5LjgyOTM3MTlaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIyNTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzkyeF9MSUJcXG4gICA1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDY6XFx0XFxuICAgNzpcXHRjb25maWcgTVQ3OTI1RVxcbiAgIDg6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuICAgOTpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXFxuICAxNDpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMTU6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE1UNzkyNVVcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTVQ3OTJ4X1VTQlxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXFxuICAyNzpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMjg6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6NTkuODI5NDk3MDRaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4Mzk1Nzc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzkyNVUgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgTVQ3OTI1VWAgY29uZmlnIGlzIHRoZSBwcmltYXJ5IGZvY3VzIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgcHJvcGVybHkuIE15IG5leHQgdGhvdWdodCByZXZvbHZlcyBhcm91bmQgYERFQlVHX0ZTYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyBhY3R1YWxseSByZXF1aXJlZCBpbiB0aGlzIHNldHVwLiBMZXQncyBkaWcgaW4gYW5kIHNlZS4gQWgsIHllcywgaXQgYXBwZWFycyB0aGF0IGBkZWJ1Z2ZzYCBpcyBlc3NlbnRpYWw7IGl0J3MgdGhlIG1lY2hhbmlzbSB0aGF0IGV4cG9zZXMgYHJlZ3ZhbGAuIEV4Y2VsbGVudC4gSG93ZXZlciwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgd2hlcmUgZWxzZSBgbXQ3OTI1X21jdV9yZWd2YWxgIGlzIGVtcGxveWVkLiBJdCBtaWdodCBhZmZlY3Qgb3RoZXIgY29kZSBwYXRocyB0aGF0IGFyZSBub3QgcmVsYXRlZCB0byBgREVCVUdfRlNgLiBMZXQncyB0YWtlIGEgbG9vayBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2AgZGlyZWN0b3J5IGFuZCBzZWUgd2hhdCBwb3BzIHVwLCBlbnN1cmluZyBJJ20gY29uc2lkZXJpbmcgdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTI2OSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI5OjAzLjcxMzQ1OTQxNloiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ4MDQzMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X21jdV9yZWd2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz04PW10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ6XFx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXFx1MDAzZW10NzYuZGVidWdmc19yZWcsIFxcdTAwMjZyZWd2YWwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxPW10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OlxcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NT1FWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3NzppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTQwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcmVndmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zODM9aW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozODY6aW50IG10NzkyNV9tY3VfcmVndmFsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzg3LWludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjk6MDMuNzc4MjY4NTk0WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjEwOTkyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVidWdnaW5nIHRoZSBEZWJ1Z0ZTIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGlzIGBkZWJ1Z2ZzLmNgIGZpbGUuIFJpZ2h0LCBJIHNlZSBpdCdzIG9ubHkgYmVpbmcgdXNlZCB0aGVyZS4gVGhhdCBzdWdnZXN0cyBgREVCVUdfRlNgIGlzIGEgcmVxdWlyZW1lbnQuIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSBzdXJlLiBIb2xkIG9uLCB3YXNuJ3QgdGhlcmUgc29tZXRoaW5nIGFib3V0IGBNQUM4MDIxMV9ERUJVR0ZTYD8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgcGFydGljdWxhciBkcml2ZXIsIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNgLCBpc24ndCBhbHNvIGFmZmVjdGVkIGJ5IHRoaXMgZmxhZy4gSSdsbCBuZWVkIHRvIGdvIHRocm91Z2ggaXQgYWdhaW4gYW5kIGNvbmZpcm0gdGhhdCBgREVCVUdfRlNgIGlzIHRoZSBvbmx5IHByZS1yZXF1aXNpdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNTI5LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjk6MDYuOTk5MzcyMzQxWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjg0MzEyNywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUFDODAyMTFfREVCVUdGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI5OjA3LjA3MjIyMTYzOFoiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Nzg1Njg3MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgVGFyZ2V0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpdCBkb2Vzbid0IHNlZW0gdG8gYmUgbGV2ZXJhZ2luZyBgTUFDODAyMTFfREVCVUdGU2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBCdXQgd2FpdCwgYHdpcGh5X3JlZ2lzdGVyYCBkb2VzIGNyZWF0ZSBgZGVidWdmc2RpcmAgdW5jb25kaXRpb25hbGx5IGlmIGBERUJVR19GU2AgaXMgZW5hYmxlZCwgc28gdGhhdCdzIGFjdHVhbGx5IHRoZSBrZXkuIFRoZSBgREVCVUdfRlNgIGNvbmZpZ3VyYXRpb24gc2VlbXMgdG8gYmUgc3VmZmljaWVudC5cblxuTGV0IG1lIHplcm8gaW4gb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBgbXQ3OTI1X21jdV9yZWd2YWxgLCBhbmQgc2VlIGlmIGl0J3MgdGhlIG9ubHkgcmVsZXZhbnQgcGFydC4gWWVwLCBpdCBpcy4gVGhlIGNoYW5nZSBpcyBpc29sYXRlZCB0aGVyZS5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IEFic29sdXRlbHkuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciwgYW5kIHRoYXQgZHJpdmVyICh0aGUgbXQ3OTI1IFVTQiBXaS1GaSBkcml2ZXIpIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBkZWJ1Z2ZzLiBUaGF0IGlzIGZ1enphYmxlLlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9ucy4gVGhlIGltbWVkaWF0ZSBvbmVzIHNlZW0gdG8gYmUgYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBERUJVR19GU2AuIEhvbGQgb24sIGBNQUM4MDIxMWAgYW5kIGBVU0JgIGFyZSBkZXBlbmRlbmNpZXMgb2YgYE1UNzkyNVVgLiBTbywgSSdsbCBsaXN0IGBNVDc5MjVVYCwgYE1BQzgwMjExYCwgYFVTQmAsIGBERUJVR19GU2AuXG5cbkhhbmcgb24sIGBNQUM4MDIxMWAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgQ0ZHODAyMTFgLiBCdXQgdGhhdCdzIG5vdCBhIGRpcmVjdCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY3kgdG8gbGlzdCwgc28gSSBjYW4gc3RpY2sgd2l0aCBteSBsaXN0IG9mIGBNVDc5MjVVYCwgYE1BQzgwMjExYCwgYFVTQmAsIGFuZCBgREVCVUdfRlNgLlxuXG5KdXN0IHRvIGNvbmZpcm0sIGBNVDc5MjVVYCBpcyB0aGUgY29ycmVjdCBjb25maWcsIGFuZCBJIHNlZSBpdCdzIGZvciB0aGUgVVNCIGRyaXZlci4gT2theSwgYWxsIGdvb2QgdGhlcmUuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoYXQgYG10NzkyNV9tY3VfcmVndmFsYCBpc24ndCBzdGF0aWMgYW5kIGlzIGV4cG9ydGVkLCBzbyBpdCdzIGFjY2Vzc2libGUuIFllcCwgaXQgaXMgZXhwb3J0ZWQgdmlhIGBFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3JlZ3ZhbClgLlxuXG5TbywgaGVyZSdzIHRoZSBmaW5hbCBicmVha2Rvd246XG5cbiogICAqKldvcnRoRnV6emluZzogdHJ1ZSoqXG4qICAgKipGb2N1c1N5bWJvbHM6IFxcW1wibXQ3OTI1XFxfbWN1XFxfcmVndmFsXCJcXF0qKlxuKiAgICoqRW5hYmxlQ29uZmlnczogXFxbXCJNVDc5MjVVXCIsIFwiTUFDODAyMTFcIiwgXCJVU0JcIiwgXCJERUJVR1xcX0ZTXCJcXF0qKlxuKiAgICoqUmVhc29uaW5nOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGNvbW1hbmQgbGVuZ3RoIGNhbGN1bGF0aW9uIGluIG10NzkyNVxcX21jdVxcX3JlZ3ZhbCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBkZWJ1Z2ZzIGluIHRoZSBtdDc5MjUgVVNCIFdpLUZpIGRyaXZlci4gVGhpcyBkcml2ZXIgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15IEhDRCwgbWFraW5nIGl0IGZ1enphYmxlLlwiKipcblxuXG4iLCJJbnB1dFRva2VucyI6MzA4MTEsIk91dHB1dFRva2VucyI6MTI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI5OjE0Ljg1NzkxMTI0WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0OTk3NDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJERUJVR19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNV9tY3VfcmVndmFsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBjb21tYW5kIGxlbmd0aCBjYWxjdWxhdGlvbiBpbiBtdDc5MjVfbWN1X3JlZ3ZhbCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBkZWJ1Z2ZzIGluIHRoZSBtdDc5MjUgVVNCIFdpLUZpIGRyaXZlci4gVGhpcyBkcml2ZXIgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15IEhDRCwgbWFraW5nIGl0IGZ1enphYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X21jdV9yZWd2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGNvbW1hbmQgbGVuZ3RoIGNhbGN1bGF0aW9uIGluIG10NzkyNV9tY3VfcmVndmFsLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIGRlYnVnZnMgaW4gdGhlIG10NzkyNSBVU0IgV2ktRmkgZHJpdmVyLiBUaGlzIGRyaXZlciBjYW4gYmUgZW11bGF0ZWQgdmlhIFVTQiBnYWRnZXQvZHVtbXkgSENELCBtYWtpbmcgaXQgZnV6emFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowrs4q9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 02:25:41 +0000 UTC FinishedAt: 2026-08-05 02:29:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MAC80211", "USB", "DEBUG_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MAC80211", "USB", "DEBUG_FS" ], "series_id": "07b142bd-49fc-46aa-8fd5-80d04e02b326" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_mcu_regval" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X21jdV9yZWd2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBjb21tYW5kIGxlbmd0aCBjYWxjdWxhdGlvbiBpbiBtdDc5MjVfbWN1X3JlZ3ZhbCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBkZWJ1Z2ZzIGluIHRoZSBtdDc5MjUgVVNCIFdpLUZpIGRyaXZlci4gVGhpcyBkcml2ZXIgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15IEhDRCwgbWFraW5nIGl0IGZ1enphYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2EwNWJjZWQ4ZmNiYTIxYjM1YmQ5NTA4MDI2NWFkMjM4YzYyNjhiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMDI6Mjc6MzEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuaW5kZXggZmEyOWM0ODZhNDU1My4uODI4ZjBiNGE3YmU2YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuQEAgLTk5LDYgJiM0Mzs5OSw3IEBAIGludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpXG4gXHRcdH07XG4gXHR9IF9fcGFja2VkICogcmVzLCByZXE7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuJiM0MztcdGludCBjbWRfbGVuO1xuIFx0aW50IHJldDtcbiBcbiBcdGlmICh1MzJfZ2V0X2JpdHMocmVnaWR4LCBNVF9SRl9SRUdfSERSKSA9PSBSRl9SRUdfUFJFRklYKSB7XG5AQCAtMTA3LDIwICYjNDM7MTA4LDIyIEBAIGludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpXG4gXHRcdHJlcS5yZl9yZWcuYW50ID0gY3B1X3RvX2xlMTYodTMyX2dldF9iaXRzKHJlZ2lkeCwgTVRfUkZfUkVHX0FOVCkpO1xuIFx0XHRyZXEucmZfcmVnLmlkeCA9IGNwdV90b19sZTMyKHJlZ2lkeCk7XG4gXHRcdHJlcS5yZl9yZWcuZGF0YSA9IHNldCA/IGNwdV90b19sZTMyKCp2YWwpIDogMDtcbiYjNDM7XHRcdGNtZF9sZW4gPSBzaXplb2YocmVxLl9fcnN2KSAmIzQzOyBzaXplb2YocmVxLnJmX3JlZyk7XG4gXHR9IGVsc2Uge1xuIFx0XHRyZXEucmVnLnRhZyA9IGNwdV90b19sZTE2KFVOSV9DTURfQUNDRVNTX1JFR19CQVNJQyk7XG4gXHRcdHJlcS5yZWcubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS5yZWcpKTtcbiBcdFx0cmVxLnJlZy5pZHggPSBjcHVfdG9fbGUzMihyZWdpZHgpO1xuIFx0XHRyZXEucmVnLmRhdGEgPSBzZXQgPyBjcHVfdG9fbGUzMigqdmFsKSA6IDA7XG4mIzQzO1x0XHRjbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgJiM0Mzsgc2l6ZW9mKHJlcS5yZWcpO1xuIFx0fVxuIFxuIFx0aWYgKHNldClcbiBcdFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRChSRUdfQUNDRVNTKSxcbi1cdFx0XHRcdFx0IFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUpO1xuJiM0MztcdFx0XHRcdFx0IFx1MDAyNnJlcSwgY21kX2xlbiwgdHJ1ZSk7XG4gXG4gXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LFxuIFx0XHRcdFx0XHRNQ1VfV01fVU5JX0NNRF9RVUVSWShSRUdfQUNDRVNTKSxcbi1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbiYjNDM7XHRcdFx0XHRcdFx1MDAyNnJlcSwgY21kX2xlbiwgdHJ1ZSwgXHUwMDI2c2tiKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X21jdV9yZWd2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBjb21tYW5kIGxlbmd0aCBjYWxjdWxhdGlvbiBpbiBtdDc5MjVfbWN1X3JlZ3ZhbCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBkZWJ1Z2ZzIGluIHRoZSBtdDc5MjUgVVNCIFdpLUZpIGRyaXZlci4gVGhpcyBkcml2ZXIgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15IEhDRCwgbWFraW5nIGl0IGZ1enphYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2EwNWJjZWQ4ZmNiYTIxYjM1YmQ5NTA4MDI2NWFkMjM4YzYyNjhiMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDUgMDI6Mjc6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jCmluZGV4IGZhMjljNDg2YTQ1NTMuLjgyOGYwYjRhN2JlNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jCkBAIC05OSw2ICYjNDM7OTksNyBAQCBpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KQogCQl9OwogCX0gX19wYWNrZWQgKiByZXMsIHJlcTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwlpbnQgY21kX2xlbjsKIAlpbnQgcmV0OwogCiAJaWYgKHUzMl9nZXRfYml0cyhyZWdpZHgsIE1UX1JGX1JFR19IRFIpID09IFJGX1JFR19QUkVGSVgpIHsKQEAgLTEwNywyMCAmIzQzOzEwOCwyMiBAQCBpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KQogCQlyZXEucmZfcmVnLmFudCA9IGNwdV90b19sZTE2KHUzMl9nZXRfYml0cyhyZWdpZHgsIE1UX1JGX1JFR19BTlQpKTsKIAkJcmVxLnJmX3JlZy5pZHggPSBjcHVfdG9fbGUzMihyZWdpZHgpOwogCQlyZXEucmZfcmVnLmRhdGEgPSBzZXQgPyBjcHVfdG9fbGUzMigqdmFsKSA6IDA7CiYjNDM7CQljbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgJiM0Mzsgc2l6ZW9mKHJlcS5yZl9yZWcpOwogCX0gZWxzZSB7CiAJCXJlcS5yZWcudGFnID0gY3B1X3RvX2xlMTYoVU5JX0NNRF9BQ0NFU1NfUkVHX0JBU0lDKTsKIAkJcmVxLnJlZy5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLnJlZykpOwogCQlyZXEucmVnLmlkeCA9IGNwdV90b19sZTMyKHJlZ2lkeCk7CiAJCXJlcS5yZWcuZGF0YSA9IHNldCA/IGNwdV90b19sZTMyKCp2YWwpIDogMDsKJiM0MzsJCWNtZF9sZW4gPSBzaXplb2YocmVxLl9fcnN2KSAmIzQzOyBzaXplb2YocmVxLnJlZyk7CiAJfQogCiAJaWYgKHNldCkKIAkJcmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKCZhbXA7ZGV2LSZndDttdDc2LCBNQ1VfV01fVU5JX0NNRChSRUdfQUNDRVNTKSwKLQkJCQkJICZhbXA7cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSk7CiYjNDM7CQkJCQkgJmFtcDtyZXEsIGNtZF9sZW4sIHRydWUpOwogCiAJcmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZygmYW1wO2Rldi0mZ3Q7bXQ3NiwKIAkJCQkJTUNVX1dNX1VOSV9DTURfUVVFUlkoUkVHX0FDQ0VTUyksCi0JCQkJCSZhbXA7cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgJmFtcDtza2IpOwomIzQzOwkJCQkJJmFtcDtyZXEsIGNtZF9sZW4sIHRydWUsICZhbXA7c2tiKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2UgaW4gYG10NzkyNV9tY3VfcmVndmFsYCB0byBjYWxjdWxhdGUgYGNtZF9sZW5gIGluc3RlYWQgb2Ygc2ltcGx5IHVzaW5nIGBzaXplb2YocmVxKWAuIFJpZ2h0IGF3YXksIEkgc2VlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYSBwb3RlbnRpYWwgYnVnIGZpeCBvciBvcHRpbWl6YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIGVzcGVjaWFsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzaW5jZSBJIGtub3cgdGhvc2UgY2FuIHNvbWV0aW1lcyBleHBvc2Ugc3VidGxlIGlzc3VlcyB3aXRoIGRyaXZlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZS4KCmBtdDc5MjVgLi4uIHRoYXQmIzM5O3MgdGhlIE1lZGlhVGVrIFdpLUZpIDcgZHJpdmVyLCByaWdodD8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGEgUENJZSBvciBVU0IgZHJpdmVyIGJlY2F1c2UgdGhhdCBjb250ZXh0IHdpbGwgYmUgaW1wb3J0YW50LiBMZXQgbWUgdGFrZSBhIHF1aWNrIHBlZWsgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9gIGRpcmVjdG9yeSBhbmQgc2VlIGlmIHRoZSB1bmRlcmx5aW5nIGNvbW11bmljYXRpb24gc2NoZW1lIGlzIG9idmlvdXMgZnJvbSB0aGUgZmlsZXMgd2l0aGluLiBHb3R0YSBhc3Nlc3MgdGhlIGFjY2VzcyBtZXRob2QgZm9yIGFueSBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDttYWMuYyYjMzQ7LAogICAgJiMzNDttYWMuaCYjMzQ7LAogICAgJiMzNDttYWluLmMmIzM0OywKICAgICYjMzQ7bWN1LmMmIzM0OywKICAgICYjMzQ7bWN1LmgmIzM0OywKICAgICYjMzQ7bXQ3OTI1LmgmIzM0OywKICAgICYjMzQ7bmFuLmMmIzM0OywKICAgICYjMzQ7bmFuLmgmIzM0OywKICAgICYjMzQ7cGNpLmMmIzM0OywKICAgICYjMzQ7cGNpX21hYy5jJiMzNDssCiAgICAmIzM0O3BjaV9tY3UuYyYjMzQ7LAogICAgJiMzNDtyZWdkLmMmIzM0OywKICAgICYjMzQ7cmVnZC5oJiMzNDssCiAgICAmIzM0O3JlZ3MuaCYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5jJiMzNDssCiAgICAmIzM0O3VzYi5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTAxCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCBxdWljayBtZW50YWwgc2NhbiwgYXMgYSBzZWFzb25lZCBkZXZlbG9wZXI6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogRGV2aWNlIEFyY2hpdGVjdHVyZSAmYW1wOyBQb3RlbnRpYWwgRW11bGF0aW9uIFBhdGhzKioKCkFscmlnaHQsIHRoZSBwcmVzZW5jZSBvZiBgdXNiLmNgIGFuZCBgcGNpLmNgIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgc3lzdGVtIGlzIGRlc2lnbmVkIHRvIGludGVyZmFjZSB3aXRoIGVpdGhlciBVU0Igb3IgUENJIGJ1c2VzLiBUaGF0IG9wZW5zIHVwIGEgZmV3IGludGVyZXN0aW5nIGF2ZW51ZXMgZm9yIGVtdWxhdGlvbiBvciB0ZXN0aW5nLiBJJiMzOTttIHRoaW5raW5nLCBwb3RlbnRpYWxseSwgYSBVU0IgZ2FkZ2V0IHNldHVwIG9yIGV2ZW4gdGhlIG9sZCBkdW1teSBIQ0QgYXBwcm9hY2ggY291bGQgZG8gdGhlIHRyaWNrIGlmIEkgd2FudCB0byBzaW11bGF0ZSBVU0IgZGV2aWNlIGJlaGF2aW9yLiBPZiBjb3Vyc2UsIHN5emthbGxlciYjMzk7cyB2aGNpIGlzIGFsd2F5cyBhIGNvbnRlbmRlciBmb3IgbW9yZSBjb250cm9sbGVkIGFuZCBwb3RlbnRpYWxseSBtb3JlIGluc2lnaHRmdWwgZnV6emluZy4KCk5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBhIGxpa2VseSBhcmVhIG9mIGludGVyZXN0IOKAkyBmaXJtd2FyZSBvciByZWdpc3RlciBhY2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpbnRlcmFjdHMgd2l0aCBpdHMgTUNVLiBUbyB0aGF0IGVuZCwgSSBzaG91bGQgaW52ZXN0aWdhdGUgYG10NzkyNV9tY3VfcmVndmFsYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgbG9va3MgcHJvbWlzaW5nIOKAkyByZWdpc3RlciB2YWx1ZSBhY2Nlc3Mgd2l0aGluIHRoZSBNQ1UgZnJhbWV3b3JrLiBJdCBzaG91bGQgZ2l2ZSBtZSBzb21lIGNyaXRpY2FsIGluc2lnaHRzIGludG8gaXRzIHVuZGVybHlpbmcgaGFyZHdhcmUgaW50ZXJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X21jdV9yZWd2YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTg9bXQ3OTI1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0Olx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxPW10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNy1cdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg6XHRyZXQgPSBtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcdTAwMjZyZWd2YWwsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOS1cdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9NzU9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjc3OmludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTM5LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjE0MDpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3JlZ3ZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzgzPWludCBtdDc5MjVfc2V0X3R4X3Nhcl9wd3Ioc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6Mzg2OmludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzg3LWludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzk2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYG10NzkyNV9tY3VfcmVndmFsYCoqCgpSaWdodCwgc28gYG10NzkyNV9tY3VfcmVndmFsYCBhcHBlYXJzIHRvIGJlIGNvbmZpbmVkIHRvIGBkZWJ1Z2ZzLmNgLiBUaGF0IHNlZW1zLi4uIG9kZC4gSXMgaXQgdHJ1bHkgb25seSB1c2VkIHdpdGhpbiB0aGF0IHNwZWNpZmljIGZpbGU/IEkgbmVlZCB0byB2ZXJpZnkgaXRzIHZpc2liaWxpdHkuCgpGaXJzdCwgbGV0JiMzOTtzIGNoZWNrIHRoZSBzeW1ib2wgZXhwb3J0IHN0YXR1cy4gT2theSwgaXQgKmlzKiBleHBvcnRlZCwgbWVhbmluZyBpdCYjMzk7cyBwb3RlbnRpYWxseSBhY2Nlc3NpYmxlIG91dHNpZGUgb2YgYGRlYnVnZnMuY2AuIE5vdywgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gVGltZSBmb3IgYSBmdWxsLXNjYWxlIHNlYXJjaC4gSSYjMzk7bGwgc2NvdXIgdGhlIGVudGlyZSBjb2RlIHRyZWUgZm9yIGFueSBvdGhlciBvY2N1cnJlbmNlcyBvZiBgbXQ3OTI1X21jdV9yZWd2YWxgLiBUaGlzIHdpbGwgY29uZmlybSB3aGV0aGVyIHRoaXMgdmFyaWFibGUgaXMgZ2VudWluZWx5IGxvY2FsIG9yIGlzIGJlaW5nIGFjY2Vzc2VkIGVsc2V3aGVyZSwgcG9zc2libHkgd2l0aCB1bmludGVuZGVkIGNvbnNlcXVlbmNlcy4gVGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNvdWxkIHZhcnksIHNvIEkmIzM5O2xsIHN0YXkgYXR0ZW50aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9tY3VfcmVndmFsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz04PW10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzLVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcdG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTUtXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMT1tdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjctXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4Olx0cmV0ID0gbXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjktXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTc1PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3NzppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9yZWd2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM4Mz1pbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM4NjppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4Ny1pbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU5NQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGhpcyBEZWJ1Z2ZzIEVudHJ5OiBBIFF1aWNrIEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhpcyBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBkZWJ1Z2ZzLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBJcyB0aGlzIGV2ZW4gKndvcnRoKiB0aGUgZWZmb3J0IG9mIGZ1enppbmc/IERlYnVnZnMsIGJ5IGl0cyBuYXR1cmUsIGlzIHVzdWFsbHkgYWNjZXNzaWJsZSB3aXRoIHJvb3QgcHJpdmlsZWdlcywgYW5kIG15IGV4cGVyaWVuY2Ugd2l0aCBzeXprYWxsZXIgdGVsbHMgbWUgaXQgKmRvZXMqIHRhcmdldCBkZWJ1Z2ZzIGVudHJpZXMuIEJ1dCBJIG5lZWQgdG8gYmUgc3VyZTsganVzdCBiZWNhdXNlIHN5emthbGxlciBmdXp6ZXMgZGVidWdmcyBpbiBnZW5lcmFsIGRvZXNuJiMzOTt0IG1lYW4gKnRoaXMqIHNwZWNpZmljIGZpbGUgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGFuZCBpbnRlcmVzdGluZy4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIGBtdDc5MjVfcmVnX3NldGAgYW5kIGBtdDc5MjVfcmVnX2dldGAgdG8gc2VlIGlmIHRoZXkmIzM5O3JlIGFjdHVhbGx5IHJlbGV2YW50IHRvIGZ1enppbmcuIEdvdHRhIGNoZWNrIHRoZSBjYWxsIHNpdGVzIHRvIGRldGVybWluZSBpZiB0aGVyZSYjMzk7cyBhbnkgcmVhbGlzdGljIGNoYW5jZSBvZiB0cmlnZ2VyaW5nIGludGVyZXN0aW5nIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjVfcmVnX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODptdDc5MjVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMT1tdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc5MjVfcmVnX2dldCwgbXQ3OTI1X3JlZ19zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzctXHRcdFx0IFwmIzM0OzB4JTA4bGx4XFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE5OQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBmb3BzX3JlZ3ZhbGAgVXNhZ2UqKgoKQWxyaWdodCwgc28gdGhlIGNvZGUmIzM5O3MgcG9pbnRlZCBtZSB0b3dhcmRzIGBmb3BzX3JlZ3ZhbGAuIFRpbWUgdG8gZGlnIGluLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIHV0aWxpemF0aW9uIG9mIHRoaXMgc3BlY2lmaWMgdmFyaWFibGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgbWFuaXB1bGF0ZWQuIFRoZSBnb2FsIGhlcmUgaXMgYSBxdWljaywgZGVlcCBkaXZlIGludG8gdGhlIGNvZGUuIExldCYjMzk7cyBzZWUgaG93IGl0JiMzOTtzIGJlaW5nIGVtcGxveWVkIHRocm91Z2hvdXQgdGhlIHByb2plY3QuIFdoZXJlIGFyZSB0aGUgcmVmZXJlbmNlcyB0byB0aGlzIG9uZT8gSXMgaXQgYSBrZXkgdG8gYSBzcGVjaWZpYyBwcm9jZXNzPyBJcyBpdCByZWxhdGVkIHRvIEkvTz8gT3IgYXJlIHdlIHRhbGtpbmcgbWVtb3J5PwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmb3BzX3JlZ3ZhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE9bXQ3OTI1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM3LVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI4OT1pbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjkzOlx0ZGlyID0gbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIFx1MDAyNmZvcHNfcmVndmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NzMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbXQ3OTI1YCBEcml2ZXIgRGVidWdmcyBJbnRlcmZhY2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgYG10NzkyNWAgZHJpdmVyIGV4cG9zZXMgaXRzIGludGVybmFsIHJlZ2lzdGVycy4gVGhlIGNvZGUgdGVsbHMgbWUgaXQmIzM5O3MgZG9uZSB0aHJvdWdoIGBtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wc2AuIEFoLCByaWdodCwgdGhhdCBmdW5jdGlvbiByZWdpc3RlcnMgdGhlIGByZWd2YWxgIGRlYnVnZnMgZmlsZS4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBJIGNhbiBpbnRlcmFjdCB3aXRoIGl0OyBpcyB0aGlzIGRyaXZlciBldmVuIGFjY2Vzc2libGUgaW4gbXkgUUVNVSBzZXR1cD8gTGV0JiMzOTtzIHNlZS4uLiBZZXAsIGxvb2tzIGxpa2UgdGhlIGBtdDc5MjVgIGRyaXZlciAqZG9lcyogaGF2ZSBhIFVTQiBkcml2ZXIgKGB1c2IuY2ApLiBQZXJmZWN0LiBOb3csIG15IG5leHQgbW92ZSBpcyB0byBjaGVjayB0aGUgVVNCIGRyaXZlciBzcGVjaWZpY2FsbHkgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuY2ApIHRvIGNvbmZpcm0gaG93IGl0JiMzOTtzIGJlaW5nIHJlZ2lzdGVyZWQgYXMgYSBVU0IgZHJpdmVyLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIGhvdyB0byBob29rIGludG8gdGhlIHN5c3RlbSB0byBzdGFydCB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VzYl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzUzPU1PRFVMRV9GSVJNV0FSRShNVDc5MjVfUk9NX1BBVENIKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM1NTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTI1dV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNTYtXHQubmFtZVx0XHQ9IEtCVUlMRF9NT0ROQU1FLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2Ny19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzY4Om1vZHVsZV91c2JfZHJpdmVyKG10NzkyNXVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM5NgoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDM4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIFVTQiBEcml2ZXIqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBVU0IgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBvZiBmdXp6aW5nIHBvdGVudGlhbCB1c2luZyBlaXRoZXIgYSBVU0IgZ2FkZ2V0IG9yIGEgZHVtbXkgSENEIHNldHVwLiBUaGUgdGFyZ2V0IGlzIHRoZSBgbXQ3OTI1X21jdV9yZWd2YWxgIGZ1bmN0aW9uLCBhbmQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBhY2Nlc3NpYmxlIHZpYSBkZWJ1Z2ZzIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uIFRoYXQgbWFrZXMgaXQgbW9yZSBhY2Nlc3NpYmxlIHRvIG1hbmlwdWxhdGlvbi4gVGhlIHF1ZXN0aW9uIG5vdyBpczogaXMgaXQgd29ydGggdGhlIGVmZm9ydCBvZiBhIGZ1enppbmcgY2FtcGFpZ24/CgpUaGUgcGF0Y2ggaXRzZWxmIHBvaW50cyB0byBhbiBpc3N1ZSB3aGVyZSBgc2l6ZW9mKHJlcSlgIHdhcyB1c2VkIGluIHRoZSBsZW5ndGggY2FsY3VsYXRpb24sIHJhdGhlciB0aGFuIHRoZSBpbnRlbmRlZCBgY21kX2xlbmAuIEFscmlnaHQsIHNvIGByZXFgIGlzIGEgdW5pb24uIFRoYXQgbWVhbnMgYHNpemVvZihyZXEpYCB3aWxsIHJlc29sdmUgdG8gdGhlIHNpemUgb2YgaXRzIGxhcmdlc3QgbWVtYmVyLCB3aGljaCBpcyBwcm9iYWJseSBhIHByb2JsZW0uIEJ1dCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYHJlcWAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uIG9rYXksIGhlcmUgaXQgaXM6CgpgYGBjCglzdHJ1Y3QgewoJCV9fbGUxNiB0YWc7CgkJX19sZTE2IGxlbjsKCQl1bmlvbiB7CgkJCXN0cnVjdCB7CgkJCQlfX2xlMzIgaWR4OwoJCQkJX19sZTMyIGRhdGE7CgkJCX0gcmVnOwoJCQlzdHJ1Y3QgewoJCQkJX19sZTE2IGFudDsKCQkJCV9fbGUxNiByc3Y7CgkJCQlfX2xlMzIgaWR4OwoJCQkJX19sZTMyIGRhdGE7CgkJCX0gcmZfcmVnOwoJCX07Cgl9IF9fcGFja2VkICogcmVzLCByZXE7CmBgYAoKQWgsIHJpZ2h0LiBOb3cgSSBnZXQgaXQuIFRoZSBwYXRjaCAqaXRzZWxmKiBkb2VzbiYjMzk7dCBsb29rIGxpa2UgaXQmIzM5O3MgdGhlIGFjdHVhbCBjb2RlLiBJdCYjMzk7cyBqdXN0IHNob3dpbmcgdGhlIGByZXFgIHN0cnVjdCwgYnV0IGRvZXNuJiMzOTt0IHNob3cgYW55IG1vZGlmaWNhdGlvbnMuIFRoaXMgbWVhbnMgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGxvb2tpbmcgYXQgdGhlIGFjdHVhbCBkZWZpbml0aW9uIG9mIGByZXFgIGluIGBtdDc5MjVfbWN1X3JlZ3ZhbGAuIE5vdyBsZXQgbWUgc2VlIHdoYXQmIzM5O3MgcmVhbGx5IGhhcHBlbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzc6XHRpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuICA3ODpcdHtcbiAgNzk6XHQjZGVmaW5lIE1UX1JGX1JFR19IRFIgICAgICAgICAgIEdFTk1BU0soMzEsIDI0KVxuICA4MDpcdCNkZWZpbmUgTVRfUkZfUkVHX0FOVCAgICAgICAgICAgR0VOTUFTSygyMywgMTYpXG4gIDgxOlx0I2RlZmluZSBSRl9SRUdfUFJFRklYICAgICAgICAgICAweDk5XG4gIDgyOlx0XHRzdHJ1Y3Qge1xuICA4MzpcdFx0XHR1OCBfX3Jzdls0XTtcbiAgODQ6XHRcdFx0dW5pb24ge1xuICA4NTpcdFx0XHRcdHN0cnVjdCB1bmlfY21kX2FjY2Vzc19yZWdfYmFzaWMge1xuICA4NjpcdFx0XHRcdFx0X19sZTE2IHRhZztcbiAgODc6XHRcdFx0XHRcdF9fbGUxNiBsZW47XG4gIDg4Olx0XHRcdFx0XHRfX2xlMzIgaWR4O1xuICA4OTpcdFx0XHRcdFx0X19sZTMyIGRhdGE7XG4gIDkwOlx0XHRcdFx0fSBfX3BhY2tlZCByZWc7XG4gIDkxOlx0XHRcdFx0c3RydWN0IHVuaV9jbWRfYWNjZXNzX3JmX3JlZ19iYXNpYyB7XG4gIDkyOlx0XHRcdFx0XHRfX2xlMTYgdGFnO1xuICA5MzpcdFx0XHRcdFx0X19sZTE2IGxlbjtcbiAgOTQ6XHRcdFx0XHRcdF9fbGUxNiBhbnQ7XG4gIDk1Olx0XHRcdFx0XHR1OCBfX3JzdlsyXTtcbiAgOTY6XHRcdFx0XHRcdF9fbGUzMiBpZHg7XG4gIDk3Olx0XHRcdFx0XHRfX2xlMzIgZGF0YTtcbiAgOTg6XHRcdFx0XHR9IF9fcGFja2VkIHJmX3JlZztcbiAgOTk6XHRcdFx0fTtcbiAxMDA6XHRcdH0gX19wYWNrZWQgKiByZXMsIHJlcTtcbiAxMDE6XHRcdHN0cnVjdCBza19idWZmICpza2I7XG4gMTAyOlx0XHRpbnQgY21kX2xlbjtcbiAxMDM6XHRcdGludCByZXQ7XG4gMTA0Olx0XG4gMTA1Olx0XHRpZiAodTMyX2dldF9iaXRzKHJlZ2lkeCwgTVRfUkZfUkVHX0hEUikgPT0gUkZfUkVHX1BSRUZJWCkge1xuIDEwNjpcdFx0XHRyZXEucmZfcmVnLnRhZyA9IGNwdV90b19sZTE2KFVOSV9DTURfQUNDRVNTX1JGX1JFR19CQVNJQyk7XG4gMTA3Olx0XHRcdHJlcS5yZl9yZWcubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS5yZl9yZWcpKTtcbiAxMDg6XHRcdFx0cmVxLnJmX3JlZy5hbnQgPSBjcHVfdG9fbGUxNih1MzJfZ2V0X2JpdHMocmVnaWR4LCBNVF9SRl9SRUdfQU5UKSk7XG4gMTA5Olx0XHRcdHJlcS5yZl9yZWcuaWR4ID0gY3B1X3RvX2xlMzIocmVnaWR4KTtcbiAxMTA6XHRcdFx0cmVxLnJmX3JlZy5kYXRhID0gc2V0ID8gY3B1X3RvX2xlMzIoKnZhbCkgOiAwO1xuIDExMTpcdFx0XHRjbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgJiM0Mzsgc2l6ZW9mKHJlcS5yZl9yZWcpO1xuIDExMjpcdFx0fSBlbHNlIHtcbiAxMTM6XHRcdFx0cmVxLnJlZy50YWcgPSBjcHVfdG9fbGUxNihVTklfQ01EX0FDQ0VTU19SRUdfQkFTSUMpO1xuIDExNDpcdFx0XHRyZXEucmVnLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEucmVnKSk7XG4gMTE1Olx0XHRcdHJlcS5yZWcuaWR4ID0gY3B1X3RvX2xlMzIocmVnaWR4KTtcbiAxMTY6XHRcdFx0cmVxLnJlZy5kYXRhID0gc2V0ID8gY3B1X3RvX2xlMzIoKnZhbCkgOiAwO1xuIDExNzpcdFx0XHRjbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgJiM0Mzsgc2l6ZW9mKHJlcS5yZWcpO1xuIDExODpcdFx0fVxuIDExOTpcdFxuIDEyMDpcdFx0aWYgKHNldClcbiAxMjE6XHRcdFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRChSRUdfQUNDRVNTKSxcbiAxMjI6XHRcdFx0XHRcdFx0IFx1MDAyNnJlcSwgY21kX2xlbiwgdHJ1ZSk7XG4gMTIzOlx0XG4gMTI0Olx0XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LFxuIDEyNTpcdFx0XHRcdFx0XHRNQ1VfV01fVU5JX0NNRF9RVUVSWShSRUdfQUNDRVNTKSxcbiAxMjY6XHRcdFx0XHRcdFx0XHUwMDI2cmVxLCBjbWRfbGVuLCB0cnVlLCBcdTAwMjZza2IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTcyCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIE1DVSBDb21tYW5kIExlbmd0aCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyB0aGUgbGVuZ3RoIG9mIHRoZSBjb21tYW5kIGJlaW5nIHNlbnQgdG8gdGhlIE1DVS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIHRhbmdpYmxlIGZpeC4gVGhlIG5leHQgbG9naWNhbCBxdWVzdGlvbjogaXMgdGhpcyBldmVuIHRlc3RhYmxlPyBBbmQsIHllcywgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhY2Nlc3NpYmxlIHRocm91Z2ggYGRlYnVnZnNgLCB3aGljaCBpcyBncmVhdCBmb3IgdGFyZ2V0ZWQgdGVzdGluZy4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgZHJpdmVyLCBhbmQgY29uc2lkZXJpbmcgdGhlIE1DVSBjb21tdW5pY2F0aW9uIGNhbiBiZSBlbXVsYXRlZCBvdmVyIFVTQiwgZnV6emluZyBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgYSB2YWx1YWJsZSBhcHByb2FjaCB0byBldmFsdWF0ZSBzdGFiaWxpdHkuIEhvbGQgb24sIHRob3VnaC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgbXQ3OTI1X21jdV9yZWd2YWxgIGlzICpleGNsdXNpdmVseSogcmVhY2hlZCB2aWEgZGVidWdmcy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlIHRvIGJlIGNlcnRhaW4gaXQmIzM5O3Mgbm90IGV4cG9zZWQgZWxzZXdoZXJlIGFuZCBjb3VsZCBiZSBhIG1vcmUgd2lkZS1yZWFjaGluZyBjaGFuZ2UgdGhhbiBpdCBhcHBlYXJzLiBOZWVkIHRvIHZlcmlmeSBpdHMgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9tY3VfcmVndmFsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz04PW10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzLVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcdG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTUtXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMT1tdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjctXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4Olx0cmV0ID0gbXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjktXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTc1PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3NzppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9yZWd2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM4Mz1pbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM4NjppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4Ny1pbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDA0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWJ1Z2ZzLmM6IEEgUXVpY2sgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyB0aGlzIGlzIG9ubHkgdXNlZCBpbiBgZGVidWdmcy5jYC4gSG1tbSwgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGlzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyBJIG1lYW4sIGl0JiMzOTtzIG5vdCBhIHdpZGVseSB1c2VkIGZlYXR1cmUsIGFuZCB0aGUgaW5pdGlhbCBpbnN0aW5jdCBtaWdodCBiZSB0byBmb2N1cyBvbiBtb3JlIGNyaXRpY2FsIGFyZWFzLiBIb3dldmVyLCBJIHJlY2FsbCBzeXprYWxsZXIgdGFyZ2V0aW5nIGRlYnVnZnMsIHdoaWNoIGRlZmluaXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJZiBpdCYjMzk7cyBhbHJlYWR5IGluIHRoZWlyIGZ1enppbmcgdGFyZ2V0cywgdGhlcmUgbXVzdCBiZSBhIHJlYXNvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBtaWdodCBiZSBuZWVkZWQgdG8gZW5hYmxlIHRoaXMgcGFydCBvZiBkZWJ1Z2ZzIHRvIGVuc3VyZSB0aGUgZnV6emVyIGlzIGFjdHVhbGx5IGhpdHRpbmcgaXQuIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AuIFRoYXQgc2hvdWxkIHByb3ZpZGUgc29tZSBjbGFyaXR5IG9uIHRoZSBkZXBlbmRlbmNpZXMuIFRoaXMgaXMgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzkyeF9MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFxuICAgNzpcdGNvbmZpZyBNVDc5MjVFXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4gICA5Olx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAxMDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXG4gIDE0Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAxNTpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIE1UNzkyNVVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMjI6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDI0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxuICAyNzpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMjg6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTE4MQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gTmVlZHMqKgoKT2theSwgc28gSSYjMzk7bSBjb25maWd1cmluZyB0aGlzIHN5c3RlbSwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IHdlIGRlZmluaXRlbHkgbmVlZCB0aGUgYE1UNzkyNVVgIG1vZHVsZS4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBkcml2ZXIgd2UmIzM5O3JlIHVzaW5nLCB3aGljaCBpbiB0dXJuIG1lYW5zIHdlJiMzOTtsbCBhbHNvIG5lZWQgdGhlIGNvbW1vbiBjb21wb25lbnRzIGluY2x1ZGVkIHZpYSBgTVQ3OTI1X0NPTU1PTmAuIFRoYXQgbWFrZXMgc2Vuc2UuIFdlJiMzOTtyZSBhbHNvIGdvaW5nIHRvIGJlIHJlbHlpbmcgb24gYE1BQzgwMjExYCBhbmQgb2J2aW91c2x5IG5lZWQgYFVTQmAgc3VwcG9ydCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLiBIb2xkIG9uLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBJZiBgTVQ3OTI1X0NPTU1PTmAgaXMgdGhlIG9uZSBjb21waWxpbmcgYG1jdS5jYCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGF0JiMzOTtzIHRoZSBjb3JyZWN0IGJlaGF2aW9yLiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYE1ha2VmaWxlYCB0byBiZSBzdXJlLiBJdCYjMzk7cyBiZXN0IHRvIGJlIHByZWNpc2UsIGVzcGVjaWFsbHkgd2hlbiBidWlsZGluZyB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0XG4gICAzOlx0b2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICYjNDM7PSBtdDc5MjUtY29tbW9uLm9cbiAgIDQ6XHRvYmotJChDT05GSUdfTVQ3OTI1RSkgJiM0Mzs9IG10NzkyNWUub1xuICAgNTpcdG9iai0kKENPTkZJR19NVDc5MjVVKSAmIzQzOz0gbXQ3OTI1dS5vXG4gICA2Olx0XG4gICA3Olx0bXQ3OTI1LWNvbW1vbi15IDo9IG1hYy5vIG1jdS5vIHJlZ2QubyBtYWluLm8gaW5pdC5vIGRlYnVnZnMubyBuYW4ub1xuICAgODpcdG10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbiAgIDk6XHRtdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xuICAxMDpcdG10NzkyNXUteSA6PSB1c2Iub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTcxNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIE1UNzkyNSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgZW5hYmxpbmcgYG1jdS5jYCBmb3IgdGhlIE1UNzkyNSwgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3Mgd2l0aGluIGBtdDc5MjUtY29tbW9uLXlgLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhhdCBzdWdnZXN0cyB0aGF0IGBDT05GSUdfTVQ3OTI1VWAgc2hvdWxkIGJlIGVub3VnaCB0byBwdWxsIGl0IGluLiBCdXQgbm93IEkmIzM5O20gcXVlc3Rpb25pbmcgd2hldGhlciBJIGhhdmUgdGhlIGRlYnVnZnMgZW5hYmxlZCBjb3JyZWN0bHkuIEkgcmVjYWxsIHRoYXQgZGVidWdmcyBzdXBwb3J0IGlzIGNvbnRyb2xsZWQgYnkgZGlmZmVyZW50IEtjb25maWcgb3B0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHdpcmVsZXNzIGRyaXZlciBmcmFtZXdvcmsuIElzIGl0IGBDT05GSUdfTUFDODAyMTFfREVCVUdGU2Agb3Igc29tZXRoaW5nIHNwZWNpZmljIHRvIE1UNzYsIGxpa2UgYENPTkZJR19NVDc2X0RFQlVHRlNgPyBUaW1lIHRvIGRyaWxsIGRvd24gaW50byB0aGUgS2NvbmZpZyBmb3IgdGhlIE1lZGlhdGVrIGRyaXZlciBpdHNlbGYsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYC4gSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBvcHRpb24gaGFuZGxlcyB0aGUgZGVidWcgZmlsZXN5c3RlbSB2aXNpYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtERUJVR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM9MTc9bXQ3Nl9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM6MjU6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc2X3JlZ19nZXQsIG10NzZfcmVnX3NldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jLTI2LVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM9NDM9bXQ3Nl9uYXBpX3RocmVhZGVkX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jOjUxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX25hcGlfdGhyZWFkZWQsIG10NzZfbmFwaV90aHJlYWRlZF9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy01Mi1cdFx0XHQgbXQ3Nl9uYXBpX3RocmVhZGVkX3NldCwgXCYjMzQ7JWxsdVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jPTYxPW10NzYwM19lZGNjYV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jLTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jOjY5OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2VkY2NhLCBtdDc2MDNfZWRjY2FfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jLTcwLVx0XHRcdCBtdDc2MDNfZWRjY2Ffc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTg9bXQ3NjE1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI5OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3NjE1X3JlZ19nZXQsIG10NzYxNV9yZWdfc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTMwLVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTMzPW10NzYxNV9yYWRhcl9wYXR0ZXJuX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yYWRhcl9wYXR0ZXJuLCBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQ5LVx0XHRcdCBtdDc2MTVfcmFkYXJfcGF0dGVybl9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz01MT1zdGF0aWMgaW50IG10NzYxNV9jb25maWcodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NjM6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfY29uZmlnLCBOVUxMLCBtdDc2MTVfY29uZmlnLCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy02NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9ODM9bXQ3NjE1X3Njc19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjkyOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3NjcywgbXQ3NjE1X3Njc19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtOTMtXHRcdFx0IG10NzYxNV9zY3Nfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTM3PW10NzYxNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxNDY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG0sIG10NzYxNV9wbV9nZXQsIG10NzYxNV9wbV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTc5PW10NzYxNV9wbV9pZGxlX3RpbWVvdXRfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTg4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3NjE1X3BtX2lkbGVfdGltZW91dF9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTg5LVx0XHRcdCBtdDc2MTVfcG1faWRsZV90aW1lb3V0X3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTIwOD1tdDc2MTVfZGJkY19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZGJkYywgbXQ3NjE1X2RiZGNfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIxOC1cdFx0XHQgbXQ3NjE1X2RiZGNfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MjM4PW10NzYxNV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNDc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzYxNV9md19kZWJ1Z19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjQ4LVx0XHRcdCBtdDc2MTVfZndfZGVidWdfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MjUxPW10NzYxNV9yZXNldF90ZXN0X3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjcyOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0X3Rlc3QsIE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjczLVx0XHRcdCBtdDc2MTVfcmVzZXRfdGVzdF9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz00Mjc9bXQ3NjE1X3JmX3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MzY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmZfcmVnLCBtdDc2MTVfcmZfcmVnX2dldCwgbXQ3NjE1X3JmX3JlZ19zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDM3LVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2RlYnVnZnMuYz0xMDY9bXQ3Nl9lZGNjYV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2RlYnVnZnMuYy0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfZGVidWdmcy5jOjExNDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19lZGNjYSwgbXQ3Nl9lZGNjYV9nZXQsIG10NzZfZWRjY2Ffc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2RlYnVnZnMuYy0xMTUtXHRcdFx0IFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0zNT1tdDc5MTVfaW1wbGljaXRfdHhiZl9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjQ0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2ltcGxpY2l0X3R4YmYsIG10NzkxNV9pbXBsaWNpdF90eGJmX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00NS1cdFx0XHQgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjAxPW10NzkxNV9yYWRhcl90cmlnZ2VyKHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTIyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMjc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfdHJpZ2dlciwgTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yMjgtXHRcdFx0IG10NzkxNV9yYWRhcl90cmlnZ2VyLCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjQyPW10NzkxNV9tdXJ1X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjI1MTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19tdXJ1X2RlYnVnLCBtdDc5MTVfbXVydV9kZWJ1Z19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjUyLVx0XHRcdCBtdDc5MTVfbXVydV9kZWJ1Z19zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01NDk9bXQ3OTE1X2Z3X2RlYnVnX3dtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU1ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193bSwgbXQ3OTE1X2Z3X2RlYnVnX3dtX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NTktXHRcdFx0IG10NzkxNV9md19kZWJ1Z193bV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01ODM9bXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU5MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193YSwgbXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01OTMtXHRcdFx0IG10NzkxNV9md19kZWJ1Z193YV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz02NDI9bXQ3OTE1X2Z3X2RlYnVnX2Jpbl9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzo2NTE6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfYmluLCBtdDc5MTVfZndfZGVidWdfYmluX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy02NTItXHRcdFx0IG10NzkxNV9md19kZWJ1Z19iaW5fc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MTI3MD1tdDc5MTVfcmZfcmVndmFsX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjEyNzg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmZfcmVndmFsLCBtdDc5MTVfcmZfcmVndmFsX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjc5LVx0XHRcdCBtdDc5MTVfcmZfcmVndmFsX3NldCwgXCYjMzQ7MHglMDhsbHhcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0xMzc2PWJvb2wgbXQ3OTE1X2RlYnVnZnNfcnhfbG9nKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEzODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTM4NzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMzg4LS8qKiBwZXItc3RhdGlvbiBkZWJ1Z2ZzICoqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzc2PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkxNV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4MjUtXHRDRkc4MDIxMV9URVNUTU9ERV9EVU1QKG10NzZfdGVzdG1vZGVfZHVtcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxODI2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jLTE4MjctXHQuc3RhX2FkZF9kZWJ1Z2ZzID0gbXQ3OTE1X3N0YV9hZGRfZGVidWdmcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaD02Mzc9Ym9vbCBtdDc5MTVfZGVidWdmc19yeF9sb2coc3RydWN0IG10NzkxNV9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo2Mzg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC02Mzktdm9pZCBtdDc5MTVfc3RhX2FkZF9kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xOT1tdDc5MjFfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MzA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc5MjFfcmVnX2dldCwgbXQ3OTIxX3JlZ19zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMzEtXHRcdFx0IFwmIzM0OzB4JTA4bGx4XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9NDg9bXQ3OTIxX2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6NTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzkyMV9md19kZWJ1Z19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNTgtXHRcdFx0IG10NzkyMV9md19kZWJ1Z19zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xNzY9bXQ3OTIxX3BtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE4NTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTIxX3BtX2dldCwgbXQ3OTIxX3BtX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTg2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yMTI9bXQ3OTIxX2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjIxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RzLCBtdDc5MjFfZGVlcF9zbGVlcF9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjIyLVx0XHRcdCBtdDc5MjFfZGVlcF9zbGVlcF9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMjQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG1faWRsZV90aW1lb3V0LCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMjUtXHRcdFx0IG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjI3PXN0YXRpYyBpbnQgbXQ3OTIxX2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI0ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZXNldCwgTlVMTCwgbXQ3OTIxX2NoaXBfcmVzZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI0OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE9bXQ3OTI1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM3LVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTU0PW10NzkyNV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjYzOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnLCBtdDc5MjVfZndfZGVidWdfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTY0LVx0XHRcdCBtdDc5MjVfZndfZGVidWdfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE1PW10NzkyNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG0sIG10NzkyNV9wbV9nZXQsIG10NzkyNV9wbV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjUxPW10NzkyNV9kZWVwX3NsZWVwX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19kcywgbXQ3OTI1X2RlZXBfc2xlZXBfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI2MS1cdFx0XHQgbXQ3OTI1X2RlZXBfc2xlZXBfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjYzOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjY0LVx0XHRcdCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI2Nj1zdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTM3PW10Nzk5Nl9pbXBsaWNpdF90eGJmX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfaW1wbGljaXRfdHhiZiwgbXQ3OTk2X2ltcGxpY2l0X3R4YmZfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ3LVx0XHRcdCBtdDc5OTZfaW1wbGljaXRfdHhiZl9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0yMjM9bXQ3OTk2X3JhZGFyX3RyaWdnZXIodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjI2MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yYWRhcl90cmlnZ2VyLCBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTI2My1cdFx0XHQgbXQ3OTk2X3JhZGFyX3RyaWdnZXIsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zNjA9bXQ3OTk2X2Z3X2RlYnVnX3dtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM2OTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193bSwgbXQ3OTk2X2Z3X2RlYnVnX3dtX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zNzAtXHRcdFx0IG10Nzk5Nl9md19kZWJ1Z193bV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zODk9bXQ3OTk2X2Z3X2RlYnVnX3dhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM5ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193YSwgbXQ3OTk2X2Z3X2RlYnVnX3dhX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zOTktXHRcdFx0IG10Nzk5Nl9md19kZWJ1Z193YV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz00NDg9bXQ3OTk2X2Z3X2RlYnVnX2Jpbl9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo0NTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWdfYmluLCBtdDc5OTZfZndfZGVidWdfYmluX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NTgtXHRcdFx0IG10Nzk5Nl9md19kZWJ1Z19iaW5fc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9ODYyPW10Nzk5Nl9yZl9yZWd2YWxfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTg2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzo4NzA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmZfcmVndmFsLCBtdDc5OTZfcmZfcmVndmFsX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NzEtXHRcdFx0IG10Nzk5Nl9yZl9yZWd2YWxfc2V0LCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTk1OT1ib29sIG10Nzk5Nl9kZWJ1Z2ZzX3J4X2xvZyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTcwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk3MS0vKiogcGVyLXN0YXRpb24gZGVidWdmcyAqKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjU0NT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5OTZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNTkzLVx0LnR3dF90ZWFyZG93bl9yZXF1ZXN0ID0gbXQ3OTk2X3R3dF90ZWFyZG93bl9yZXF1ZXN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI1OTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjU5NS1cdC5zdGFfYWRkX2RlYnVnZnMgPSBtdDc5OTZfc3RhX2FkZF9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oPTkzND1pbnQgbXQ3OTk2X21jdV9zZXRfZW1sc3JfbW9kZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTkzNy1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2VtbF9wYXJhbXMgKmVtbF9wYXJhbXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg6OTM4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtOTM5LXZvaWQgbXQ3OTk2X3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNTcKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBjb2RlOgoKKipDb25kaXRpb25hbCBDb21waWxhdGlvbiBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgc2VlIGBtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wc2AgYmVpbmcgY2FsbGVkIHdpdGhpbiBgbXQ3OTI1X2luaXRfZGVidWdmc2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCB3aGV0aGVyIGBtdDc5MjVfaW5pdF9kZWJ1Z2ZzYCBpdHNlbGYgaXMgY29tcGlsZWQgY29uZGl0aW9uYWxseS4gV2Uga25vdyBob3cgTWVkaWF0ZWsgYW5kIHRoZWlyIGRyaXZlciBtb2R1bGVzIGNhbiBiZSwgYW5kIGl0JiMzOTtzIGFsd2F5cyB3b3J0aCB2ZXJpZnlpbmcgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGEgY29uZmlndXJhdGlvbiBmbGFnIG9yIGEgcGxhdGZvcm0tc3BlY2lmaWMgY2hlY2sgc3Vycm91bmRpbmcgdGhhdCBmdW5jdGlvbi4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgY291bGQgYmUgY3J1Y2lhbCB0byBzb21lIGRvd25zdHJlYW0gaXNzdWUuIEkmIzM5O2xsIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzIGFuZCBzdXJyb3VuZGluZyBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gVGhpcyBraW5kIG9mIGRldGFpbCBjYW4gc2F2ZSBhIGxvdCBvZiBkZWJ1Z2dpbmcgdGltZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X2luaXRfZGVidWdmcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Mjg3PURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjVfY2hpcF9yZXNldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OTppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jPTE5MD1zdGF0aWMgdm9pZCBtdDc5MjVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIxOTpcdHJldCA9IG10NzkyNV9pbml0X2RlYnVnZnMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzIxPWludCBtdDc5MjVfaW5pdF9tbG9fY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMyMjppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MTYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2YgdGhpcy4KCioqRGVidWdnaW5nIHRoZSBEZXBlbmRlbmN5IFB1enpsZSoqCgpBbHJpZ2h0LCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGEgZGVwZW5kZW5jeSBpc3N1ZSwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gc29tZXRoaW5nIGJlaW5nICphbHdheXMqIGNvbXBpbGVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7T2theSwgaXQmIzM5O3MgYWx3YXlzIGNvbXBpbGVkLiYjMzQ7IFRoYXQgbGVhZHMgbWUgdG8gYSBxdWljayByZWFsaXphdGlvbiB0aGF0IGBkZWJ1Z2ZzLm9gIGlzIGNvbnNpc3RlbnRseSBwcmVzZW50IHdpdGhpbiBgbXQ3OTI1LWNvbW1vbi15YC4gU28sIG15IG5leHQgYXNzdW1wdGlvbiwgdGhlbiwgaXMgdGhhdCBzaW1wbHkgZW5hYmxpbmcgYENPTkZJR19NVDc5MjVVYCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBlbmFibGUgaXQuIEJ1dCB0aGVuIEkgaGl0IGEgc25hZy4gV2hhdCBhYm91dCBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgPyBEb2VzICp0aGF0KiBjb21lIGludG8gcGxheSBzb21laG93PyBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0LiBUaGVyZWZvcmUsIEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBmdW5jdGlvbiBgbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHNgIGhhcyBhIGRlcGVuZGVuY3kgb24gYENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTYCB0byBkZXRlcm1pbmUgaWYgSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZyBpbXBvcnRhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM9MTAzPXN0cnVjdCBkZW50cnkgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM6MTA0Om10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKHN0cnVjdCBtdDc2X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMtMTA1LVx0XHRcdCAgIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKm9wcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy0xMjUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM6MTI2OkVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzMzPXN0cnVjdCBtdDc2X3BoeSAqbXQ3Nl92aWZfcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMzM2OnN0cnVjdCBkZW50cnkgKm10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKHN0cnVjdCBtdDc2X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTMzNy1cdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpvcHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTMzOD1zdGF0aWMgaW5saW5lIHN0cnVjdCBkZW50cnkgKm10NzZfcmVnaXN0ZXJfZGVidWdmcyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMzkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTM0MDpcdHJldHVybiBtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhcdTAwMjZkZXYtXHUwMDNlcGh5LCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzNDEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz01NDg9aW50IG10NzYxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzYxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjU1MjpcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBcdTAwMjZmb3BzX3JlZ3ZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0xMjgxPWludCBtdDc5MTVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEyODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTI4NzpcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKHBoeS1cdTAwM2VtdDc2LCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjg4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yNjQ9aW50IG10NzkyMV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI2ODpcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBcdTAwMjZmb3BzX3JlZ3ZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yODk9aW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI5MzpcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBcdTAwMjZmb3BzX3JlZ3ZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjk0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz04NzM9aW50IG10Nzk5Nl9pbml0X2RlYnVnZnMoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg3NzpcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTkzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuY2AgZmlsZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIGl0cyBkZXBlbmRlbmN5LCBvciBsYWNrIHRoZXJlb2YsIG9uIHRoZSBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBLbm93aW5nIHRoaXMgaXMgY3JpdGljYWwsIGFzIGl0IGRpcmVjdGx5IGltcGFjdHMgaG93IEkgYXBwcm9hY2ggZGVidWdnaW5nIGFuZCBmZWF0dXJlIGVuYWJsZW1lbnQgcmVsYXRlZCB0byB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVycywgYW5kIGhvdyBJIGNvbnNpZGVyIHJlbGF0ZWQgY29kZSBwYXRocy4gVW5kZXJzdGFuZGluZyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncyBsaWtlIHRoaXMgaXMgY29yZSB0byBlZmZlY3RpdmVseSBuYXZpZ2F0aW5nIGFuZCBtb2RpZnlpbmcga2VybmVsIG1vZHVsZXMsIGVzcGVjaWFsbHkgb25lcyB3aXRoIHNvIG1hbnkgY29uZmlndXJhYmxlIGNvbXBvbmVudHMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtERUJVR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODE3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgb2YgdGhlIHRob3VnaHQgcHJvY2VzcyBkZXNjcmliZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc2IE1ha2VmaWxlKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhlIE1lZGlhdGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVyLiBUaGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgYW55IGtlcm5lbCBtb2R1bGUgYnVpbGQgcHJvY2VzcyBpcyB0aGUgYE1ha2VmaWxlYCwgc28gbGV0JiMzOTtzIGhlYWQgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlYC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgc3RhbmRhcmQgc3RydWN0dXJlIGhlcmU6IG9iamVjdCBmaWxlIGRlZmluaXRpb25zLCBkZXBlbmRlbmN5IHRyYWNraW5nLCBtYXliZSBzb21lIHBsYXRmb3JtLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBhbmQgaG9wZWZ1bGx5IGEgd2VsbC1jb21tZW50ZWQgb3JnYW5pemF0aW9uLiBJJiMzOTtsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgY2x1ZXMgYWJvdXQgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIGZpcm13YXJlIGxvYWRpbmcsIHBvd2VyIG1hbmFnZW1lbnQgaG9va3MsIGFuZCBhbnkgdW51c3VhbCBidWlsZCBmbGFncyBvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgTVQ3NiBjaGlwc2V0IHZhcmlhbnRzLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciB3aGVyZSBJ4oCZbGwgZmluZCB0aGUgcGFpbiBwb2ludHMsIGRlcGVuZGluZy4gTGV04oCZcyBzZWUgd2hhdCB0aGV5JiMzOTt2ZSBjb29rZWQgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdG9iai0kKENPTkZJR19NVDc2X0NPUkUpICYjNDM7PSBtdDc2Lm9cbiAgIDM6XHRvYmotJChDT05GSUdfTVQ3Nl9VU0IpICYjNDM7PSBtdDc2LXVzYi5vXG4gICA0Olx0b2JqLSQoQ09ORklHX01UNzZfU0RJTykgJiM0Mzs9IG10NzYtc2Rpby5vXG4gICA1Olx0b2JqLSQoQ09ORklHX01UNzZ4MDJfTElCKSAmIzQzOz0gbXQ3NngwMi1saWIub1xuICAgNjpcdG9iai0kKENPTkZJR19NVDc2eDAyX1VTQikgJiM0Mzs9IG10NzZ4MDItdXNiLm9cbiAgIDc6XHRvYmotJChDT05GSUdfTVQ3Nl9DT05OQUNfTElCKSAmIzQzOz0gbXQ3Ni1jb25uYWMtbGliLm9cbiAgIDg6XHRvYmotJChDT05GSUdfTVQ3OTJ4X0xJQikgJiM0Mzs9IG10NzkyeC1saWIub1xuICAgOTpcdG9iai0kKENPTkZJR19NVDc5MnhfVVNCKSAmIzQzOz0gbXQ3OTJ4LXVzYi5vXG4gIDEwOlx0XG4gIDExOlx0bXQ3Ni15IDo9IFxcXG4gIDEyOlx0XHRtbWlvLm8gdXRpbC5vIHRyYWNlLm8gZG1hLm8gbWFjODAyMTEubyBkZWJ1Z2ZzLm8gZWVwcm9tLm8gXFxcbiAgMTM6XHRcdHR4Lm8gYWdnLXJ4Lm8gbWN1Lm8gd2VkLm8gc2Nhbi5vIGNoYW5uZWwub1xuICAxNDpcdFxuICAxNTpcdGlmZGVmIENPTkZJR19NVDc2X05QVVxuICAxNjpcdCMgQ09ORklHX01UNzZfTlBVIGlzIHRyaXN0YXRlIHRvIHNpbXBsaWZ5IGRlcGVuZGVuY3kgdHJhY2tpbmcsXG4gIDE3Olx0IyBidXQgaXQgYmVoYXZlcyBhcyBhIGJvb2wgc3ltYm9sIGhlcmUuXG4gIDE4Olx0bXQ3Ni15ICYjNDM7PSBucHUub1xuICAxOTpcdGVuZGlmXG4gIDIwOlx0bXQ3Ni0kKENPTkZJR19QQ0kpICYjNDM7PSBwY2kub1xuICAyMTpcdG10NzYtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbiAgMjI6XHRcbiAgMjM6XHRtdDc2LXVzYi15IDo9IHVzYi5vIHVzYl90cmFjZS5vXG4gIDI0Olx0bXQ3Ni1zZGlvLXkgOj0gc2Rpby5vIHNkaW9fdHhyeC5vXG4gIDI1Olx0XG4gIDI2Olx0Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcbiAgMjc6XHRDRkxBR1NfdXNiX3RyYWNlLm8gOj0gLUkkKHNyYylcbiAgMjg6XHRDRkxBR1NfbXQ3NngwMl90cmFjZS5vIDo9IC1JJChzcmMpXG4gIDI5Olx0Q0ZMQUdTX210NzkyeF90cmFjZS5vIDo9IC1JJChzcmMpXG4gIDMwOlx0XG4gIDMxOlx0bXQ3NngwMi1saWIteSA6PSBtdDc2eDAyX3V0aWwubyBtdDc2eDAyX21hYy5vIG10NzZ4MDJfbWN1Lm8gXFxcbiAgMzI6XHRcdFx0IG10NzZ4MDJfZWVwcm9tLm8gbXQ3NngwMl9waHkubyBtdDc2eDAyX21taW8ubyBcXFxuICAzMzpcdFx0XHQgbXQ3NngwMl90eHJ4Lm8gbXQ3NngwMl90cmFjZS5vIG10NzZ4MDJfZGVidWdmcy5vIFxcXG4gIDM0Olx0XHRcdCBtdDc2eDAyX2Rmcy5vIG10NzZ4MDJfYmVhY29uLm9cbiAgMzU6XHRcbiAgMzY6XHRtdDc2eDAyLXVzYi15IDo9IG10NzZ4MDJfdXNiX21jdS5vIG10NzZ4MDJfdXNiX2NvcmUub1xuICAzNzpcdFxuICAzODpcdG10NzYtY29ubmFjLWxpYi15IDo9IG10NzZfY29ubmFjX21jdS5vIG10NzZfY29ubmFjX21hYy5vIG10NzZfY29ubmFjM19tYWMub1xuICAzOTpcdFxuICA0MDpcdG10NzkyeC1saWIteSA6PSBtdDc5MnhfY29yZS5vIG10NzkyeF9tYWMubyBtdDc5MnhfdHJhY2UubyBcXFxuICA0MTpcdFx0XHRtdDc5MnhfZGVidWdmcy5vIG10NzkyeF9kbWEub1xuICA0MjpcdG10NzkyeC1saWItJChDT05GSUdfQUNQSSkgJiM0Mzs9IG10NzkyeF9hY3BpX3Nhci5vXG4gIDQzOlx0bXQ3OTJ4LXVzYi15IDo9IG10NzkyeF91c2Iub1xuICA0NDpcdFxuICA0NTpcdG9iai0kKENPTkZJR19NVDc2eDBfQ09NTU9OKSAmIzQzOz0gbXQ3NngwL1xuICA0NjpcdG9iai0kKENPTkZJR19NVDc2eDJfQ09NTU9OKSAmIzQzOz0gbXQ3NngyL1xuICA0NzpcdG9iai0kKENPTkZJR19NVDc2MDNFKSAmIzQzOz0gbXQ3NjAzL1xuICA0ODpcdG9iai0kKENPTkZJR19NVDc2MTVfQ09NTU9OKSAmIzQzOz0gbXQ3NjE1L1xuICA0OTpcdG9iai0kKENPTkZJR19NVDc5MTVFKSAmIzQzOz0gbXQ3OTE1L1xuICA1MDpcdG9iai0kKENPTkZJR19NVDc5MjFfQ09NTU9OKSAmIzQzOz0gbXQ3OTIxL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI0NQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyB0aGUgTVQ3NiBEZWJ1Z2ZzIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIGBkZWJ1Z2ZzLm9gIGlzIGNvbnNpc3RlbnRseSBiZWluZyBidWlsdCBpbnRvIHRoZSBgbXQ3NmAgbW9kdWxlIOKAkyB0aGF0JiMzOTtzIGEgZ2l2ZW4sIHBhcnQgb2YgdGhlIHN0YW5kYXJkIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIEkgc2VlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgc28gdGhhdCYjMzk7cyBleHBlY3RlZC4gV2hlcmUgZG9lcyB0aGlzIGZ1bmN0aW9uYWxpdHkgYWN0dWFsbHkgKmxpdmUqPyYjMzQ7IFRoZW4sIGl0IGNsaWNrczogYG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzYCBpcyBzaXR0aW5nIHJpZ2h0IHRoZXJlIGluIGBkZWJ1Z2ZzLmNgLiBOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBhcmlzZXM6IERvZXMgdGhpcyBmdW5jdGlvbiAqYWN0dWFsbHkqIGNyZWF0ZSBhbnkgZGVidWdmcyBmaWxlcyBvciBpcyBpdCBqdXN0IGRlY2xhcmluZyB0aGUgc2V0dXA/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGRvaW5nIHdoYXQgaXRzIG5hbWUgaW1wbGllcywgb3IgZWxzZSBJIGFtIGxvb2tpbmcgYXQgYSBtaXNjb25maWd1cmF0aW9uLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHNlZSB3aGF0IGl0IGRvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMDpcdH1cbiAxMDE6XHRFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3NlcV9wdXRzX2FycmF5KTtcbiAxMDI6XHRcbiAxMDM6XHRzdHJ1Y3QgZGVudHJ5ICpcbiAxMDQ6XHRtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSxcbiAxMDU6XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpvcHMpXG4gMTA2Olx0e1xuIDEwNzpcdFx0Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZm9wcyA9IG9wcyA/IG9wcyA6IFx1MDAyNmZvcHNfcmVndmFsO1xuIDEwODpcdFx0c3RydWN0IG10NzZfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuIDEwOTpcdFx0c3RydWN0IGRlbnRyeSAqZGlyO1xuIDExMDpcdFxuIDExMTpcdFx0ZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKFwmIzM0O210NzZcJiMzNDssIHBoeS1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VkZWJ1Z2ZzZGlyKTtcbiAxMTI6XHRcbiAxMTM6XHRcdGRlYnVnZnNfY3JlYXRlX3U4KFwmIzM0O2xlZF9waW5cJiMzNDssIDA2MDAsIGRpciwgXHUwMDI2cGh5LVx1MDAzZWxlZHMucGluKTtcbiAxMTQ6XHRcdGRlYnVnZnNfY3JlYXRlX3UzMihcJiMzNDtyZWdpZHhcJiMzNDssIDA2MDAsIGRpciwgXHUwMDI2ZGV2LVx1MDAzZWRlYnVnZnNfcmVnKTtcbiAxMTU6XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfdW5zYWZlKFwmIzM0O3JlZ3ZhbFwmIzM0OywgMDYwMCwgZGlyLCBkZXYsIGZvcHMpO1xuIDExNjpcdFx0ZGVidWdmc19jcmVhdGVfZmlsZV91bnNhZmUoXCYjMzQ7bmFwaV90aHJlYWRlZFwmIzM0OywgMDYwMCwgZGlyLCBkZXYsXG4gMTE3Olx0XHRcdFx0XHQgICBcdTAwMjZmb3BzX25hcGlfdGhyZWFkZWQpO1xuIDExODpcdFx0ZGVidWdmc19jcmVhdGVfYmxvYihcJiMzNDtlZXByb21cJiMzNDssIDA0MDAsIGRpciwgXHUwMDI2ZGV2LVx1MDAzZWVlcHJvbSk7XG4gMTE5Olx0XHRpZiAoZGV2LVx1MDAzZW90cC5kYXRhKVxuIDEyMDpcdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9ibG9iKFwmIzM0O290cFwmIzM0OywgMDQwMCwgZGlyLCBcdTAwMjZkZXYtXHUwMDNlb3RwKTtcbiAxMjE6XHRcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlZGV2LCBcJiMzNDtyeC1xdWV1ZXNcJiMzNDssIGRpcixcbiAxMjI6XHRcdFx0XHRcdCAgICBtdDc2X3J4X3F1ZXVlc19yZWFkKTtcbiAxMjM6XHRcbiAxMjQ6XHRcdHJldHVybiBkaXI7XG4gMTI1Olx0fVxuIDEyNjpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUwNjkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBEZWJ1Z2ZzIERpcmVjdG9yeSoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBwaHktJmd0O2h3LSZndDt3aXBoeS0mZ3Q7ZGVidWdmc2RpcmAgaXMgYmVpbmcgdXNlZCBoZXJlLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rLCAmIzM0O0FoLCB0aGF0JiMzOTtzIGEgbWFjODAyMTEgdGhpbmcuJiMzNDsgTWFjODAyMTEgaXMgdGhlIHVzdWFsIGN1bHByaXQgZm9yIGRlYnVnZnMgaW50ZWdyYXRpb24gaW4gdGhlIHdpcmVsZXNzIHN0YWNrLiBUaGUgcXVlc3Rpb24gbm93IGlzOiB3aGVuICpleGFjdGx5KiBkb2VzIG1hYzgwMjExIGNyZWF0ZSB0aGlzIGRpcmVjdG9yeT8gSXMgaXQgY29uZGl0aW9uYWwsIG9yIGlzIGl0IGFsd2F5cyB0aGVyZT8gU3BlY2lmaWNhbGx5LCBkb2VzIGl0IG9ubHkgY3JlYXRlIGBkZWJ1Z2ZzZGlyYCB3aGVuIGBDT05GSUdfTUFDODAyMTFfREVCVUdGU2AgaXMgZW5hYmxlZD8gVGltZSB0byBkaWcgaW50byB0aGUgc291cmNlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGVpdGhlciBgaW5jbHVkZS9uZXQvbWFjODAyMTEuaGAgZm9yIHRoZSBtYWNybyBkZWZpbml0aW9ucyBvciBwb3NzaWJseSBgbmV0L21hYzgwMjExL2RlYnVnZnMuY2AgdG8gc2VlIHRoZSBhY3R1YWwgZGlyZWN0b3J5IGNyZWF0aW9uIGxvZ2ljLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBhbnN3ZXIgd2lsbCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVidWdmc2RpciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L21hYzgwMjExLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbWFjODAyMTEuaD03MzQ1PXN0cnVjdCByYXRlX2NvbnRyb2xfb3BzIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTczNDktXHR2b2lkICgqYWRkX2RlYnVnZnMpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB2b2lkICpwcml2LFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3MzUwOlx0XHRcdCAgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzZGlyKTtcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzM1MS1cdHZvaWQgKCpmcmVlKSh2b2lkICpwcml2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1MzYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgdGhlIExheSBvZiB0aGUgTGFuZDogY2ZnODAyMTEuaCBhbmQgZGVidWdmc2RpcioqCgpSaWdodCwgbGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIGJhc2ljcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIHN0dWZmIGlzIHN0cnVjdHVyZWQgaW4gdGhlIGtlcm5lbCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIFdpLUZpIFBIWSBpbnRlcmZhY2UsIGB3aXBoeWAsIGFuZCBob3cgaXRzIGRlYnVnZnMgaW50ZXJmYWNlIGlzIGhhbmRsZWQuIExldCYjMzk7cyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGhvdyB0byBkZWJ1ZyB0aGlzIHByb3Blcmx5LiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYHdpcGh5YCBzdHJ1Y3R1cmUsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBgZGVidWdmc2RpcmAgd2l0aGluIGBpbmNsdWRlL25ldC9jZmc4MDIxMS5oYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSByZWxldmFudCBwb2ludGVycyBvciBtZXRob2RzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBkZWJ1ZyBmaWxlc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgZGVidWcgaW50ZXJmYWNlIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIExldCYjMzk7cyBnbyB0aHJvdWdoIHRoZSBkZXRhaWxzIG9mIGhvdyB0aGUgV2ktRmkgUEhZJiMzOTtzIGRlYnVnIGZpbGVzeXN0ZW0gZGlyZWN0b3J5IGlzIHNldCB1cCBhbmQgdXNlZC4gS25vd2luZyB3aGVyZSB0aGlzIGlzIGRlZmluZWQgd2lsbCBoZWxwIG1lIHF1aWNrbHkgdW5kZXJzdGFuZCBob3cgdG8gZGlhZ25vc2UgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgZGVidWcgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVidWdmc2RpciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2NmZzgwMjExLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02MjA1PXN0cnVjdCB3aXBoeV9pZnR5cGVfYWttX3N1aXRlcyB7XG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02MjE3LSAqXHQtMSAoZGVmYXVsdCkgPSBSVFMvQ1RTIGRpc2FibGVkXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjYyMTg6ICogQHJhZGlvX2RlYnVnZnNkaXI6IFBvaW50ZXIgdG8gZGVidWdmcyBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcmFkaW8tXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTYyMTktICpcdHNwZWNpZmljIHBhcmFtZXRlcnMuXG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02MjIyPXN0cnVjdCB3aXBoeV9yYWRpb19jZmcge1xuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02MjIzLVx0dTMyIHJ0c190aHJlc2hvbGQ7XG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjYyMjQ6XHRzdHJ1Y3QgZGVudHJ5ICpyYWRpb19kZWJ1Z2ZzZGlyO1xuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02MjI1LX07XG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02Mjk3PXN0cnVjdCB3aXBoeV9uYW5fY2FwYSB7XG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02MzU0LSAqXHR1bnJlZ2lzdGVyIGhhcmR3YXJlXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjYzNTU6ICogQGRlYnVnZnNkaXI6IGRlYnVnZnMgZGlyZWN0b3J5IHVzZWQgZm9yIHRoaXMgd2lwaHkgKGllZWU4MDIxMS9cdTAwM2N3aXBoeW5hbWVcdTAwM2UpLlxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02MzU2LSAqXHRJdCB3aWxsIGJlIHJlbmFtZWQgYXV0b21hdGljYWxseSBvbiB3aXBoeSByZW5hbWVzXG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02NTQyPXN0cnVjdCB3aXBoeSB7XG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02NjM3LVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo2NjM4Olx0c3RydWN0IGRlbnRyeSAqZGVidWdmc2RpcjtcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNjYzOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyOTUKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqSW52ZXN0aWdhdGluZyB0aGUgT3JpZ2lucyBvZiBgd2lwaHktJmd0O2RlYnVnZnNkaXJgKioKClJpZ2h0LCBzbyBgd2lwaHktJmd0O2RlYnVnZnNkaXJgLi4uIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGRlYnVnZnMgZGlyZWN0b3J5IHJlbGF0ZWQgdG8gYSB3aXJlbGVzcyBwaHksIGFuZCBJIGtub3cgaXQmIzM5O3MgY3JlYXRlZCBieSBjZmc4MDIxMS4gQnV0ICpob3cqIGlzIGl0IGNyZWF0ZWQ/IElzIGl0IGFuIHVuY29uZGl0aW9uYWwgdGhpbmcsIG9yIGRvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBiZWluZyBlbmFibGVkPyBJIHN1c3BlY3QgdGhlcmUmIzM5O3MgYSBjb25kaXRpb25hbCBhc3BlY3QgdG8gaXQuIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0ICp3aGVuKiB0aGF0IGRpcmVjdG9yeSBnZXRzIGNyZWF0ZWQuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGl0JiMzOTtzIHRpZWQgdG8gZWl0aGVyIGBDT05GSUdfQ0ZHODAyMTFfREVCVUdGU2Agb3IgYENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTYCBiZWluZyBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnLiBUaGF0JiMzOTtzIHRoZSBtb3N0IGxpa2VseSBzY2VuYXJpbywgaXNuJiMzOTt0IGl0PyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgY29uZmlncyBkcml2ZSB0aGUgaW5zdGFudGlhdGlvbiBvZiB0aGF0IHBhcnRpY3VsYXIgZGVidWdmcyBkaXJlY3RvcnkuIEtub3dpbmcgdGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB3aGVuIGFuZCB3aHkgdGhlIGRpcmVjdG9yeSBhcHBlYXJzLCB3aGljaCB3aWxsIGJlIGVzc2VudGlhbCB3aGVuIEkgZ28gdG8gdHJvdWJsZXNob290IGFueSBmdXR1cmUgaXNzdWVzIHJlbGF0ZWQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlYnVnZnNkaXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9jb3JlLmM9MTI5PWludCBjZmc4MDIxMV9kZXZfcmVuYW1lKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE0OC1cbm5ldC93aXJlbGVzcy9jb3JlLmM6MTQ5Olx0ZGVidWdmc19jaGFuZ2VfbmFtZShyZGV2LVx1MDAzZXdpcGh5LmRlYnVnZnNkaXIsIFwmIzM0OyVzXCYjMzQ7LCBuZXduYW1lKTtcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTUwLVxuLS1cbm5ldC93aXJlbGVzcy9jb3JlLmM9ODUzPWludCB3aXBoeV9yZWdpc3RlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxuLS1cbm5ldC93aXJlbGVzcy9jb3JlLmMtMTE2OS1cdC8qIGFkZCB0byBkZWJ1Z2ZzICovXG5uZXQvd2lyZWxlc3MvY29yZS5jOjExNzA6XHRyZGV2LVx1MDAzZXdpcGh5LmRlYnVnZnNkaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIod2lwaHlfbmFtZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5KSxcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTE3MS1cdFx0XHRcdFx0XHQgICAgaWVlZTgwMjExX2RlYnVnZnNfZGlyKTtcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jLTExNzgtXHRcdFx0XHQgIGlkeCk7XG5uZXQvd2lyZWxlc3MvY29yZS5jOjExNzk6XHRcdFx0d2lwaHktXHUwMDNlcmFkaW9fY2ZnW2lkeF0ucmFkaW9fZGVidWdmc2RpciA9XG5uZXQvd2lyZWxlc3MvY29yZS5jLTExODAtXHRcdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kaXIocmFkaW9fbmFtZSxcbm5ldC93aXJlbGVzcy9jb3JlLmM6MTE4MTpcdFx0XHRcdFx0XHQgICByZGV2LVx1MDAzZXdpcGh5LmRlYnVnZnNkaXIpO1xubmV0L3dpcmVsZXNzL2NvcmUuYy0xMTgyLVx0XHR9XG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYz0xMjkwPXZvaWQgd2lwaHlfdW5yZWdpc3RlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxuLS1cbm5ldC93aXJlbGVzcy9jb3JlLmMtMTMxNC1cdCAqL1xubmV0L3dpcmVsZXNzL2NvcmUuYzoxMzE1Olx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKHJkZXYtXHUwMDNld2lwaHkuZGVidWdmc2Rpcik7XG5uZXQvd2lyZWxlc3MvY29yZS5jLTEzMTYtXHRsaXN0X2RlbF9yY3UoXHUwMDI2cmRldi1cdTAwM2VsaXN0KTtcbi0tXG5uZXQvd2lyZWxlc3MvZGVidWdmcy5jPTEyOT12b2lkIGNmZzgwMjExX2RlYnVnZnNfcmRldl9hZGQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2KVxubmV0L3dpcmVsZXNzL2RlYnVnZnMuYy0xMzAte1xubmV0L3dpcmVsZXNzL2RlYnVnZnMuYzoxMzE6XHRzdHJ1Y3QgZGVudHJ5ICpwaHlkID0gcmRldi1cdTAwM2V3aXBoeS5kZWJ1Z2ZzZGlyO1xubmV0L3dpcmVsZXNzL2RlYnVnZnMuYy0xMzItXHRzdHJ1Y3QgZGVudHJ5ICpyYWRpb2Q7XG4tLVxubmV0L3dpcmVsZXNzL2RlYnVnZnMuYy0xNDEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyByZGV2LVx1MDAzZXdpcGh5Lm5fcmFkaW87IGkmIzQzOyYjNDM7KSB7XG5uZXQvd2lyZWxlc3MvZGVidWdmcy5jOjE0MjpcdFx0cmFkaW9kID0gcmRldi1cdTAwM2V3aXBoeS5yYWRpb19jZmdbaV0ucmFkaW9fZGVidWdmc2Rpcjtcbm5ldC93aXJlbGVzcy9kZWJ1Z2ZzLmMtMTQzLVx0XHRERUJVR0ZTX1JBRElPX0FERChyYWRpb19ydHNfdGhyZXNob2xkLCBpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcyODYKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRGVidWdmcyBEaWxlbW1hKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHdpcGh5YCByZWdpc3RyYXRpb24uIEl0IHNlZW1zIHRoYXQgYHdpcGh5LSZndDtkZWJ1Z2ZzZGlyYCBnZXRzIGNyZWF0ZWQgcmlnaHQgYXdheSBpbiBgd2lwaHlfcmVnaXN0ZXJgLCBhcyBsb25nIGFzIGBkZWJ1Z2ZzX2NyZWF0ZV9kaXJgIGlzIGRlZmluZWQsIHdoaWNoIG9mIGNvdXJzZSBkZXBlbmRzIG9uIGBDT05GSUdfREVCVUdfRlNgLiBTbywgY2xlYXJseSBgQ09ORklHX0RFQlVHX0ZTYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgaGVyZSwgd2hpY2ggaXNuJiMzOTt0IGlkZWFsIGZvciByZXNvdXJjZS1jb25zdHJhaW5lZCBzeXN0ZW1zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgYWNjaWRlbnRhbGx5IGdldCBlbmFibGVkIHdoZW4gaXQgc2hvdWxkbiYjMzk7dC4gV2FpdCBhIHNlY29uZCwgdGhlIGBkZWJ1Z2ZzLmNgIGZpbGUgd2l0aGluIHRoZSBgbXQ3NmAgZHJpdmVyIHNlZW1zIHRvIGJlIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSwgd2hpY2ggaXMgY29uY2VybmluZy4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbiBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0LyogQ29weXJpZ2h0IChDKSAyMDIzIE1lZGlhVGVrIEluYy4gKi9cbiAgIDM6XHRcbiAgIDQ6XHQjaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuICAgNTpcdCNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG4gICA2Olx0XG4gICA3Olx0c3RhdGljIGludFxuICAgODpcdG10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4gICA5Olx0e1xuICAxMDpcdFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XG4gIDExOlx0XHR1MzIgcmVndmFsID0gdmFsO1xuICAxMjpcdFxuICAxMzpcdFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbiAgMTQ6XHRcdG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XG4gIDE1Olx0XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuICAxNjpcdFxuICAxNzpcdFx0cmV0dXJuIDA7XG4gIDE4Olx0fVxuICAxOTpcdFxuICAyMDpcdHN0YXRpYyBpbnRcbiAgMjE6XHRtdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbiAgMjI6XHR7XG4gIDIzOlx0XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbiAgMjQ6XHRcdHUzMiByZWd2YWw7XG4gIDI1Olx0XHRpbnQgcmV0O1xuICAyNjpcdFxuICAyNzpcdFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbiAgMjg6XHRcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgZmFsc2UpO1xuICAyOTpcdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbiAgMzA6XHRcdGlmICghcmV0KVxuICAzMTpcdFx0XHQqdmFsID0gcmVndmFsO1xuICAzMjpcdFxuICAzMzpcdFx0cmV0dXJuIDA7XG4gIDM0Olx0fVxuICAzNTpcdFxuICAzNjpcdERFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxuICAzNzpcdFx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG4gIDM4Olx0c3RhdGljIGludFxuICAzOTpcdG10NzkyNV9md19kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbiAgNDA6XHR7XG4gIDQxOlx0XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbiAgNDI6XHRcbiAgNDM6XHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG4gIDQ0Olx0XG4gIDQ1Olx0XHRkZXYtXHUwMDNlZndfZGVidWcgPSAodTgpdmFsO1xuICA0NjpcdFx0bXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVx1MDAzZWZ3X2RlYnVnKTtcbiAgNDc6XHRcbiAgNDg6XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4gIDQ5Olx0XG4gIDUwOlx0XHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzNDIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTVQ3OTI1IE1DVSBSZWdpc3RlciBWYWx1ZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG10NzkyNV9tY3VfcmVndmFsYCBmdW5jdGlvbi4gSXQmIzM5O3Mgb25seSBleHBvc2VkIHRocm91Z2ggdGhlIGRlYnVnZnMgYHJlZ3ZhbGAgaW50ZXJmYWNlLCByaWdodD8gVGhlIHF1ZXN0aW9uIGlzLCBpcyBpdCB3b3J0aCB0aGUgZWZmb3J0IHRvIGZ1enogaXQ/IFdlbGwsIGdpdmVuIHRoYXQgc3l6a2FsbGVyICpkb2VzKiB0YXJnZXQgZGVidWdmcyBmaWxlcywgSSYjMzk7ZCBzYXkgdGhlIGFuc3dlciBpcyBsaWtlbHkgeWVzLgoKVGhlIHBhdGNoIEkmIzM5O20gZXhhbWluaW5nIGFkZHJlc3NlcyBhIGJ1ZywgYSBtaXNjYWxjdWxhdGlvbiBvZiBgY21kX2xlbmAgaW4gZmFjdCwgYW5kIHRoaXMgc2VlbXMgdG8gb3BlbiB0aGUgZG9vciB0byBvdXQtb2YtYm91bmRzIHJlYWQvd3JpdGUgaXNzdWVzIG9yIGV2ZW4gdGhlIGRyZWFkZWQgTUNVIGZpcm13YXJlIGNyYXNoLiBDbGFzc2ljLiBOb3csIHRoZSBjb25maWdzIG5lZWRlZCB0byB0cmlnZ2VyIHRoaXMgc2VlbSB0byBiZSBgTVQ3OTI1VWAsIGBNQUM4MDIxMWAsIGBVU0JgLCBhbmQgb2YgY291cnNlIGBERUJVR19GU2AuCgpIYW5nIG9uIGEgc2Vjb25kLiBgTUFDODAyMTFgIGFuZCBgVVNCYCBhcmUgYmFzaWNhbGx5IGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyNVVgLCB0aGV5IGhhdmUgdG8gYmUgZW5hYmxlZCBmb3IgdGhhdCB0byB3b3JrLiBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgdGhvc2UgYE1UNzkyNVVgIGRlcGVuZGVuY2llcyBhZ2FpbiwganVzdCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkyNV9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3OTJ4X0xJQlxuICAgNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA2Olx0XG4gICA3Olx0Y29uZmlnIE1UNzkyNUVcbiAgIDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcbiAgMTQ6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDE1Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVQ3OTI1VVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRzZWxlY3QgTVQ3OTJ4X1VTQlxuICAyMjpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMjM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMjQ6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXG4gIDI3Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAyODpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjY5CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3OTI1VSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBgTVQ3OTI1VWAgY29uZmlnIGlzIHRoZSBwcmltYXJ5IGZvY3VzIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgcHJvcGVybHkuIE15IG5leHQgdGhvdWdodCByZXZvbHZlcyBhcm91bmQgYERFQlVHX0ZTYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgYWN0dWFsbHkgcmVxdWlyZWQgaW4gdGhpcyBzZXR1cC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlLiBBaCwgeWVzLCBpdCBhcHBlYXJzIHRoYXQgYGRlYnVnZnNgIGlzIGVzc2VudGlhbDsgaXQmIzM5O3MgdGhlIG1lY2hhbmlzbSB0aGF0IGV4cG9zZXMgYHJlZ3ZhbGAuIEV4Y2VsbGVudC4gSG93ZXZlciwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgd2hlcmUgZWxzZSBgbXQ3OTI1X21jdV9yZWd2YWxgIGlzIGVtcGxveWVkLiBJdCBtaWdodCBhZmZlY3Qgb3RoZXIgY29kZSBwYXRocyB0aGF0IGFyZSBub3QgcmVsYXRlZCB0byBgREVCVUdfRlNgLiBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9gIGRpcmVjdG9yeSBhbmQgc2VlIHdoYXQgcG9wcyB1cCwgZW5zdXJpbmcgSSYjMzk7bSBjb25zaWRlcmluZyB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9tY3VfcmVndmFsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz04PW10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzLVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcdG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTUtXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMT1tdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjctXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4Olx0cmV0ID0gbXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjktXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTc1PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3NzppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9yZWd2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM4Mz1pbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM4NjppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4Ny1pbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTI5CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIHRoZSBEZWJ1Z0ZTIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoaXMgYGRlYnVnZnMuY2AgZmlsZS4gUmlnaHQsIEkgc2VlIGl0JiMzOTtzIG9ubHkgYmVpbmcgdXNlZCB0aGVyZS4gVGhhdCBzdWdnZXN0cyBgREVCVUdfRlNgIGlzIGEgcmVxdWlyZW1lbnQuIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSBzdXJlLiBIb2xkIG9uLCB3YXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBgTUFDODAyMTFfREVCVUdGU2A/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyLCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jYCwgaXNuJiMzOTt0IGFsc28gYWZmZWN0ZWQgYnkgdGhpcyBmbGFnLiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRocm91Z2ggaXQgYWdhaW4gYW5kIGNvbmZpcm0gdGhhdCBgREVCVUdfRlNgIGlzIHRoZSBvbmx5IHByZS1yZXF1aXNpdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDODAyMTFfREVCVUdGUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODExCgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDU0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFRhcmdldCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGxldmVyYWdpbmcgYE1BQzgwMjExX0RFQlVHRlNgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gQnV0IHdhaXQsIGB3aXBoeV9yZWdpc3RlcmAgZG9lcyBjcmVhdGUgYGRlYnVnZnNkaXJgIHVuY29uZGl0aW9uYWxseSBpZiBgREVCVUdfRlNgIGlzIGVuYWJsZWQsIHNvIHRoYXQmIzM5O3MgYWN0dWFsbHkgdGhlIGtleS4gVGhlIGBERUJVR19GU2AgY29uZmlndXJhdGlvbiBzZWVtcyB0byBiZSBzdWZmaWNpZW50LgoKTGV0IG1lIHplcm8gaW4gb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBgbXQ3OTI1X21jdV9yZWd2YWxgLCBhbmQgc2VlIGlmIGl0JiMzOTtzIHRoZSBvbmx5IHJlbGV2YW50IHBhcnQuIFllcCwgaXQgaXMuIFRoZSBjaGFuZ2UgaXMgaXNvbGF0ZWQgdGhlcmUuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIHRoaXMgd29ydGggZnV6emluZz8gQWJzb2x1dGVseS4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciwgYW5kIHRoYXQgZHJpdmVyICh0aGUgbXQ3OTI1IFVTQiBXaS1GaSBkcml2ZXIpIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCLCBhbmQgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggZGVidWdmcy4gVGhhdCBpcyBmdXp6YWJsZS4KCkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb25zLiBUaGUgaW1tZWRpYXRlIG9uZXMgc2VlbSB0byBiZSBgTVQ3OTI1VWAsIGBNQUM4MDIxMWAsIGBVU0JgLCBhbmQgYERFQlVHX0ZTYC4gSG9sZCBvbiwgYE1BQzgwMjExYCBhbmQgYFVTQmAgYXJlIGRlcGVuZGVuY2llcyBvZiBgTVQ3OTI1VWAuIFNvLCBJJiMzOTtsbCBsaXN0IGBNVDc5MjVVYCwgYE1BQzgwMjExYCwgYFVTQmAsIGBERUJVR19GU2AuCgpIYW5nIG9uLCBgTUFDODAyMTFgIGhhcyBhIGRlcGVuZGVuY3kgb24gYENGRzgwMjExYC4gQnV0IHRoYXQmIzM5O3Mgbm90IGEgZGlyZWN0IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jeSB0byBsaXN0LCBzbyBJIGNhbiBzdGljayB3aXRoIG15IGxpc3Qgb2YgYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBERUJVR19GU2AuCgpKdXN0IHRvIGNvbmZpcm0sIGBNVDc5MjVVYCBpcyB0aGUgY29ycmVjdCBjb25maWcsIGFuZCBJIHNlZSBpdCYjMzk7cyBmb3IgdGhlIFVTQiBkcml2ZXIuIE9rYXksIGFsbCBnb29kIHRoZXJlLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbXQ3OTI1X21jdV9yZWd2YWxgIGlzbiYjMzk7dCBzdGF0aWMgYW5kIGlzIGV4cG9ydGVkLCBzbyBpdCYjMzk7cyBhY2Nlc3NpYmxlLiBZZXAsIGl0IGlzIGV4cG9ydGVkIHZpYSBgRVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9yZWd2YWwpYC4KClNvLCBoZXJlJiMzOTtzIHRoZSBmaW5hbCBicmVha2Rvd246CgoqICAgKipXb3J0aEZ1enppbmc6IHRydWUqKgoqICAgKipGb2N1c1N5bWJvbHM6IFxbJiMzNDttdDc5MjVcX21jdVxfcmVndmFsJiMzNDtcXSoqCiogICAqKkVuYWJsZUNvbmZpZ3M6IFxbJiMzNDtNVDc5MjVVJiMzNDssICYjMzQ7TUFDODAyMTEmIzM0OywgJiMzNDtVU0ImIzM0OywgJiMzNDtERUJVR1xfRlMmIzM0O1xdKioKKiAgICoqUmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGNvbW1hbmQgbGVuZ3RoIGNhbGN1bGF0aW9uIGluIG10NzkyNVxfbWN1XF9yZWd2YWwsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgZGVidWdmcyBpbiB0aGUgbXQ3OTI1IFVTQiBXaS1GaSBkcml2ZXIuIFRoaXMgZHJpdmVyIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCIGdhZGdldC9kdW1teSBIQ0QsIG1ha2luZyBpdCBmdXp6YWJsZS4mIzM0OyoqCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9tY3VfcmVndmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgY29tbWFuZCBsZW5ndGggY2FsY3VsYXRpb24gaW4gbXQ3OTI1X21jdV9yZWd2YWwsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgZGVidWdmcyBpbiB0aGUgbXQ3OTI1IFVTQiBXaS1GaSBkcml2ZXIuIFRoaXMgZHJpdmVyIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCIGdhZGdldC9kdW1teSBIQ0QsIG1ha2luZyBpdCBmdXp6YWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfbWN1X3JlZ3ZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGNvbW1hbmQgbGVuZ3RoIGNhbGN1bGF0aW9uIGluIG10NzkyNV9tY3VfcmVndmFsLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIGRlYnVnZnMgaW4gdGhlIG10NzkyNSBVU0IgV2ktRmkgZHJpdmVyLiBUaGlzIGRyaXZlciBjYW4gYmUgZW11bGF0ZWQgdmlhIFVTQiBnYWRnZXQvZHVtbXkgSENELCBtYWtpbmcgaXQgZnV6emFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyNzozMi4yNzA1Mzc4OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjcxMjM4MzM2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJERUJVR19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNV9tY3VfcmVndmFsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBjb21tYW5kIGxlbmd0aCBjYWxjdWxhdGlvbiBpbiBtdDc5MjVfbWN1X3JlZ3ZhbCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBkZWJ1Z2ZzIGluIHRoZSBtdDc5MjUgVVNCIFdpLUZpIGRyaXZlci4gVGhpcyBkcml2ZXIgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15IEhDRCwgbWFraW5nIGl0IGZ1enphYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyNzozMi4yNzA1NDUwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg4NDUzMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2EwNWJjZWQ4ZmNiYTIxYjM1YmQ5NTA4MDI2NWFkMjM4YzYyNjhiMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyA1IDAyOjI3OjMxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG5pbmRleCBmYTI5YzQ4NmE0NTUzLi44MjhmMGI0YTdiZTZiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG5AQCAtOTksNiArOTksNyBAQCBpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxcbiBcXHRcXHR9O1xcbiBcXHR9IF9fcGFja2VkICogcmVzLCByZXE7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcdGludCBjbWRfbGVuO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKHUzMl9nZXRfYml0cyhyZWdpZHgsIE1UX1JGX1JFR19IRFIpID09IFJGX1JFR19QUkVGSVgpIHtcXG5AQCAtMTA3LDIwICsxMDgsMjIgQEAgaW50IG10NzkyNV9tY3VfcmVndmFsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldClcXG4gXFx0XFx0cmVxLnJmX3JlZy5hbnQgPSBjcHVfdG9fbGUxNih1MzJfZ2V0X2JpdHMocmVnaWR4LCBNVF9SRl9SRUdfQU5UKSk7XFxuIFxcdFxcdHJlcS5yZl9yZWcuaWR4ID0gY3B1X3RvX2xlMzIocmVnaWR4KTtcXG4gXFx0XFx0cmVxLnJmX3JlZy5kYXRhID0gc2V0ID8gY3B1X3RvX2xlMzIoKnZhbCkgOiAwO1xcbitcXHRcXHRjbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgKyBzaXplb2YocmVxLnJmX3JlZyk7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdHJlcS5yZWcudGFnID0gY3B1X3RvX2xlMTYoVU5JX0NNRF9BQ0NFU1NfUkVHX0JBU0lDKTtcXG4gXFx0XFx0cmVxLnJlZy5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLnJlZykpO1xcbiBcXHRcXHRyZXEucmVnLmlkeCA9IGNwdV90b19sZTMyKHJlZ2lkeCk7XFxuIFxcdFxcdHJlcS5yZWcuZGF0YSA9IHNldCA/IGNwdV90b19sZTMyKCp2YWwpIDogMDtcXG4rXFx0XFx0Y21kX2xlbiA9IHNpemVvZihyZXEuX19yc3YpICsgc2l6ZW9mKHJlcS5yZWcpO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoc2V0KVxcbiBcXHRcXHRyZXR1cm4gbXQ3Nl9tY3Vfc2VuZF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1dNX1VOSV9DTUQoUkVHX0FDQ0VTUyksXFxuLVxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSk7XFxuK1xcdFxcdFxcdFxcdFxcdCBcXHUwMDI2cmVxLCBjbWRfbGVuLCB0cnVlKTtcXG4gXFxuIFxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NixcXG4gXFx0XFx0XFx0XFx0XFx0TUNVX1dNX1VOSV9DTURfUVVFUlkoUkVHX0FDQ0VTUyksXFxuLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4rXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJlcSwgY21kX2xlbiwgdHJ1ZSwgXFx1MDAyNnNrYik7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyNzozMi42NTk2ODg0ODdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDIzMjMyMjQyNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbWN1X3JlZ3ZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgY29tbWFuZCBsZW5ndGggY2FsY3VsYXRpb24gaW4gbXQ3OTI1X21jdV9yZWd2YWwsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgZGVidWdmcyBpbiB0aGUgbXQ3OTI1IFVTQiBXaS1GaSBkcml2ZXIuIFRoaXMgZHJpdmVyIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCIGdhZGdldC9kdW1teSBIQ0QsIG1ha2luZyBpdCBmdXp6YWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgY2EwNWJjZWQ4ZmNiYTIxYjM1YmQ5NTA4MDI2NWFkMjM4YzYyNjhiMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMDI6Mjc6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBmYTI5YzQ4NmE0NTUzLi44MjhmMGI0YTdiZTZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5AQCAtOTksNiArOTksNyBAQCBpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuIFx0XHR9O1xuIFx0fSBfX3BhY2tlZCAqIHJlcywgcmVxO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdGludCBjbWRfbGVuO1xuIFx0aW50IHJldDtcbiBcbiBcdGlmICh1MzJfZ2V0X2JpdHMocmVnaWR4LCBNVF9SRl9SRUdfSERSKSA9PSBSRl9SRUdfUFJFRklYKSB7XG5AQCAtMTA3LDIwICsxMDgsMjIgQEAgaW50IG10NzkyNV9tY3VfcmVndmFsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldClcbiBcdFx0cmVxLnJmX3JlZy5hbnQgPSBjcHVfdG9fbGUxNih1MzJfZ2V0X2JpdHMocmVnaWR4LCBNVF9SRl9SRUdfQU5UKSk7XG4gXHRcdHJlcS5yZl9yZWcuaWR4ID0gY3B1X3RvX2xlMzIocmVnaWR4KTtcbiBcdFx0cmVxLnJmX3JlZy5kYXRhID0gc2V0ID8gY3B1X3RvX2xlMzIoKnZhbCkgOiAwO1xuK1x0XHRjbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgKyBzaXplb2YocmVxLnJmX3JlZyk7XG4gXHR9IGVsc2Uge1xuIFx0XHRyZXEucmVnLnRhZyA9IGNwdV90b19sZTE2KFVOSV9DTURfQUNDRVNTX1JFR19CQVNJQyk7XG4gXHRcdHJlcS5yZWcubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS5yZWcpKTtcbiBcdFx0cmVxLnJlZy5pZHggPSBjcHVfdG9fbGUzMihyZWdpZHgpO1xuIFx0XHRyZXEucmVnLmRhdGEgPSBzZXQgPyBjcHVfdG9fbGUzMigqdmFsKSA6IDA7XG4rXHRcdGNtZF9sZW4gPSBzaXplb2YocmVxLl9fcnN2KSArIHNpemVvZihyZXEucmVnKTtcbiBcdH1cbiBcbiBcdGlmIChzZXQpXG4gXHRcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1dNX1VOSV9DTUQoUkVHX0FDQ0VTUyksXG4tXHRcdFx0XHRcdCBcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlKTtcbitcdFx0XHRcdFx0IFx1MDAyNnJlcSwgY21kX2xlbiwgdHJ1ZSk7XG4gXG4gXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LFxuIFx0XHRcdFx0XHRNQ1VfV01fVU5JX0NNRF9RVUVSWShSRUdfQUNDRVNTKSxcbi1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbitcdFx0XHRcdFx0XHUwMDI2cmVxLCBjbWRfbGVuLCB0cnVlLCBcdTAwMjZza2IpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI3OjMyLjY1OTY4OTU0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDQ2NjMxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jYC4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlIGluIGBtdDc5MjVfbWN1X3JlZ3ZhbGAgdG8gY2FsY3VsYXRlIGBjbWRfbGVuYCBpbnN0ZWFkIG9mIHNpbXBseSB1c2luZyBgc2l6ZW9mKHJlcSlgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgcG90ZW50aWFsIGJ1ZyBmaXggb3Igb3B0aW1pemF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLCBlc3BlY2lhbGx5IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgc2luY2UgSSBrbm93IHRob3NlIGNhbiBzb21ldGltZXMgZXhwb3NlIHN1YnRsZSBpc3N1ZXMgd2l0aCBkcml2ZXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUuXG5cbmBtdDc5MjVgLi4uIHRoYXQncyB0aGUgTWVkaWFUZWsgV2ktRmkgNyBkcml2ZXIsIHJpZ2h0PyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgaXQncyBhIFBDSWUgb3IgVVNCIGRyaXZlciBiZWNhdXNlIHRoYXQgY29udGV4dCB3aWxsIGJlIGltcG9ydGFudC4gTGV0IG1lIHRha2UgYSBxdWljayBwZWVrIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvYCBkaXJlY3RvcnkgYW5kIHNlZSBpZiB0aGUgdW5kZXJseWluZyBjb21tdW5pY2F0aW9uIHNjaGVtZSBpcyBvYnZpb3VzIGZyb20gdGhlIGZpbGVzIHdpdGhpbi4gR290dGEgYXNzZXNzIHRoZSBhY2Nlc3MgbWV0aG9kIGZvciBhbnkgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTU5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjc6MzYuMzY0MzU1ODM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImluaXQuY1wiLFxuICAgIFwibWFjLmNcIixcbiAgICBcIm1hYy5oXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1jdS5jXCIsXG4gICAgXCJtY3UuaFwiLFxuICAgIFwibXQ3OTI1LmhcIixcbiAgICBcIm5hbi5jXCIsXG4gICAgXCJuYW4uaFwiLFxuICAgIFwicGNpLmNcIixcbiAgICBcInBjaV9tYWMuY1wiLFxuICAgIFwicGNpX21jdS5jXCIsXG4gICAgXCJyZWdkLmNcIixcbiAgICBcInJlZ2QuaFwiLFxuICAgIFwicmVncy5oXCIsXG4gICAgXCJ0ZXN0bW9kZS5jXCIsXG4gICAgXCJ1c2IuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyNzozNi4zNjQ0MjkxMTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk4ODA4NTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCBxdWljayBtZW50YWwgc2NhbiwgYXMgYSBzZWFzb25lZCBkZXZlbG9wZXI6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEZXZpY2UgQXJjaGl0ZWN0dXJlIFx1MDAyNiBQb3RlbnRpYWwgRW11bGF0aW9uIFBhdGhzKipcblxuQWxyaWdodCwgdGhlIHByZXNlbmNlIG9mIGB1c2IuY2AgYW5kIGBwY2kuY2AgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBzeXN0ZW0gaXMgZGVzaWduZWQgdG8gaW50ZXJmYWNlIHdpdGggZWl0aGVyIFVTQiBvciBQQ0kgYnVzZXMuIFRoYXQgb3BlbnMgdXAgYSBmZXcgaW50ZXJlc3RpbmcgYXZlbnVlcyBmb3IgZW11bGF0aW9uIG9yIHRlc3RpbmcuIEknbSB0aGlua2luZywgcG90ZW50aWFsbHksIGEgVVNCIGdhZGdldCBzZXR1cCBvciBldmVuIHRoZSBvbGQgZHVtbXkgSENEIGFwcHJvYWNoIGNvdWxkIGRvIHRoZSB0cmljayBpZiBJIHdhbnQgdG8gc2ltdWxhdGUgVVNCIGRldmljZSBiZWhhdmlvci4gT2YgY291cnNlLCBzeXprYWxsZXIncyB2aGNpIGlzIGFsd2F5cyBhIGNvbnRlbmRlciBmb3IgbW9yZSBjb250cm9sbGVkIGFuZCBwb3RlbnRpYWxseSBtb3JlIGluc2lnaHRmdWwgZnV6emluZy5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duIGludG8gYSBsaWtlbHkgYXJlYSBvZiBpbnRlcmVzdCDigJMgZmlybXdhcmUgb3IgcmVnaXN0ZXIgYWNjZXNzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpbnRlcmFjdHMgd2l0aCBpdHMgTUNVLiBUbyB0aGF0IGVuZCwgSSBzaG91bGQgaW52ZXN0aWdhdGUgYG10NzkyNV9tY3VfcmVndmFsYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgbG9va3MgcHJvbWlzaW5nIOKAkyByZWdpc3RlciB2YWx1ZSBhY2Nlc3Mgd2l0aGluIHRoZSBNQ1UgZnJhbWV3b3JrLiBJdCBzaG91bGQgZ2l2ZSBtZSBzb21lIGNyaXRpY2FsIGluc2lnaHRzIGludG8gaXRzIHVuZGVybHlpbmcgaGFyZHdhcmUgaW50ZXJhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMDEsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjc6NDAuMzYzMjQxMTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4MDI1NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X21jdV9yZWd2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz04PW10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ6XFx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXFx1MDAzZW10NzYuZGVidWdmc19yZWcsIFxcdTAwMjZyZWd2YWwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxPW10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OlxcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NT1FWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3NzppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTQwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcmVndmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zODM9aW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozODY6aW50IG10NzkyNV9tY3VfcmVndmFsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzg3LWludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjc6NDAuNDEyMDUzNjM4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1NTM5MTQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYG10NzkyNV9tY3VfcmVndmFsYCoqXG5cblJpZ2h0LCBzbyBgbXQ3OTI1X21jdV9yZWd2YWxgIGFwcGVhcnMgdG8gYmUgY29uZmluZWQgdG8gYGRlYnVnZnMuY2AuIFRoYXQgc2VlbXMuLi4gb2RkLiBJcyBpdCB0cnVseSBvbmx5IHVzZWQgd2l0aGluIHRoYXQgc3BlY2lmaWMgZmlsZT8gSSBuZWVkIHRvIHZlcmlmeSBpdHMgdmlzaWJpbGl0eS5cblxuRmlyc3QsIGxldCdzIGNoZWNrIHRoZSBzeW1ib2wgZXhwb3J0IHN0YXR1cy4gT2theSwgaXQgKmlzKiBleHBvcnRlZCwgbWVhbmluZyBpdCdzIHBvdGVudGlhbGx5IGFjY2Vzc2libGUgb3V0c2lkZSBvZiBgZGVidWdmcy5jYC4gTm93LCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBUaW1lIGZvciBhIGZ1bGwtc2NhbGUgc2VhcmNoLiBJJ2xsIHNjb3VyIHRoZSBlbnRpcmUgY29kZSB0cmVlIGZvciBhbnkgb3RoZXIgb2NjdXJyZW5jZXMgb2YgYG10NzkyNV9tY3VfcmVndmFsYC4gVGhpcyB3aWxsIGNvbmZpcm0gd2hldGhlciB0aGlzIHZhcmlhYmxlIGlzIGdlbnVpbmVseSBsb2NhbCBvciBpcyBiZWluZyBhY2Nlc3NlZCBlbHNld2hlcmUsIHBvc3NpYmx5IHdpdGggdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb3VsZCB2YXJ5LCBzbyBJJ2xsIHN0YXkgYXR0ZW50aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzk2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjc6NDQuMDY3NDQ4MDIyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODgwODk2MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X21jdV9yZWd2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz04PW10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ6XFx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXFx1MDAzZW10NzYuZGVidWdmc19yZWcsIFxcdTAwMjZyZWd2YWwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxPW10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OlxcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NT1FWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3NzppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTQwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcmVndmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zODM9aW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozODY6aW50IG10NzkyNV9tY3VfcmVndmFsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzg3LWludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjc6NDUuODU1NTQxNjA0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4NDAyMTQ1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRoaXMgRGVidWdmcyBFbnRyeTogQSBRdWljayBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhpcyBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBkZWJ1Z2ZzLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBJcyB0aGlzIGV2ZW4gKndvcnRoKiB0aGUgZWZmb3J0IG9mIGZ1enppbmc/IERlYnVnZnMsIGJ5IGl0cyBuYXR1cmUsIGlzIHVzdWFsbHkgYWNjZXNzaWJsZSB3aXRoIHJvb3QgcHJpdmlsZWdlcywgYW5kIG15IGV4cGVyaWVuY2Ugd2l0aCBzeXprYWxsZXIgdGVsbHMgbWUgaXQgKmRvZXMqIHRhcmdldCBkZWJ1Z2ZzIGVudHJpZXMuIEJ1dCBJIG5lZWQgdG8gYmUgc3VyZTsganVzdCBiZWNhdXNlIHN5emthbGxlciBmdXp6ZXMgZGVidWdmcyBpbiBnZW5lcmFsIGRvZXNuJ3QgbWVhbiAqdGhpcyogc3BlY2lmaWMgZmlsZSBpcyBhY3R1YWxseSByZWFjaGFibGUgYW5kIGludGVyZXN0aW5nLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgYG10NzkyNV9yZWdfc2V0YCBhbmQgYG10NzkyNV9yZWdfZ2V0YCB0byBzZWUgaWYgdGhleSdyZSBhY3R1YWxseSByZWxldmFudCB0byBmdXp6aW5nLiBHb3R0YSBjaGVjayB0aGUgY2FsbCBzaXRlcyB0byBkZXRlcm1pbmUgaWYgdGhlcmUncyBhbnkgcmVhbGlzdGljIGNoYW5jZSBvZiB0cmlnZ2VyaW5nIGludGVyZXN0aW5nIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTk1LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjc6NDkuOTM5NTY1NzYzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTM1OTI1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVfcmVnX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo4Om10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxPW10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZWd2YWwsIG10NzkyNV9yZWdfZ2V0LCBtdDc5MjVfcmVnX3NldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzctXFx0XFx0XFx0IFxcXCIweCUwOGxseFxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI3OjQ5Ljk4NDkzNjkwMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI3OTg3NjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBmb3BzX3JlZ3ZhbGAgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29kZSdzIHBvaW50ZWQgbWUgdG93YXJkcyBgZm9wc19yZWd2YWxgLiBUaW1lIHRvIGRpZyBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSB1dGlsaXphdGlvbiBvZiB0aGlzIHNwZWNpZmljIHZhcmlhYmxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgaG93IGl0J3MgYmVpbmcgbWFuaXB1bGF0ZWQuIFRoZSBnb2FsIGhlcmUgaXMgYSBxdWljaywgZGVlcCBkaXZlIGludG8gdGhlIGNvZGUuIExldCdzIHNlZSBob3cgaXQncyBiZWluZyBlbXBsb3llZCB0aHJvdWdob3V0IHRoZSBwcm9qZWN0LiBXaGVyZSBhcmUgdGhlIHJlZmVyZW5jZXMgdG8gdGhpcyBvbmU/IElzIGl0IGEga2V5IHRvIGEgc3BlY2lmaWMgcHJvY2Vzcz8gSXMgaXQgcmVsYXRlZCB0byBJL08/IE9yIGFyZSB3ZSB0YWxraW5nIG1lbW9yeT9cblxuXG4iLCJJbnB1dFRva2VucyI6NjE5OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI3OjUzLjAxMjkyNjY2NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MTc2MzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZvcHNfcmVndmFsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE9bXQ3OTI1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yODk9aW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI5MzpcXHRkaXIgPSBtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCBcXHUwMDI2Zm9wc19yZWd2YWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI3OjUzLjI5MDEwODA4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQ0OTI2MTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG10NzkyNWAgRHJpdmVyIERlYnVnZnMgSW50ZXJmYWNlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBgbXQ3OTI1YCBkcml2ZXIgZXhwb3NlcyBpdHMgaW50ZXJuYWwgcmVnaXN0ZXJzLiBUaGUgY29kZSB0ZWxscyBtZSBpdCdzIGRvbmUgdGhyb3VnaCBgbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHNgLiBBaCwgcmlnaHQsIHRoYXQgZnVuY3Rpb24gcmVnaXN0ZXJzIHRoZSBgcmVndmFsYCBkZWJ1Z2ZzIGZpbGUuIE5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgSSBjYW4gaW50ZXJhY3Qgd2l0aCBpdDsgaXMgdGhpcyBkcml2ZXIgZXZlbiBhY2Nlc3NpYmxlIGluIG15IFFFTVUgc2V0dXA/IExldCdzIHNlZS4uLiBZZXAsIGxvb2tzIGxpa2UgdGhlIGBtdDc5MjVgIGRyaXZlciAqZG9lcyogaGF2ZSBhIFVTQiBkcml2ZXIgKGB1c2IuY2ApLiBQZXJmZWN0LiBOb3csIG15IG5leHQgbW92ZSBpcyB0byBjaGVjayB0aGUgVVNCIGRyaXZlciBzcGVjaWZpY2FsbHkgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuY2ApIHRvIGNvbmZpcm0gaG93IGl0J3MgYmVpbmcgcmVnaXN0ZXJlZCBhcyBhIFVTQiBkcml2ZXIuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaG93IHRvIGhvb2sgaW50byB0aGUgc3lzdGVtIHRvIHN0YXJ0IHRlc3RpbmcgYW5kIGRlYnVnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc3MywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyNzo1Ni45MzUwMzY4OTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDIxNjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTM1Mz1NT0RVTEVfRklSTVdBUkUoTVQ3OTI1X1JPTV9QQVRDSCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM1NTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTI1dV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzU2LVxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2Ny19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2ODptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjV1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyNzo1Ni45NzgwNjM3OThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk3Mzc3OTk1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGEgVVNCIGRyaXZlciwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgb2YgZnV6emluZyBwb3RlbnRpYWwgdXNpbmcgZWl0aGVyIGEgVVNCIGdhZGdldCBvciBhIGR1bW15IEhDRCBzZXR1cC4gVGhlIHRhcmdldCBpcyB0aGUgYG10NzkyNV9tY3VfcmVndmFsYCBmdW5jdGlvbiwgYW5kIHRoZSBmYWN0IHRoYXQgaXQncyBhY2Nlc3NpYmxlIHZpYSBkZWJ1Z2ZzIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uIFRoYXQgbWFrZXMgaXQgbW9yZSBhY2Nlc3NpYmxlIHRvIG1hbmlwdWxhdGlvbi4gVGhlIHF1ZXN0aW9uIG5vdyBpczogaXMgaXQgd29ydGggdGhlIGVmZm9ydCBvZiBhIGZ1enppbmcgY2FtcGFpZ24/XG5cblRoZSBwYXRjaCBpdHNlbGYgcG9pbnRzIHRvIGFuIGlzc3VlIHdoZXJlIGBzaXplb2YocmVxKWAgd2FzIHVzZWQgaW4gdGhlIGxlbmd0aCBjYWxjdWxhdGlvbiwgcmF0aGVyIHRoYW4gdGhlIGludGVuZGVkIGBjbWRfbGVuYC4gQWxyaWdodCwgc28gYHJlcWAgaXMgYSB1bmlvbi4gVGhhdCBtZWFucyBgc2l6ZW9mKHJlcSlgIHdpbGwgcmVzb2x2ZSB0byB0aGUgc2l6ZSBvZiBpdHMgbGFyZ2VzdCBtZW1iZXIsIHdoaWNoIGlzIHByb2JhYmx5IGEgcHJvYmxlbS4gQnV0IGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgcmVxYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uLi4gb2theSwgaGVyZSBpdCBpczpcblxuYGBgY1xuXHRzdHJ1Y3Qge1xuXHRcdF9fbGUxNiB0YWc7XG5cdFx0X19sZTE2IGxlbjtcblx0XHR1bmlvbiB7XG5cdFx0XHRzdHJ1Y3Qge1xuXHRcdFx0XHRfX2xlMzIgaWR4O1xuXHRcdFx0XHRfX2xlMzIgZGF0YTtcblx0XHRcdH0gcmVnO1xuXHRcdFx0c3RydWN0IHtcblx0XHRcdFx0X19sZTE2IGFudDtcblx0XHRcdFx0X19sZTE2IHJzdjtcblx0XHRcdFx0X19sZTMyIGlkeDtcblx0XHRcdFx0X19sZTMyIGRhdGE7XG5cdFx0XHR9IHJmX3JlZztcblx0XHR9O1xuXHR9IF9fcGFja2VkICogcmVzLCByZXE7XG5gYGBcblxuQWgsIHJpZ2h0LiBOb3cgSSBnZXQgaXQuIFRoZSBwYXRjaCAqaXRzZWxmKiBkb2Vzbid0IGxvb2sgbGlrZSBpdCdzIHRoZSBhY3R1YWwgY29kZS4gSXQncyBqdXN0IHNob3dpbmcgdGhlIGByZXFgIHN0cnVjdCwgYnV0IGRvZXNuJ3Qgc2hvdyBhbnkgbW9kaWZpY2F0aW9ucy4gVGhpcyBtZWFucyBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gbG9va2luZyBhdCB0aGUgYWN0dWFsIGRlZmluaXRpb24gb2YgYHJlcWAgaW4gYG10NzkyNV9tY3VfcmVndmFsYC4gTm93IGxldCBtZSBzZWUgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczOTYsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MDIuOTUxODQ2MTU3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MTU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3NzpcXHRpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxcbiAgNzg6XFx0e1xcbiAgNzk6XFx0I2RlZmluZSBNVF9SRl9SRUdfSERSICAgICAgICAgICBHRU5NQVNLKDMxLCAyNClcXG4gIDgwOlxcdCNkZWZpbmUgTVRfUkZfUkVHX0FOVCAgICAgICAgICAgR0VOTUFTSygyMywgMTYpXFxuICA4MTpcXHQjZGVmaW5lIFJGX1JFR19QUkVGSVggICAgICAgICAgIDB4OTlcXG4gIDgyOlxcdFxcdHN0cnVjdCB7XFxuICA4MzpcXHRcXHRcXHR1OCBfX3Jzdls0XTtcXG4gIDg0OlxcdFxcdFxcdHVuaW9uIHtcXG4gIDg1OlxcdFxcdFxcdFxcdHN0cnVjdCB1bmlfY21kX2FjY2Vzc19yZWdfYmFzaWMge1xcbiAgODY6XFx0XFx0XFx0XFx0XFx0X19sZTE2IHRhZztcXG4gIDg3OlxcdFxcdFxcdFxcdFxcdF9fbGUxNiBsZW47XFxuICA4ODpcXHRcXHRcXHRcXHRcXHRfX2xlMzIgaWR4O1xcbiAgODk6XFx0XFx0XFx0XFx0XFx0X19sZTMyIGRhdGE7XFxuICA5MDpcXHRcXHRcXHRcXHR9IF9fcGFja2VkIHJlZztcXG4gIDkxOlxcdFxcdFxcdFxcdHN0cnVjdCB1bmlfY21kX2FjY2Vzc19yZl9yZWdfYmFzaWMge1xcbiAgOTI6XFx0XFx0XFx0XFx0XFx0X19sZTE2IHRhZztcXG4gIDkzOlxcdFxcdFxcdFxcdFxcdF9fbGUxNiBsZW47XFxuICA5NDpcXHRcXHRcXHRcXHRcXHRfX2xlMTYgYW50O1xcbiAgOTU6XFx0XFx0XFx0XFx0XFx0dTggX19yc3ZbMl07XFxuICA5NjpcXHRcXHRcXHRcXHRcXHRfX2xlMzIgaWR4O1xcbiAgOTc6XFx0XFx0XFx0XFx0XFx0X19sZTMyIGRhdGE7XFxuICA5ODpcXHRcXHRcXHRcXHR9IF9fcGFja2VkIHJmX3JlZztcXG4gIDk5OlxcdFxcdFxcdH07XFxuIDEwMDpcXHRcXHR9IF9fcGFja2VkICogcmVzLCByZXE7XFxuIDEwMTpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbiAxMDI6XFx0XFx0aW50IGNtZF9sZW47XFxuIDEwMzpcXHRcXHRpbnQgcmV0O1xcbiAxMDQ6XFx0XFxuIDEwNTpcXHRcXHRpZiAodTMyX2dldF9iaXRzKHJlZ2lkeCwgTVRfUkZfUkVHX0hEUikgPT0gUkZfUkVHX1BSRUZJWCkge1xcbiAxMDY6XFx0XFx0XFx0cmVxLnJmX3JlZy50YWcgPSBjcHVfdG9fbGUxNihVTklfQ01EX0FDQ0VTU19SRl9SRUdfQkFTSUMpO1xcbiAxMDc6XFx0XFx0XFx0cmVxLnJmX3JlZy5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLnJmX3JlZykpO1xcbiAxMDg6XFx0XFx0XFx0cmVxLnJmX3JlZy5hbnQgPSBjcHVfdG9fbGUxNih1MzJfZ2V0X2JpdHMocmVnaWR4LCBNVF9SRl9SRUdfQU5UKSk7XFxuIDEwOTpcXHRcXHRcXHRyZXEucmZfcmVnLmlkeCA9IGNwdV90b19sZTMyKHJlZ2lkeCk7XFxuIDExMDpcXHRcXHRcXHRyZXEucmZfcmVnLmRhdGEgPSBzZXQgPyBjcHVfdG9fbGUzMigqdmFsKSA6IDA7XFxuIDExMTpcXHRcXHRcXHRjbWRfbGVuID0gc2l6ZW9mKHJlcS5fX3JzdikgKyBzaXplb2YocmVxLnJmX3JlZyk7XFxuIDExMjpcXHRcXHR9IGVsc2Uge1xcbiAxMTM6XFx0XFx0XFx0cmVxLnJlZy50YWcgPSBjcHVfdG9fbGUxNihVTklfQ01EX0FDQ0VTU19SRUdfQkFTSUMpO1xcbiAxMTQ6XFx0XFx0XFx0cmVxLnJlZy5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLnJlZykpO1xcbiAxMTU6XFx0XFx0XFx0cmVxLnJlZy5pZHggPSBjcHVfdG9fbGUzMihyZWdpZHgpO1xcbiAxMTY6XFx0XFx0XFx0cmVxLnJlZy5kYXRhID0gc2V0ID8gY3B1X3RvX2xlMzIoKnZhbCkgOiAwO1xcbiAxMTc6XFx0XFx0XFx0Y21kX2xlbiA9IHNpemVvZihyZXEuX19yc3YpICsgc2l6ZW9mKHJlcS5yZWcpO1xcbiAxMTg6XFx0XFx0fVxcbiAxMTk6XFx0XFxuIDEyMDpcXHRcXHRpZiAoc2V0KVxcbiAxMjE6XFx0XFx0XFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9XTV9VTklfQ01EKFJFR19BQ0NFU1MpLFxcbiAxMjI6XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZyZXEsIGNtZF9sZW4sIHRydWUpO1xcbiAxMjM6XFx0XFxuIDEyNDpcXHRcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsXFxuIDEyNTpcXHRcXHRcXHRcXHRcXHRcXHRNQ1VfV01fVU5JX0NNRF9RVUVSWShSRUdfQUNDRVNTKSxcXG4gMTI2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIGNtZF9sZW4sIHRydWUsIFxcdTAwMjZza2IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODowMi45NTIxMTkzNDdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5Mzg5MDk2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgTUNVIENvbW1hbmQgTGVuZ3RoIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBkaXJlY3RseSBhZGRyZXNzZXMgdGhlIGxlbmd0aCBvZiB0aGUgY29tbWFuZCBiZWluZyBzZW50IHRvIHRoZSBNQ1UuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSB0YW5naWJsZSBmaXguIFRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb246IGlzIHRoaXMgZXZlbiB0ZXN0YWJsZT8gQW5kLCB5ZXMsIGl0IGxvb2tzIGxpa2UgaXQncyBhY2Nlc3NpYmxlIHRocm91Z2ggYGRlYnVnZnNgLCB3aGljaCBpcyBncmVhdCBmb3IgdGFyZ2V0ZWQgdGVzdGluZy4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgZHJpdmVyLCBhbmQgY29uc2lkZXJpbmcgdGhlIE1DVSBjb21tdW5pY2F0aW9uIGNhbiBiZSBlbXVsYXRlZCBvdmVyIFVTQiwgZnV6emluZyBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgYSB2YWx1YWJsZSBhcHByb2FjaCB0byBldmFsdWF0ZSBzdGFiaWxpdHkuIEhvbGQgb24sIHRob3VnaC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgbXQ3OTI1X21jdV9yZWd2YWxgIGlzICpleGNsdXNpdmVseSogcmVhY2hlZCB2aWEgZGVidWdmcy4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlIHRvIGJlIGNlcnRhaW4gaXQncyBub3QgZXhwb3NlZCBlbHNld2hlcmUgYW5kIGNvdWxkIGJlIGEgbW9yZSB3aWRlLXJlYWNoaW5nIGNoYW5nZSB0aGFuIGl0IGFwcGVhcnMuIE5lZWQgdG8gdmVyaWZ5IGl0cyB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE3MiwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MDYuNjQ2MDEyMzc5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjU2MDUzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVfbWN1X3JlZ3ZhbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTg9bXQ3OTI1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMy1cXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcXHRtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE9bXQ3OTI1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjctXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg6XFx0cmV0ID0gbXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXFx1MDAzZW10NzYuZGVidWdmc19yZWcsIFxcdTAwMjZyZWd2YWwsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjktXFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTc1PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjc3OmludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTM5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9yZWd2YWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTE0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM4Mz1pbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM4NjppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zODctaW50IG10NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODowNi42ODg1NzcyMDhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4MDgyMjM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlYnVnZnMuYzogQSBRdWljayBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhpcyBpcyBvbmx5IHVzZWQgaW4gYGRlYnVnZnMuY2AuIEhtbW0sIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gSSBtZWFuLCBpdCdzIG5vdCBhIHdpZGVseSB1c2VkIGZlYXR1cmUsIGFuZCB0aGUgaW5pdGlhbCBpbnN0aW5jdCBtaWdodCBiZSB0byBmb2N1cyBvbiBtb3JlIGNyaXRpY2FsIGFyZWFzLiBIb3dldmVyLCBJIHJlY2FsbCBzeXprYWxsZXIgdGFyZ2V0aW5nIGRlYnVnZnMsIHdoaWNoIGRlZmluaXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJZiBpdCdzIGFscmVhZHkgaW4gdGhlaXIgZnV6emluZyB0YXJnZXRzLCB0aGVyZSBtdXN0IGJlIGEgcmVhc29uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIG5lZWRlZCB0byBlbmFibGUgdGhpcyBwYXJ0IG9mIGRlYnVnZnMgdG8gZW5zdXJlIHRoZSBmdXp6ZXIgaXMgYWN0dWFsbHkgaGl0dGluZyBpdC4gTGV0IG1lIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnYC4gVGhhdCBzaG91bGQgcHJvdmlkZSBzb21lIGNsYXJpdHkgb24gdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MDQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODoxMS4yNjk0MDE3MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU5MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzkyNV9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3OTJ4X0xJQlxcbiAgIDU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgNjpcXHRcXG4gICA3OlxcdGNvbmZpZyBNVDc5MjVFXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcXG4gIDE0OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXFxuICAxNTpcXHRcXHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVQ3OTI1VVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAyMjpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDI1OlxcdFxcdGhlbHBcXG4gIDI2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBVU0IgZGV2aWNlcyxcXG4gIDI3OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXFxuICAyODpcXHRcXHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODoxMS4yNjk0Njg3NzJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk4NTg0MDExMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIE5lZWRzKipcblxuT2theSwgc28gSSdtIGNvbmZpZ3VyaW5nIHRoaXMgc3lzdGVtLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgd2UgZGVmaW5pdGVseSBuZWVkIHRoZSBgTVQ3OTI1VWAgbW9kdWxlLiBUaGF0J3MgdGhlIHByaW1hcnkgZHJpdmVyIHdlJ3JlIHVzaW5nLCB3aGljaCBpbiB0dXJuIG1lYW5zIHdlJ2xsIGFsc28gbmVlZCB0aGUgY29tbW9uIGNvbXBvbmVudHMgaW5jbHVkZWQgdmlhIGBNVDc5MjVfQ09NTU9OYC4gVGhhdCBtYWtlcyBzZW5zZS4gV2UncmUgYWxzbyBnb2luZyB0byBiZSByZWx5aW5nIG9uIGBNQUM4MDIxMWAgYW5kIG9idmlvdXNseSBuZWVkIGBVU0JgIHN1cHBvcnQgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4gSG9sZCBvbi4uLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gSWYgYE1UNzkyNV9DT01NT05gIGlzIHRoZSBvbmUgY29tcGlsaW5nIGBtY3UuY2AsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhhdCdzIHRoZSBjb3JyZWN0IGJlaGF2aW9yLiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYE1ha2VmaWxlYCB0byBiZSBzdXJlLiBJdCdzIGJlc3QgdG8gYmUgcHJlY2lzZSwgZXNwZWNpYWxseSB3aGVuIGJ1aWxkaW5nIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTgxLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODoxNS4yNTUzMTA5NTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRcXG4gICAzOlxcdG9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSArPSBtdDc5MjUtY29tbW9uLm9cXG4gICA0OlxcdG9iai0kKENPTkZJR19NVDc5MjVFKSArPSBtdDc5MjVlLm9cXG4gICA1OlxcdG9iai0kKENPTkZJR19NVDc5MjVVKSArPSBtdDc5MjV1Lm9cXG4gICA2OlxcdFxcbiAgIDc6XFx0bXQ3OTI1LWNvbW1vbi15IDo9IG1hYy5vIG1jdS5vIHJlZ2QubyBtYWluLm8gaW5pdC5vIGRlYnVnZnMubyBuYW4ub1xcbiAgIDg6XFx0bXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuICAgOTpcXHRtdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xcbiAgMTA6XFx0bXQ3OTI1dS15IDo9IHVzYi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI4OjE1LjI1NTUwOTM3NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzcxMTA5NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIE1UNzkyNSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGVuYWJsaW5nIGBtY3UuY2AgZm9yIHRoZSBNVDc5MjUsIGFuZCBpdCBsb29rcyBsaWtlIGl0J3Mgd2l0aGluIGBtdDc5MjUtY29tbW9uLXlgLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhhdCBzdWdnZXN0cyB0aGF0IGBDT05GSUdfTVQ3OTI1VWAgc2hvdWxkIGJlIGVub3VnaCB0byBwdWxsIGl0IGluLiBCdXQgbm93IEknbSBxdWVzdGlvbmluZyB3aGV0aGVyIEkgaGF2ZSB0aGUgZGVidWdmcyBlbmFibGVkIGNvcnJlY3RseS4gSSByZWNhbGwgdGhhdCBkZWJ1Z2ZzIHN1cHBvcnQgaXMgY29udHJvbGxlZCBieSBkaWZmZXJlbnQgS2NvbmZpZyBvcHRpb25zIGRlcGVuZGluZyBvbiB0aGUgd2lyZWxlc3MgZHJpdmVyIGZyYW1ld29yay4gSXMgaXQgYENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTYCBvciBzb21ldGhpbmcgc3BlY2lmaWMgdG8gTVQ3NiwgbGlrZSBgQ09ORklHX01UNzZfREVCVUdGU2A/IFRpbWUgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBLY29uZmlnIGZvciB0aGUgTWVkaWF0ZWsgZHJpdmVyIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgLiBJIG5lZWQgdG8gdmVyaWZ5IHdoaWNoIG9wdGlvbiBoYW5kbGVzIHRoZSBkZWJ1ZyBmaWxlc3lzdGVtIHZpc2liaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzE2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODoxOS4wMjY2MjIxNDRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0OTEwNTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRFQlVHRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM9MTc9bXQ3Nl9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM6MjU6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc2X3JlZ19nZXQsIG10NzZfcmVnX3NldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy0yNi1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jPTQzPW10NzZfbmFwaV90aHJlYWRlZF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy01MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYzo1MTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19uYXBpX3RocmVhZGVkLCBtdDc2X25hcGlfdGhyZWFkZWRfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jLTUyLVxcdFxcdFxcdCBtdDc2X25hcGlfdGhyZWFkZWRfc2V0LCBcXFwiJWxsdVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmM9NjE9bXQ3NjAzX2VkY2NhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RlYnVnZnMuYy02OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmM6Njk6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZWRjY2EsIG10NzYwM19lZGNjYV9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jLTcwLVxcdFxcdFxcdCBtdDc2MDNfZWRjY2Ffc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTg9bXQ3NjE1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjI5OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3NjE1X3JlZ19nZXQsIG10NzYxNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zMC1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0zMz1tdDc2MTVfcmFkYXJfcGF0dGVybl9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy00Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6NDg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfcGF0dGVybiwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDktXFx0XFx0XFx0IG10NzYxNV9yYWRhcl9wYXR0ZXJuX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTUxPXN0YXRpYyBpbnQgbXQ3NjE1X2NvbmZpZyh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19jb25maWcsIE5VTEwsIG10NzYxNV9jb25maWcsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNjQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9ODM9bXQ3NjE1X3Njc19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjkyOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3NjcywgbXQ3NjE1X3Njc19nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTkzLVxcdFxcdFxcdCBtdDc2MTVfc2NzX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTEzNz1tdDc2MTVfcG1fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTQ2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtLCBtdDc2MTVfcG1fZ2V0LCBtdDc2MTVfcG1fc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0xNzk9bXQ3NjE1X3BtX2lkbGVfdGltZW91dF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoxODg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG1faWRsZV90aW1lb3V0LCBtdDc2MTVfcG1faWRsZV90aW1lb3V0X2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTg5LVxcdFxcdFxcdCBtdDc2MTVfcG1faWRsZV90aW1lb3V0X3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTIwOD1tdDc2MTVfZGJkY19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyMTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZGJkYywgbXQ3NjE1X2RiZGNfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMTgtXFx0XFx0XFx0IG10NzYxNV9kYmRjX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTIzOD1tdDc2MTVfZndfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjQ3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnLCBtdDc2MTVfZndfZGVidWdfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yNDgtXFx0XFx0XFx0IG10NzYxNV9md19kZWJ1Z19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yNTE9bXQ3NjE1X3Jlc2V0X3Rlc3Rfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNzI6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXRfdGVzdCwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjczLVxcdFxcdFxcdCBtdDc2MTVfcmVzZXRfdGVzdF9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz00Mjc9bXQ3NjE1X3JmX3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNDM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo0MzY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmZfcmVnLCBtdDc2MTVfcmZfcmVnX2dldCwgbXQ3NjE1X3JmX3JlZ19zZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTQzNy1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwMl9kZWJ1Z2ZzLmM9MTA2PW10NzZfZWRjY2FfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2RlYnVnZnMuYy0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAyX2RlYnVnZnMuYzoxMTQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZWRjY2EsIG10NzZfZWRjY2FfZ2V0LCBtdDc2X2VkY2NhX3NldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MDJfZGVidWdmcy5jLTExNS1cXHRcXHRcXHQgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTM1PW10NzkxNV9pbXBsaWNpdF90eGJmX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NDQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfaW1wbGljaXRfdHhiZiwgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy00NS1cXHRcXHRcXHQgbXQ3OTE1X2ltcGxpY2l0X3R4YmZfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9MjAxPW10NzkxNV9yYWRhcl90cmlnZ2VyKHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyMjc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfdHJpZ2dlciwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjI4LVxcdFxcdFxcdCBtdDc5MTVfcmFkYXJfdHJpZ2dlciwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTI0Mj1tdDc5MTVfbXVydV9kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMjUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoyNTE6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfbXVydV9kZWJ1ZywgbXQ3OTE1X211cnVfZGVidWdfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0yNTItXFx0XFx0XFx0IG10NzkxNV9tdXJ1X2RlYnVnX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTU0OT1tdDc5MTVfZndfZGVidWdfd21fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTU1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NTU4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX3dtLCBtdDc5MTVfZndfZGVidWdfd21fZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01NTktXFx0XFx0XFx0IG10NzkxNV9md19kZWJ1Z193bV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz01ODM9bXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy01OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jOjU5MjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193YSwgbXQ3OTE1X2Z3X2RlYnVnX3dhX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtNTkzLVxcdFxcdFxcdCBtdDc5MTVfZndfZGVidWdfd2Ffc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM9NjQyPW10NzkxNV9md19kZWJ1Z19iaW5fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6NjUxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX2JpbiwgbXQ3OTE1X2Z3X2RlYnVnX2Jpbl9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTY1Mi1cXHRcXHRcXHQgbXQ3OTE1X2Z3X2RlYnVnX2Jpbl9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0xMjcwPW10NzkxNV9yZl9yZWd2YWxfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTI3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTI3ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZl9yZWd2YWwsIG10NzkxNV9yZl9yZWd2YWxfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjc5LVxcdFxcdFxcdCBtdDc5MTVfcmZfcmVndmFsX3NldCwgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYz0xMzc2PWJvb2wgbXQ3OTE1X2RlYnVnZnNfcnhfbG9nKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTM4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmM6MTM4NzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTM4OC0vKiogcGVyLXN0YXRpb24gZGVidWdmcyAqKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYz0xNzc2PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkxNV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyNS1cXHRDRkc4MDIxMV9URVNUTU9ERV9EVU1QKG10NzZfdGVzdG1vZGVfZHVtcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmM6MTgyNjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyNy1cXHQuc3RhX2FkZF9kZWJ1Z2ZzID0gbXQ3OTE1X3N0YV9hZGRfZGVidWdmcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTYzNz1ib29sIG10NzkxNV9kZWJ1Z2ZzX3J4X2xvZyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo2Mzg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgtNjM5LXZvaWQgbXQ3OTE1X3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xOT1tdDc5MjFfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MzA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc5MjFfcmVnX2dldCwgbXQ3OTIxX3JlZ19zZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTMxLVxcdFxcdFxcdCBcXFwiMHglMDhsbHhcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTQ4PW10NzkyMV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjU3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnLCBtdDc5MjFfZndfZGVidWdfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy01OC1cXHRcXHRcXHQgbXQ3OTIxX2Z3X2RlYnVnX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTE3Nj1tdDc5MjFfcG1fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTg1OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtLCBtdDc5MjFfcG1fZ2V0LCBtdDc5MjFfcG1fc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yMTI9bXQ3OTIxX2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjIxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RzLCBtdDc5MjFfZGVlcF9zbGVlcF9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyMi1cXHRcXHRcXHQgbXQ3OTIxX2RlZXBfc2xlZXBfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjI0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyNS1cXHRcXHRcXHQgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yMjc9c3RhdGljIGludCBtdDc5MjFfY2hpcF9yZXNldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjQ4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjFfY2hpcF9yZXNldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE9bXQ3OTI1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz01ND1tdDc5MjVfZndfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTI1X2Z3X2RlYnVnX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNjQtXFx0XFx0XFx0IG10NzkyNV9md19kZWJ1Z19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMTU9bXQ3OTI1X3BtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIyNDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTI1X3BtX2dldCwgbXQ3OTI1X3BtX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjUxPW10NzkyNV9kZWVwX3NsZWVwX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19kcywgbXQ3OTI1X2RlZXBfc2xlZXBfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjEtXFx0XFx0XFx0IG10NzkyNV9kZWVwX3NsZWVwX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbV9pZGxlX3RpbWVvdXQsIG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjQtXFx0XFx0XFx0IG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjY2PXN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4NzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZXNldCwgTlVMTCwgbXQ3OTI1X2NoaXBfcmVzZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTM3PW10Nzk5Nl9pbXBsaWNpdF90eGJmX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfaW1wbGljaXRfdHhiZiwgbXQ3OTk2X2ltcGxpY2l0X3R4YmZfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy00Ny1cXHRcXHRcXHQgbXQ3OTk2X2ltcGxpY2l0X3R4YmZfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9MjIzPW10Nzk5Nl9yYWRhcl90cmlnZ2VyKHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYzoyNjI6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmFkYXJfdHJpZ2dlciwgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMjYzLVxcdFxcdFxcdCBtdDc5OTZfcmFkYXJfdHJpZ2dlciwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTM2MD1tdDc5OTZfZndfZGVidWdfd21fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTM2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6MzY5OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX3dtLCBtdDc5OTZfZndfZGVidWdfd21fZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zNzAtXFx0XFx0XFx0IG10Nzk5Nl9md19kZWJ1Z193bV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz0zODk9bXQ3OTk2X2Z3X2RlYnVnX3dhX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy0zOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjM5ODpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1Z193YSwgbXQ3OTk2X2Z3X2RlYnVnX3dhX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtMzk5LVxcdFxcdFxcdCBtdDc5OTZfZndfZGVidWdfd2Ffc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM9NDQ4PW10Nzk5Nl9md19kZWJ1Z19iaW5fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6NDU3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnX2JpbiwgbXQ3OTk2X2Z3X2RlYnVnX2Jpbl9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTQ1OC1cXHRcXHRcXHQgbXQ3OTk2X2Z3X2RlYnVnX2Jpbl9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz04NjI9bXQ3OTk2X3JmX3JlZ3ZhbF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg3MDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZl9yZWd2YWwsIG10Nzk5Nl9yZl9yZWd2YWxfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NzEtXFx0XFx0XFx0IG10Nzk5Nl9yZl9yZWd2YWxfc2V0LCBcXFwiMHglMDhsbHhcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTk1OT1ib29sIG10Nzk5Nl9kZWJ1Z2ZzX3J4X2xvZyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTcwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NzEtLyoqIHBlci1zdGF0aW9uIGRlYnVnZnMgKiovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjU0NT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5OTZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI1OTMtXFx0LnR3dF90ZWFyZG93bl9yZXF1ZXN0ID0gbXQ3OTk2X3R3dF90ZWFyZG93bl9yZXF1ZXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNTk0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNTk1LVxcdC5zdGFfYWRkX2RlYnVnZnMgPSBtdDc5OTZfc3RhX2FkZF9kZWJ1Z2ZzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg9OTM0PWludCBtdDc5OTZfbWN1X3NldF9lbWxzcl9tb2RlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC05MzctXFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9lbWxfcGFyYW1zICplbWxfcGFyYW1zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo5Mzg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtOTM5LXZvaWQgbXQ3OTk2X3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MTkuMDkxNTM2OTgyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MjY3NDczODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBjb2RlOlxuXG4qKkNvbmRpdGlvbmFsIENvbXBpbGF0aW9uIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHNlZSBgbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHNgIGJlaW5nIGNhbGxlZCB3aXRoaW4gYG10NzkyNV9pbml0X2RlYnVnZnNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCB3aGV0aGVyIGBtdDc5MjVfaW5pdF9kZWJ1Z2ZzYCBpdHNlbGYgaXMgY29tcGlsZWQgY29uZGl0aW9uYWxseS4gV2Uga25vdyBob3cgTWVkaWF0ZWsgYW5kIHRoZWlyIGRyaXZlciBtb2R1bGVzIGNhbiBiZSwgYW5kIGl0J3MgYWx3YXlzIHdvcnRoIHZlcmlmeWluZyB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUncyBhIGNvbmZpZ3VyYXRpb24gZmxhZyBvciBhIHBsYXRmb3JtLXNwZWNpZmljIGNoZWNrIHN1cnJvdW5kaW5nIHRoYXQgZnVuY3Rpb24uIE15IGd1dCB0ZWxscyBtZSB0aGlzIGNvdWxkIGJlIGNydWNpYWwgdG8gc29tZSBkb3duc3RyZWFtIGlzc3VlLiBJJ2xsIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzIGFuZCBzdXJyb3VuZGluZyBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gVGhpcyBraW5kIG9mIGRldGFpbCBjYW4gc2F2ZSBhIGxvdCBvZiBkZWJ1Z2dpbmcgdGltZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxNTcsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODoyMi44MTgyODY3NDNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDQ4MTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV9pbml0X2RlYnVnZnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yODc9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg5OmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MTkwPXN0YXRpYyB2b2lkIG10NzkyNV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjE5OlxcdHJldCA9IG10NzkyNV9pbml0X2RlYnVnZnMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjIwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTMyMT1pbnQgbXQ3OTI1X2luaXRfbWxvX2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzIyOmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MjIuODU5NzM4MjAyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMTk0MzQ5MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2YgdGhpcy5cblxuKipEZWJ1Z2dpbmcgdGhlIERlcGVuZGVuY3kgUHV6emxlKipcblxuQWxyaWdodCwgSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGEgZGVwZW5kZW5jeSBpc3N1ZSwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gc29tZXRoaW5nIGJlaW5nICphbHdheXMqIGNvbXBpbGVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiT2theSwgaXQncyBhbHdheXMgY29tcGlsZWQuXCIgVGhhdCBsZWFkcyBtZSB0byBhIHF1aWNrIHJlYWxpemF0aW9uIHRoYXQgYGRlYnVnZnMub2AgaXMgY29uc2lzdGVudGx5IHByZXNlbnQgd2l0aGluIGBtdDc5MjUtY29tbW9uLXlgLiBTbywgbXkgbmV4dCBhc3N1bXB0aW9uLCB0aGVuLCBpcyB0aGF0IHNpbXBseSBlbmFibGluZyBgQ09ORklHX01UNzkyNVVgIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGVuYWJsZSBpdC4gQnV0IHRoZW4gSSBoaXQgYSBzbmFnLiBXaGF0IGFib3V0IGBDT05GSUdfTUFDODAyMTFfREVCVUdGU2A/IERvZXMgKnRoYXQqIGNvbWUgaW50byBwbGF5IHNvbWVob3c/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGBtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wc2AgaGFzIGEgZGVwZW5kZW5jeSBvbiBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgIHRvIGRldGVybWluZSBpZiBJJ20gbWlzc2luZyBzb21ldGhpbmcgaW1wb3J0YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkxNiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI4OjI3LjA3OTE3NTg4N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI0NzI2NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmM9MTAzPXN0cnVjdCBkZW50cnkgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jOjEwNDptdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYy0xMDUtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmMtMTI1LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RlYnVnZnMuYzoxMjY6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTMzMz1zdHJ1Y3QgbXQ3Nl9waHkgKm10NzZfdmlmX3BoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTMzNjpzdHJ1Y3QgZGVudHJ5ICptdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMzM3LVxcdFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqb3BzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzM4PXN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzMzkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzNDA6XFx0cmV0dXJuIG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTM0MS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9NTQ4PWludCBtdDc2MTVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzo1NTI6XFx0ZGlyID0gbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHMoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgXFx1MDAyNmZvcHNfcmVndmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNTUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTEyODE9aW50IG10NzkxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMjg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMjg3OlxcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKHBoeS1cXHUwMDNlbXQ3NiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEyODgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjY0PWludCBtdDc5MjFfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyNjg6XFx0ZGlyID0gbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHMoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgXFx1MDAyNmZvcHNfcmVndmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI4OT1pbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjkzOlxcdGRpciA9IG10NzZfcmVnaXN0ZXJfZGVidWdmc19mb3BzKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIFxcdTAwMjZmb3BzX3JlZ3ZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYz04NzM9aW50IG10Nzk5Nl9pbml0X2RlYnVnZnMoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy04NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jOjg3NzpcXHRkaXIgPSBtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmMtODc4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODoyNy4xNzE2NTUwODRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NTY3NTY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kZWJ1Z2ZzLmNgIGZpbGUuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIGl0cyBkZXBlbmRlbmN5LCBvciBsYWNrIHRoZXJlb2YsIG9uIHRoZSBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBLbm93aW5nIHRoaXMgaXMgY3JpdGljYWwsIGFzIGl0IGRpcmVjdGx5IGltcGFjdHMgaG93IEkgYXBwcm9hY2ggZGVidWdnaW5nIGFuZCBmZWF0dXJlIGVuYWJsZW1lbnQgcmVsYXRlZCB0byB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVycywgYW5kIGhvdyBJIGNvbnNpZGVyIHJlbGF0ZWQgY29kZSBwYXRocy4gVW5kZXJzdGFuZGluZyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncyBsaWtlIHRoaXMgaXMgY29yZSB0byBlZmZlY3RpdmVseSBuYXZpZ2F0aW5nIGFuZCBtb2RpZnlpbmcga2VybmVsIG1vZHVsZXMsIGVzcGVjaWFsbHkgb25lcyB3aXRoIHNvIG1hbnkgY29uZmlndXJhYmxlIGNvbXBvbmVudHMuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjU5MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI4OjMwLjM1NzMzMzA4MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ2NTkwNjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRFQlVHRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MzAuNDIyMDA3NzlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwMzUzOTg0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc2IE1ha2VmaWxlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBNZWRpYXRlayBNVDc2IHdpcmVsZXNzIGRyaXZlci4gVGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBrZXJuZWwgbW9kdWxlIGJ1aWxkIHByb2Nlc3MgaXMgdGhlIGBNYWtlZmlsZWAsIHNvIGxldCdzIGhlYWQgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlYC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBzdHJ1Y3R1cmUgaGVyZTogb2JqZWN0IGZpbGUgZGVmaW5pdGlvbnMsIGRlcGVuZGVuY3kgdHJhY2tpbmcsIG1heWJlIHNvbWUgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGFuZCBob3BlZnVsbHkgYSB3ZWxsLWNvbW1lbnRlZCBvcmdhbml6YXRpb24uIEknbGwgYmUgbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIGNsdWVzIGFib3V0IGhvdyB0aGV5J3JlIGhhbmRsaW5nIGZpcm13YXJlIGxvYWRpbmcsIHBvd2VyIG1hbmFnZW1lbnQgaG9va3MsIGFuZCBhbnkgdW51c3VhbCBidWlsZCBmbGFncyBvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgTVQ3NiBjaGlwc2V0IHZhcmlhbnRzLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciB3aGVyZSBJ4oCZbGwgZmluZCB0aGUgcGFpbiBwb2ludHMsIGRlcGVuZGluZy4gTGV04oCZcyBzZWUgd2hhdCB0aGV5J3ZlIGNvb2tlZCB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MTcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODozNC40MjU1NTA3NjJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdG9iai0kKENPTkZJR19NVDc2X0NPUkUpICs9IG10NzYub1xcbiAgIDM6XFx0b2JqLSQoQ09ORklHX01UNzZfVVNCKSArPSBtdDc2LXVzYi5vXFxuICAgNDpcXHRvYmotJChDT05GSUdfTVQ3Nl9TRElPKSArPSBtdDc2LXNkaW8ub1xcbiAgIDU6XFx0b2JqLSQoQ09ORklHX01UNzZ4MDJfTElCKSArPSBtdDc2eDAyLWxpYi5vXFxuICAgNjpcXHRvYmotJChDT05GSUdfTVQ3NngwMl9VU0IpICs9IG10NzZ4MDItdXNiLm9cXG4gICA3OlxcdG9iai0kKENPTkZJR19NVDc2X0NPTk5BQ19MSUIpICs9IG10NzYtY29ubmFjLWxpYi5vXFxuICAgODpcXHRvYmotJChDT05GSUdfTVQ3OTJ4X0xJQikgKz0gbXQ3OTJ4LWxpYi5vXFxuICAgOTpcXHRvYmotJChDT05GSUdfTVQ3OTJ4X1VTQikgKz0gbXQ3OTJ4LXVzYi5vXFxuICAxMDpcXHRcXG4gIDExOlxcdG10NzYteSA6PSBcXFxcXFxuICAxMjpcXHRcXHRtbWlvLm8gdXRpbC5vIHRyYWNlLm8gZG1hLm8gbWFjODAyMTEubyBkZWJ1Z2ZzLm8gZWVwcm9tLm8gXFxcXFxcbiAgMTM6XFx0XFx0dHgubyBhZ2ctcngubyBtY3UubyB3ZWQubyBzY2FuLm8gY2hhbm5lbC5vXFxuICAxNDpcXHRcXG4gIDE1OlxcdGlmZGVmIENPTkZJR19NVDc2X05QVVxcbiAgMTY6XFx0IyBDT05GSUdfTVQ3Nl9OUFUgaXMgdHJpc3RhdGUgdG8gc2ltcGxpZnkgZGVwZW5kZW5jeSB0cmFja2luZyxcXG4gIDE3OlxcdCMgYnV0IGl0IGJlaGF2ZXMgYXMgYSBib29sIHN5bWJvbCBoZXJlLlxcbiAgMTg6XFx0bXQ3Ni15ICs9IG5wdS5vXFxuICAxOTpcXHRlbmRpZlxcbiAgMjA6XFx0bXQ3Ni0kKENPTkZJR19QQ0kpICs9IHBjaS5vXFxuICAyMTpcXHRtdDc2LSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG4gIDIyOlxcdFxcbiAgMjM6XFx0bXQ3Ni11c2IteSA6PSB1c2IubyB1c2JfdHJhY2Uub1xcbiAgMjQ6XFx0bXQ3Ni1zZGlvLXkgOj0gc2Rpby5vIHNkaW9fdHhyeC5vXFxuICAyNTpcXHRcXG4gIDI2OlxcdENGTEFHU190cmFjZS5vIDo9IC1JJChzcmMpXFxuICAyNzpcXHRDRkxBR1NfdXNiX3RyYWNlLm8gOj0gLUkkKHNyYylcXG4gIDI4OlxcdENGTEFHU19tdDc2eDAyX3RyYWNlLm8gOj0gLUkkKHNyYylcXG4gIDI5OlxcdENGTEFHU19tdDc5MnhfdHJhY2UubyA6PSAtSSQoc3JjKVxcbiAgMzA6XFx0XFxuICAzMTpcXHRtdDc2eDAyLWxpYi15IDo9IG10NzZ4MDJfdXRpbC5vIG10NzZ4MDJfbWFjLm8gbXQ3NngwMl9tY3UubyBcXFxcXFxuICAzMjpcXHRcXHRcXHQgbXQ3NngwMl9lZXByb20ubyBtdDc2eDAyX3BoeS5vIG10NzZ4MDJfbW1pby5vIFxcXFxcXG4gIDMzOlxcdFxcdFxcdCBtdDc2eDAyX3R4cngubyBtdDc2eDAyX3RyYWNlLm8gbXQ3NngwMl9kZWJ1Z2ZzLm8gXFxcXFxcbiAgMzQ6XFx0XFx0XFx0IG10NzZ4MDJfZGZzLm8gbXQ3NngwMl9iZWFjb24ub1xcbiAgMzU6XFx0XFxuICAzNjpcXHRtdDc2eDAyLXVzYi15IDo9IG10NzZ4MDJfdXNiX21jdS5vIG10NzZ4MDJfdXNiX2NvcmUub1xcbiAgMzc6XFx0XFxuICAzODpcXHRtdDc2LWNvbm5hYy1saWIteSA6PSBtdDc2X2Nvbm5hY19tY3UubyBtdDc2X2Nvbm5hY19tYWMubyBtdDc2X2Nvbm5hYzNfbWFjLm9cXG4gIDM5OlxcdFxcbiAgNDA6XFx0bXQ3OTJ4LWxpYi15IDo9IG10NzkyeF9jb3JlLm8gbXQ3OTJ4X21hYy5vIG10NzkyeF90cmFjZS5vIFxcXFxcXG4gIDQxOlxcdFxcdFxcdG10NzkyeF9kZWJ1Z2ZzLm8gbXQ3OTJ4X2RtYS5vXFxuICA0MjpcXHRtdDc5MngtbGliLSQoQ09ORklHX0FDUEkpICs9IG10NzkyeF9hY3BpX3Nhci5vXFxuICA0MzpcXHRtdDc5MngtdXNiLXkgOj0gbXQ3OTJ4X3VzYi5vXFxuICA0NDpcXHRcXG4gIDQ1OlxcdG9iai0kKENPTkZJR19NVDc2eDBfQ09NTU9OKSArPSBtdDc2eDAvXFxuICA0NjpcXHRvYmotJChDT05GSUdfTVQ3NngyX0NPTU1PTikgKz0gbXQ3NngyL1xcbiAgNDc6XFx0b2JqLSQoQ09ORklHX01UNzYwM0UpICs9IG10NzYwMy9cXG4gIDQ4OlxcdG9iai0kKENPTkZJR19NVDc2MTVfQ09NTU9OKSArPSBtdDc2MTUvXFxuICA0OTpcXHRvYmotJChDT05GSUdfTVQ3OTE1RSkgKz0gbXQ3OTE1L1xcbiAgNTA6XFx0b2JqLSQoQ09ORklHX01UNzkyMV9DT01NT04pICs9IG10NzkyMS9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MzQuNDI1NjY5MzUyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjI4NTMwNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVidWdnaW5nIHRoZSBNVDc2IERlYnVnZnMgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBgZGVidWdmcy5vYCBpcyBjb25zaXN0ZW50bHkgYmVpbmcgYnVpbHQgaW50byB0aGUgYG10NzZgIG1vZHVsZSDigJMgdGhhdCdzIGEgZ2l2ZW4sIHBhcnQgb2YgdGhlIHN0YW5kYXJkIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIEkgc2VlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgc28gdGhhdCdzIGV4cGVjdGVkLiBXaGVyZSBkb2VzIHRoaXMgZnVuY3Rpb25hbGl0eSBhY3R1YWxseSAqbGl2ZSo/XCIgVGhlbiwgaXQgY2xpY2tzOiBgbXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHNgIGlzIHNpdHRpbmcgcmlnaHQgdGhlcmUgaW4gYGRlYnVnZnMuY2AuIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGFyaXNlczogRG9lcyB0aGlzIGZ1bmN0aW9uICphY3R1YWxseSogY3JlYXRlIGFueSBkZWJ1Z2ZzIGZpbGVzIG9yIGlzIGl0IGp1c3QgZGVjbGFyaW5nIHRoZSBzZXR1cD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgZG9pbmcgd2hhdCBpdHMgbmFtZSBpbXBsaWVzLCBvciBlbHNlIEkgYW0gbG9va2luZyBhdCBhIG1pc2NvbmZpZ3VyYXRpb24uIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmIGFuZCBzZWUgd2hhdCBpdCBkb2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI0NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6MzguNTQ4NTI2MTlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZGVidWdmcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMDpcXHR9XFxuIDEwMTpcXHRFWFBPUlRfU1lNQk9MX0dQTChtdDc2X3NlcV9wdXRzX2FycmF5KTtcXG4gMTAyOlxcdFxcbiAxMDM6XFx0c3RydWN0IGRlbnRyeSAqXFxuIDEwNDpcXHRtdDc2X3JlZ2lzdGVyX2RlYnVnZnNfZm9wcyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSxcXG4gMTA1OlxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKm9wcylcXG4gMTA2OlxcdHtcXG4gMTA3OlxcdFxcdGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMgPSBvcHMgPyBvcHMgOiBcXHUwMDI2Zm9wc19yZWd2YWw7XFxuIDEwODpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbiAxMDk6XFx0XFx0c3RydWN0IGRlbnRyeSAqZGlyO1xcbiAxMTA6XFx0XFxuIDExMTpcXHRcXHRkaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoXFxcIm10NzZcXFwiLCBwaHktXFx1MDAzZWh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlZGVidWdmc2Rpcik7XFxuIDExMjpcXHRcXG4gMTEzOlxcdFxcdGRlYnVnZnNfY3JlYXRlX3U4KFxcXCJsZWRfcGluXFxcIiwgMDYwMCwgZGlyLCBcXHUwMDI2cGh5LVxcdTAwM2VsZWRzLnBpbik7XFxuIDExNDpcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV91MzIoXFxcInJlZ2lkeFxcXCIsIDA2MDAsIGRpciwgXFx1MDAyNmRldi1cXHUwMDNlZGVidWdmc19yZWcpO1xcbiAxMTU6XFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZV91bnNhZmUoXFxcInJlZ3ZhbFxcXCIsIDA2MDAsIGRpciwgZGV2LCBmb3BzKTtcXG4gMTE2OlxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfdW5zYWZlKFxcXCJuYXBpX3RocmVhZGVkXFxcIiwgMDYwMCwgZGlyLCBkZXYsXFxuIDExNzpcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2Zm9wc19uYXBpX3RocmVhZGVkKTtcXG4gMTE4OlxcdFxcdGRlYnVnZnNfY3JlYXRlX2Jsb2IoXFxcImVlcHJvbVxcXCIsIDA0MDAsIGRpciwgXFx1MDAyNmRldi1cXHUwMDNlZWVwcm9tKTtcXG4gMTE5OlxcdFxcdGlmIChkZXYtXFx1MDAzZW90cC5kYXRhKVxcbiAxMjA6XFx0XFx0XFx0ZGVidWdmc19jcmVhdGVfYmxvYihcXFwib3RwXFxcIiwgMDQwMCwgZGlyLCBcXHUwMDI2ZGV2LVxcdTAwM2VvdHApO1xcbiAxMjE6XFx0XFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlZGV2LCBcXFwicngtcXVldWVzXFxcIiwgZGlyLFxcbiAxMjI6XFx0XFx0XFx0XFx0XFx0ICAgIG10NzZfcnhfcXVldWVzX3JlYWQpO1xcbiAxMjM6XFx0XFxuIDEyNDpcXHRcXHRyZXR1cm4gZGlyO1xcbiAxMjU6XFx0fVxcbiAxMjY6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9yZWdpc3Rlcl9kZWJ1Z2ZzX2ZvcHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODozOC41NDg2NDIwM1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjc5MzYyNDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIERlYnVnZnMgRGlyZWN0b3J5KipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgcGh5LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZWRlYnVnZnNkaXJgIGlzIGJlaW5nIHVzZWQgaGVyZS4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgXCJBaCwgdGhhdCdzIGEgbWFjODAyMTEgdGhpbmcuXCIgTWFjODAyMTEgaXMgdGhlIHVzdWFsIGN1bHByaXQgZm9yIGRlYnVnZnMgaW50ZWdyYXRpb24gaW4gdGhlIHdpcmVsZXNzIHN0YWNrLiBUaGUgcXVlc3Rpb24gbm93IGlzOiB3aGVuICpleGFjdGx5KiBkb2VzIG1hYzgwMjExIGNyZWF0ZSB0aGlzIGRpcmVjdG9yeT8gSXMgaXQgY29uZGl0aW9uYWwsIG9yIGlzIGl0IGFsd2F5cyB0aGVyZT8gU3BlY2lmaWNhbGx5LCBkb2VzIGl0IG9ubHkgY3JlYXRlIGBkZWJ1Z2ZzZGlyYCB3aGVuIGBDT05GSUdfTUFDODAyMTFfREVCVUdGU2AgaXMgZW5hYmxlZD8gVGltZSB0byBkaWcgaW50byB0aGUgc291cmNlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgZWl0aGVyIGBpbmNsdWRlL25ldC9tYWM4MDIxMS5oYCBmb3IgdGhlIG1hY3JvIGRlZmluaXRpb25zIG9yIHBvc3NpYmx5IGBuZXQvbWFjODAyMTEvZGVidWdmcy5jYCB0byBzZWUgdGhlIGFjdHVhbCBkaXJlY3RvcnkgY3JlYXRpb24gbG9naWMuIFRoYXQncyB3aGVyZSB0aGUgYW5zd2VyIHdpbGwgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MDY5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODo0Mi4yMjgwMDcwMjNaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNjA0NzI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWJ1Z2ZzZGlyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L21hYzgwMjExLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbWFjODAyMTEuaD03MzQ1PXN0cnVjdCByYXRlX2NvbnRyb2xfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzM0OS1cXHR2b2lkICgqYWRkX2RlYnVnZnMpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB2b2lkICpwcml2LFxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NzM1MDpcXHRcXHRcXHQgICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc2Rpcik7XFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03MzUxLVxcdHZvaWQgKCpmcmVlKSh2b2lkICpwcml2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6NDIuNTM0MDU5NTEzWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDM0NjY5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIHRoZSBMYXkgb2YgdGhlIExhbmQ6IGNmZzgwMjExLmggYW5kIGRlYnVnZnNkaXIqKlxuXG5SaWdodCwgbGV0J3Mgc3RhcnQgd2l0aCB0aGUgYmFzaWNzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgc3R1ZmYgaXMgc3RydWN0dXJlZCBpbiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyB0aGUgV2ktRmkgUEhZIGludGVyZmFjZSwgYHdpcGh5YCwgYW5kIGhvdyBpdHMgZGVidWdmcyBpbnRlcmZhY2UgaXMgaGFuZGxlZC4gTGV0J3MgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBob3cgdG8gZGVidWcgdGhpcyBwcm9wZXJseS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYHdpcGh5YCBzdHJ1Y3R1cmUsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBgZGVidWdmc2RpcmAgd2l0aGluIGBpbmNsdWRlL25ldC9jZmc4MDIxMS5oYC4gVGhhdCdzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IHBvaW50ZXJzIG9yIG1ldGhvZHMgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIGRlYnVnIGZpbGVzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBkZWJ1ZyBpbnRlcmZhY2UgaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZy4gTGV0J3MgZ28gdGhyb3VnaCB0aGUgZGV0YWlscyBvZiBob3cgdGhlIFdpLUZpIFBIWSdzIGRlYnVnIGZpbGVzeXN0ZW0gZGlyZWN0b3J5IGlzIHNldCB1cCBhbmQgdXNlZC4gS25vd2luZyB3aGVyZSB0aGlzIGlzIGRlZmluZWQgd2lsbCBoZWxwIG1lIHF1aWNrbHkgdW5kZXJzdGFuZCBob3cgdG8gZGlhZ25vc2UgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgZGVidWcgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU1MzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODo0Ni4yNzc1MjkyOTNaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjgxMTcwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWJ1Z2ZzZGlyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L2NmZzgwMjExLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02MjA1PXN0cnVjdCB3aXBoeV9pZnR5cGVfYWttX3N1aXRlcyB7XFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTYyMTctICpcXHQtMSAoZGVmYXVsdCkgPSBSVFMvQ1RTIGRpc2FibGVkXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo2MjE4OiAqIEByYWRpb19kZWJ1Z2ZzZGlyOiBQb2ludGVyIHRvIGRlYnVnZnMgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHJhZGlvLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNjIxOS0gKlxcdHNwZWNpZmljIHBhcmFtZXRlcnMuXFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oPTYyMjI9c3RydWN0IHdpcGh5X3JhZGlvX2NmZyB7XFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02MjIzLVxcdHUzMiBydHNfdGhyZXNob2xkO1xcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6NjIyNDpcXHRzdHJ1Y3QgZGVudHJ5ICpyYWRpb19kZWJ1Z2ZzZGlyO1xcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNjIyNS19O1xcbi0tXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaD02Mjk3PXN0cnVjdCB3aXBoeV9uYW5fY2FwYSB7XFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTYzNTQtICpcXHR1bnJlZ2lzdGVyIGhhcmR3YXJlXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo2MzU1OiAqIEBkZWJ1Z2ZzZGlyOiBkZWJ1Z2ZzIGRpcmVjdG9yeSB1c2VkIGZvciB0aGlzIHdpcGh5IChpZWVlODAyMTEvXFx1MDAzY3dpcGh5bmFtZVxcdTAwM2UpLlxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNjM1Ni0gKlxcdEl0IHdpbGwgYmUgcmVuYW1lZCBhdXRvbWF0aWNhbGx5IG9uIHdpcGh5IHJlbmFtZXNcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg9NjU0Mj1zdHJ1Y3Qgd2lwaHkge1xcbi0tXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC02NjM3LVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6NjYzODpcXHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzZGlyO1xcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNjYzOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6NDYuNDcwMzQ2NzI3WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MTAyODIyMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgT3JpZ2lucyBvZiBgd2lwaHktXHUwMDNlZGVidWdmc2RpcmAqKlxuXG5SaWdodCwgc28gYHdpcGh5LVx1MDAzZWRlYnVnZnNkaXJgLi4uIHRoYXQncyBkZWZpbml0ZWx5IGEgZGVidWdmcyBkaXJlY3RvcnkgcmVsYXRlZCB0byBhIHdpcmVsZXNzIHBoeSwgYW5kIEkga25vdyBpdCdzIGNyZWF0ZWQgYnkgY2ZnODAyMTEuIEJ1dCAqaG93KiBpcyBpdCBjcmVhdGVkPyBJcyBpdCBhbiB1bmNvbmRpdGlvbmFsIHRoaW5nLCBvciBkb2VzIGl0IGRlcGVuZCBvbiBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgYmVpbmcgZW5hYmxlZD8gSSBzdXNwZWN0IHRoZXJlJ3MgYSBjb25kaXRpb25hbCBhc3BlY3QgdG8gaXQuIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0ICp3aGVuKiB0aGF0IGRpcmVjdG9yeSBnZXRzIGNyZWF0ZWQuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IGl0J3MgdGllZCB0byBlaXRoZXIgYENPTkZJR19DRkc4MDIxMV9ERUJVR0ZTYCBvciBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgIGJlaW5nIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIFRoYXQncyB0aGUgbW9zdCBsaWtlbHkgc2NlbmFyaW8sIGlzbid0IGl0PyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgY29uZmlncyBkcml2ZSB0aGUgaW5zdGFudGlhdGlvbiBvZiB0aGF0IHBhcnRpY3VsYXIgZGVidWdmcyBkaXJlY3RvcnkuIEtub3dpbmcgdGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB3aGVuIGFuZCB3aHkgdGhlIGRpcmVjdG9yeSBhcHBlYXJzLCB3aGljaCB3aWxsIGJlIGVzc2VudGlhbCB3aGVuIEkgZ28gdG8gdHJvdWJsZXNob290IGFueSBmdXR1cmUgaXNzdWVzIHJlbGF0ZWQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Mjk1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6NTEuMzgwNjMxWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Nzk1MzkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWJ1Z2ZzZGlyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL2NvcmUuYz0xMjk9aW50IGNmZzgwMjExX2Rldl9yZW5hbWUoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNDgtXFxubmV0L3dpcmVsZXNzL2NvcmUuYzoxNDk6XFx0ZGVidWdmc19jaGFuZ2VfbmFtZShyZGV2LVxcdTAwM2V3aXBoeS5kZWJ1Z2ZzZGlyLCBcXFwiJXNcXFwiLCBuZXduYW1lKTtcXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE1MC1cXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmM9ODUzPWludCB3aXBoeV9yZWdpc3RlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxcbi0tXFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xMTY5LVxcdC8qIGFkZCB0byBkZWJ1Z2ZzICovXFxubmV0L3dpcmVsZXNzL2NvcmUuYzoxMTcwOlxcdHJkZXYtXFx1MDAzZXdpcGh5LmRlYnVnZnNkaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIod2lwaHlfbmFtZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHkpLFxcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTE3MS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgaWVlZTgwMjExX2RlYnVnZnNfZGlyKTtcXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTE3OC1cXHRcXHRcXHRcXHQgIGlkeCk7XFxubmV0L3dpcmVsZXNzL2NvcmUuYzoxMTc5OlxcdFxcdFxcdHdpcGh5LVxcdTAwM2VyYWRpb19jZmdbaWR4XS5yYWRpb19kZWJ1Z2ZzZGlyID1cXG5uZXQvd2lyZWxlc3MvY29yZS5jLTExODAtXFx0XFx0XFx0XFx0ZGVidWdmc19jcmVhdGVfZGlyKHJhZGlvX25hbWUsXFxubmV0L3dpcmVsZXNzL2NvcmUuYzoxMTgxOlxcdFxcdFxcdFxcdFxcdFxcdCAgIHJkZXYtXFx1MDAzZXdpcGh5LmRlYnVnZnNkaXIpO1xcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTE4Mi1cXHRcXHR9XFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jPTEyOTA9dm9pZCB3aXBoeV91bnJlZ2lzdGVyKHN0cnVjdCB3aXBoeSAqd2lwaHkpXFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jLTEzMTQtXFx0ICovXFxubmV0L3dpcmVsZXNzL2NvcmUuYzoxMzE1OlxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShyZGV2LVxcdTAwM2V3aXBoeS5kZWJ1Z2ZzZGlyKTtcXG5uZXQvd2lyZWxlc3MvY29yZS5jLTEzMTYtXFx0bGlzdF9kZWxfcmN1KFxcdTAwMjZyZGV2LVxcdTAwM2VsaXN0KTtcXG4tLVxcbm5ldC93aXJlbGVzcy9kZWJ1Z2ZzLmM9MTI5PXZvaWQgY2ZnODAyMTFfZGVidWdmc19yZGV2X2FkZChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYpXFxubmV0L3dpcmVsZXNzL2RlYnVnZnMuYy0xMzAte1xcbm5ldC93aXJlbGVzcy9kZWJ1Z2ZzLmM6MTMxOlxcdHN0cnVjdCBkZW50cnkgKnBoeWQgPSByZGV2LVxcdTAwM2V3aXBoeS5kZWJ1Z2ZzZGlyO1xcbm5ldC93aXJlbGVzcy9kZWJ1Z2ZzLmMtMTMyLVxcdHN0cnVjdCBkZW50cnkgKnJhZGlvZDtcXG4tLVxcbm5ldC93aXJlbGVzcy9kZWJ1Z2ZzLmMtMTQxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyByZGV2LVxcdTAwM2V3aXBoeS5uX3JhZGlvOyBpKyspIHtcXG5uZXQvd2lyZWxlc3MvZGVidWdmcy5jOjE0MjpcXHRcXHRyYWRpb2QgPSByZGV2LVxcdTAwM2V3aXBoeS5yYWRpb19jZmdbaV0ucmFkaW9fZGVidWdmc2RpcjtcXG5uZXQvd2lyZWxlc3MvZGVidWdmcy5jLTE0My1cXHRcXHRERUJVR0ZTX1JBRElPX0FERChyYWRpb19ydHNfdGhyZXNob2xkLCBpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6NTEuNDY4NTkwMTc3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODkyMzU0NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRGVidWdmcyBEaWxlbW1hKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGB3aXBoeWAgcmVnaXN0cmF0aW9uLiBJdCBzZWVtcyB0aGF0IGB3aXBoeS1cdTAwM2VkZWJ1Z2ZzZGlyYCBnZXRzIGNyZWF0ZWQgcmlnaHQgYXdheSBpbiBgd2lwaHlfcmVnaXN0ZXJgLCBhcyBsb25nIGFzIGBkZWJ1Z2ZzX2NyZWF0ZV9kaXJgIGlzIGRlZmluZWQsIHdoaWNoIG9mIGNvdXJzZSBkZXBlbmRzIG9uIGBDT05GSUdfREVCVUdfRlNgLiBTbywgY2xlYXJseSBgQ09ORklHX0RFQlVHX0ZTYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgaGVyZSwgd2hpY2ggaXNuJ3QgaWRlYWwgZm9yIHJlc291cmNlLWNvbnN0cmFpbmVkIHN5c3RlbXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGFjY2lkZW50YWxseSBnZXQgZW5hYmxlZCB3aGVuIGl0IHNob3VsZG4ndC4gV2FpdCBhIHNlY29uZCwgdGhlIGBkZWJ1Z2ZzLmNgIGZpbGUgd2l0aGluIHRoZSBgbXQ3NmAgZHJpdmVyIHNlZW1zIHRvIGJlIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSwgd2hpY2ggaXMgY29uY2VybmluZy4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNgIHRvIHNlZSBpZiB0aGVyZSdzIGFuIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzI4NiwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMjoyODo1NS4yNTc4Mjc4OTZaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdC8qIENvcHlyaWdodCAoQykgMjAyMyBNZWRpYVRlayBJbmMuICovXFxuICAgMzpcXHRcXG4gICA0OlxcdCNpbmNsdWRlIFxcXCJtdDc5MjUuaFxcXCJcXG4gICA1OlxcdCNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG4gICA2OlxcdFxcbiAgIDc6XFx0c3RhdGljIGludFxcbiAgIDg6XFx0bXQ3OTI1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4gICA5OlxcdHtcXG4gIDEwOlxcdFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbiAgMTE6XFx0XFx0dTMyIHJlZ3ZhbCA9IHZhbDtcXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG4gIDE0OlxcdFxcdG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCB0cnVlKTtcXG4gIDE1OlxcdFxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdHJldHVybiAwO1xcbiAgMTg6XFx0fVxcbiAgMTk6XFx0XFxuICAyMDpcXHRzdGF0aWMgaW50XFxuICAyMTpcXHRtdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG4gIDIyOlxcdHtcXG4gIDIzOlxcdFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbiAgMjQ6XFx0XFx0dTMyIHJlZ3ZhbDtcXG4gIDI1OlxcdFxcdGludCByZXQ7XFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuICAyODpcXHRcXHRyZXQgPSBtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgZmFsc2UpO1xcbiAgMjk6XFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4gIDMwOlxcdFxcdGlmICghcmV0KVxcbiAgMzE6XFx0XFx0XFx0KnZhbCA9IHJlZ3ZhbDtcXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0cmV0dXJuIDA7XFxuICAzNDpcXHR9XFxuICAzNTpcXHRcXG4gIDM2OlxcdERFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxcbiAgMzc6XFx0XFx0XFx0XFx0IFxcXCIweCUwOGxseFxcXFxuXFxcIik7XFxuICAzODpcXHRzdGF0aWMgaW50XFxuICAzOTpcXHRtdDc5MjVfZndfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuICA0MDpcXHR7XFxuICA0MTpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ZGV2LVxcdTAwM2Vmd19kZWJ1ZyA9ICh1OCl2YWw7XFxuICA0NjpcXHRcXHRtdDc5MjVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBkZXYtXFx1MDAzZWZ3X2RlYnVnKTtcXG4gIDQ3OlxcdFxcbiAgNDg6XFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4gIDQ5OlxcdFxcbiAgNTA6XFx0XFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI4OjU1LjI1NzkzMDU5NloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTcxNDM4MDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1UNzkyNSBNQ1UgUmVnaXN0ZXIgVmFsdWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXQ3OTI1X21jdV9yZWd2YWxgIGZ1bmN0aW9uLiBJdCdzIG9ubHkgZXhwb3NlZCB0aHJvdWdoIHRoZSBkZWJ1Z2ZzIGByZWd2YWxgIGludGVyZmFjZSwgcmlnaHQ/IFRoZSBxdWVzdGlvbiBpcywgaXMgaXQgd29ydGggdGhlIGVmZm9ydCB0byBmdXp6IGl0PyBXZWxsLCBnaXZlbiB0aGF0IHN5emthbGxlciAqZG9lcyogdGFyZ2V0IGRlYnVnZnMgZmlsZXMsIEknZCBzYXkgdGhlIGFuc3dlciBpcyBsaWtlbHkgeWVzLlxuXG5UaGUgcGF0Y2ggSSdtIGV4YW1pbmluZyBhZGRyZXNzZXMgYSBidWcsIGEgbWlzY2FsY3VsYXRpb24gb2YgYGNtZF9sZW5gIGluIGZhY3QsIGFuZCB0aGlzIHNlZW1zIHRvIG9wZW4gdGhlIGRvb3IgdG8gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGlzc3VlcyBvciBldmVuIHRoZSBkcmVhZGVkIE1DVSBmaXJtd2FyZSBjcmFzaC4gQ2xhc3NpYy4gTm93LCB0aGUgY29uZmlncyBuZWVkZWQgdG8gdHJpZ2dlciB0aGlzIHNlZW0gdG8gYmUgYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIG9mIGNvdXJzZSBgREVCVUdfRlNgLlxuXG5IYW5nIG9uIGEgc2Vjb25kLiBgTUFDODAyMTFgIGFuZCBgVVNCYCBhcmUgYmFzaWNhbGx5IGRlcGVuZGVuY2llcyBmb3IgYE1UNzkyNVVgLCB0aGV5IGhhdmUgdG8gYmUgZW5hYmxlZCBmb3IgdGhhdCB0byB3b3JrLiBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgdGhvc2UgYE1UNzkyNVVgIGRlcGVuZGVuY2llcyBhZ2FpbiwganVzdCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM0MiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI4OjU5LjgyOTM3MTlaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIyNTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzkyeF9MSUJcXG4gICA1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDY6XFx0XFxuICAgNzpcXHRjb25maWcgTVQ3OTI1RVxcbiAgIDg6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuICAgOTpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXFxuICAxNDpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMTU6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE1UNzkyNVVcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTVQ3OTJ4X1VTQlxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXFxuICAyNzpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMjg6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjg6NTkuODI5NDk3MDRaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4Mzk1Nzc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzkyNVUgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgTVQ3OTI1VWAgY29uZmlnIGlzIHRoZSBwcmltYXJ5IGZvY3VzIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgcHJvcGVybHkuIE15IG5leHQgdGhvdWdodCByZXZvbHZlcyBhcm91bmQgYERFQlVHX0ZTYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyBhY3R1YWxseSByZXF1aXJlZCBpbiB0aGlzIHNldHVwLiBMZXQncyBkaWcgaW4gYW5kIHNlZS4gQWgsIHllcywgaXQgYXBwZWFycyB0aGF0IGBkZWJ1Z2ZzYCBpcyBlc3NlbnRpYWw7IGl0J3MgdGhlIG1lY2hhbmlzbSB0aGF0IGV4cG9zZXMgYHJlZ3ZhbGAuIEV4Y2VsbGVudC4gSG93ZXZlciwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgd2hlcmUgZWxzZSBgbXQ3OTI1X21jdV9yZWd2YWxgIGlzIGVtcGxveWVkLiBJdCBtaWdodCBhZmZlY3Qgb3RoZXIgY29kZSBwYXRocyB0aGF0IGFyZSBub3QgcmVsYXRlZCB0byBgREVCVUdfRlNgLiBMZXQncyB0YWtlIGEgbG9vayBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2AgZGlyZWN0b3J5IGFuZCBzZWUgd2hhdCBwb3BzIHVwLCBlbnN1cmluZyBJJ20gY29uc2lkZXJpbmcgdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTI2OSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI5OjAzLjcxMzQ1OTQxNloiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ4MDQzMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X21jdV9yZWd2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz04PW10NzkyNV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ6XFx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXFx1MDAzZW10NzYuZGVidWdmc19yZWcsIFxcdTAwMjZyZWd2YWwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxPW10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OlxcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NT1FWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3NzppbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTQwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcmVndmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zODM9aW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozODY6aW50IG10NzkyNV9tY3VfcmVndmFsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzg3LWludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjk6MDMuNzc4MjY4NTk0WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjEwOTkyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVidWdnaW5nIHRoZSBEZWJ1Z0ZTIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGlzIGBkZWJ1Z2ZzLmNgIGZpbGUuIFJpZ2h0LCBJIHNlZSBpdCdzIG9ubHkgYmVpbmcgdXNlZCB0aGVyZS4gVGhhdCBzdWdnZXN0cyBgREVCVUdfRlNgIGlzIGEgcmVxdWlyZW1lbnQuIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSBzdXJlLiBIb2xkIG9uLCB3YXNuJ3QgdGhlcmUgc29tZXRoaW5nIGFib3V0IGBNQUM4MDIxMV9ERUJVR0ZTYD8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgcGFydGljdWxhciBkcml2ZXIsIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNgLCBpc24ndCBhbHNvIGFmZmVjdGVkIGJ5IHRoaXMgZmxhZy4gSSdsbCBuZWVkIHRvIGdvIHRocm91Z2ggaXQgYWdhaW4gYW5kIGNvbmZpcm0gdGhhdCBgREVCVUdfRlNgIGlzIHRoZSBvbmx5IHByZS1yZXF1aXNpdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNTI5LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDI6Mjk6MDYuOTk5MzcyMzQxWiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjg0MzEyNywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUFDODAyMTFfREVCVUdGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI5OjA3LjA3MjIyMTYzOFoiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Nzg1Njg3MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgVGFyZ2V0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpdCBkb2Vzbid0IHNlZW0gdG8gYmUgbGV2ZXJhZ2luZyBgTUFDODAyMTFfREVCVUdGU2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBCdXQgd2FpdCwgYHdpcGh5X3JlZ2lzdGVyYCBkb2VzIGNyZWF0ZSBgZGVidWdmc2RpcmAgdW5jb25kaXRpb25hbGx5IGlmIGBERUJVR19GU2AgaXMgZW5hYmxlZCwgc28gdGhhdCdzIGFjdHVhbGx5IHRoZSBrZXkuIFRoZSBgREVCVUdfRlNgIGNvbmZpZ3VyYXRpb24gc2VlbXMgdG8gYmUgc3VmZmljaWVudC5cblxuTGV0IG1lIHplcm8gaW4gb24gdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBgbXQ3OTI1X21jdV9yZWd2YWxgLCBhbmQgc2VlIGlmIGl0J3MgdGhlIG9ubHkgcmVsZXZhbnQgcGFydC4gWWVwLCBpdCBpcy4gVGhlIGNoYW5nZSBpcyBpc29sYXRlZCB0aGVyZS5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IEFic29sdXRlbHkuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciwgYW5kIHRoYXQgZHJpdmVyICh0aGUgbXQ3OTI1IFVTQiBXaS1GaSBkcml2ZXIpIGNhbiBiZSBlbXVsYXRlZCB2aWEgVVNCLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBkZWJ1Z2ZzLiBUaGF0IGlzIGZ1enphYmxlLlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9ucy4gVGhlIGltbWVkaWF0ZSBvbmVzIHNlZW0gdG8gYmUgYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBERUJVR19GU2AuIEhvbGQgb24sIGBNQUM4MDIxMWAgYW5kIGBVU0JgIGFyZSBkZXBlbmRlbmNpZXMgb2YgYE1UNzkyNVVgLiBTbywgSSdsbCBsaXN0IGBNVDc5MjVVYCwgYE1BQzgwMjExYCwgYFVTQmAsIGBERUJVR19GU2AuXG5cbkhhbmcgb24sIGBNQUM4MDIxMWAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgQ0ZHODAyMTFgLiBCdXQgdGhhdCdzIG5vdCBhIGRpcmVjdCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY3kgdG8gbGlzdCwgc28gSSBjYW4gc3RpY2sgd2l0aCBteSBsaXN0IG9mIGBNVDc5MjVVYCwgYE1BQzgwMjExYCwgYFVTQmAsIGFuZCBgREVCVUdfRlNgLlxuXG5KdXN0IHRvIGNvbmZpcm0sIGBNVDc5MjVVYCBpcyB0aGUgY29ycmVjdCBjb25maWcsIGFuZCBJIHNlZSBpdCdzIGZvciB0aGUgVVNCIGRyaXZlci4gT2theSwgYWxsIGdvb2QgdGhlcmUuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoYXQgYG10NzkyNV9tY3VfcmVndmFsYCBpc24ndCBzdGF0aWMgYW5kIGlzIGV4cG9ydGVkLCBzbyBpdCdzIGFjY2Vzc2libGUuIFllcCwgaXQgaXMgZXhwb3J0ZWQgdmlhIGBFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3JlZ3ZhbClgLlxuXG5TbywgaGVyZSdzIHRoZSBmaW5hbCBicmVha2Rvd246XG5cbiogICAqKldvcnRoRnV6emluZzogdHJ1ZSoqXG4qICAgKipGb2N1c1N5bWJvbHM6IFxcW1wibXQ3OTI1XFxfbWN1XFxfcmVndmFsXCJcXF0qKlxuKiAgICoqRW5hYmxlQ29uZmlnczogXFxbXCJNVDc5MjVVXCIsIFwiTUFDODAyMTFcIiwgXCJVU0JcIiwgXCJERUJVR1xcX0ZTXCJcXF0qKlxuKiAgICoqUmVhc29uaW5nOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGNvbW1hbmQgbGVuZ3RoIGNhbGN1bGF0aW9uIGluIG10NzkyNVxcX21jdVxcX3JlZ3ZhbCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBkZWJ1Z2ZzIGluIHRoZSBtdDc5MjUgVVNCIFdpLUZpIGRyaXZlci4gVGhpcyBkcml2ZXIgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15IEhDRCwgbWFraW5nIGl0IGZ1enphYmxlLlwiKipcblxuXG4iLCJJbnB1dFRva2VucyI6MzA4MTEsIk91dHB1dFRva2VucyI6MTI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAyOjI5OjE0Ljg1NzkxMTI0WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0OTk3NDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJERUJVR19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNV9tY3VfcmVndmFsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBjb21tYW5kIGxlbmd0aCBjYWxjdWxhdGlvbiBpbiBtdDc5MjVfbWN1X3JlZ3ZhbCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBkZWJ1Z2ZzIGluIHRoZSBtdDc5MjUgVVNCIFdpLUZpIGRyaXZlci4gVGhpcyBkcml2ZXIgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgZ2FkZ2V0L2R1bW15IEhDRCwgbWFraW5nIGl0IGZ1enphYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X21jdV9yZWd2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGNvbW1hbmQgbGVuZ3RoIGNhbGN1bGF0aW9uIGluIG10NzkyNV9tY3VfcmVndmFsLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIGRlYnVnZnMgaW4gdGhlIG10NzkyNSBVU0IgV2ktRmkgZHJpdmVyLiBUaGlzIGRyaXZlciBjYW4gYmUgZW11bGF0ZWQgdmlhIFVTQiBnYWRnZXQvZHVtbXkgSENELCBtYWtpbmcgaXQgZnV6emFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowrs4q9[1] Phase: Succeeded StartedAt: 2026-08-05 02:29:26 +0000 UTC FinishedAt: 2026-08-05 02:29:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 02:29:26 +0000 UTC FinishedAt: 2026-08-05 02:29:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2] Phase: Succeeded StartedAt: 2026-08-05 02:29:26 +0000 UTC FinishedAt: 2026-08-05 03:14:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 02:29:26 +0000 UTC FinishedAt: 2026-08-05 03:14:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 02:29:26 +0000 UTC FinishedAt: 2026-08-05 02:29:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 02:29:26 +0000 UTC FinishedAt: 2026-08-05 02:29:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrs4q9/series-workflowrs4q9-convert-artifact-1377894217/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 02:29:37 +0000 UTC FinishedAt: 2026-08-05 02:50:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 02:29:37 +0000 UTC FinishedAt: 2026-08-05 02:50:13 +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:*56eed6ef-8a07-4677-b486-2632ae7d432b,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-workflowrs4q9/series-workflowrs4q9-convert-artifact-1377894217/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": "f3d0784e-cb28-438e-9bf6-e19c18c966d5", "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-workflowrs4q9/series-workflowrs4q9-build-action-2971827751/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 02:29:37 +0000 UTC FinishedAt: 2026-08-05 02:50:03 +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:*56eed6ef-8a07-4677-b486-2632ae7d432b,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-workflowrs4q9/series-workflowrs4q9-convert-artifact-1377894217/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": "f3d0784e-cb28-438e-9bf6-e19c18c966d5", "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-workflowrs4q9/series-workflowrs4q9-build-action-2971827751/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 02:50:13 +0000 UTC FinishedAt: 2026-08-05 02:50:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 02:50:13 +0000 UTC FinishedAt: 2026-08-05 02:50:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 02:50:13 +0000 UTC FinishedAt: 2026-08-05 02:50:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 02:50:13 +0000 UTC FinishedAt: 2026-08-05 02:50:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrs4q9/series-workflowrs4q9-convert-artifact-2214580572/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 02:50:23 +0000 UTC FinishedAt: 2026-08-05 02:53:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 02:50:23 +0000 UTC FinishedAt: 2026-08-05 02:52:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f3d0784e-cb28-438e-9bf6-e19c18c966d5,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-workflowrs4q9/series-workflowrs4q9-build-action-2971827751/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-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 02:53:14 +0000 UTC FinishedAt: 2026-08-05 02:53:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 02:53:14 +0000 UTC FinishedAt: 2026-08-05 02:53:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 02:53:14 +0000 UTC FinishedAt: 2026-08-05 03:09:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 02:53:14 +0000 UTC FinishedAt: 2026-08-05 03:09:29 +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:*56eed6ef-8a07-4677-b486-2632ae7d432b,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-workflowrs4q9/series-workflowrs4q9-convert-artifact-2214580572/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": "5b55258b-ef95-481c-a1eb-64b799fa9dff", "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-workflowrs4q9/series-workflowrs4q9-build-action-2527499704/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 02:53:14 +0000 UTC FinishedAt: 2026-08-05 03:09:19 +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:*56eed6ef-8a07-4677-b486-2632ae7d432b,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-workflowrs4q9/series-workflowrs4q9-convert-artifact-2214580572/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": "5b55258b-ef95-481c-a1eb-64b799fa9dff", "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-workflowrs4q9/series-workflowrs4q9-build-action-2527499704/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 03:09:29 +0000 UTC FinishedAt: 2026-08-05 03:09:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 03:09:29 +0000 UTC FinishedAt: 2026-08-05 03:09:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 03:09:29 +0000 UTC FinishedAt: 2026-08-05 03:11:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 03:09:29 +0000 UTC FinishedAt: 2026-08-05 03:11:26 +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:*5b55258b-ef95-481c-a1eb-64b799fa9dff,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-workflowrs4q9/series-workflowrs4q9-build-action-2527499704/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-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 03:11:32 +0000 UTC FinishedAt: 2026-08-05 03:14:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 03:11:32 +0000 UTC FinishedAt: 2026-08-05 03:14:25 +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":["mt7925_mcu_regval"],"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:*f3d0784e-cb28-438e-9bf6-e19c18c966d5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5b55258b-ef95-481c-a1eb-64b799fa9dff,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-workflowrs4q9/series-workflowrs4q9-build-action-2971827751/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-workflowrs4q9/series-workflowrs4q9-build-action-2527499704/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 03:11:32 +0000 UTC FinishedAt: 2026-08-05 03:11:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 03:11:32 +0000 UTC FinishedAt: 2026-08-05 03:11:35 +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":["mt7925_mcu_regval"],"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-workflowrs4q9/series-workflowrs4q9-convert-artifact-880322085/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 03:11:32 +0000 UTC FinishedAt: 2026-08-05 03:11:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 03:11:32 +0000 UTC FinishedAt: 2026-08-05 03:11:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 03:11:32 +0000 UTC FinishedAt: 2026-08-05 03:11:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 03:11:42 +0000 UTC FinishedAt: 2026-08-05 03:14:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs4q9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mcu_regval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","DEBUG_FS"],"series_id":"07b142bd-49fc-46aa-8fd5-80d04e02b326","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 03:11:42 +0000 UTC FinishedAt: 2026-08-05 03:14:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f3d0784e-cb28-438e-9bf6-e19c18c966d5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5b55258b-ef95-481c-a1eb-64b799fa9dff,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-workflowrs4q9/series-workflowrs4q9-build-action-2971827751/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-workflowrs4q9/series-workflowrs4q9-build-action-2527499704/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-workflowrs4q9/series-workflowrs4q9-convert-artifact-880322085/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,}