Name: series-workflow2l2gl Phase: Failed StartedAt: 2026-09-11 02:28:26 +0000 UTC FinishedAt: 2026-09-11 02:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2l2gl[0] Phase: Succeeded StartedAt: 2026-09-11 02:28:26 +0000 UTC FinishedAt: 2026-09-11 02:48:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2l2gl[0].run-triage Phase: Succeeded StartedAt: 2026-09-11 02:28:26 +0000 UTC FinishedAt: 2026-09-11 02:48:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAyOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgUlggaGFuZGxpbmcgcm91dGluZXMgaW4gZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKE1ISSBXV0FOIE1CSU0gZHJpdmVyIGZvciBRdWFsY29tbSBtb2RlbXMpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyBkZXBlbmQgb24gc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBtb2RlbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAyOjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzM5Njg5YTdlYmRkYjQ5MjVhNTA2YzhlYzZjNzVjZGEyZTExYjA0ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDExIDAyOjQ2OjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jIGIvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcbmluZGV4IGE5NDk5ODcxMjU5NzYuLjMzNmY4OTc1NmYxMGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcbkBAIC0yNTEsNiAmIzQzOzI1MSwxNCBAQCBzdGF0aWMgaW50IG1iaW1fcnhfdmVyaWZ5X25kcDE2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB1c2JfY2RjX25jbV9uZHAxNiAqblxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIG1oaV9tYmltX3J4X2Ryb3Aoc3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmssIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuJiM0MztcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2bGluay1cdTAwM2VyeF9zeW5jcCk7XG4mIzQzO1x0dTY0X3N0YXRzX2luYyhcdTAwMjZsaW5rLVx1MDAzZXJ4X2Vycm9ycyk7XG4mIzQzO1x0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2bGluay1cdTAwM2VyeF9zeW5jcCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0aW50IG5kcG9mZnNldDtcbkBAIC0zMjAsNyAmIzQzOzMyOCwxMCBAQCBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdHNrYl9wdXQoc2tibiwgZGdyYW1fbGVuKTtcbi1cdFx0XHRza2JfY29weV9iaXRzKHNrYiwgZGdyYW1fb2Zmc2V0LCBza2JuLVx1MDAzZWRhdGEsIGRncmFtX2xlbik7XG4mIzQzO1x0XHRcdGlmIChza2JfY29weV9iaXRzKHNrYiwgZGdyYW1fb2Zmc2V0LCBza2JuLVx1MDAzZWRhdGEsIGRncmFtX2xlbikpIHtcbiYjNDM7XHRcdFx0XHRtaGlfbWJpbV9yeF9kcm9wKGxpbmssIHNrYm4pO1xuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0XHR9XG4gXG4gXHRcdFx0c3dpdGNoIChza2JuLVx1MDAzZWRhdGFbMF0gXHUwMDI2IDB4ZjApIHtcbiBcdFx0XHRjYXNlIDB4NDA6XG5AQCAtMzMyLDEwICYjNDM7MzQzLDcgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdFx0ZGVmYXVsdDpcbiBcdFx0XHRcdG5ldF9lcnJfcmF0ZWxpbWl0ZWQoXCYjMzQ7JXM6IHVua25vd24gcHJvdG9jb2xcXG5cJiMzNDssXG4gXHRcdFx0XHRcdFx0ICAgIGxpbmstXHUwMDNlbmRldi1cdTAwM2VuYW1lKTtcbi1cdFx0XHRcdGRldl9rZnJlZV9za2JfYW55KHNrYm4pO1xuLVx0XHRcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZsaW5rLVx1MDAzZXJ4X3N5bmNwKTtcbi1cdFx0XHRcdHU2NF9zdGF0c19pbmMoXHUwMDI2bGluay1cdTAwM2VyeF9lcnJvcnMpO1xuLVx0XHRcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2bGluay1cdTAwM2VyeF9zeW5jcCk7XG4mIzQzO1x0XHRcdFx0bWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdH1cbiBcbkBAIC0zNDksOSAmIzQzOzM1NywxMyBAQCBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB1bmxvY2s6XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIG5leHRfbmRwOlxuLVx0XHQvKiBPdGhlciBORFAgdG8gcHJvY2Vzcz8gKi9cbi1cdFx0bmRwb2Zmc2V0ID0gKGludClsZTE2X3RvX2NwdShuZHAxNi53TmV4dE5kcEluZGV4KTtcbi1cdFx0aWYgKCFuZHBvZmZzZXQpXG4mIzQzO1x0XHQvKiBPdGhlciBORFAgdG8gcHJvY2Vzcz8gIFRoZSBvZmZzZXRzIG11c3QgYWR2YW5jZSwgb3IgYVxuJiM0MztcdFx0ICogc2VsZi1yZWZlcmVuY2luZyBORFAga2VlcHMgdGhlIGxvb3Agc3Bpbm5pbmcgZm9yZXZlci5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0biA9IChpbnQpbGUxNl90b19jcHUobmRwMTYud05leHROZHBJbmRleCk7XG4mIzQzO1x0XHRpZiAobiBcdTAwM2UgbmRwb2Zmc2V0KVxuJiM0MztcdFx0XHRuZHBvZmZzZXQgPSBuO1xuJiM0MztcdFx0ZWxzZVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jIGIvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNcbmluZGV4IGZjMGE3Y2IxODFkZjIuLjhmMzJjMmQyNjkzMTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNcbkBAIC00MjAsNiAmIzQzOzQyMCwxMCBAQCBzdGF0aWMgdm9pZCB0N3h4X2NjbW5pX3JlY3Zfc2tiKHN0cnVjdCB0N3h4X2NjbW5pX2N0cmwgKmNjbW5pX2N0bGIsIHN0cnVjdCBza19idVxuIFxuIFx0c2tiX2NiID0gVDdYWF9TS0JfQ0Ioc2tiKTtcbiBcdG5ldGlmX2lkID0gc2tiX2NiLVx1MDAzZW5ldGlmX2lkeDtcbiYjNDM7XHRpZiAobmV0aWZfaWQgXHUwMDNlPSBOSUNfREVWX01BWCkge1xuJiM0MztcdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiBcdGNjbW5pID0gUkVBRF9PTkNFKGNjbW5pX2N0bGItXHUwMDNlY2NtbmlfaW5zdFtuZXRpZl9pZF0pO1xuIFx0aWYgKCFjY21uaSkge1xuIFx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgUlggaGFuZGxpbmcgcm91dGluZXMgaW4gZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKE1ISSBXV0FOIE1CSU0gZHJpdmVyIGZvciBRdWFsY29tbSBtb2RlbXMpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyBkZXBlbmQgb24gc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBtb2RlbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzM5Njg5YTdlYmRkYjQ5MjVhNTA2YzhlYzZjNzVjZGEyZTExYjA0ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDAyOjQ2OjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYwppbmRleCBhOTQ5OTg3MTI1OTc2Li4zMzZmODk3NTZmMTBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYwpAQCAtMjUxLDYgJiM0MzsyNTEsMTQgQEAgc3RhdGljIGludCBtYmltX3J4X3ZlcmlmeV9uZHAxNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgKm4KIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7c3RhdGljIHZvaWQgbWhpX21iaW1fcnhfZHJvcChzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0Mzt7CiYjNDM7CWRldl9rZnJlZV9za2JfYW55KHNrYik7CiYjNDM7CXU2NF9zdGF0c191cGRhdGVfYmVnaW4oJmFtcDtsaW5rLSZndDtyeF9zeW5jcCk7CiYjNDM7CXU2NF9zdGF0c19pbmMoJmFtcDtsaW5rLSZndDtyeF9lcnJvcnMpOwomIzQzOwl1NjRfc3RhdHNfdXBkYXRlX2VuZCgmYW1wO2xpbmstJmd0O3J4X3N5bmNwKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlpbnQgbmRwb2Zmc2V0OwpAQCAtMzIwLDcgJiM0MzszMjgsMTAgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpCiAJCQkJY29udGludWU7CiAKIAkJCXNrYl9wdXQoc2tibiwgZGdyYW1fbGVuKTsKLQkJCXNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tJmd0O2RhdGEsIGRncmFtX2xlbik7CiYjNDM7CQkJaWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tJmd0O2RhdGEsIGRncmFtX2xlbikpIHsKJiM0MzsJCQkJbWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTsKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CQkJfQogCiAJCQlzd2l0Y2ggKHNrYm4tJmd0O2RhdGFbMF0gJmFtcDsgMHhmMCkgewogCQkJY2FzZSAweDQwOgpAQCAtMzMyLDEwICYjNDM7MzQzLDcgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpCiAJCQlkZWZhdWx0OgogCQkJCW5ldF9lcnJfcmF0ZWxpbWl0ZWQoJiMzNDslczogdW5rbm93biBwcm90b2NvbFxuJiMzNDssCiAJCQkJCQkgICAgbGluay0mZ3Q7bmRldi0mZ3Q7bmFtZSk7Ci0JCQkJZGV2X2tmcmVlX3NrYl9hbnkoc2tibik7Ci0JCQkJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmYW1wO2xpbmstJmd0O3J4X3N5bmNwKTsKLQkJCQl1NjRfc3RhdHNfaW5jKCZhbXA7bGluay0mZ3Q7cnhfZXJyb3JzKTsKLQkJCQl1NjRfc3RhdHNfdXBkYXRlX2VuZCgmYW1wO2xpbmstJmd0O3J4X3N5bmNwKTsKJiM0MzsJCQkJbWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTsKIAkJCQljb250aW51ZTsKIAkJCX0KIApAQCAtMzQ5LDkgJiM0MzszNTcsMTMgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpCiB1bmxvY2s6CiAJCXJjdV9yZWFkX3VubG9jaygpOwogbmV4dF9uZHA6Ci0JCS8qIE90aGVyIE5EUCB0byBwcm9jZXNzPyAqLwotCQluZHBvZmZzZXQgPSAoaW50KWxlMTZfdG9fY3B1KG5kcDE2LndOZXh0TmRwSW5kZXgpOwotCQlpZiAoIW5kcG9mZnNldCkKJiM0MzsJCS8qIE90aGVyIE5EUCB0byBwcm9jZXNzPyAgVGhlIG9mZnNldHMgbXVzdCBhZHZhbmNlLCBvciBhCiYjNDM7CQkgKiBzZWxmLXJlZmVyZW5jaW5nIE5EUCBrZWVwcyB0aGUgbG9vcCBzcGlubmluZyBmb3JldmVyLgomIzQzOwkJICovCiYjNDM7CQluID0gKGludClsZTE2X3RvX2NwdShuZHAxNi53TmV4dE5kcEluZGV4KTsKJiM0MzsJCWlmIChuICZndDsgbmRwb2Zmc2V0KQomIzQzOwkJCW5kcG9mZnNldCA9IG47CiYjNDM7CQllbHNlCiAJCQlicmVhazsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jIGIvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMKaW5kZXggZmMwYTdjYjE4MWRmMi4uOGYzMmMyZDI2OTMxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMKQEAgLTQyMCw2ICYjNDM7NDIwLDEwIEBAIHN0YXRpYyB2b2lkIHQ3eHhfY2NtbmlfcmVjdl9za2Ioc3RydWN0IHQ3eHhfY2NtbmlfY3RybCAqY2NtbmlfY3RsYiwgc3RydWN0IHNrX2J1CiAKIAlza2JfY2IgPSBUN1hYX1NLQl9DQihza2IpOwogCW5ldGlmX2lkID0gc2tiX2NiLSZndDtuZXRpZl9pZHg7CiYjNDM7CWlmIChuZXRpZl9pZCAmZ3Q7PSBOSUNfREVWX01BWCkgewomIzQzOwkJZGV2X2tmcmVlX3NrYihza2IpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiAJY2NtbmkgPSBSRUFEX09OQ0UoY2NtbmlfY3RsYi0mZ3Q7Y2NtbmlfaW5zdFtuZXRpZl9pZF0pOwogCWlmICghY2NtbmkpIHsKIAkJZGV2X2tmcmVlX3NrYihza2IpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODkyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIEFuYWx5c2lzIC0gQSBRdWljayBMb29rKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgZnV6emFibGU/JiMzNDsgRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGl0JiMzOTtzIGV2ZW4gd29ydGggdGhlIHRpbWUuICBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVhY2hhYmlsaXR5LCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIGFuZCBhbnkgaW50ZXJlc3RpbmcgZm9jdXMgc3ltYm9scy4KClJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgZmlsZXMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQuIEkgc2VlIGBkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY2AgYW5kIGBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuY2AuICBPa2F5LCBXV0FOIGRyaXZlcnMuIEdvdCBpdC4gTm93LCB3aGF0JiMzOTtzIHRoZWlyIGNvbnRleHQ/IEFyZSB0aGV5IGxpa2VseSB0byBiZSB0cmlnZ2VyZWQgZWFzaWx5IGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgYW0gSSBnb2luZyB0byBuZWVkIHNwZWNpYWxpemVkIGhhcmR3YXJlIHRvIGFjdHVhbGx5IGdldCBhdCB0aGVtPyBJIG5lZWQgdG8ga25vdyB0aGlzIEFTQVAuCgpOZXh0IHN0ZXA6IHRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgb3IgZmlyZSB1cCBgZ3JlcHBlcmAuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgd2l0aCBgZ3JlcHBlcmAsIGFzIGl0JiMzOTtzIG9mdGVuIGZhc3RlciBmb3IgdGhpcyBpbml0aWFsIGFzc2Vzc21lbnQsIHRvIHNlZSBpZiBJIGNhbiBxdWlja2x5IGlkZW50aWZ5IGFueSByZWxldmFudCBjb25maWd1cmF0aW9ucyBvciBwb3RlbnRpYWwgYnVpbGQgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgaWxsdW1pbmF0ZSB0aGUgcGF0aCB0byByZWFjaGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUhJX1dXQU5fTUJJTXxNVEtfVDdYWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTQwPWNvbmZpZyBNSElfV1dBTl9DVFJMXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjUzOmNvbmZpZyBNSElfV1dBTl9NQklNXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNTQtICAgICAgICB0cmlzdGF0ZSBcJiMzNDtNSEkgV1dBTiBNQklNIG5ldHdvcmsgZHJpdmVyIGZvciBRdWFsY29tbS1iYXNlZCBQQ0llIG1vZGVtc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZz05Nj1jb25maWcgSU9TTVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDgtXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTA5OmNvbmZpZyBNVEtfVDdYWFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTExMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRldmljZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX01ISV9XV0FOX0NUUkwpICYjNDM7PSBtaGlfd3dhbl9jdHJsLm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX01ISV9XV0FOX01CSU0pICYjNDM7PSBtaGlfd3dhbl9tYmltLm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX1FDT01fQkFNX0RNVVgpICYjNDM7PSBxY29tX2JhbV9kbXV4Lm9cbi0tXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19JT1NNKSAmIzQzOz0gaW9zbS9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX01US19UN1hYKSAmIzQzOz0gdDd4eC9cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGUtMi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZTozOm9iai0ke0NPTkZJR19NVEtfVDdYWH0gOj0gbXRrX3Q3eHgub1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTQtbXRrX3Q3eHgteTo9XHR0N3h4X3BjaS5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc2NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBpbnZlc3RpZ2F0aW9uLCBmcm9tIG15IHBlcnNwZWN0aXZlOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZWVwIERpdmU6IFdXQU4gJmFtcDsgTUJJTSoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gYE1ISV9XV0FOX01CSU1gIGFuZCBgTVRLX1Q3WFhgIHdpdGhpbiB0aGUgV1dBTiBzdWJzeXN0ZW0mIzM5O3MgS2NvbmZpZyBmaWxlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYC4gSSYjMzk7bGwgd2FudCB0byBxdWlja2x5IHBhcnNlIHRoYXQgZmlsZSwgcGF5aW5nIHNwZWNpZmljIGF0dGVudGlvbiB0byBob3cgdGhlc2UgdHdvIG9wdGlvbnMg4oCTIGBNSElfV1dBTl9NQklNYCBhbmQgYE1US19UN1hYYCBhcmUgZGVmaW5lZCBhbmQsIG1vcmUgaW1wb3J0YW50bHksICp3aGF0KiB0aGV5IGRlcGVuZCBvbi4gQXJlIHRoZXkgbXV0dWFsbHkgZXhjbHVzaXZlPyBEb2VzIG9uZSAqcmVxdWlyZSogdGhlIG90aGVyPyBBcmUgdGhlcmUgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgYnJvdWdodCBpbnRvIHRoZSBwaWN0dXJlIGJhc2VkIG9uIGVpdGhlciBvZiB0aGVzZSBiZWluZyBzZXQ/IFVuZGVyc3RhbmRpbmcgdGhlaXIgZGVwZW5kZW5jaWVzIGlzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyB0aGV5IHBsYXkgdG9nZXRoZXIgaW4gdGhlIGJyb2FkZXIgV1dBTiBlY29zeXN0ZW0gYW5kIGhvdyBJIG1pZ2h0IG5lZWQgdG8gYWRqdXN0IHRoaW5ncy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gYW55IHBsYXRmb3JtIG9yIGJ1cy1zcGVjaWZpYyBjb25zdHJhaW50cyByZXZlYWxlZCBpbiB0aGUgS2NvbmZpZyBmaWxlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgYmFzZSBvZiBrbm93bGVkZ2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBNQklNIHByb3RvY29sIGlzIG1hbmFnZWQgd2hlbiB1c2luZyB0aGUgTVRLIFQ3WFggaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0Y29uZmlnIE1ISV9XV0FOX0NUUkxcbiAgNDE6XHRcdHRyaXN0YXRlIFwmIzM0O01ISSBXV0FOIGNvbnRyb2wgZHJpdmVyIGZvciBRdWFsY29tbS1iYXNlZCBQQ0llIG1vZGVtc1wmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBNSElfQlVTXG4gIDQzOlx0XHRoZWxwXG4gIDQ0Olx0XHQgIE1ISSBXV0FOIENUUkwgYWxsb3dzIFFDT00tYmFzZWQgUENJZSBtb2RlbXMgdG8gZXhwb3NlIGRpZmZlcmVudCBtb2RlbVxuICA0NTpcdFx0ICBjb250cm9sIHByb3RvY29scy9wb3J0cyB0byB1c2Vyc3BhY2UsIGluY2x1ZGluZyBBVCwgTUJJTSwgUU1JLCBESUFHXG4gIDQ2Olx0XHQgIGFuZCBGSVJFSE9TRS4gVGhlc2UgcHJvdG9jb2xzIGNhbiBiZSBhY2Nlc3NlZCBkaXJlY3RseSBmcm9tIHVzZXJzcGFjZVxuICA0NzpcdFx0ICAoZS5nLiBBVCBjb21tYW5kcykgb3IgdmlhIGxpYnJhcmllcy90b29scyAoZS5nLiBsaWJtYmltLCBsaWJxbWksXG4gIDQ4Olx0XHQgIGxpYnFjZG0uLi4pLlxuICA0OTpcdFxuICA1MDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcbiAgNTE6XHRcdCAgY2FsbGVkIG1oaV93d2FuX2N0cmwuXG4gIDUyOlx0XG4gIDUzOlx0Y29uZmlnIE1ISV9XV0FOX01CSU1cbiAgNTQ6XHQgICAgICAgIHRyaXN0YXRlIFwmIzM0O01ISSBXV0FOIE1CSU0gbmV0d29yayBkcml2ZXIgZm9yIFF1YWxjb21tLWJhc2VkIFBDSWUgbW9kZW1zXCYjMzQ7XG4gIDU1Olx0ICAgICAgICBkZXBlbmRzIG9uIE1ISV9CVVNcbiAgNTY6XHQgICAgICAgIGhlbHBcbiAgNTc6XHQgICAgICAgICAgTUhJIFdXQU4gTUJJTSBpcyBhIFdXQU4gbmV0d29yayBkcml2ZXIgZm9yIFFDT00tYmFzZWQgUENJZSBtb2RlbXMuXG4gIDU4Olx0ICAgICAgICAgIEl0IGltcGxlbWVudHMgTUJJTSBvdmVyIE1ISSwgZm9yIElQIGRhdGEgYWdncmVnYXRpb24gYW5kIG11eGluZy5cbiAgNTk6XHQgICAgICAgICAgQSBkZWZhdWx0IHd3YW4wIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGNyZWF0ZWQgZm9yIE1CSU0gZGF0YSBzZXNzaW9uXG4gIDYwOlx0ICAgICAgICAgIElEIDAuIEFkZGl0aW9uYWwgbGlua3MgY2FuIGJlIGNyZWF0ZWQgdmlhIHd3YW4gcnRuZXRsaW5rIHR5cGUuXG4gIDYxOlx0XG4gIDYyOlx0ICAgICAgICAgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxuICA2MzpcdCAgICAgICAgICBjYWxsZWQgbWhpX3d3YW5fbWJpbS5cbiAgNjQ6XHRcbiAgNjU6XHRjb25maWcgUUNPTV9CQU1fRE1VWFxuICA2NjpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQkFNLURNVVggV1dBTiBuZXR3b3JrIGRyaXZlclwmIzM0O1xuICA2NzpcdFx0ZGVwZW5kcyBvbiAoRE1BX0VOR0lORSBcdTAwMjZcdTAwMjYgUE0gXHUwMDI2XHUwMDI2IFFDT01fU01FTV9TVEFURSkgfHwgQ09NUElMRV9URVNUXG4gIDY4Olx0XHRoZWxwXG4gIDY5Olx0XHQgIFRoZSBCQU0gRGF0YSBNdWx0aXBsZXhlciBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIG5ldHdvcmsgZGF0YSBjaGFubmVsc1xuICA3MDpcdFx0ICBvZiBtb2RlbXMgaW50ZWdyYXRlZCBpbnRvIG1hbnkgb2xkZXIgUXVhbGNvbW0gU29DcywgZS5nLiBRdWFsY29tbVxuICA3MTpcdFx0ICBNU004OTE2IG9yIE1TTTg5NzQuIFRoZSBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCB2aWEgUU1JL0FUIGZyb21cbiAgNzI6XHRcdCAgdXNlcnNwYWNlIHdpdGggY29udHJvbCBwb3J0cyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgV1dBTiBzdWJzeXN0ZW1cbiAgNzM6XHRcdCAgKENPTkZJR19SUE1TR19XV0FOX0NUUkwpIG9yIFFSVFIgbmV0d29yayBzb2NrZXRzIChDT05GSUdfUVJUUikuXG4gIDc0Olx0XG4gIDc1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxuICA3NjpcdFx0ICBjYWxsZWQgcWNvbV9iYW1fZG11eC5cbiAgNzc6XHRcbiAgNzg6XHRjb25maWcgUlBNU0dfV1dBTl9DVFJMXG4gIDc5Olx0XHR0cmlzdGF0ZSBcJiMzNDtSUE1TRyBXV0FOIGNvbnRyb2wgZHJpdmVyXCYjMzQ7XG4gIDgwOlx0XHRkZXBlbmRzIG9uIFJQTVNHXG4gIDgxOlx0XHRoZWxwXG4gIDgyOlx0XHQgIFJQTVNHIFdXQU4gQ1RSTCBhbGxvd3MgbW9kZW1zIGF2YWlsYWJsZSB2aWEgUlBNU0cgY2hhbm5lbHMgdG8gZXhwb3NlXG4gIDgzOlx0XHQgIGRpZmZlcmVudCBtb2RlbSBwcm90b2NvbHMvcG9ydHMgdG8gdXNlcnNwYWNlLCBpbmNsdWRpbmcgQVQgYW5kIFFNSS5cbiAgODQ6XHRcdCAgVGhlc2UgcHJvdG9jb2xzIGNhbiBiZSBhY2Nlc3NlZCBkaXJlY3RseSBmcm9tIHVzZXJzcGFjZVxuICA4NTpcdFx0ICAoZS5nLiBBVCBjb21tYW5kcykgb3IgdmlhIGxpYnJhcmllcy90b29scyAoZS5nLiBsaWJxbWksIGxpYnFjZG0uLi4pLlxuICA4NjpcdFxuICA4NzpcdFx0ICBUaGlzIGlzIG1haW5seSB1c2VkIGZvciBtb2RlbXMgaW50ZWdyYXRlZCBpbnRvIG1hbnkgUXVhbGNvbW0gU29DcyxcbiAgODg6XHRcdCAgZS5nLiBmb3IgQVQgYW5kIFFNSSBvbiBRdWFsY29tbSBNU004OTE2IG9yIE1TTTg5NzQuIE5vdGUgdGhhdCBtYW55XG4gIDg5Olx0XHQgIG5ld2VyIFF1YWxjb21tIFNvQ3MgKGUuZy4gU0RNODQ1KSBzdGlsbCBwcm92aWRlIGFuIEFUIHBvcnQgdGhyb3VnaFxuICA5MDpcdFx0ICB0aGlzIGRyaXZlciBidXQgdGhlIFFNSSBtZXNzYWdlcyBjYW4gb25seSBiZSBzZW50IHRocm91Z2hcbiAgOTE6XHRcdCAgUVJUUiBuZXR3b3JrIHNvY2tldHMgKENPTkZJR19RUlRSKS5cbiAgOTI6XHRcbiAgOTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gIDk0Olx0XHQgIGNhbGxlZCBycG1zZ193d2FuX2N0cmwuXG4gIDk1Olx0XG4gIDk2Olx0Y29uZmlnIElPU01cbiAgOTc6XHRcdHRyaXN0YXRlIFwmIzM0O0lPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcJiMzNDtcbiAgOTg6XHRcdGRlcGVuZHMgb24gUENJXG4gIDk5Olx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAxMDA6XHRcdHNlbGVjdCBSRUxBWSBpZiBXV0FOX0RFQlVHRlNcbiAxMDE6XHRcdGhlbHBcbiAxMDI6XHRcdCAgVGhpcyBkcml2ZXIgZW5hYmxlcyBJbnRlbCBNLjIgV1dBTiBEZXZpY2UgY29tbXVuaWNhdGlvbi5cbiAxMDM6XHRcbiAxMDQ6XHRcdCAgSWYgeW91IGhhdmUgb25lIG9mIHRob3NlIEludGVsIE0uMiBXV0FOIE1vZHVsZXMgYW5kIHdpc2ggdG8gdXNlIGl0IGluXG4gMTA1Olx0XHQgIExpbnV4IHNheSBZL00gaGVyZS5cbiAxMDY6XHRcbiAxMDc6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxMDg6XHRcbiAxMDk6XHRjb25maWcgTVRLX1Q3WFhcbiAxMTA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRldmljZVwmIzM0O1xuIDExMTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAxMTI6XHRcdHNlbGVjdCBSRUxBWSBpZiBXV0FOX0RFQlVHRlNcbiAxMTM6XHRcdGhlbHBcbiAxMTQ6XHRcdCAgRW5hYmxlcyBNZWRpYVRlayBQQ0llIGJhc2VkIDVHIFdXQU4gbW9kZW0gKFQ3eHggc2VyaWVzKSBkZXZpY2UuXG4gMTE1Olx0XHQgIEFkYXB0cyBXV0FOIGZyYW1ld29yayBhbmQgcHJvdmlkZXMgbmV0d29yayBpbnRlcmZhY2UgbGlrZSB3d2FuMFxuIDExNjpcdFx0ICBhbmQgdHR5IGludGVyZmFjZXMgbGlrZSB3d2FuMGF0MCAoQVQgcHJvdG9jb2wpLCB3d2FuMG1iaW0wXG4gMTE3Olx0XHQgIChNQklNIHByb3RvY29sKSwgZXRjLlxuIDExODpcdFxuIDExOTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDc0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERyaXZlciBSZWFjaGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBzaXR1YXRpb24uIFdlJiMzOTt2ZSBnb3QgdHdvIGRyaXZlcnMgdG8gY29uc2lkZXIgaW4gdGVybXMgb2YgcmVhY2hhYmlsaXR5OiBgTUhJX1dXQU5fTUJJTWAuIEkga25vdyBgTUhJYCBzdGFuZHMgZm9yIE1vZGVtIEhvc3QgSW50ZXJmYWNlLCBhbmQgaXQmIzM5O3MgdXNlZCBmb3IgUXVhbGNvbW0gUENJZSBtb2RlbXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlIGRvZXMgdGhpcyBhY3R1YWxseSBsaXZlPyYjMzQ7IElzIGBNSElfV1dBTl9NQklNYCBkaXJlY3RseSB0aWVkIHRvIHBoeXNpY2FsIGhhcmR3YXJlIHRocm91Z2ggdGhlIGBNSElgIGJ1cywgb3IgYXJlIHRoZXJlIHZpcnR1YWwgY29uc3RydWN0cyBhdCBwbGF5PyBQZXJoYXBzIGFuIGVtdWxhdGVkIE1ISSBidXMgb3IgZXZlbiBzb21lIE1ISSBFUCBlbXVsYXRpb24gZ29pbmcgb24/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gcGlucG9pbnQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgaG93IHRvIGFjY2VzcyBpdHMgZnVuY3Rpb25hbGl0eS4gU28sIHRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSBleGFjdGx5IGhvdyB0aGUgTUhJIGJ1cyBhbmQgaXRzIGFzc29jaWF0ZWQgZGV2aWNlcyBhcmUgY3JlYXRlZCBpbiB0aGUgc3lzdGVtLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGVyZSBpcyBhICYjMzk7cmVhY2gmIzM5Oy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttaGlfZHJpdmVyX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZGVidWdmcy5jPTI5OD1pbnQgcWFpY19ib290bG9nX3JlZ2lzdGVyKHZvaWQpXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kZWJ1Z2ZzLmMtMjk5LXtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RlYnVnZnMuYzozMDA6XHRyZXR1cm4gbWhpX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZxYWljX2Jvb3Rsb2dfbWhpX2RyaXZlcik7XG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kZWJ1Z2ZzLmMtMzAxLX1cbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYz03NzY9c3RhdGljIGludCBfX2luaXQgcWFpY19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNzg1LVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6Nzg2Olx0cmV0ID0gbWhpX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZxYWljX21oaV9kcml2ZXIpO1xuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNzg3LVx0aWYgKHJldCkge1xuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6Nzg4Olx0XHRwcl9kZWJ1ZyhcJiMzNDtxYWljOiBtaGlfZHJpdmVyX3JlZ2lzdGVyIGZhaWxlZCAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTc4OS1cdFx0Z290byBmcmVlX3BjaTtcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19yYXMuYz02MzM9aW50IHFhaWNfcmFzX3JlZ2lzdGVyKHZvaWQpXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19yYXMuYy02MzQte1xuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfcmFzLmM6NjM1Olx0cmV0dXJuIG1oaV9kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2cWFpY19yYXNfbWhpX2RyaXZlcik7XG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19yYXMuYy02MzYtfVxuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3Nzci5jPTgwNz1pbnQgcWFpY19zc3JfcmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3Nzci5jLTgwOC17XG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19zc3IuYzo4MDk6XHRyZXR1cm4gbWhpX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZxYWljX3Nzcl9taGlfZHJpdmVyKTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3Nzci5jLTgxMC19XG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfdGltZXN5bmMuYz0zODg9aW50IHFhaWNfdGltZXN5bmNfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3RpbWVzeW5jLmMtMzkxLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfdGltZXN5bmMuYzozOTI6XHRyZXQgPSBtaGlfZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNnFhaWNfdGltZXN5bmNfZHJpdmVyKTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3RpbWVzeW5jLmMtMzkzLVx0aWYgKHJldClcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3RpbWVzeW5jLmMtMzk0LVx0XHRyZXR1cm4gcmV0O1xuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfdGltZXN5bmMuYzozOTU6XHRyZXQgPSBtaGlfZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNnFhaWNfYm9vdF90aW1lc3luY19kcml2ZXIpO1xuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfdGltZXN5bmMuYy0zOTYtXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL3NhaGFyYS5jPTkyNj1pbnQgc2FoYXJhX3JlZ2lzdGVyKHZvaWQpXG5kcml2ZXJzL2FjY2VsL3FhaWMvc2FoYXJhLmMtOTI3LXtcbmRyaXZlcnMvYWNjZWwvcWFpYy9zYWhhcmEuYzo5Mjg6XHRyZXR1cm4gbWhpX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZzYWhhcmFfbWhpX2RyaXZlcik7XG5kcml2ZXJzL2FjY2VsL3FhaWMvc2FoYXJhLmMtOTI5LX1cbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmM9MTMzMz1zdGF0aWMgdm9pZCBtaGlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTQwMC1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYzoxNDAxOmludCBfX21oaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1oaV9kcml2ZXIgKm1oaV9kcnYsIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTE0MDIte1xuLS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYy0xNDEyLX1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYzoxNDEzOkVYUE9SVF9TWU1CT0xfR1BMKF9fbWhpX2RyaXZlcl9yZWdpc3Rlcik7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTQxNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODEwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhpbmtpbmcgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1ISSBXV0FOIGFuZCBUN1hYIE5ldHdvcmsgRGV2aWNlIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtaGlfd3dhbl9tYmltLmNgIGFuZCBgdDd4eF9uZXRkZXYuY2Ag4oCTIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGFjdGlvbiBpcywgaXQgbG9va3MgbGlrZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgYWx3YXlzIHRvIHRyYWNlIHRoZSByZWdpc3RyYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIHRoYXQgYG1oaV93d2FuX21iaW1gIG1vZHVsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGJyb3VnaHQgb25saW5lLiBIb3cgaXMgdGhlIE1ISSBpbnRlcmZhY2UgaG9va2VkIGludG8gdGhlIE1CSU0gZnJhbWV3b3JrPyBBbmQgaG93IGRvZXMgdGhhdCBpbnRlcmFjdGlvbiB3aXRoIHRoZSB0N3h4IGhhcmR3YXJlIGFjdHVhbGx5IHRyYW5zbGF0ZSBpbnRvIGEgd29ya2luZyBuZXR3b3JrIGRldmljZT8gVGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGlzIGtleSDigJMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgZHJpdmVyIHNldHMgdXAgdGhlIGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGVzIHJlc291cmNlcywgYW5kIHByZXBhcmVzIGZvciBjb21tdW5pY2F0aW9uLiBHb3R0YSB1bmRlcnN0YW5kIHRoYXQgaW5pdGlhbCBoYW5kc2hha2UgdG8gdHJ1bHkgZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aG9zZSBmaWxlcyBhbmQgZmlndXJlIG91dCB0aGF0IHJlZ2lzdHJhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWhpX21iaW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ2OnN0cnVjdCBtaGlfbWJpbV9saW5rIHtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ3Olx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW07XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00OC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY0LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjU6c3RydWN0IG1oaV9tYmltX2NvbnRleHQge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjYtXHRzdHJ1Y3QgbWhpX2RldmljZSAqbWRldjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYz03OD1zdHJ1Y3QgbWJpbV90eF9oZHIge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTgzLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6ODQ6c3RhdGljIHN0cnVjdCBtaGlfbWJpbV9saW5rICptaGlfbWJpbV9nZXRfbGlua19yY3Uoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy04NS1cdFx0XHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgc2Vzc2lvbilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTg2LXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjg3Olx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbms7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy04OC1cbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy05Ni1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjk3OnN0YXRpYyBpbnQgbWhpX21iaW1fZ2V0X2xpbmtfbXV4X2lkKHN0cnVjdCBtaGlfY29udHJvbGxlciAqY250cmwpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy05OC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM9MTA3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWJpbV90eF9maXh1cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgc2Vzc2lvbixcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0xNTAtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoxNTE6c3RhdGljIG5ldGRldl90eF90IG1oaV9tYmltX25kb194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTUyLXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE1MzpcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE1NDpcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gbGluay1cdTAwM2VtYmltO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTU1LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0xOTItXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoxOTM6c3RhdGljIGludCBtYmltX3J4X3ZlcmlmeV9udGgxNihzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE5NC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM9MjMxPXN0YXRpYyBpbnQgbWJpbV9yeF92ZXJpZnlfbmRwMTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2ICpuZHAxNilcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNTMtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoyNTQ6c3RhdGljIHZvaWQgbWhpX21iaW1fcnhfZHJvcChzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTI1NS17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMjYxLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MjYyOnN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMjYzLXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNzYtXHRcdHN0cnVjdCB1c2JfY2RjX25jbV9kcGUxNiBkcGUxNjtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjI3NzpcdFx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbms7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNzgtXHRcdGludCBuZnJhbWVzLCBuLCBkcGVvZmZzZXQ7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMzA0LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MzA1Olx0XHRsaW5rID0gbWhpX21iaW1fZ2V0X2xpbmtfcmN1KG1iaW0sIHNlc3Npb24pO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMzA2LVx0XHRpZiAoIWxpbmspIHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zMzEtXHRcdFx0aWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXHUwMDNlZGF0YSwgZGdyYW1fbGVuKSkge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MzMyOlx0XHRcdFx0bWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTMzMy1cdFx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM0NS1cdFx0XHRcdFx0XHQgICAgbGluay1cdTAwM2VuZGV2LVx1MDAzZW5hbWUpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MzQ2Olx0XHRcdFx0bWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM0Ny1cdFx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM3Ni1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjM3NzpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm1oaV9uZXRfc2tiX2FnZyhzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM3OC1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jPTQwMz1zdGF0aWMgdm9pZCBtaGlfbmV0X3J4X3JlZmlsbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQwNC17XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0MDU6XHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQwNi1cdFx0XHRcdFx0XHQgICAgIHJ4X3JlZmlsbC53b3JrKTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MzMtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0MzQ6c3RhdGljIHZvaWQgbWhpX21iaW1fZGxfY2FsbGJhY2soc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MzUtXHRcdFx0XHQgc3RydWN0IG1oaV9yZXN1bHQgKm1oaV9yZXMpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MzYte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDM3Olx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWhpX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDM4LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IG1oaV9yZXMtXHUwMDNlYnVmX2FkZHI7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDY2LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDY3Olx0XHRtaGlfbWJpbV9yeChtYmltLCBza2IpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDY4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ3NC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ3NTpzdGF0aWMgdm9pZCBtaGlfbWJpbV9uZG9fZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NzYtXHRcdFx0XHQgICAgIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqc3RhdHMpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00Nzcte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDc4Olx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDc5LVx0dW5zaWduZWQgaW50IHN0YXJ0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ5Ni1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ5NzpzdGF0aWMgdm9pZCBtaGlfbWJpbV91bF9jYWxsYmFjayhzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2RldixcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ5OC1cdFx0XHRcdCBzdHJ1Y3QgbWhpX3Jlc3VsdCAqbWhpX3JlcylcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ5OS17XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1MDA6XHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtaGlfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MDEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gbWhpX3Jlcy1cdTAwM2VidWZfYWRkcjtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUwMi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gc2tiLVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUwMzpcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUwNC1cbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MjgtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1Mjk6c3RhdGljIGludCBtaGlfbWJpbV9uZG9fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUzMC17XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1MzE6XHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluayA9IHd3YW5fbmV0ZGV2X2RydnByaXYobmRldik7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MzItXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTQzLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTQ0OnN0YXRpYyBpbnQgbWhpX21iaW1fbmRvX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NDUte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU1MS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1MjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1oaV9tYmltX25kbyA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1MzpcdC5uZG9fb3BlbiA9IG1oaV9tYmltX25kb19vcGVuLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU0Olx0Lm5kb19zdG9wID0gbWhpX21iaW1fbmRvX3N0b3AsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NTU6XHQubmRvX3N0YXJ0X3htaXQgPSBtaGlfbWJpbV9uZG9feG1pdCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1NjpcdC5uZG9fZ2V0X3N0YXRzNjQgPSBtaGlfbWJpbV9uZG9fZ2V0X3N0YXRzNjQsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NTctfTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU1OC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1OTpzdGF0aWMgaW50IG1oaV9tYmltX25ld2xpbmsodm9pZCAqY3R4dCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBpZl9pZCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2MC1cdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTYxLXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU2MjpcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU2MzpcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gY3R4dDtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2NC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2NS1cdGxpbmstXHUwMDNlbWJpbSA9IG1iaW07XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NjY6XHRsaW5rLVx1MDAzZXNlc3Npb24gPSBtaGlfbWJpbV9nZXRfbGlua19tdXhfaWQobGluay1cdTAwM2VtYmltLVx1MDAzZW1kZXYtXHUwMDNlbWhpX2NudHJsKSAmIzQzOyBpZl9pZDtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2Ny1cdGxpbmstXHUwMDNlbmRldiA9IG5kZXY7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTcxLVx0cmN1X3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTcyOlx0aWYgKG1oaV9tYmltX2dldF9saW5rX3JjdShtYmltLCBpZl9pZCkpIHtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU3My1cdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTgzLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTg0OnN0YXRpYyB2b2lkIG1oaV9tYmltX2RlbGxpbmsodm9pZCAqY3R4dCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01ODUtXHRcdFx0ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTg2LXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU4NzpcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU4OC1cbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01OTQtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1OTU6c3RhdGljIHZvaWQgbWhpX21iaW1fc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01OTYte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYwMi1cdG5kZXYtXHUwMDNlZmxhZ3MgPSBJRkZfUE9JTlRPUE9JTlQgfCBJRkZfTk9BUlA7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MDM6XHRuZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZtaGlfbWJpbV9uZG87XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MDQtXHRuZGV2LVx1MDAzZW10dSA9IE1ISV9NQklNX0RFRkFVTFRfTVRVO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxMC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxMTpzdGF0aWMgY29uc3Qgc3RydWN0IHd3YW5fb3BzIG1oaV9tYmltX3d3YW5fb3BzID0ge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjEyOlx0LnByaXZfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgbWhpX21iaW1fbGluayksXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTM6XHQuc2V0dXAgPSBtaGlfbWJpbV9zZXR1cCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxNDpcdC5uZXdsaW5rID0gbWhpX21iaW1fbmV3bGluayxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxNTpcdC5kZWxsaW5rID0gbWhpX21iaW1fZGVsbGluayxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxNi19O1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjE3LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjE4OnN0YXRpYyBpbnQgbWhpX21iaW1fcHJvYmUoc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYsIGNvbnN0IHN0cnVjdCBtaGlfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxOS17XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MjAtXHRzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKmNudHJsID0gbWhpX2Rldi1cdTAwM2VtaGlfY250cmw7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MjE6XHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYyMi1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQzLVx0LyogUmVnaXN0ZXIgd3dhbiBsaW5rIG9wcyB3aXRoIE1ISSBjb250cm9sbGVyIHJlcHJlc2VudGluZyBXV0FOIGluc3RhbmNlICovXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NDQ6XHRyZXR1cm4gd3dhbl9yZWdpc3Rlcl9vcHMoXHUwMDI2Y250cmwtXHUwMDNlbWhpX2Rldi1cdTAwM2VkZXYsIFx1MDAyNm1oaV9tYmltX3d3YW5fb3BzLCBtYmltLCAwKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY0NS19XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NDYtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NDc6c3RhdGljIHZvaWQgbWhpX21iaW1fcmVtb3ZlKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2KVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQ4LXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY0OTpcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1oaV9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY1MC1cdHN0cnVjdCBtaGlfY29udHJvbGxlciAqY250cmwgPSBtaGlfZGV2LVx1MDAzZW1oaV9jbnRybDtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NTgtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NTk6c3RhdGljIGNvbnN0IHN0cnVjdCBtaGlfZGV2aWNlX2lkIG1oaV9tYmltX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NjAtXHQvKiBIYXJkd2FyZSBhY2NlbGVyYXRlZCBkYXRhIFBBVEggKHRvIG1vZGVtIElQQSksIE1CSU0gcHJvdG9jb2wgKi9cbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NjMtfTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2NDpNT0RVTEVfREVWSUNFX1RBQkxFKG1oaSwgbWhpX21iaW1faWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjY1LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjY2OnN0YXRpYyBzdHJ1Y3QgbWhpX2RyaXZlciBtaGlfbWJpbV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njc6XHQucHJvYmUgPSBtaGlfbWJpbV9wcm9iZSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2ODpcdC5yZW1vdmUgPSBtaGlfbWJpbV9yZW1vdmUsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njk6XHQuZGxfeGZlcl9jYiA9IG1oaV9tYmltX2RsX2NhbGxiYWNrLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjcwOlx0LnVsX3hmZXJfY2IgPSBtaGlfbWJpbV91bF9jYWxsYmFjayxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY3MTpcdC5pZF90YWJsZSA9IG1oaV9tYmltX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjcyLVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NzYtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Nzc6bW9kdWxlX21oaV9kcml2ZXIobWhpX21iaW1fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY3OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1MDIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0JiMzOTtzIGdvaW5nIHRocm91Z2ggbXkgbWluZCwgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBEZWVwZXI6IEV4cGxvcmluZyBgdDd4eF9uZXRkZXYuY2AgYW5kIGBtdGtfdDd4eGAqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMgaGVyZSwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgVDd4eCBhcmNoaXRlY3R1cmUsIHdoaWNoLCBmcm9tIHdoYXQgSSBrbm93LCBpcyBsaWtlbHkgYSBNZWRpYVRlayBwbGF0Zm9ybS4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoaXMgcGFydGljdWxhciBuZXR3b3JrIGRldmljZSBpcyBoYW5kbGVkIGluIHRoZSBrZXJuZWwuIExldCYjMzk7cyBkaWcgaW50byBgdDd4eF9uZXRkZXYuY2Ag4oCTIHRoYXQgZmlsZSBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgZHJpdmVyIGNvZGUgcmVzaWRlcyBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4gSSBzdXNwZWN0IGl0JiMzOTtsbCBjb250YWluIHRoaW5ncyBsaWtlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBpbnRlcnJ1cHQgaGFuZGxlcnMsIGFuZCBhbGwgdGhlIGxvdy1sZXZlbCBsb2dpYyB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgaGFyZHdhcmUuCgpUaGVuLCB0aGVyZSYjMzk7cyBgbXRrX3Q3eHhgLCB3aGljaCBJJiMzOTttIGJldHRpbmcgaXMgYSBicm9hZGVyIG1vZHVsZSBvciBwZXJoYXBzIGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgKEhBTCkgdGFpbG9yZWQgdG8gTWVkaWFUZWsmIzM5O3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIFQ3eHggY2hpcHNldC4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0ZGV2IGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGF0IEhBTC4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBsYXllcnMgb2YgYWJzdHJhY3Rpb24gaGVyZSB0byByZWFsbHkgZ3Jhc3AgdGhlIGRhdGEgZmxvdyBhbmQgaG93IHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyBhY3R1YWxseSBtYW5hZ2VkLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgY29tbW9uIHBhdHRlcm5zLCBhbnkgcXVpcmtzIG9yIG9wdGltaXphdGlvbnMgc3BlY2lmaWMgdG8gdGhlIFQ3eHggcGxhdGZvcm0sIGFuZCBob3cgdGhleSBkZXZpYXRlIGZyb20sIG9yIGFkaGVyZSB0bywgdGhlIHN0YW5kYXJkIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBtb2RlbC4gVGhpcyB3aWxsIHByb3ZpZGUgYSBjcnVjaWFsIGluc2lnaHQgaW50byBkZXNpZ24gY2hvaWNlcyBhbmQgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4gSXQmIzM5O3MgYSBrZXkgcGFydCBvZiB0aGUgcHV6emxlIGZvciB1bmRlcnN0YW5kaW5nIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dDd4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vdDd4eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTUyMCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MzpvYmotJHtDT05GSUdfTVRLX1Q3WFh9IDo9IG10a190N3h4Lm9cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZTo0Om10a190N3h4LXk6PVx0dDd4eF9wY2kubyBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjU6XHRcdHQ3eHhfcGNpZV9tYWMubyBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjY6XHRcdHQ3eHhfbWhjY2lmLm8gXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZTo3Olx0XHR0N3h4X3N0YXRlX21vbml0b3IubyAgXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZTo4Olx0XHR0N3h4X21vZGVtX29wcy5vIFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6OTpcdFx0dDd4eF9jbGRtYS5vIFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTA6XHRcdHQ3eHhfaGlmX2NsZG1hLm8gIFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTE6XHRcdHQ3eHhfcG9ydF9wcm94eS5vICBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjEyOlx0XHR0N3h4X3BvcnRfY3RybF9tc2cubyBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjEzOlx0XHR0N3h4X3BvcnRfd3dhbi5vIFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTQ6XHRcdHQ3eHhfaGlmX2RwbWFpZi5vICBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjE1Olx0XHR0N3h4X2hpZl9kcG1haWZfdHgubyBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjE2Olx0XHR0N3h4X2hpZl9kcG1haWZfcngubyAgXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZToxNzpcdFx0dDd4eF9kcG1haWYubyBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjE4Olx0XHR0N3h4X25ldGRldi5vXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGUtMTktXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MjA6bXRrX3Q3eHgtJChDT05GSUdfV1dBTl9ERUJVR0ZTKSAmIzQzOz0gXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZToyMTpcdFx0dDd4eF9wb3J0X3RyYWNlLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTIzLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoyNDojaW5jbHVkZSBcJiMzNDt0N3h4X2NsZG1hLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjUtXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yNy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6Mjg6dm9pZCB0N3h4X2NsZG1hX2NsZWFyX2lwX2J1c3koc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI5LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTM3LS8qKlxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzozODogKiB0N3h4X2NsZG1hX2h3X3Jlc3RvcmUoKSAtIFJlc3RvcmUgQ0xETUEgSFcgcmVnaXN0ZXJzLlxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzozOTogKiBAaHdfaW5mbzogUG9pbnRlciB0byBzdHJ1Y3QgdDd4eF9jbGRtYV9ody5cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNDAtICpcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTQyLSAqL1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzo0Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfcmVzdG9yZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNDQte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNjItXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjYzOnZvaWQgdDd4eF9jbGRtYV9od19zdGFydF9xdWV1ZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNjQtXHRcdFx0ICAgICAgIGVudW0gbXRrX3R4cnggdHhfcngpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy03NC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6NzU6dm9pZCB0N3h4X2NsZG1hX2h3X3N0YXJ0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy03Ni17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy04NC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6ODU6dm9pZCB0N3h4X2NsZG1hX2h3X3Jlc2V0KHZvaWQgX19pb21lbSAqYW9fYmFzZSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtODYte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTA0LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxMDU6Ym9vbCB0N3h4X2NsZG1hX3R4X2FkZHJfaXNfc2V0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xMDYte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTExLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxMTI6dm9pZCB0N3h4X2NsZG1hX2h3X3NldF9zdGFydF9hZGRyKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLCB1NjQgYWRkcmVzcyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTEzLVx0XHRcdFx0ICBlbnVtIG10a190eHJ4IHR4X3J4KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTIyLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxMjM6dm9pZCB0N3h4X2NsZG1hX2h3X3Jlc3VtZV9xdWV1ZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTI0LVx0XHRcdFx0ZW51bSBtdGtfdHhyeCB0eF9yeClcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTEzMy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MTM0OnVuc2lnbmVkIGludCB0N3h4X2NsZG1hX2h3X3F1ZXVlX3N0YXR1cyhzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTM1LVx0XHRcdFx0XHRlbnVtIG10a190eHJ4IHR4X3J4KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTQ3LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxNDg6dm9pZCB0N3h4X2NsZG1hX2h3X3R4X2RvbmUoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBiaXRtYXNrKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xNDkte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTU4LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxNTk6dm9pZCB0N3h4X2NsZG1hX2h3X3J4X2RvbmUoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBiaXRtYXNrKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xNjAte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTY5LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxNzA6dW5zaWduZWQgaW50IHQ3eHhfY2xkbWFfaHdfaW50X3N0YXR1cyhzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IGJpdG1hc2ssXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTE3MS1cdFx0XHRcdCAgICAgIGVudW0gbXRrX3R4cnggdHhfcngpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xODEtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjE4Mjp2b2lkIHQ3eHhfY2xkbWFfaHdfaXJxX2Rpc190eHJ4KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xODMtXHRcdFx0XHRlbnVtIG10a190eHJ4IHR4X3J4KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTkzLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxOTQ6dm9pZCB0N3h4X2NsZG1hX2h3X2lycV9kaXNfZXEoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sIGVudW0gbXRrX3R4cnggdHhfcngpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTE5NS17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yMDQtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjIwNTp2b2lkIHQ3eHhfY2xkbWFfaHdfaXJxX2VuX3R4cngoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTIwNi1cdFx0XHQgICAgICAgZW51bSBtdGtfdHhyeCB0eF9yeClcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTIxNi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MjE3OnZvaWQgdDd4eF9jbGRtYV9od19pcnFfZW5fZXEoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sIGVudW0gbXRrX3R4cnggdHhfcngpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTIxOC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yMjgtLyoqXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjIyOTogKiB0N3h4X2NsZG1hX2h3X2luaXQoKSAtIEluaXRpYWxpemUgQ0xETUEgSFcuXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjIzMDogKiBAaHdfaW5mbzogUG9pbnRlciB0byBzdHJ1Y3QgdDd4eF9jbGRtYV9ody5cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjMxLSAqXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yMzMtICovXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjIzNDp2b2lkIHQ3eHhfY2xkbWFfaHdfaW5pdChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjM1LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI2My1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MjY0OnZvaWQgdDd4eF9jbGRtYV9od19zdG9wX2FsbF9xcyhzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgZW51bSBtdGtfdHhyeCB0eF9yeClcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjY1LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI3Mi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MjczOnZvaWQgdDd4eF9jbGRtYV9od19zdG9wKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCBlbnVtIG10a190eHJ4IHR4X3J4KVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yNzQte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg9MTM0PWVudW0gbXRrX3R4cngge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTM4LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxMzk6ZW51bSB0N3h4X2h3X21vZGUge1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNDAtXHRNT0RFX0JJVF8zMixcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE0NS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTQ2OnN0cnVjdCB0N3h4X2NsZG1hX2h3IHtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTQ3Olx0ZW51bSB0N3h4X2h3X21vZGVcdFx0aHdfbW9kZTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTQ4LVx0dm9pZCBfX2lvbWVtXHRcdFx0KmFwX2FvX2Jhc2U7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNTItXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE1Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfaXJxX2Rpc190eHJ4KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNTQtXHRcdFx0XHRlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTU1OnZvaWQgdDd4eF9jbGRtYV9od19pcnFfZGlzX2VxKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNTYtXHRcdFx0ICAgICAgZW51bSBtdGtfdHhyeCB0eF9yeCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE1Nzp2b2lkIHQ3eHhfY2xkbWFfaHdfaXJxX2VuX3R4cngoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE1OC1cdFx0XHQgICAgICAgZW51bSBtdGtfdHhyeCB0eF9yeCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE1OTp2b2lkIHQ3eHhfY2xkbWFfaHdfaXJxX2VuX2VxKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLCBlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTYwOnVuc2lnbmVkIGludCB0N3h4X2NsZG1hX2h3X3F1ZXVlX3N0YXR1cyhzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTYxLVx0XHRcdFx0XHRlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTYyOnZvaWQgdDd4eF9jbGRtYV9od19pbml0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTYzOnZvaWQgdDd4eF9jbGRtYV9od19yZXN1bWVfcXVldWUoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE2NC1cdFx0XHRcdGVudW0gbXRrX3R4cnggdHhfcngpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNjU6dm9pZCB0N3h4X2NsZG1hX2h3X3N0YXJ0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTY2OnZvaWQgdDd4eF9jbGRtYV9od19zdGFydF9xdWV1ZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTY3LVx0XHRcdCAgICAgICBlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTY4OnZvaWQgdDd4eF9jbGRtYV9od190eF9kb25lKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgYml0bWFzayk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE2OTp2b2lkIHQ3eHhfY2xkbWFfaHdfcnhfZG9uZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IGJpdG1hc2spO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNzA6dm9pZCB0N3h4X2NsZG1hX2h3X3N0b3BfYWxsX3FzKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCBlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTcxOnZvaWQgdDd4eF9jbGRtYV9od19zZXRfc3RhcnRfYWRkcihzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTcyLVx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgcW5vLCB1NjQgYWRkcmVzcywgZW51bSBtdGtfdHhyeCB0eF9yeCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE3Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfcmVzZXQodm9pZCBfX2lvbWVtICphb19iYXNlKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc0OnZvaWQgdDd4eF9jbGRtYV9od19zdG9wKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCBlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc1OnVuc2lnbmVkIGludCB0N3h4X2NsZG1hX2h3X2ludF9zdGF0dXMoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBiaXRtYXNrLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNzYtXHRcdFx0XHQgICAgICBlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc3OnZvaWQgdDd4eF9jbGRtYV9od19yZXN0b3JlKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc4OnZvaWQgdDd4eF9jbGRtYV9jbGVhcl9pcF9idXN5KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc5OmJvb2wgdDd4eF9jbGRtYV90eF9hZGRyX2lzX3NldChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE4MC0jZW5kaWZcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI4OiNpbmNsdWRlIFwmIzM0O3Q3eHhfZHBtYWlmLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI5OiNpbmNsdWRlIFwmIzM0O3Q3eHhfcmVnLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTMwLVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTMzLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzQ6c3RhdGljIGludCB0N3h4X2RwbWFpZl9pbml0X2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzUte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTgxLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODI6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfbWFza191bHFfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxX251bSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTgzLXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMDEtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoxMDI6dm9pZCB0N3h4X2RwbWFpZl91bm1hc2tfdWxxX2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcV9udW0pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMDMte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTEyMS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjEyMjp2b2lkIHQ3eHhfZHBtYWlmX2RsX3VubWFza19iYXRjbnRfbGVuX2Vycl9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTEyMy17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTI3LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MTI4OnZvaWQgdDd4eF9kcG1haWZfZGxfdW5tYXNrX3BpdGNudF9sZW5fZXJyX2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTI5LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMzMtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoxMzQ6c3RhdGljIHUzMiB0N3h4X3VwZGF0ZV9kbHFfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHUzMiBxX2RvbmUpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMzUte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE0Mi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE0MzpzdGF0aWMgaW50IHQ3eHhfbWFza19kbHFfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xNDQte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE1MC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE1MTpcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0X2F0b21pYyh0N3h4X3VwZGF0ZV9kbHFfaW50ciwgdmFsdWUsIHZhbHVlIFx1MDAyNiBxX2RvbmUsXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xNTItXHRcdFx0XHQgICAgICAgMCwgRFBNQUlGX0NIRUNLX1RJTUVPVVRfVVMsIGZhbHNlLCBod19pbmZvLCBxX2RvbmUpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE2My1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE2NDp2b2lkIHQ3eHhfZHBtYWlmX2RscV91bm1hc2tfcnhfZG9uZShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xNjUte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE3Mi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE3Mzp2b2lkIHQ3eHhfZHBtYWlmX2Nscl9pcF9idXN5X3N0cyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xNzQte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE4MC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE4MTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbHFfbWFza19yeF9waXRjbnRfbGVuX2Vycl9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE4Mi1cdFx0XHRcdFx0XHRcdHVuc2lnbmVkIGludCBxbm8pXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTkxLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MTkyOnZvaWQgdDd4eF9kcG1haWZfZGxxX3VubWFza19waXRjbnRfbGVuX2Vycl9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE5My1cdFx0XHRcdFx0XHR1bnNpZ25lZCBpbnQgcW5vKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIwMi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjIwMzp2b2lkIHQ3eHhfZHBtYWlmX3VsX2Nscl9hbGxfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMDQte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIwNy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjIwODp2b2lkIHQ3eHhfZHBtYWlmX2RsX2Nscl9hbGxfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMDkte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIxMi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjIxMzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHN0cnVjdCBkcG1haWZfaHdfaW50cl9zdF9wYXJhICpwYXJhLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjE0LVx0XHRcdFx0ICAgICAgZW51bSBkcG1haWZfaHdfaW50cl90eXBlIGludHJfdHlwZSwgdW5zaWduZWQgaW50IGludHJfcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjIzLSAqL1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjI0OnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2h3X2NoZWNrX3R4X2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjI1LVx0XHRcdFx0XHQgdW5zaWduZWQgaW50IGludHJfc3RhdHVzLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIzMy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjIzNDpcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9VTF9ET05FLCB2YWx1ZSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMzUtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMzYtXHRcdGZvcl9lYWNoX3NldF9iaXQoaW5kZXgsIFx1MDAyNnZhbHVlLCBEUE1BSUZfVFhRX05VTSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjIzNzpcdFx0XHR0N3h4X2RwbWFpZl9tYXNrX3VscV9pbnRyKGh3X2luZm8sIGluZGV4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIzOC1cdH1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNDEtXHRpZiAodmFsdWUpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyNDI6XHRcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfVUxfRFJCX0VNUFRZLCB2YWx1ZSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNDMtXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjQ1LVx0aWYgKHZhbHVlKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjQ2Olx0XHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX1VMX01EX05PVFJFQURZLCB2YWx1ZSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNDctXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjQ5LVx0aWYgKHZhbHVlKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjUwOlx0XHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX1VMX01EX1BXUl9OT1RSRUFEWSwgdmFsdWUpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjUxLVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI1My1cdGlmICh2YWx1ZSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI1NDpcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9VTF9MRU5fRVJSLCB2YWx1ZSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNTUtXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjYyLSAqL1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjYzOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2h3X2NoZWNrX3J4X2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjY0LVx0XHRcdFx0XHQgdW5zaWduZWQgaW50IGludHJfc3RhdHVzLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI2OC1cdFx0aWYgKGludHJfc3RhdHVzIFx1MDAyNiBEUF9ETF9JTlRfU0tCX0xFTl9FUlIpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyNjk6XHRcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9TS0JfTEVOX0VSUiwgRFBGX1JYX1FOT19ERlQpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjcwLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjcxLVx0XHRpZiAoaW50cl9zdGF0dXMgXHUwMDI2IERQX0RMX0lOVF9CQVRDTlRfTEVOX0VSUikge1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjcyOlx0XHRcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfQkFUQ05UX0xFTl9FUlIsIERQRl9SWF9RTk9fREZUKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI3My1cdFx0XHRod19pbmZvLVx1MDAzZWlzcl9lbl9tYXNrLmFwX2RsX2wyaW50cl9lbl9tc2sgXHUwMDI2PSB+RFBfRExfSU5UX0JBVENOVF9MRU5fRVJSO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI3OC1cdFx0aWYgKGludHJfc3RhdHVzIFx1MDAyNiBEUF9ETF9JTlRfUElUQ05UX0xFTl9FUlIpIHtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI3OTpcdFx0XHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX1BJVENOVF9MRU5fRVJSLCBEUEZfUlhfUU5PX0RGVCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yODAtXHRcdFx0aHdfaW5mby1cdTAwM2Vpc3JfZW5fbWFzay5hcF9kbF9sMmludHJfZW5fbXNrIFx1MDAyNj0gfkRQX0RMX0lOVF9QSVRDTlRfTEVOX0VSUjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yODUtXHRcdGlmIChpbnRyX3N0YXR1cyBcdTAwMjYgRFBfRExfSU5UX1BLVF9FTVBUWV9NU0spXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyODY6XHRcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9QS1RfRU1QVFlfU0VULCBEUEZfUlhfUU5PX0RGVCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yODctXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yODgtXHRcdGlmIChpbnRyX3N0YXR1cyBcdTAwMjYgRFBfRExfSU5UX0ZSR19FTVBUWV9NU0spXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyODk6XHRcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9GUkdfRU1QVFlfU0VULCBEUEZfUlhfUU5PX0RGVCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yOTAtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yOTEtXHRcdGlmIChpbnRyX3N0YXR1cyBcdTAwMjYgRFBfRExfSU5UX01UVV9FUlJfTVNLKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjkyOlx0XHRcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfTVRVX0VSUiwgRFBGX1JYX1FOT19ERlQpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjkzLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjk0LVx0XHRpZiAoaW50cl9zdGF0dXMgXHUwMDI2IERQX0RMX0lOVF9GUkdfTEVOX0VSUl9NU0spXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyOTU6XHRcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9GUkdDTlRfTEVOX0VSUiwgRFBGX1JYX1FOT19ERlQpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjk2LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjk3LVx0XHRpZiAoaW50cl9zdGF0dXMgXHUwMDI2IERQX0RMX0lOVF9RMF9QSVRDTlRfTEVOX0VSUikge1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Mjk4Olx0XHRcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfUTBfUElUQ05UX0xFTl9FUlIsIEJJVChxbm8pKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI5OTpcdFx0XHR0N3h4X2RwbWFpZl9kbHFfbWFza19yeF9waXRjbnRfbGVuX2Vycl9pbnRyKGh3X2luZm8sIHFubyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMDAtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMDItXHRcdGlmIChpbnRyX3N0YXR1cyBcdTAwMjYgRFBfRExfSU5UX0hQQ19FTlRfVFlQRV9FUlIpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzozMDM6XHRcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9IUENfRU5UX1RZUEVfRVJSLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzA0LVx0XHRcdFx0XHRcdCAgRFBGX1JYX1FOT19ERlQpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTMwOS1cdFx0XHQgKi9cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMxMDpcdFx0XHRpZiAoIXQ3eHhfbWFza19kbHFfaW50cihod19pbmZvLCBxbm8pKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzExOlx0XHRcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9RMF9ET05FLCBCSVQocW5vKSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMTItXHRcdFx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTMxNi1cdFx0aWYgKGludHJfc3RhdHVzIFx1MDAyNiBEUF9ETF9JTlRfUTFfUElUQ05UX0xFTl9FUlIpIHtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMxNzpcdFx0XHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX1ExX1BJVENOVF9MRU5fRVJSLCBCSVQocW5vKSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzozMTg6XHRcdFx0dDd4eF9kcG1haWZfZGxxX21hc2tfcnhfcGl0Y250X2xlbl9lcnJfaW50cihod19pbmZvLCBxbm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzE5LVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzIxLVx0XHRpZiAoaW50cl9zdGF0dXMgXHUwMDI2IERQX0RMX0lOVF9RMV9ET05FKSB7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzozMjI6XHRcdFx0aWYgKCF0N3h4X21hc2tfZGxxX2ludHIoaHdfaW5mbywgcW5vKSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMyMzpcdFx0XHRcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfUTFfRE9ORSwgQklUKHFubykpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzI0LVx0XHRcdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMzQtLyoqXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzozMzU6ICogdDd4eF9kcG1haWZfaHdfZ2V0X2ludHJfY250KCkgLSBSZWFkcyBpbnRlcnJ1cHQgc3RhdHVzIGFuZCBjb3VudCBmcm9tIEhXLlxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzM2LSAqIEBod19pbmZvOiBQb2ludGVyIHRvIHN0cnVjdCBod19pbmZvLlxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM0My0gKi9cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjM0NDppbnQgdDd4eF9kcG1haWZfaHdfZ2V0X2ludHJfY250KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM0NS1cdFx0XHRcdHN0cnVjdCBkcG1haWZfaHdfaW50cl9zdF9wYXJhICpwYXJhLCBpbnQgcW5vKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM2MS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjM2MjpcdHQ3eHhfZHBtYWlmX2Nscl9pcF9idXN5X3N0cyhod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM2My1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zNjktXHRcdGlmICh0eF9pbnRyX3N0YXR1cylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjM3MDpcdFx0XHR0N3h4X2RwbWFpZl9od19jaGVja190eF9pbnRyKGh3X2luZm8sIHR4X2ludHJfc3RhdHVzLCBwYXJhKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM3MS1cdH1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zODctXHRcdGlmIChyeF9pbnRyX3N0YXR1cylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjM4ODpcdFx0XHR0N3h4X2RwbWFpZl9od19jaGVja19yeF9pbnRyKGh3X2luZm8sIHJ4X2ludHJfc3RhdHVzLCBwYXJhLCBxbm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzg5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM5My1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjM5NDpzdGF0aWMgaW50IHQ3eHhfZHBtYWlmX3NyYW1faW5pdChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zOTUte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQwNi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQwNzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19yZXNldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00MDgte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQxOC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQxOTpzdGF0aWMgaW50IHQ3eHhfZHBtYWlmX2h3X2NvbmZpZyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00MjAte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQyMy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQyNDpcdHQ3eHhfZHBtYWlmX2h3X3Jlc2V0KGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDI1LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NDI2Olx0cmV0ID0gdDd4eF9kcG1haWZfc3JhbV9pbml0KGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDI3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00MzYtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0Mzc6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfcGNpZV9kcG1haWZfc2lnbihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00Mzgte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ0MS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQ0MjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9wZXJmb3JtYW5jZShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00NDMte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ1Ni1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQ1NzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19ocGNfY250bF9zZXQoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDU4LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00NjYtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0Njc6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfYWdnX2NmZ19zZXQoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDY4LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00NzQtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0NzU6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfaGFzaF9iaXRfY2hvb3NlX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00NzYte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ4MC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQ4MTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19taWRfcGl0X3RpbWVvdXRfdGhyZXNfc2V0KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ4Mi17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDg1LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NDg2OnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2h3X2RscV90aW1lb3V0X3RocmVzX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00ODcte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ5OS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwMDpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19kbHFfc3RhcnRfcHJzX3RocmVzX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01MDEte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTUwNC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwNTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9kbHFfaHBjX2h3X2luaXQoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTA2LXtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwNzpcdHQ3eHhfZHBtYWlmX2h3X2hwY19jbnRsX3NldChod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwODpcdHQ3eHhfZHBtYWlmX2h3X2FnZ19jZmdfc2V0KGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NTA5Olx0dDd4eF9kcG1haWZfaHdfaGFzaF9iaXRfY2hvb3NlX3NldChod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUxMDpcdHQ3eHhfZHBtYWlmX2h3X21pZF9waXRfdGltZW91dF90aHJlc19zZXQoaHdfaW5mbyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1MTE6XHR0N3h4X2RwbWFpZl9od19kbHFfdGltZW91dF90aHJlc19zZXQoaHdfaW5mbyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1MTI6XHR0N3h4X2RwbWFpZl9od19kbHFfc3RhcnRfcHJzX3RocmVzX3NldChod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTUxMy19XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01MTQtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1MTU6c3RhdGljIGludCB0N3h4X2RwbWFpZl9kbF9iYXRfaW5pdF9kb25lKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbywgYm9vbCBmcmdfZW4pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01MTYte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU0NC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU0NTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYmF0X2Jhc2VfYWRkcihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01NDYtXHRcdFx0XHRcdCAgICAgZG1hX2FkZHJfdCBhZGRyKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU1MS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU1MjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYmF0X3NpemUoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU1My17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTYxLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NTYyOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX2JhdF9lbihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTYzLXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01NzUtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1NzY6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX2JpZF9tYXhjbnQoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTc3LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01ODUtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1ODY6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX210dShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01ODcte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU5MC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU5MTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYW9fcGl0X2Noa251bShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01OTIte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYwMC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjYwMTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYW9fcmVtYWluX21pbnN6KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYwMi17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjExLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjEyOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19iYXRfYnVmc3ooc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjEzLXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02MjItXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo2MjM6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX2JhdF9yc3ZfbGVuZ3RoKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYyNC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjMyLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjMzOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9wa3RfYWxpZ25tZW50KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYzNC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjQyLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjQzOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9wa3RfY2hlY2tzdW0oc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjQ0LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02NTEtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo2NTI6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX2ZyZ19jaGVja190aHJlcyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02NTMte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY2MS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjY2MjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYW9fZnJnX2J1ZnN6KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY2My17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjcyLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjczOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX2ZyZ19hb19lbihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjc0LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02ODYtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo2ODc6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX2JhdF9jaGVja190aHJlcyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02ODgte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY5Ni1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjY5NzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfcGl0X3NlcW51bShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02OTgte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTcwNi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjcwNzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfZGxxX3BpdF9iYXNlX2FkZHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzA4LVx0XHRcdFx0XHRcdCBkbWFfYWRkcl90IGFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzEzLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NzE0OnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9kbHFfcGl0X3NpemUoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTcxNS17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzI3LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NzI4OnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX2RscV9waXRfZW4oc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzI5LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03MzYtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3Mzc6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfZGxxX3BpdF9pbml0X2RvbmUoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzM4LVx0XHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBwaXRfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc2NS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjc2NjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9jb25maWdfZGxxX3BpdF9odyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxX251bSxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc2Ny1cdFx0XHRcdFx0ICBzdHJ1Y3QgZHBtYWlmX2RsICpkbF9xdWUpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03Njgte1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NzY5Olx0dDd4eF9kcG1haWZfZGxfc2V0X2RscV9waXRfYmFzZV9hZGRyKGh3X2luZm8sIGRsX3F1ZS1cdTAwM2VwaXRfYmFzZSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3NzA6XHR0N3h4X2RwbWFpZl9kbF9zZXRfZGxxX3BpdF9zaXplKGh3X2luZm8sIGRsX3F1ZS1cdTAwM2VwaXRfc2l6ZV9jbnQpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NzcxOlx0dDd4eF9kcG1haWZfZGxfZGxxX3BpdF9lbihod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjc3MjpcdHQ3eHhfZHBtYWlmX2RsX2RscV9waXRfaW5pdF9kb25lKGh3X2luZm8sIHFfbnVtKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc3My19XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03NzQtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3NzU6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfY29uZmlnX2FsbF9kbHFfaHcoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzc2LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03NzktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEUE1BSUZfUlhRX05VTTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3ODA6XHRcdHQ3eHhfZHBtYWlmX2NvbmZpZ19kbHFfcGl0X2h3KGh3X2luZm8sIGksIFx1MDAyNmh3X2luZm8tXHUwMDNlZGxfcXVlW2ldKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc4MS19XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03ODItXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3ODM6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfYWxsX3FfZW4oc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc4NC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtODEyLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODEzOnN0YXRpYyBpbnQgdDd4eF9kcG1haWZfY29uZmlnX2RscV9odyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy04MTQte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTgxNy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgxODpcdHQ3eHhfZHBtYWlmX2RsX2RscV9ocGNfaHdfaW5pdChod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTgxOS1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy04MjMtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4MjQ6XHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fcmVtYWluX21pbnN6KGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODI1Olx0dDd4eF9kcG1haWZfZGxfc2V0X2FvX2JhdF9idWZzeihod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyNjpcdHQ3eHhfZHBtYWlmX2RsX3NldF9hb19mcmdfYnVmc3ooaHdfaW5mbyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4Mjc6XHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmF0X3Jzdl9sZW5ndGgoaHdfaW5mbyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4Mjg6XHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmlkX21heGNudChod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyOTpcdHQ3eHhfZHBtYWlmX2RsX3NldF9wa3RfYWxpZ25tZW50KGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODMwOlx0dDd4eF9kcG1haWZfZGxfc2V0X3BpdF9zZXFudW0oaHdfaW5mbyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4MzE6XHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fbXR1KGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODMyOlx0dDd4eF9kcG1haWZfZGxfc2V0X2FvX3BpdF9jaGtudW0oaHdfaW5mbyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4MzM6XHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmF0X2NoZWNrX3RocmVzKGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODM0Olx0dDd4eF9kcG1haWZfZGxfc2V0X2FvX2ZyZ19jaGVja190aHJlcyhod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgzNTpcdHQ3eHhfZHBtYWlmX2RsX2ZyZ19hb19lbihod19pbmZvLCB0cnVlKTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDIwMwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQQ0llIE1vZGVtIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIG1vZGVtIGRyaXZlciBmaWxlcywgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGluZ3MuIFJpZ2h0LCBzbyBgdDd4eF9wY2kuY2AsIHRoYXQmIzM5O3MgdGhlIE1lZGlhVGVrIE1USyBQQ0llIDVHIFdXQU4gbW9kZW0gZHJpdmVyLCB0aGF0IG1ha2VzIHNlbnNlLiBBbmQgdGhlbiB3ZSYjMzk7dmUgZ290IGBtaGlfd3dhbl9tYmltLmNgLCB3aGljaCBpcyB0aGUgTUhJIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tLWJhc2VkIFBDSWUgbW9kZW1zLCB1c2luZyB0aGUgYE1ISV9CVVNgIGludGVyZmFjZS4gSG1tLCBidXQgaG93IGRvZXMgdGhlIHN5c3RlbSBrbm93IHdoaWNoIGRldmljZXMgYXJlIGV2ZW4gKnVzaW5nKiBNSEk/IExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBkZXZpY2UgcmVnaXN0cmF0aW9uIHdpdGhpbiB0aGUgTUhJIGJ1cyBjb2RlIGl0c2VsZi4gTG9va3MgbGlrZSBgZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuY2AgaXMgYSBwcmltZSBleGFtcGxlLiBPa2F5LCBub3cgSSBuZWVkIHRvIGZpbmQgYWxsIHRoZSBNSEkgY29udHJvbGxlcnMgaW4gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHN0YXJ0IHRoZSBzZWFyY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9yZWdpc3Rlcl9jb250cm9sbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM9ODAwPXN0YXRpYyBpbnQgbWhpX3Jlc2V0X2FuZF9hc3luY19wb3dlcl91cChzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybClcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04MjYtXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYzo4Mjc6c3RydWN0IG1oaV9jb250cm9sbGVyICpxYWljX21oaV9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCB2b2lkIF9faW9tZW0gKm1oaV9iYXIsXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04MjgtXHRcdFx0XHRcdFx0ICAgIGludCBtaGlfaXJxLCBib29sIHNoYXJlZF9tc2ksIGludCBmYW1pbHkpXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmMtODc1LVx0bWhpX2NvbmZpZy50aW1lb3V0X21zID0gbWhpX3RpbWVvdXRfbXM7XG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYzo4NzY6XHRyZXQgPSBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihtaGlfY250cmwsIFx1MDAyNm1oaV9jb25maWcpO1xuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmMtODc3LVx0aWYgKHJldCkge1xuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM6ODc4Olx0XHRwY2lfZXJyKHBjaV9kZXYsIFwmIzM0O21oaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZCAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jLTg3OS1cdFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuaC04LVxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmg6OTpzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKnFhaWNfbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIHZvaWQgX19pb21lbSAqbWhpX2JhcixcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5oLTEwLVx0XHRcdFx0XHRcdCAgICBpbnQgbWhpX2lycSwgYm9vbCBzaGFyZWRfbXNpLCBpbnQgZmFtaWx5KTtcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYz01NzA9c3RhdGljIGludCBxYWljX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTU5Ni1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jOjU5NzpcdHFkZXYtXHUwMDNlbWhpX2NudHJsID0gcWFpY19taGlfcmVnaXN0ZXJfY29udHJvbGxlcihwZGV2LCBxZGV2LVx1MDAzZWJhcl9taGksIG1oaV9pcnEsXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy01OTgtXHRcdFx0XHRcdFx0ICAgICAgIHFkZXYtXHUwMDNlc2luZ2xlX21zaSwgY29uZmlnLVx1MDAzZWZhbWlseSk7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTg4MT1zdGF0aWMgaW50IHBhcnNlX2NvbmZpZyhzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCxcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtOTE4LVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjkxOTppbnQgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtOTIwLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbWhpX2NvbnRyb2xsZXJfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwNTgtfVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjEwNTk6RVhQT1JUX1NZTUJPTF9HUEwobWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIpO1xuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwNjAtXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xMzY1PXN0YXRpYyBpbnQgbWhpX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTQ0MC1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTQ0MTpcdGVyciA9IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jbnRybCwgbWhpX2NudHJsX2NvbmZpZyk7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE0NDItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWhpLmM9MzM1PWludCBhdGgxMWtfbWhpX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfcGNpICphYl9wY2kpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYy00MDktXHRhYl9wY2ktXHUwMDNlbWhpX3ByZV9jYiA9IE1ISV9DQl9JTlZBTElEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYzo0MTA6XHRyZXQgPSBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihtaGlfY3RybCwgYXRoMTFrX21oaV9jb25maWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYy00MTEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz0xODc9aW50IGF0aDEya19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTI2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6MjY1Olx0cmV0ID0gbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2N0cmwsIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtaGlfY29uZmlnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMjY2LVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTg0MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIE1ISSBXV0FOIGFuZCBUN3h4IERyaXZlciBBY2Nlc3NpYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBNSEkgV1dBTiBhbmQgVDd4eCBXV0FOIGRyaXZlcnMgYXJlICpmdW5kYW1lbnRhbGx5KiBkZXBlbmRlbnQgb24gc3BlY2lmaWMgaGFyZHdhcmUuIEkgbmVlZCB0byBhcHBseSB0aGUgdHJpYWdlIGNyaXRlcmlhIG1ldGljdWxvdXNseS4gU2VjdGlvbiAyIGlzIGtleSBoZXJlLiBJdCBkaXN0aW5ndWlzaGVzIGJldHdlZW4gZHJpdmVycyB0aGF0IHJlcXVpcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIChsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBHUFVzIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VKSBhbmQgdGhvc2UgdGhhdCBhcmUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgb3IgdGhlIGxpa2UuCgpUaGUgY29yZSBvZiBteSBhbmFseXNpcyBoaW5nZXMgb24gdGhpczogY2FuIEkgKnJlYWNoKiBgbWhpX3d3YW5fbWJpbWAgb3IgdGhlIFQ3eHggZHJpdmVyIHdpdGhvdXQgYSBwaHlzaWNhbCBQQ0llIGNhcmQ/IFRoYXQmIzM5O3MgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGFueSB2aXJ0dWFsIGJ1cyBtZWNoYW5pc21zIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBleGlzdCB0aGF0IHdvdWxkIGFsbG93IG1lIHRvIGluc3RhbnRpYXRlIG9yIGludGVyYWN0IHdpdGggdGhlc2UgZHJpdmVycy4KClJpZ2h0LCB0aW1lIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byBzZWUgaWYgYG1oaV93d2FuX21iaW1gIGlzIGV2ZXIgaW5zdGFudGlhdGVkIHZpYSBuZXRsaW5rLCBhIHZpcnR1YWwgYnVzLCBvciBhbnl0aGluZyBzaW1pbGFyLiBUaGUgY29kZSBpdHNlbGYgc2hvdWxkIHJldmVhbCBzb21ldGhpbmcgdXNlZnVsLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgbWhpX3d3YW5fbWJpbS5jYCBhbmQgc3BlY2lmaWNhbGx5IGxpbmUgNjE4LiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBwcm9iZSBmdW5jdGlvbiwgYG1oaV9tYmltX3Byb2JlYC4gQWgsIGl0IHJlZ2lzdGVycyBXV0FOIGxpbmsgb3BlcmF0aW9ucy4gYHd3YW5fcmVnaXN0ZXJfb3BzYCBhbmQgYWxsIHRoYXQuIFRoYXQmIzM5O3MgZ29vZCwgYnV0IHRoZSBrZXkgaXMgKndoZW4qIGBtaGlfbWJpbV9wcm9iZWAgZ2V0cyBjYWxsZWQuCgpMb29rcyBsaWtlIGBtaGlfbWJpbV9wcm9iZWAgaXMgY2FsbGVkIG9ubHkgd2hlbiBhbiBgbWhpX2RldmljZWAgdGhhdCBtYXRjaGVzIHRoZSBgbWhpX21iaW1faWRfdGFibGVgIGlzIHJlZ2lzdGVyZWQgb24gdGhlIE1ISSBidXMuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBjbHVlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGFuIGBtaGlfZGV2aWNlYCBpcyBjcmVhdGVkLiBUaGF04oCZcyB0aGUgY3J1eC4gSSBuZWVkIHRvIGZpbmQgdGhlIGNyZWF0aW9uIG1lY2hhbmlzbS4gVGltZSB0byBzZWFyY2ggdGhlIGtlcm5lbCBmb3IgYG1oaV9kZXZpY2VgIGluc3RhbnRpYXRpb24uIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGRyaXZlciBpcyBsb2FkZWQgYW5kIGlmIEkgY2FuIGxvYWQgaXQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9kZXZpY2VfY3JlYXRlfG1oaV9hbGxvY19kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9taGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTkxOT1pbnQgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwMDktXHQvKiBSZWdpc3RlciBjb250cm9sbGVyIHdpdGggTUhJIGJ1cyAqL1xuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjEwMTA6XHRtaGlfZGV2ID0gbWhpX2FsbG9jX2RldmljZShtaGlfY250cmwpO1xuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwMTEtXHRpZiAoSVNfRVJSKG1oaV9kZXYpKSB7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTEyMTA9c3RhdGljIHZvaWQgbWhpX3JlbGVhc2VfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTIyOC1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYzoxMjI5OnN0cnVjdCBtaGlfZGV2aWNlICptaGlfYWxsb2NfZGV2aWNlKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsKVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEyMzAte1xuLS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L2ludGVybmFsLmg9MzE0PXN0YXRpYyBpbmxpbmUgdm9pZCBtaGlfZGVidWdmc19leGl0KHZvaWQpXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW50ZXJuYWwuaC0zMTgtXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbnRlcm5hbC5oOjMxOTpzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2FsbG9jX2RldmljZShzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCk7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbnRlcm5hbC5oLTMyMC1cbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9tYWluLmM9MzY5PXZvaWQgbWhpX2NyZWF0ZV9kZXZpY2VzKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsKVxuLS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L21haW4uYy0zODAtXHRcdFx0Y29udGludWU7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9tYWluLmM6MzgxOlx0XHRtaGlfZGV2ID0gbWhpX2FsbG9jX2RldmljZShtaGlfY250cmwpO1xuZHJpdmVycy9idXMvbWhpL2hvc3QvbWFpbi5jLTM4Mi1cdFx0aWYgKElTX0VSUihtaGlfZGV2KSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMyNDYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBNSEkvUENJIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXJgIGZ1bmN0aW9uIGFuZCB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBNSEkgYW5kIFBDSSBjb250ZXh0LiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCBgbWhpX3BjaV9wcm9iZWAgY2FsbHMgaXQsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHJlY29nbml6ZSBgbWhpX3BjaV9wcm9iZWAgYXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBwcm9iaW5nIHJlYWwtd29ybGQgUXVhbGNvbW0gUENJZSBtb2RlbXMg4oCTIHRoZSBGb3hjb25uIFQ5OVcxNzUsIHRoZSBUZWxpdCBGTjk4MCwgdGhvc2UgUXVlY3RlbCBFTTEyMFItR0xzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMuIEkmIzM5O20gbm90aW5nIHRoZSB2ZW5kb3IgSURzICgweDE3Y2IsIGV0Yy4pIGFzIGEgcG9pbnQgb2YgcmVmZXJlbmNlLiBJIGFsc28gc2VlIHRoYXQgYGF0aDExa19wY2lgLCBgYXRoMTJrX3BjaWAsIGFuZCBgcWFpY2AgYXJlIGNhbGxpbmcgdGhpcyByZWdpc3RlciBjb250cm9sbGVyLCBhbmQgSSBuZWVkIHRvIGNvbWUgYmFjayB0byB0aGVzZS4KClRoZW4gdGhlcmUmIzM5O3MgYHQ3eHhgLCB3aGljaCBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSBhcyBNZWRpYVRlayYjMzk7cyBNVEsgUENJZSA1RyBXV0FOIG1vZGVtIGRldmljZXMuIEkga25vdyB0aGF0JiMzOTtzIGZvdW5kIGluIGBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuY2AuIFRoZSBQQ0kgSURzLCBmb3IgTWVkaWFUZWsgKDB4MTRjMykgYW5kIHRoZSBkZXZpY2UgaXRzZWxmICgweDRkNzUpLCBhcmUgd2hhdCBJJiMzOTtkIGV4cGVjdC4gTm93IEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2suLi4gSSBzaG91bGQgY2hlY2sgdGhhdCBgdDd4eF9wY2kuY2AgZmlsZSBhZ2FpbiBhbmQgbWFrZSBzdXJlIHRoYXQgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHNvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFXFwocGNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi90N3h4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jPTk0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgdDd4eF9wY2lfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYy05NDgtfTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jOjk0OTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgdDd4eF9wY2lfdGFibGUpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmMtOTUwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzk4MwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBUN3h4IFBDSSBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIFQ3eHggV1dBTiBkZXZpY2UgaXMgaGFuZGxlZCwgc28gbGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgaXRzIFBDSSBpbml0aWFsaXphdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBkZWx2ZSBpbnRvIHRoZSBgdDd4eF9wY2lfdGFibGVgIHN0cnVjdHVyZS4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHN5c3RlbSBpZGVudGlmaWVzIGFuZCBjb25maWd1cmVzIHRoZSBoYXJkd2FyZS4gVGhlIGZpbGUgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGlzIGBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuY2AuIFRoZSB0YWJsZSBkZWZpbml0aW9uIGFuZCBkZXZpY2UgbWF0Y2hpbmcgbG9naWMgYXJlIGxpa2VseSBob3VzZWQgd2l0aGluIHRoYXQgbW9kdWxlLiBVbmRlcnN0YW5kaW5nIHRoaXMgdGFibGUgd2lsbCBvZmZlciBjbHVlcyBhYm91dCBzdXBwb3J0ZWQgZGV2aWNlcywgYXNzb2NpYXRlZCBQQ0kgSURzLCBhbmQgZHJpdmVyIGJpbmRpbmcuIEl0IGlzIHRoZSBjb3JlIG9mIGhvdyB0aGUgZHJpdmVyIGlzIHN1cHBvc2VkIHRvIHJlY29nbml6ZSBhbmQgd29yayB3aXRoIGRpZmZlcmVudCBpdGVyYXRpb25zIG9mIHRoZSBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTQwOlx0XHRwY2lfZnJlZV9pcnFfdmVjdG9ycyh0N3h4X2Rldi1cdTAwM2VwZGV2KTtcbiA5NDE6XHR9XG4gOTQyOlx0XG4gOTQzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHQ3eHhfcGNpX3RhYmxlW10gPSB7XG4gOTQ0Olx0XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg0ZDc1KSB9LFxuIDk0NTpcdFx0eyBQQ0lfREVWSUNFKDB4MDNmMCwgMHgwOWM4KSB9LCAvLyBIUCBEUk1SLUgwMVxuIDk0NjpcdFx0eyBQQ0lfREVWSUNFKDB4MTRjMCwgMHg0ZDc1KSB9LCAvLyBEZWxsIERXNTkzM2VcbiA5NDc6XHRcdHsgfVxuIDk0ODpcdH07XG4gOTQ5Olx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHQ3eHhfcGNpX3RhYmxlKTtcbiA5NTA6XHRcbiA5NTE6XHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgdDd4eF9wY2lfZHJpdmVyID0ge1xuIDk1MjpcdFx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcbiA5NTM6XHRcdC5pZF90YWJsZSA9IHQ3eHhfcGNpX3RhYmxlLFxuIDk1NDpcdFx0LnByb2JlID0gdDd4eF9wY2lfcHJvYmUsXG4gOTU1Olx0XHQucmVtb3ZlID0gdDd4eF9wY2lfcmVtb3ZlLFxuIDk1NjpcdFx0LmRyaXZlci5wbSA9IFx1MDAyNnQ3eHhfcGNpX3BtX29wcyxcbiA5NTc6XHRcdC5zaHV0ZG93biA9IHQ3eHhfcGNpX3NodXRkb3duLFxuIDk1ODpcdH07XG4gOTU5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NjMzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIERlZXBlcjogSW52ZXN0aWdhdGluZyBgbWhpX3BjaV9nZW5lcmljLmNgKioKCkFscmlnaHQsIEkgbmVlZCB0byBicm9hZGVuIHRoZSBzY29wZSBvZiB0aGlzIGludmVzdGlnYXRpb24uIFdlJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGNvcmUgaXNzdWUsIGJ1dCB0aGVyZSYjMzk7cyBhIHN0cm9uZyBsaWtlbGlob29kIGl0IGNvdWxkIGJlIG1hbmlmZXN0aW5nIGZyb20gbG93ZXIgbGV2ZWxzLiBJJiMzOTttIHRoaW5raW5nLCBiZWZvcmUgd2UgZ28gYW55IGZ1cnRoZXIsIEkgc2hvdWxkIGRlZmluaXRlbHkgcHVsbCB1cCBhbmQgbWV0aWN1bG91c2x5IGV4YW1pbmUgYG1oaV9wY2lfZ2VuZXJpYy5jYC4gSXQmIzM5O3MgYSBrZXkgY29tcG9uZW50IGluIE1ISSBQQ0kgaW50ZXJhY3Rpb24sIGFuZCBpdCYjMzk7cyBwcmFjdGljYWxseSBzY3JlYW1pbmcgcG90ZW50aWFsIGZvciBjb250cmlidXRpbmcgdG8gdGhpcyBwcm9ibGVtLiBVbmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBhbmQgaGFuZGxpbmcgdGhlcmUgaXMgY3JpdGljYWwgYmVmb3JlIGp1bXBpbmcgdG8gYW55IG1ham9yIGNvbmNsdXNpb25zIG9yIHNvbHV0aW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9wY2lfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9taGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDg1NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSHVudGluZyBEb3duIHRoZSBQQ0kgSUQgVGFibGUqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIFBDSSBJRCB0YWJsZSBmb3IgdGhlIE1ISSBob3N0IGNvbnRyb2xsZXIuIE15IGd1dCBzYXlzIGl0JiMzOTtzIGxpa2VseSBuZXN0bGVkIHdpdGhpbiB0aGUgZHJpdmVyIGNvZGUgaXRzZWxmLCBhbmQgc3BlY2lmaWNhbGx5LCB0aGUgUENJIGltcGxlbWVudGF0aW9uLiBUaGF0IG1lYW5zIEkgc2hvdWxkIGJlIGxvb2tpbmcgaW4gdGhlIGBkcml2ZXJzL2J1cy9taGkvaG9zdC9gIGRpcmVjdG9yeSwgYW5kIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgYHBjaV9nZW5lcmljLmNgLiBJdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBuYW1pbmcgY29udmVudGlvbjsgJiMzNDtnZW5lcmljJiMzNDsgb2Z0ZW4gaW5kaWNhdGVzIHRoZSBiYXNlIG9yIGZvdW5kYXRpb25hbCBQQ0ktcmVsYXRlZCBmdW5jdGlvbnMuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBmaWxlIGNvbnRhaW5zIHRoZSBkZXZpY2UgSUQgbGlzdCBvciBpZiBpdCBwb2ludHMgdG8gd2hlcmUgdGhlIGluZm9ybWF0aW9uIGlzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgc3RydWN0dXJlIGRlZmluaXRpb24sIG1vc3QgbGlrZWx5IHdpdGggYSBgc3RydWN0IHBjaV9kZXZpY2VfaWRgIGtpbmQgb2YgYXJyYW5nZW1lbnQsIHdoaWNoIHdvdWxkIGxpc3QgdmVuZG9yIElEcywgZGV2aWNlIElEcywgc3Vic3lzdGVtIHZlbmRvciBJRHMsIHN1YnN5c3RlbSBkZXZpY2UgSURzLCBhbmQgbWF5YmUgZXZlbiBhIGRyaXZlci1zcGVjaWZpYyBmdW5jdGlvbiBwb2ludGVyLiBJJiMzOTtsbCBmb2N1cyBvbiBxdWlja2x5IHNjYW5uaW5nIHRoZSBmaWxlIGZvciBhIHN0YXRpY2FsbHkgZGVmaW5lZCBhcnJheSBvZiB0aGVzZSBQQ0kgSUQgc3RydWN0dXJlcy4gSG9wZWZ1bGx5LCBJJiMzOTtsbCBmaW5kIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciB0aGVyZSBxdWlja2x5LiBJZiBub3QsIEkmIzM5O2xsIG5lZWQgdG8gc3RhcnQgaHVudGluZyB0aHJvdWdoIHRoZSBzdXJyb3VuZGluZyBpbmNsdWRlIGZpbGVzIGZvciBkZWZpbml0aW9ucyBvZiBgc3RydWN0IHBjaV9kZXZpY2VfaWRgIGlmIGl0JiMzOTtzIGV4dGVybmFsLCBvciBtYXliZSBhIG1hY3JvIGRlZmluaXRpb24gZXhwYW5kaW5nIHRvIHRoYXQgc3RydWN0dXJlLiBJJiMzOTtsbCBrZWVwIHRoZSBzZWFyY2ggZm9jdXNlZDsgaG9wZWZ1bGx5LCBpdCYjMzk7cyBub3QgdG9vIGRlZXBseSBidXJpZWQgaW4gc29tZSBsYXllcmVkIGFic3RyYWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFXFwocGNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvbWhpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM9OTUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtaGlfcGNpX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xMDg2LX07XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jOjEwODc6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG1oaV9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xMDg4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTM2MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgTW9kZW0gRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIG1vZGVtIGRyaXZlcnMsIHNwZWNpZmljYWxseSBgbWhpX3d3YW5fbWJpbS5jYCBhbmQgYHQ3eHhfbmV0ZGV2LmNgLCB3b3JrLiBJdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCB0aGV5IGJvdGggbmVlZCBhY3R1YWwgcGh5c2ljYWwgUENJIG1vZGVtIGhhcmR3YXJlLiBUaGUgYG1oaWAgZHJpdmVyIHVzZXMgdGhlIE1ISSBidXMsIGluc3RhbnRpYXRlZCBieSBlaXRoZXIgYG1oaV9wY2lfZ2VuZXJpYy5jYCBvciBRdWFsY29tbSYjMzk7cyBQQ0llIG1vZGVtcywgd2hpbGUgdGhlIE1lZGlhVGVrIG9uZSByZWxpZXMgb24gYHQ3eHhfcGNpLmNgLiBUaGUgY29yZSBhc3N1bXB0aW9uIHJpZ2h0IG5vdyBpcyB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBkaXJlY3RseSBjb25uZWN0ZWQgaGFyZHdhcmUgZGV2aWNlLgoKQnV0LCBiZWZvcmUgSSBnbyBkb3duIHRoYXQgcGF0aCBjb21wbGV0ZWx5LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgaXNuJiMzOTt0IHNvbWV0aGluZyBtb3JlIGludGVyZXN0aW5nIG9yIGZsZXhpYmxlIGF0IHBsYXkgaGVyZS4gSXQmIzM5O3MgYSBnb29kIGhhYml0IHRvIHJ1bGUgb3V0IGFueSBwb3NzaWJpbGl0aWVzIHRoYXQgY291bGQgb2ZmZXIgb3RoZXIgb3B0aW9ucy4KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIG1pZ2h0IGJlIGEgdmlydHVhbCBvciBlbXVsYXRlZCBtb2RlbSBkZXZpY2Ugc29tZXdoZXJlIGluIHRoZSBzeXN0ZW0sIG9yIHBlcmhhcHMgYSB1c2VyLXNwYWNlIGludGVyZmFjZS4gSXMgdGhlcmUgYSB3YXkgdG8gaW5qZWN0IHBhY2tldHMgZGlyZWN0bHkgaW50byB0aGUgYG1oaV9tYmltX3J4YCBvciBgdDd4eF9jY21uaV9yZWN2X3NrYmAgZnVuY3Rpb25zPwoKSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGNhbGwgc2l0ZXMgZm9yIGB0N3h4X2NjbW5pX3JlY3Zfc2tiYCB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0N3h4X2NjbW5pX3JlY3Zfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi90N3h4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jPTM5OT1zdGF0aWMgdm9pZCBpbml0X21kX3N0YXR1c19ub3RpZmllcihzdHJ1Y3QgdDd4eF9wY2lfZGV2ICp0N3h4X2Rldilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy00MTEtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYzo0MTI6c3RhdGljIHZvaWQgdDd4eF9jY21uaV9yZWN2X3NrYihzdHJ1Y3QgdDd4eF9jY21uaV9jdHJsICpjY21uaV9jdGxiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtNDEzLVx0XHRcdFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jPTQ5MD1pbnQgdDd4eF9jY21uaV9pbml0KHN0cnVjdCB0N3h4X3BjaV9kZXYgKnQ3eHhfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTUwMi1cdGN0bGItXHUwMDNlY2FsbGJhY2tzLnN0YXRlX25vdGlmeSA9IHQ3eHhfY2NtbmlfcXVldWVfc3RhdGVfbm90aWZ5O1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM6NTAzOlx0Y3RsYi1cdTAwM2VjYWxsYmFja3MucmVjdl9za2IgPSB0N3h4X2NjbW5pX3JlY3Zfc2tiO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtNTA0LVx0Y3RsYi1cdTAwM2VuaWNfZGV2X251bSA9IE5JQ19ERVZfREVGQVVMVDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYyMTcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgV1dBTiBEZXZpY2UgRW11bGF0aW9uKioKCk9rYXksIHNvIGB0N3h4X2NjbW5pX3JlY3Zfc2tiYCBpcyB0aGUgZW50cnkgcG9pbnQgd2hlbiB0aGUgVDd4eCBQQ0llIGhhcmR3YXJlIGlzIHJlY2VpdmluZyBwYWNrZXRzIGZyb20gdGhlIERQTUFJRiBSWCBxdWV1ZS4gVGhhdCBtYWtlcyBzZW5zZS4gQW5kLCBhcyBleHBlY3RlZCwgYG1oaV9tYmltX3J4YCBpcyBjYWxsZWQgdGhyb3VnaCBgbWhpX21iaW1fZGxfY2FsbGJhY2tgIHdoaWNoIGlzIHRoZSBNSEkgYnVzIHRyYW5zZmVyIGNhbGxiYWNrLiBBbGwgc2VlbXMgc3RhbmRhcmQuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXNlIHNwZWNpZmljIG1vZGVtcyBhcmUgZW11bGF0YWJsZS4gTGV0IG1lIGNoZWNrIFNlY3Rpb24gMiBvZiB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbi4uLiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIE9rYXksIHRoYXQgdXN1YWxseSBtZWFucyB2ZW5kb3Itc3BlY2lmaWMgc3R1ZmYgdGhhdCBRRU1VIGRvZXNuJiMzOTt0IHRvdWNoOiBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIGxpa2UgbWx4c3csIHBkc19jb3JlLCBhbmQgb3RoZXJzLiBUaGV5IGFsbCBuZWVkIHRoYXQgcGh5c2ljYWwgQVNJQyBvciBQQ0llIGNhcmQsIG5vdCBzb21ldGhpbmcgUUVNVSBub3JtYWxseSBwcm92aWRlcy4KClRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbjogQXJlIFF1YWxjb21tIE1ISSBQQ0llIG1vZGVtcyAqb3IqIE1lZGlhVGVrIFQ3eHggUENJZSBtb2RlbXMgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cz8gVGhlIGFuc3dlciBpcyBhIGNsZWFyICpubyouIFN0YW5kYXJkIFFFTVUgYW5kIEdDRSAqZG9uJiMzOTt0KiBlbXVsYXRlIHRoZSBRdWFsY29tbSBNSEkgbW9kZW1zIChsaWtlIHRoZSBGb3hjb25uLCBRdWVjdGVsLCBUZWxpdCBvbmVzKSBvciB0aGUgTWVkaWFUZWsgNUcgV1dBTiBQQ0llIG1vZGVtcyAodGhvc2Ugd2l0aCB0aGUgMHgxNGMzOjB4NGQ3NSB2ZW5kb3I6ZGV2aWNlIElEKS4gSXQmIzM5O3MgZXhwbGljaXRseSBzdGF0ZWQgdGhhdCB0aGV5IHJlcXVpcmUgKnBoeXNpY2FsKiBQQ0llIG1vZGVtIGhhcmR3YXJlLCB3aGljaCBpc24mIzM5O3QgYXZhaWxhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCkhtbSwgdGhpcyBwcmVzZW50cyBhIHByb2JsZW0uIEJ1dCwgd2FpdC4uLiBjb3VsZCB0aGVyZSBiZSBhIHdvcmthcm91bmQ/IElzIHRoZXJlICphbnkqIHBvc3NpYmlsaXR5IHRoZSBXV0FOIGNvcmUgc3Vic3lzdGVtIGNvdWxkIGNyZWF0ZSBhIGR1bW15IG9yIHZpcnR1YWwgV1dBTiBkZXZpY2U/IEl0JiMzOTtzIHdvcnRoIGV4cGxvcmluZy4gVG8gZmluZCBvdXQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC93d2FuL2AgZGlyZWN0b3J5LiBNYXliZSBJJiMzOTtsbCBnZXQgbHVja3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDttaGlfd3dhbl9jdHJsLmMmIzM0OywKICAgICYjMzQ7bWhpX3d3YW5fbWJpbS5jJiMzNDssCiAgICAmIzM0O3Fjb21fYmFtX2RtdXguYyYjMzQ7LAogICAgJiMzNDtycG1zZ193d2FuX2N0cmwuYyYjMzQ7LAogICAgJiMzNDt3d2FuX2NvcmUuYyYjMzQ7LAogICAgJiMzNDt3d2FuX2h3c2ltLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7aW9zbSYjMzQ7LAogICAgJiMzNDt0N3h4JiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwNTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDb3JlIG9mIFdXQU4gU2ltdWxhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0xldCYjMzk7cyBjcmFjayBvcGVuIGB3d2FuX2h3c2ltLmNgLiYjMzQ7IFRoYXQmIzM5O3MgdGhlIGZpbGUgSSBuZWVkIHRvIHVuZGVyc3RhbmQsIGJ1dCB3aGF0ICpleGFjdGx5KiBpcyBpdCBkb2luZz8gTXkgbWluZCBpcyBhdXRvbWF0aWNhbGx5IHByb2Jpbmc6IFdoYXQmIzM5O3MgdGhlIGZ1bmRhbWVudGFsIHJvbGUgb2YgdGhpcyBzaW11bGF0aW9uPyBXaGF0IGFzcGVjdHMgb2YgdGhlIFdXQU4gKFdpcmVsZXNzIFdpZGUgQXJlYSBOZXR3b3JrKSBoYXJkd2FyZSBhcmUgYmVpbmcgZW11bGF0ZWQgaGVyZT8gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgaGFyZHdhcmUgaXQmIzM5O3MgbWVhbnQgdG8gcmVwbGljYXRlLiBBbSBJIGxvb2tpbmcgYXQgdGhlIHBoeXNpY2FsIHJhZGlvIGxheWVyLCB0aGUgbW9kZW0gaW50ZXJmYWNlLCB0aGUgcHJvdG9jb2wgc3RhY2ssIG9yIGEgY29tYmluYXRpb24/IFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciByZWFsbHkgZGlnZ2luZyBpbnRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vd3dhbl9od3NpbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogV1dBTiBkZXZpY2Ugc2ltdWxhdG9yIGZvciBXV0FOIGZyYW1ld29yayB0ZXN0aW5nLlxuICAgNDpcdCAqXG4gICA1Olx0ICogQ29weXJpZ2h0IChjKSAyMDIxLCAyMDI1LCBTZXJnZXkgUnlhemFub3YgXHUwMDNjcnlhemFub3Yucy5hQGdtYWlsLmNvbVx1MDAzZVxuICAgNjpcdCAqL1xuICAgNzpcdFxuICAgODpcdCNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXCYjMzQ7OiBcJiMzNDsgZm10XG4gICA5Olx0XG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICAxMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICAxNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3RpbWUuaFx1MDAzZVxuICAxNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpc3QuaFx1MDAzZVxuICAxNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4gIDE4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdGltZXIuaFx1MDAzZVxuICAxOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gIDIwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvd3dhbi5oXHUwMDNlXG4gIDIxOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvZGVidWdmcy5oXHUwMDNlXG4gIDIyOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcdTAwM2VcbiAgMjM6XHRcbiAgMjQ6XHQjaW5jbHVkZSBcdTAwM2NuZXQvYXJwLmhcdTAwM2VcbiAgMjU6XHRcbiAgMjY6XHRzdGF0aWMgaW50IHd3YW5faHdzaW1fZGV2c251bSA9IDI7XG4gIDI3Olx0bW9kdWxlX3BhcmFtX25hbWVkKGRldmljZXMsIHd3YW5faHdzaW1fZGV2c251bSwgaW50LCAwNDQ0KTtcbiAgMjg6XHRNT0RVTEVfUEFSTV9ERVNDKGRldmljZXMsIFwmIzM0O051bWJlciBvZiBzaW11bGF0ZWQgZGV2aWNlc1wmIzM0Oyk7XG4gIDI5Olx0XG4gIDMwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBjbGFzcyB3d2FuX2h3c2ltX2NsYXNzID0ge1xuICAzMTpcdFx0Lm5hbWUgPSBcJiMzNDt3d2FuX2h3c2ltXCYjMzQ7LFxuICAzMjpcdH07XG4gIDMzOlx0XG4gIDM0Olx0c3RhdGljIHN0cnVjdCBkZW50cnkgKnd3YW5faHdzaW1fZGVidWdmc190b3BkaXI7XG4gIDM1Olx0c3RhdGljIHN0cnVjdCBkZW50cnkgKnd3YW5faHdzaW1fZGVidWdmc19kZXZjcmVhdGU7XG4gIDM2Olx0XG4gIDM3Olx0c3RhdGljIERFRklORV9TUElOTE9DSyh3d2FuX2h3c2ltX2RldnNfbG9jayk7XG4gIDM4Olx0c3RhdGljIExJU1RfSEVBRCh3d2FuX2h3c2ltX2RldnMpO1xuICAzOTpcdHN0YXRpYyB1bnNpZ25lZCBpbnQgd3dhbl9od3NpbV9kZXZfaWR4O1xuICA0MDpcdHN0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd3dhbl93cTtcbiAgNDE6XHRcbiAgNDI6XHRzdHJ1Y3Qgd3dhbl9od3NpbV9kZXYge1xuICA0MzpcdFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuICA0NDpcdFx0dW5zaWduZWQgaW50IGlkO1xuICA0NTpcdFx0c3RydWN0IGRldmljZSBkZXY7XG4gIDQ2Olx0XHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZGVsX3dvcms7XG4gIDQ3Olx0XHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3RvcGRpcjtcbiAgNDg6XHRcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcG9ydGNyZWF0ZTtcbiAgNDk6XHRcdHNwaW5sb2NrX3QgcG9ydHNfbG9jaztcdC8qIFNlcmlhbGl6ZSBwb3J0cyBjcmVhdGlvbi9kZWxldGlvbiAqL1xuICA1MDpcdFx0dW5zaWduZWQgaW50IHBvcnRfaWR4O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODAzNwoJCQkJCQkJb3V0cHV0OiAxMzUKCQkJCQkJCXRob3VnaHRzOiA1ODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogU3RydWN0dXJhbGx5IFVucmVhY2hhYmxlIENvZGUgZm9yIEZ1enppbmcqKgoKT2theSwgYWZ0ZXIgYSBjbG9zZSBsb29rLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgd2l0aGluIHRoZSBgd3dhbmAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgaW52b2x2aW5nIGRyaXZlcnMgZm9yIHBoeXNpY2FsIFBDSWUgbW9kZW1zLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYHd3YW5faHdzaW0uY2AgaXMgYSBzaW11bGF0b3IgZm9yIHRoZSBgd3dhbl9jb3JlYCBidXQgdGhlIHJlbGV2YW50IGRyaXZlcnMgaW4gdGhpcyBjYXNlIOKAkyBgbWhpX3d3YW5fbWJpbS5jYCAoUXVhbGNvbW0gTUhJKSBhbmQgYHQ3eHgvdDd4eF9uZXRkZXYuY2AgKE1lZGlhVGVrIFQ3eHgpIOKAkyBhcmUgKmhhcmR3YXJlLXNwZWNpZmljKiBkcml2ZXJzIHRoYXQgY29tbXVuaWNhdGUgZGlyZWN0bHkgd2l0aCBwaHlzaWNhbCBQQ0llIG1vZGVtIGRldmljZXMuIFRoZXNlIGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLgoKVGhlIG1vZGlmaWNhdGlvbnMgYXJlIGluIHRoZSBSWCBwYWNrZXQgcHJvY2Vzc2luZyBwYXRoczogYG1oaV9tYmltX3J4YCBhbmQgYG1oaV9tYmltX3J4X2Ryb3BgIGluIHRoZSBRdWFsY29tbSBkcml2ZXIsIGhhbmRsaW5nIHRoZSBkb3dubGluayBjYWxsYmFjaywgYW5kIGB0N3h4X2NjbW5pX3JlY3Zfc2tiYCBpbiB0aGUgTWVkaWFUZWsgZHJpdmVyLCB2YWxpZGF0aW5nIHRoZSBgbmV0aWZfaWRgLiBUaGVzZSBmdW5jdGlvbnMgb25seSBjb21lIGludG8gcGxheSB3aGVuIHJlY2VpdmluZyBwYWNrZXRzIGRpcmVjdGx5IGZyb20gdGhlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUuCgpCYXNlZCBvbiB0aGUgdHJpYWdlIHBoaWxvc29waHkgb3V0bGluZWQgaW4gU2VjdGlvbiAyLCB0aGUgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBzY2VuYXJpbyBhcHBsaWVzIHBlcmZlY3RseSBoZXJlLiBUaGUgcGF0Y2ggZmFsbHMgaW50byB0aGUgY2F0ZWdvcnkgb2YgY29kZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLgoKVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgaW5oZXJlbnRseSB1bnJlYWNoYWJsZSBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgYXMgd2Ugd291bGQgYmUgdW5hYmxlIHRvIHRyaWdnZXIgdGhlIG1vZGlmaWVkIGxvZ2ljLiBNeSBkZWNpc2lvbiBpcyBzdHJhaWdodGZvcndhcmQ6CgoqICAgKipXb3J0aEZ1enppbmc6IGZhbHNlKioKKiAgICoqRm9jdXNTeW1ib2xzOiBcWyBdKioKKiAgICoqRW5hYmxlQ29uZmlnczogXFsgXSoqCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggbW9kaWZpZXMgUlggcGFja2V0IHByb2Nlc3NpbmcgaW4gZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwsIG5vbi1lbXVsYXRlZCBQQ0llIG1vZGVtIGhhcmR3YXJlLiBIZW5jZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgbW9kaWZ5IFJYIGhhbmRsaW5nIHJvdXRpbmVzIGluIGRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jIChNSEkgV1dBTiBNQklNIGRyaXZlciBmb3IgUXVhbGNvbW0gbW9kZW1zKSBhbmQgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMgKE1lZGlhVGVrIFQ3eHggUENJZSBtb2RlbSBkcml2ZXIpLiBCb3RoIGRyaXZlcnMgZGVwZW5kIG9uIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgbW9kZW0gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgUlggaGFuZGxpbmcgcm91dGluZXMgaW4gZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKE1ISSBXV0FOIE1CSU0gZHJpdmVyIGZvciBRdWFsY29tbSBtb2RlbXMpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyBkZXBlbmQgb24gc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBtb2RlbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6MDkuNjQ4NTY2NzM5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0NzEyNTIzOTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgUlggaGFuZGxpbmcgcm91dGluZXMgaW4gZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKE1ISSBXV0FOIE1CSU0gZHJpdmVyIGZvciBRdWFsY29tbSBtb2RlbXMpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyBkZXBlbmQgb24gc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBtb2RlbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NjowOS42NDg1NzM3NDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNTMxNDI3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGMzOTY4OWE3ZWJkZGI0OTI1YTUwNmM4ZWM2Yzc1Y2RhMmUxMWIwNGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBTZXAgMTEgMDI6NDY6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xcbmluZGV4IGE5NDk5ODcxMjU5NzYuLjMzNmY4OTc1NmYxMGQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcXG4rKysgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xcbkBAIC0yNTEsNiArMjUxLDE0IEBAIHN0YXRpYyBpbnQgbWJpbV9yeF92ZXJpZnlfbmRwMTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2ICpuXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIG1oaV9tYmltX3J4X2Ryb3Aoc3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmssIHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4rXFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2bGluay1cXHUwMDNlcnhfc3luY3ApO1xcbitcXHR1NjRfc3RhdHNfaW5jKFxcdTAwMjZsaW5rLVxcdTAwM2VyeF9lcnJvcnMpO1xcbitcXHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcXHUwMDI2bGluay1cXHUwMDNlcnhfc3luY3ApO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbiBcXHRpbnQgbmRwb2Zmc2V0O1xcbkBAIC0zMjAsNyArMzI4LDEwIEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdFxcdHNrYl9wdXQoc2tibiwgZGdyYW1fbGVuKTtcXG4tXFx0XFx0XFx0c2tiX2NvcHlfYml0cyhza2IsIGRncmFtX29mZnNldCwgc2tibi1cXHUwMDNlZGF0YSwgZGdyYW1fbGVuKTtcXG4rXFx0XFx0XFx0aWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXFx1MDAzZWRhdGEsIGRncmFtX2xlbikpIHtcXG4rXFx0XFx0XFx0XFx0bWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTtcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdFxcdH1cXG4gXFxuIFxcdFxcdFxcdHN3aXRjaCAoc2tibi1cXHUwMDNlZGF0YVswXSBcXHUwMDI2IDB4ZjApIHtcXG4gXFx0XFx0XFx0Y2FzZSAweDQwOlxcbkBAIC0zMzIsMTAgKzM0Myw3IEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRcXHRkZWZhdWx0OlxcbiBcXHRcXHRcXHRcXHRuZXRfZXJyX3JhdGVsaW1pdGVkKFxcXCIlczogdW5rbm93biBwcm90b2NvbFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGxpbmstXFx1MDAzZW5kZXYtXFx1MDAzZW5hbWUpO1xcbi1cXHRcXHRcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueShza2JuKTtcXG4tXFx0XFx0XFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2bGluay1cXHUwMDNlcnhfc3luY3ApO1xcbi1cXHRcXHRcXHRcXHR1NjRfc3RhdHNfaW5jKFxcdTAwMjZsaW5rLVxcdTAwM2VyeF9lcnJvcnMpO1xcbi1cXHRcXHRcXHRcXHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcXHUwMDI2bGluay1cXHUwMDNlcnhfc3luY3ApO1xcbitcXHRcXHRcXHRcXHRtaGlfbWJpbV9yeF9kcm9wKGxpbmssIHNrYm4pO1xcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0XFx0fVxcbiBcXG5AQCAtMzQ5LDkgKzM1NywxMyBAQCBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gdW5sb2NrOlxcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gbmV4dF9uZHA6XFxuLVxcdFxcdC8qIE90aGVyIE5EUCB0byBwcm9jZXNzPyAqL1xcbi1cXHRcXHRuZHBvZmZzZXQgPSAoaW50KWxlMTZfdG9fY3B1KG5kcDE2LndOZXh0TmRwSW5kZXgpO1xcbi1cXHRcXHRpZiAoIW5kcG9mZnNldClcXG4rXFx0XFx0LyogT3RoZXIgTkRQIHRvIHByb2Nlc3M/ICBUaGUgb2Zmc2V0cyBtdXN0IGFkdmFuY2UsIG9yIGFcXG4rXFx0XFx0ICogc2VsZi1yZWZlcmVuY2luZyBORFAga2VlcHMgdGhlIGxvb3Agc3Bpbm5pbmcgZm9yZXZlci5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdG4gPSAoaW50KWxlMTZfdG9fY3B1KG5kcDE2LndOZXh0TmRwSW5kZXgpO1xcbitcXHRcXHRpZiAobiBcXHUwMDNlIG5kcG9mZnNldClcXG4rXFx0XFx0XFx0bmRwb2Zmc2V0ID0gbjtcXG4rXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuY1xcbmluZGV4IGZjMGE3Y2IxODFkZjIuLjhmMzJjMmQyNjkzMTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNcXG4rKysgYi9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuY1xcbkBAIC00MjAsNiArNDIwLDEwIEBAIHN0YXRpYyB2b2lkIHQ3eHhfY2NtbmlfcmVjdl9za2Ioc3RydWN0IHQ3eHhfY2NtbmlfY3RybCAqY2NtbmlfY3RsYiwgc3RydWN0IHNrX2J1XFxuIFxcbiBcXHRza2JfY2IgPSBUN1hYX1NLQl9DQihza2IpO1xcbiBcXHRuZXRpZl9pZCA9IHNrYl9jYi1cXHUwMDNlbmV0aWZfaWR4O1xcbitcXHRpZiAobmV0aWZfaWQgXFx1MDAzZT0gTklDX0RFVl9NQVgpIHtcXG4rXFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4gXFx0Y2NtbmkgPSBSRUFEX09OQ0UoY2NtbmlfY3RsYi1cXHUwMDNlY2NtbmlfaW5zdFtuZXRpZl9pZF0pO1xcbiBcXHRpZiAoIWNjbW5pKSB7XFxuIFxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6MTAuMDc0NTE2MzlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjExNDI4NjU2MTU1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgUlggaGFuZGxpbmcgcm91dGluZXMgaW4gZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKE1ISSBXV0FOIE1CSU0gZHJpdmVyIGZvciBRdWFsY29tbSBtb2RlbXMpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyBkZXBlbmQgb24gc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBtb2RlbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMzOTY4OWE3ZWJkZGI0OTI1YTUwNmM4ZWM2Yzc1Y2RhMmUxMWIwNGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwMjo0NjowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jIGIvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcbmluZGV4IGE5NDk5ODcxMjU5NzYuLjMzNmY4OTc1NmYxMGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xuKysrIGIvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcbkBAIC0yNTEsNiArMjUxLDE0IEBAIHN0YXRpYyBpbnQgbWJpbV9yeF92ZXJpZnlfbmRwMTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2ICpuXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbitzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeF9kcm9wKHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3tcbitcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4rXHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNmxpbmstXHUwMDNlcnhfc3luY3ApO1xuK1x0dTY0X3N0YXRzX2luYyhcdTAwMjZsaW5rLVx1MDAzZXJ4X2Vycm9ycyk7XG4rXHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZsaW5rLVx1MDAzZXJ4X3N5bmNwKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0aW50IG5kcG9mZnNldDtcbkBAIC0zMjAsNyArMzI4LDEwIEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0c2tiX3B1dChza2JuLCBkZ3JhbV9sZW4pO1xuLVx0XHRcdHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXHUwMDNlZGF0YSwgZGdyYW1fbGVuKTtcbitcdFx0XHRpZiAoc2tiX2NvcHlfYml0cyhza2IsIGRncmFtX29mZnNldCwgc2tibi1cdTAwM2VkYXRhLCBkZ3JhbV9sZW4pKSB7XG4rXHRcdFx0XHRtaGlfbWJpbV9yeF9kcm9wKGxpbmssIHNrYm4pO1xuK1x0XHRcdFx0Y29udGludWU7XG4rXHRcdFx0fVxuIFxuIFx0XHRcdHN3aXRjaCAoc2tibi1cdTAwM2VkYXRhWzBdIFx1MDAyNiAweGYwKSB7XG4gXHRcdFx0Y2FzZSAweDQwOlxuQEAgLTMzMiwxMCArMzQzLDcgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdFx0ZGVmYXVsdDpcbiBcdFx0XHRcdG5ldF9lcnJfcmF0ZWxpbWl0ZWQoXCIlczogdW5rbm93biBwcm90b2NvbFxcblwiLFxuIFx0XHRcdFx0XHRcdCAgICBsaW5rLVx1MDAzZW5kZXYtXHUwMDNlbmFtZSk7XG4tXHRcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2JuKTtcbi1cdFx0XHRcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2bGluay1cdTAwM2VyeF9zeW5jcCk7XG4tXHRcdFx0XHR1NjRfc3RhdHNfaW5jKFx1MDAyNmxpbmstXHUwMDNlcnhfZXJyb3JzKTtcbi1cdFx0XHRcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNmxpbmstXHUwMDNlcnhfc3luY3ApO1xuK1x0XHRcdFx0bWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdH1cbiBcbkBAIC0zNDksOSArMzU3LDEzIEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHVubG9jazpcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gbmV4dF9uZHA6XG4tXHRcdC8qIE90aGVyIE5EUCB0byBwcm9jZXNzPyAqL1xuLVx0XHRuZHBvZmZzZXQgPSAoaW50KWxlMTZfdG9fY3B1KG5kcDE2LndOZXh0TmRwSW5kZXgpO1xuLVx0XHRpZiAoIW5kcG9mZnNldClcbitcdFx0LyogT3RoZXIgTkRQIHRvIHByb2Nlc3M/ICBUaGUgb2Zmc2V0cyBtdXN0IGFkdmFuY2UsIG9yIGFcbitcdFx0ICogc2VsZi1yZWZlcmVuY2luZyBORFAga2VlcHMgdGhlIGxvb3Agc3Bpbm5pbmcgZm9yZXZlci5cbitcdFx0ICovXG4rXHRcdG4gPSAoaW50KWxlMTZfdG9fY3B1KG5kcDE2LndOZXh0TmRwSW5kZXgpO1xuK1x0XHRpZiAobiBcdTAwM2UgbmRwb2Zmc2V0KVxuK1x0XHRcdG5kcG9mZnNldCA9IG47XG4rXHRcdGVsc2VcbiBcdFx0XHRicmVhaztcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXG5pbmRleCBmYzBhN2NiMTgxZGYyLi44ZjMyYzJkMjY5MzEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXG5AQCAtNDIwLDYgKzQyMCwxMCBAQCBzdGF0aWMgdm9pZCB0N3h4X2NjbW5pX3JlY3Zfc2tiKHN0cnVjdCB0N3h4X2NjbW5pX2N0cmwgKmNjbW5pX2N0bGIsIHN0cnVjdCBza19idVxuIFxuIFx0c2tiX2NiID0gVDdYWF9TS0JfQ0Ioc2tiKTtcbiBcdG5ldGlmX2lkID0gc2tiX2NiLVx1MDAzZW5ldGlmX2lkeDtcbitcdGlmIChuZXRpZl9pZCBcdTAwM2U9IE5JQ19ERVZfTUFYKSB7XG4rXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuIFx0Y2NtbmkgPSBSRUFEX09OQ0UoY2NtbmlfY3RsYi1cdTAwM2VjY21uaV9pbnN0W25ldGlmX2lkXSk7XG4gXHRpZiAoIWNjbW5pKSB7XG4gXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ2OjEwLjA3NDUxNzU2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDMwNzMyNjM4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpcyAtIEEgUXVpY2sgTG9vayoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiSXMgdGhpcyBmdXp6YWJsZT9cIiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXQncyBldmVuIHdvcnRoIHRoZSB0aW1lLiAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlYWNoYWJpbGl0eSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLCBhbmQgYW55IGludGVyZXN0aW5nIGZvY3VzIHN5bWJvbHMuXG5cblJpZ2h0LCBsZXQncyBzdGFydCB3aXRoIHRoZSBmaWxlcyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZC4gSSBzZWUgYGRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jYCBhbmQgYGRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jYC4gIE9rYXksIFdXQU4gZHJpdmVycy4gR290IGl0LiBOb3csIHdoYXQncyB0aGVpciBjb250ZXh0PyBBcmUgdGhleSBsaWtlbHkgdG8gYmUgdHJpZ2dlcmVkIGVhc2lseSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIG9yIGFtIEkgZ29pbmcgdG8gbmVlZCBzcGVjaWFsaXplZCBoYXJkd2FyZSB0byBhY3R1YWxseSBnZXQgYXQgdGhlbT8gSSBuZWVkIHRvIGtub3cgdGhpcyBBU0FQLlxuXG5OZXh0IHN0ZXA6IHRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgb3IgZmlyZSB1cCBgZ3JlcHBlcmAuIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IHdpdGggYGdyZXBwZXJgLCBhcyBpdCdzIG9mdGVuIGZhc3RlciBmb3IgdGhpcyBpbml0aWFsIGFzc2Vzc21lbnQsIHRvIHNlZSBpZiBJIGNhbiBxdWlja2x5IGlkZW50aWZ5IGFueSByZWxldmFudCBjb25maWd1cmF0aW9ucyBvciBwb3RlbnRpYWwgYnVpbGQgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgaWxsdW1pbmF0ZSB0aGUgcGF0aCB0byByZWFjaGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4OTIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NjoxNC4zODE4NTAzNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTY3MjYyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNSElfV1dBTl9NQklNfE1US19UN1hYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTQwPWNvbmZpZyBNSElfV1dBTl9DVFJMXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNTItXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjUzOmNvbmZpZyBNSElfV1dBTl9NQklNXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTU0LSAgICAgICAgdHJpc3RhdGUgXFxcIk1ISSBXV0FOIE1CSU0gbmV0d29yayBkcml2ZXIgZm9yIFF1YWxjb21tLWJhc2VkIFBDSWUgbW9kZW1zXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTk2PWNvbmZpZyBJT1NNXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTA4LVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMDk6Y29uZmlnIE1US19UN1hYXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTExMC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgUENJZSA1RyBXV0FOIG1vZGVtIFQ3eHggZGV2aWNlXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfTUhJX1dXQU5fQ1RSTCkgKz0gbWhpX3d3YW5fY3RybC5vXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTUhJX1dXQU5fTUJJTSkgKz0gbWhpX3d3YW5fbWJpbS5vXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfUUNPTV9CQU1fRE1VWCkgKz0gcWNvbV9iYW1fZG11eC5vXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19JT1NNKSArPSBpb3NtL1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX01US19UN1hYKSArPSB0N3h4L1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjM6b2JqLSR7Q09ORklHX01US19UN1hYfSA6PSBtdGtfdDd4eC5vXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTQtbXRrX3Q3eHgteTo9XFx0dDd4eF9wY2kubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ2OjE0LjQzMTUyNjQ4OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5MjU0ODczNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGF0IGtlcm5lbCBjb25maWd1cmF0aW9uIGludmVzdGlnYXRpb24sIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlOiBXV0FOIFx1MDAyNiBNQklNKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGBNSElfV1dBTl9NQklNYCBhbmQgYE1US19UN1hYYCB3aXRoaW4gdGhlIFdXQU4gc3Vic3lzdGVtJ3MgS2NvbmZpZyBmaWxlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYC4gSSdsbCB3YW50IHRvIHF1aWNrbHkgcGFyc2UgdGhhdCBmaWxlLCBwYXlpbmcgc3BlY2lmaWMgYXR0ZW50aW9uIHRvIGhvdyB0aGVzZSB0d28gb3B0aW9ucyDigJMgYE1ISV9XV0FOX01CSU1gIGFuZCBgTVRLX1Q3WFhgIGFyZSBkZWZpbmVkIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgKndoYXQqIHRoZXkgZGVwZW5kIG9uLiBBcmUgdGhleSBtdXR1YWxseSBleGNsdXNpdmU/IERvZXMgb25lICpyZXF1aXJlKiB0aGUgb3RoZXI/IEFyZSB0aGVyZSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBicm91Z2h0IGludG8gdGhlIHBpY3R1cmUgYmFzZWQgb24gZWl0aGVyIG9mIHRoZXNlIGJlaW5nIHNldD8gVW5kZXJzdGFuZGluZyB0aGVpciBkZXBlbmRlbmNpZXMgaXMgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHRoZXkgcGxheSB0b2dldGhlciBpbiB0aGUgYnJvYWRlciBXV0FOIGVjb3N5c3RlbSBhbmQgaG93IEkgbWlnaHQgbmVlZCB0byBhZGp1c3QgdGhpbmdzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGFueSBwbGF0Zm9ybSBvciBidXMtc3BlY2lmaWMgY29uc3RyYWludHMgcmV2ZWFsZWQgaW4gdGhlIEtjb25maWcgZmlsZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGJhc2Ugb2Yga25vd2xlZGdlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgTUJJTSBwcm90b2NvbCBpcyBtYW5hZ2VkIHdoZW4gdXNpbmcgdGhlIE1USyBUN1hYIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzY1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6MjEuMzU3MDE2Mjg2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0MDpcXHRjb25maWcgTUhJX1dXQU5fQ1RSTFxcbiAgNDE6XFx0XFx0dHJpc3RhdGUgXFxcIk1ISSBXV0FOIGNvbnRyb2wgZHJpdmVyIGZvciBRdWFsY29tbS1iYXNlZCBQQ0llIG1vZGVtc1xcXCJcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gTUhJX0JVU1xcbiAgNDM6XFx0XFx0aGVscFxcbiAgNDQ6XFx0XFx0ICBNSEkgV1dBTiBDVFJMIGFsbG93cyBRQ09NLWJhc2VkIFBDSWUgbW9kZW1zIHRvIGV4cG9zZSBkaWZmZXJlbnQgbW9kZW1cXG4gIDQ1OlxcdFxcdCAgY29udHJvbCBwcm90b2NvbHMvcG9ydHMgdG8gdXNlcnNwYWNlLCBpbmNsdWRpbmcgQVQsIE1CSU0sIFFNSSwgRElBR1xcbiAgNDY6XFx0XFx0ICBhbmQgRklSRUhPU0UuIFRoZXNlIHByb3RvY29scyBjYW4gYmUgYWNjZXNzZWQgZGlyZWN0bHkgZnJvbSB1c2Vyc3BhY2VcXG4gIDQ3OlxcdFxcdCAgKGUuZy4gQVQgY29tbWFuZHMpIG9yIHZpYSBsaWJyYXJpZXMvdG9vbHMgKGUuZy4gbGlibWJpbSwgbGlicW1pLFxcbiAgNDg6XFx0XFx0ICBsaWJxY2RtLi4uKS5cXG4gIDQ5OlxcdFxcbiAgNTA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG4gIDUxOlxcdFxcdCAgY2FsbGVkIG1oaV93d2FuX2N0cmwuXFxuICA1MjpcXHRcXG4gIDUzOlxcdGNvbmZpZyBNSElfV1dBTl9NQklNXFxuICA1NDpcXHQgICAgICAgIHRyaXN0YXRlIFxcXCJNSEkgV1dBTiBNQklNIG5ldHdvcmsgZHJpdmVyIGZvciBRdWFsY29tbS1iYXNlZCBQQ0llIG1vZGVtc1xcXCJcXG4gIDU1OlxcdCAgICAgICAgZGVwZW5kcyBvbiBNSElfQlVTXFxuICA1NjpcXHQgICAgICAgIGhlbHBcXG4gIDU3OlxcdCAgICAgICAgICBNSEkgV1dBTiBNQklNIGlzIGEgV1dBTiBuZXR3b3JrIGRyaXZlciBmb3IgUUNPTS1iYXNlZCBQQ0llIG1vZGVtcy5cXG4gIDU4OlxcdCAgICAgICAgICBJdCBpbXBsZW1lbnRzIE1CSU0gb3ZlciBNSEksIGZvciBJUCBkYXRhIGFnZ3JlZ2F0aW9uIGFuZCBtdXhpbmcuXFxuICA1OTpcXHQgICAgICAgICAgQSBkZWZhdWx0IHd3YW4wIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGNyZWF0ZWQgZm9yIE1CSU0gZGF0YSBzZXNzaW9uXFxuICA2MDpcXHQgICAgICAgICAgSUQgMC4gQWRkaXRpb25hbCBsaW5rcyBjYW4gYmUgY3JlYXRlZCB2aWEgd3dhbiBydG5ldGxpbmsgdHlwZS5cXG4gIDYxOlxcdFxcbiAgNjI6XFx0ICAgICAgICAgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxcbiAgNjM6XFx0ICAgICAgICAgIGNhbGxlZCBtaGlfd3dhbl9tYmltLlxcbiAgNjQ6XFx0XFxuICA2NTpcXHRjb25maWcgUUNPTV9CQU1fRE1VWFxcbiAgNjY6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEJBTS1ETVVYIFdXQU4gbmV0d29yayBkcml2ZXJcXFwiXFxuICA2NzpcXHRcXHRkZXBlbmRzIG9uIChETUFfRU5HSU5FIFxcdTAwMjZcXHUwMDI2IFBNIFxcdTAwMjZcXHUwMDI2IFFDT01fU01FTV9TVEFURSkgfHwgQ09NUElMRV9URVNUXFxuICA2ODpcXHRcXHRoZWxwXFxuICA2OTpcXHRcXHQgIFRoZSBCQU0gRGF0YSBNdWx0aXBsZXhlciBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIG5ldHdvcmsgZGF0YSBjaGFubmVsc1xcbiAgNzA6XFx0XFx0ICBvZiBtb2RlbXMgaW50ZWdyYXRlZCBpbnRvIG1hbnkgb2xkZXIgUXVhbGNvbW0gU29DcywgZS5nLiBRdWFsY29tbVxcbiAgNzE6XFx0XFx0ICBNU004OTE2IG9yIE1TTTg5NzQuIFRoZSBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCB2aWEgUU1JL0FUIGZyb21cXG4gIDcyOlxcdFxcdCAgdXNlcnNwYWNlIHdpdGggY29udHJvbCBwb3J0cyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgV1dBTiBzdWJzeXN0ZW1cXG4gIDczOlxcdFxcdCAgKENPTkZJR19SUE1TR19XV0FOX0NUUkwpIG9yIFFSVFIgbmV0d29yayBzb2NrZXRzIChDT05GSUdfUVJUUikuXFxuICA3NDpcXHRcXG4gIDc1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuICA3NjpcXHRcXHQgIGNhbGxlZCBxY29tX2JhbV9kbXV4LlxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgUlBNU0dfV1dBTl9DVFJMXFxuICA3OTpcXHRcXHR0cmlzdGF0ZSBcXFwiUlBNU0cgV1dBTiBjb250cm9sIGRyaXZlclxcXCJcXG4gIDgwOlxcdFxcdGRlcGVuZHMgb24gUlBNU0dcXG4gIDgxOlxcdFxcdGhlbHBcXG4gIDgyOlxcdFxcdCAgUlBNU0cgV1dBTiBDVFJMIGFsbG93cyBtb2RlbXMgYXZhaWxhYmxlIHZpYSBSUE1TRyBjaGFubmVscyB0byBleHBvc2VcXG4gIDgzOlxcdFxcdCAgZGlmZmVyZW50IG1vZGVtIHByb3RvY29scy9wb3J0cyB0byB1c2Vyc3BhY2UsIGluY2x1ZGluZyBBVCBhbmQgUU1JLlxcbiAgODQ6XFx0XFx0ICBUaGVzZSBwcm90b2NvbHMgY2FuIGJlIGFjY2Vzc2VkIGRpcmVjdGx5IGZyb20gdXNlcnNwYWNlXFxuICA4NTpcXHRcXHQgIChlLmcuIEFUIGNvbW1hbmRzKSBvciB2aWEgbGlicmFyaWVzL3Rvb2xzIChlLmcuIGxpYnFtaSwgbGlicWNkbS4uLikuXFxuICA4NjpcXHRcXG4gIDg3OlxcdFxcdCAgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3IgbW9kZW1zIGludGVncmF0ZWQgaW50byBtYW55IFF1YWxjb21tIFNvQ3MsXFxuICA4ODpcXHRcXHQgIGUuZy4gZm9yIEFUIGFuZCBRTUkgb24gUXVhbGNvbW0gTVNNODkxNiBvciBNU004OTc0LiBOb3RlIHRoYXQgbWFueVxcbiAgODk6XFx0XFx0ICBuZXdlciBRdWFsY29tbSBTb0NzIChlLmcuIFNETTg0NSkgc3RpbGwgcHJvdmlkZSBhbiBBVCBwb3J0IHRocm91Z2hcXG4gIDkwOlxcdFxcdCAgdGhpcyBkcml2ZXIgYnV0IHRoZSBRTUkgbWVzc2FnZXMgY2FuIG9ubHkgYmUgc2VudCB0aHJvdWdoXFxuICA5MTpcXHRcXHQgIFFSVFIgbmV0d29yayBzb2NrZXRzIChDT05GSUdfUVJUUikuXFxuICA5MjpcXHRcXG4gIDkzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuICA5NDpcXHRcXHQgIGNhbGxlZCBycG1zZ193d2FuX2N0cmwuXFxuICA5NTpcXHRcXG4gIDk2OlxcdGNvbmZpZyBJT1NNXFxuICA5NzpcXHRcXHR0cmlzdGF0ZSBcXFwiSU9TTSBEcml2ZXIgZm9yIEludGVsIE0uMiBXV0FOIERldmljZVxcXCJcXG4gIDk4OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA5OTpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gMTAwOlxcdFxcdHNlbGVjdCBSRUxBWSBpZiBXV0FOX0RFQlVHRlNcXG4gMTAxOlxcdFxcdGhlbHBcXG4gMTAyOlxcdFxcdCAgVGhpcyBkcml2ZXIgZW5hYmxlcyBJbnRlbCBNLjIgV1dBTiBEZXZpY2UgY29tbXVuaWNhdGlvbi5cXG4gMTAzOlxcdFxcbiAxMDQ6XFx0XFx0ICBJZiB5b3UgaGF2ZSBvbmUgb2YgdGhvc2UgSW50ZWwgTS4yIFdXQU4gTW9kdWxlcyBhbmQgd2lzaCB0byB1c2UgaXQgaW5cXG4gMTA1OlxcdFxcdCAgTGludXggc2F5IFkvTSBoZXJlLlxcbiAxMDY6XFx0XFxuIDEwNzpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDEwODpcXHRcXG4gMTA5OlxcdGNvbmZpZyBNVEtfVDdYWFxcbiAxMTA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRldmljZVxcXCJcXG4gMTExOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDExMjpcXHRcXHRzZWxlY3QgUkVMQVkgaWYgV1dBTl9ERUJVR0ZTXFxuIDExMzpcXHRcXHRoZWxwXFxuIDExNDpcXHRcXHQgIEVuYWJsZXMgTWVkaWFUZWsgUENJZSBiYXNlZCA1RyBXV0FOIG1vZGVtIChUN3h4IHNlcmllcykgZGV2aWNlLlxcbiAxMTU6XFx0XFx0ICBBZGFwdHMgV1dBTiBmcmFtZXdvcmsgYW5kIHByb3ZpZGVzIG5ldHdvcmsgaW50ZXJmYWNlIGxpa2Ugd3dhbjBcXG4gMTE2OlxcdFxcdCAgYW5kIHR0eSBpbnRlcmZhY2VzIGxpa2Ugd3dhbjBhdDAgKEFUIHByb3RvY29sKSwgd3dhbjBtYmltMFxcbiAxMTc6XFx0XFx0ICAoTUJJTSBwcm90b2NvbCksIGV0Yy5cXG4gMTE4OlxcdFxcbiAxMTk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6MjEuMzU3MTQ3NzM2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI2MzM4NDAwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRHJpdmVyIFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBzaXR1YXRpb24uIFdlJ3ZlIGdvdCB0d28gZHJpdmVycyB0byBjb25zaWRlciBpbiB0ZXJtcyBvZiByZWFjaGFiaWxpdHk6IGBNSElfV1dBTl9NQklNYC4gSSBrbm93IGBNSElgIHN0YW5kcyBmb3IgTW9kZW0gSG9zdCBJbnRlcmZhY2UsIGFuZCBpdCdzIHVzZWQgZm9yIFF1YWxjb21tIFBDSWUgbW9kZW1zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSBkb2VzIHRoaXMgYWN0dWFsbHkgbGl2ZT9cIiBJcyBgTUhJX1dXQU5fTUJJTWAgZGlyZWN0bHkgdGllZCB0byBwaHlzaWNhbCBoYXJkd2FyZSB0aHJvdWdoIHRoZSBgTUhJYCBidXMsIG9yIGFyZSB0aGVyZSB2aXJ0dWFsIGNvbnN0cnVjdHMgYXQgcGxheT8gUGVyaGFwcyBhbiBlbXVsYXRlZCBNSEkgYnVzIG9yIGV2ZW4gc29tZSBNSEkgRVAgZW11bGF0aW9uIGdvaW5nIG9uPyBUaGF0J3Mgd2hhdCBJIG5lZWQgdG8gcGlucG9pbnQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgaG93IHRvIGFjY2VzcyBpdHMgZnVuY3Rpb25hbGl0eS4gU28sIHRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSBleGFjdGx5IGhvdyB0aGUgTUhJIGJ1cyBhbmQgaXRzIGFzc29jaWF0ZWQgZGV2aWNlcyBhcmUgY3JlYXRlZCBpbiB0aGUgc3lzdGVtLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGlmIHRoZXJlIGlzIGEgJ3JlYWNoJy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ3NCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6MjMuNjIwNTM0NDI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNjAzOTE2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaGlfZHJpdmVyX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RlYnVnZnMuYz0yOTg9aW50IHFhaWNfYm9vdGxvZ19yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RlYnVnZnMuYy0yOTkte1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RlYnVnZnMuYzozMDA6XFx0cmV0dXJuIG1oaV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNnFhaWNfYm9vdGxvZ19taGlfZHJpdmVyKTtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kZWJ1Z2ZzLmMtMzAxLX1cXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jPTc3Nj1zdGF0aWMgaW50IF9faW5pdCBxYWljX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTc4NS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYzo3ODY6XFx0cmV0ID0gbWhpX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2cWFpY19taGlfZHJpdmVyKTtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy03ODctXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jOjc4ODpcXHRcXHRwcl9kZWJ1ZyhcXFwicWFpYzogbWhpX2RyaXZlcl9yZWdpc3RlciBmYWlsZWQgJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNzg5LVxcdFxcdGdvdG8gZnJlZV9wY2k7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19yYXMuYz02MzM9aW50IHFhaWNfcmFzX3JlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfcmFzLmMtNjM0LXtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19yYXMuYzo2MzU6XFx0cmV0dXJuIG1oaV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNnFhaWNfcmFzX21oaV9kcml2ZXIpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3Jhcy5jLTYzNi19XFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19zc3IuYz04MDc9aW50IHFhaWNfc3NyX3JlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfc3NyLmMtODA4LXtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19zc3IuYzo4MDk6XFx0cmV0dXJuIG1oaV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNnFhaWNfc3NyX21oaV9kcml2ZXIpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3Nzci5jLTgxMC19XFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY190aW1lc3luYy5jPTM4OD1pbnQgcWFpY190aW1lc3luY19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY190aW1lc3luYy5jLTM5MS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY190aW1lc3luYy5jOjM5MjpcXHRyZXQgPSBtaGlfZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZxYWljX3RpbWVzeW5jX2RyaXZlcik7XFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfdGltZXN5bmMuYy0zOTMtXFx0aWYgKHJldClcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY190aW1lc3luYy5jLTM5NC1cXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3RpbWVzeW5jLmM6Mzk1OlxcdHJldCA9IG1oaV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNnFhaWNfYm9vdF90aW1lc3luY19kcml2ZXIpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3RpbWVzeW5jLmMtMzk2LVxcbi0tXFxuZHJpdmVycy9hY2NlbC9xYWljL3NhaGFyYS5jPTkyNj1pbnQgc2FoYXJhX3JlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9hY2NlbC9xYWljL3NhaGFyYS5jLTkyNy17XFxuZHJpdmVycy9hY2NlbC9xYWljL3NhaGFyYS5jOjkyODpcXHRyZXR1cm4gbWhpX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2c2FoYXJhX21oaV9kcml2ZXIpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9zYWhhcmEuYy05MjktfVxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTEzMzM9c3RhdGljIHZvaWQgbWhpX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTQwMC1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmM6MTQwMTppbnQgX19taGlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBtaGlfZHJpdmVyICptaGlfZHJ2LCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTQwMi17XFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTQxMi19XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjE0MTM6RVhQT1JUX1NZTUJPTF9HUEwoX19taGlfZHJpdmVyX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTQxNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6MjQuNDU2NTc4MzA1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAzMjExODk3MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNSEkgV1dBTiBhbmQgVDdYWCBOZXR3b3JrIERldmljZSBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG1oaV93d2FuX21iaW0uY2AgYW5kIGB0N3h4X25ldGRldi5jYCDigJMgdGhhdCdzIHdoZXJlIHRoZSBhY3Rpb24gaXMsIGl0IGxvb2tzIGxpa2UuIE15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyB0byB0cmFjZSB0aGUgcmVnaXN0cmF0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBvZiB0aGF0IGBtaGlfd3dhbl9tYmltYCBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGJyb3VnaHQgb25saW5lLiBIb3cgaXMgdGhlIE1ISSBpbnRlcmZhY2UgaG9va2VkIGludG8gdGhlIE1CSU0gZnJhbWV3b3JrPyBBbmQgaG93IGRvZXMgdGhhdCBpbnRlcmFjdGlvbiB3aXRoIHRoZSB0N3h4IGhhcmR3YXJlIGFjdHVhbGx5IHRyYW5zbGF0ZSBpbnRvIGEgd29ya2luZyBuZXR3b3JrIGRldmljZT8gVGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGlzIGtleSDigJMgdGhhdCdzIHdoZXJlIHRoZSBkcml2ZXIgc2V0cyB1cCB0aGUgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0ZXMgcmVzb3VyY2VzLCBhbmQgcHJlcGFyZXMgZm9yIGNvbW11bmljYXRpb24uIEdvdHRhIHVuZGVyc3RhbmQgdGhhdCBpbml0aWFsIGhhbmRzaGFrZSB0byB0cnVseSBnZXQgdGhlIHdob2xlIHBpY3R1cmUuIEknbSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhvc2UgZmlsZXMgYW5kIGZpZ3VyZSBvdXQgdGhhdCByZWdpc3RyYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MTAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0Njo0NC43Nzc3NzAzNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1ODA4NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWhpX21iaW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDUtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDY6c3RydWN0IG1oaV9tYmltX2xpbmsge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ3OlxcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ4LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjU6c3RydWN0IG1oaV9tYmltX2NvbnRleHQge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2LVxcdHN0cnVjdCBtaGlfZGV2aWNlICptZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM9Nzg9c3RydWN0IG1iaW1fdHhfaGRyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTgzLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjg0OnN0YXRpYyBzdHJ1Y3QgbWhpX21iaW1fbGluayAqbWhpX21iaW1fZ2V0X2xpbmtfcmN1KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTg1LVxcdFxcdFxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBzZXNzaW9uKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTg2LXtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo4NzpcXHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluaztcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy04OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTk2LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjk3OnN0YXRpYyBpbnQgbWhpX21iaW1fZ2V0X2xpbmtfbXV4X2lkKHN0cnVjdCBtaGlfY29udHJvbGxlciAqY250cmwpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM9MTA3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWJpbV90eF9maXh1cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgc2Vzc2lvbixcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE1MC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoxNTE6c3RhdGljIG5ldGRldl90eF90IG1oaV9tYmltX25kb194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE1Mi17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MTUzOlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoxNTQ6XFx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBsaW5rLVxcdTAwM2VtYmltO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE1NS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTkyLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE5MzpzdGF0aWMgaW50IG1iaW1fcnhfdmVyaWZ5X250aDE2KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE5NC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYz0yMzE9c3RhdGljIGludCBtYmltX3J4X3ZlcmlmeV9uZHAxNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgKm5kcDE2KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMjUzLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjI1NDpzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeF9kcm9wKHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTI1NS17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNjEtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MjYyOnN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTI2My17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNzYtXFx0XFx0c3RydWN0IHVzYl9jZGNfbmNtX2RwZTE2IGRwZTE2O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjI3NzpcXHRcXHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluaztcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNzgtXFx0XFx0aW50IG5mcmFtZXMsIG4sIGRwZW9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTMwNC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzozMDU6XFx0XFx0bGluayA9IG1oaV9tYmltX2dldF9saW5rX3JjdShtYmltLCBzZXNzaW9uKTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zMDYtXFx0XFx0aWYgKCFsaW5rKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zMzEtXFx0XFx0XFx0aWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXFx1MDAzZWRhdGEsIGRncmFtX2xlbikpIHtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzozMzI6XFx0XFx0XFx0XFx0bWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zMzMtXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zNDUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGxpbmstXFx1MDAzZW5kZXYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjM0NjpcXHRcXHRcXHRcXHRtaGlfbWJpbV9yeF9kcm9wKGxpbmssIHNrYm4pO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM0Ny1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM3Ni1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzozNzc6c3RhdGljIHN0cnVjdCBza19idWZmICptaGlfbmV0X3NrYl9hZ2coc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMzc4LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM9NDAzPXN0YXRpYyB2b2lkIG1oaV9uZXRfcnhfcmVmaWxsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQwNC17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDA1OlxcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQwNi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIHJ4X3JlZmlsbC53b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQzMy1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0MzQ6c3RhdGljIHZvaWQgbWhpX21iaW1fZGxfY2FsbGJhY2soc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDM1LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbWhpX3Jlc3VsdCAqbWhpX3JlcylcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MzYte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQzNzpcXHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWhpX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MzgtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IG1oaV9yZXMtXFx1MDAzZWJ1Zl9hZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDY2LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ2NzpcXHRcXHRtaGlfbWJpbV9yeChtYmltLCBza2IpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ2OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NzQtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDc1OnN0YXRpYyB2b2lkIG1oaV9tYmltX25kb19nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NzYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnN0YXRzKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ3Ny17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDc4OlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NzktXFx0dW5zaWduZWQgaW50IHN0YXJ0O1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDk2LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ5NzpzdGF0aWMgdm9pZCBtaGlfbWJpbV91bF9jYWxsYmFjayhzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2RldixcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00OTgtXFx0XFx0XFx0XFx0IHN0cnVjdCBtaGlfcmVzdWx0ICptaGlfcmVzKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ5OS17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTAwOlxcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtaGlfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUwMS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gbWhpX3Jlcy1cXHUwMDNlYnVmX2FkZHI7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTAyLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gc2tiLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTAzOlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MDQtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MjgtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTI5OnN0YXRpYyBpbnQgbWhpX21iaW1fbmRvX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTMwLXtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1MzE6XFx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU0My1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NDQ6c3RhdGljIGludCBtaGlfbWJpbV9uZG9fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1MjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1oaV9tYmltX25kbyA9IHtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NTM6XFx0Lm5kb19vcGVuID0gbWhpX21iaW1fbmRvX29wZW4sXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU0OlxcdC5uZG9fc3RvcCA9IG1oaV9tYmltX25kb19zdG9wLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1NTpcXHQubmRvX3N0YXJ0X3htaXQgPSBtaGlfbWJpbV9uZG9feG1pdCxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NTY6XFx0Lm5kb19nZXRfc3RhdHM2NCA9IG1oaV9tYmltX25kb19nZXRfc3RhdHM2NCxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NTctfTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NTgtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU5OnN0YXRpYyBpbnQgbWhpX21iaW1fbmV3bGluayh2b2lkICpjdHh0LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGlmX2lkLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2MC1cXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2MS17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTYyOlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NjM6XFx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBjdHh0O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2NC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NjUtXFx0bGluay1cXHUwMDNlbWJpbSA9IG1iaW07XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTY2OlxcdGxpbmstXFx1MDAzZXNlc3Npb24gPSBtaGlfbWJpbV9nZXRfbGlua19tdXhfaWQobGluay1cXHUwMDNlbWJpbS1cXHUwMDNlbWRldi1cXHUwMDNlbWhpX2NudHJsKSArIGlmX2lkO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2Ny1cXHRsaW5rLVxcdTAwM2VuZGV2ID0gbmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU3MS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTcyOlxcdGlmIChtaGlfbWJpbV9nZXRfbGlua19yY3UobWJpbSwgaWZfaWQpKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTczLVxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTgzLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU4NDpzdGF0aWMgdm9pZCBtaGlfbWJpbV9kZWxsaW5rKHZvaWQgKmN0eHQsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU4NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTg2LXtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1ODc6XFx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU5NC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1OTU6c3RhdGljIHZvaWQgbWhpX21iaW1fc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYwMi1cXHRuZGV2LVxcdTAwM2VmbGFncyA9IElGRl9QT0lOVE9QT0lOVCB8IElGRl9OT0FSUDtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MDM6XFx0bmRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZtaGlfbWJpbV9uZG87XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjA0LVxcdG5kZXYtXFx1MDAzZW10dSA9IE1ISV9NQklNX0RFRkFVTFRfTVRVO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjEwLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxMTpzdGF0aWMgY29uc3Qgc3RydWN0IHd3YW5fb3BzIG1oaV9tYmltX3d3YW5fb3BzID0ge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxMjpcXHQucHJpdl9zaXplID0gc2l6ZW9mKHN0cnVjdCBtaGlfbWJpbV9saW5rKSxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTM6XFx0LnNldHVwID0gbWhpX21iaW1fc2V0dXAsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjE0OlxcdC5uZXdsaW5rID0gbWhpX21iaW1fbmV3bGluayxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTU6XFx0LmRlbGxpbmsgPSBtaGlfbWJpbV9kZWxsaW5rLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxNi19O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxNy1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTg6c3RhdGljIGludCBtaGlfbWJpbV9wcm9iZShzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2RldiwgY29uc3Qgc3RydWN0IG1oaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxOS17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjIwLVxcdHN0cnVjdCBtaGlfY29udHJvbGxlciAqY250cmwgPSBtaGlfZGV2LVxcdTAwM2VtaGlfY250cmw7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjIxOlxcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYyMi1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQzLVxcdC8qIFJlZ2lzdGVyIHd3YW4gbGluayBvcHMgd2l0aCBNSEkgY29udHJvbGxlciByZXByZXNlbnRpbmcgV1dBTiBpbnN0YW5jZSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY0NDpcXHRyZXR1cm4gd3dhbl9yZWdpc3Rlcl9vcHMoXFx1MDAyNmNudHJsLVxcdTAwM2VtaGlfZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZtaGlfbWJpbV93d2FuX29wcywgbWJpbSwgMCk7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQ1LX1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NDYtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjQ3OnN0YXRpYyB2b2lkIG1oaV9tYmltX3JlbW92ZShzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2RldilcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NDgte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY0OTpcXHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWhpX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NTAtXFx0c3RydWN0IG1oaV9jb250cm9sbGVyICpjbnRybCA9IG1oaV9kZXYtXFx1MDAzZW1oaV9jbnRybDtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY1OC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NTk6c3RhdGljIGNvbnN0IHN0cnVjdCBtaGlfZGV2aWNlX2lkIG1oaV9tYmltX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjYwLVxcdC8qIEhhcmR3YXJlIGFjY2VsZXJhdGVkIGRhdGEgUEFUSCAodG8gbW9kZW0gSVBBKSwgTUJJTSBwcm90b2NvbCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjYzLX07XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjY0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUobWhpLCBtaGlfbWJpbV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjY1LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2NjpzdGF0aWMgc3RydWN0IG1oaV9kcml2ZXIgbWhpX21iaW1fZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2NzpcXHQucHJvYmUgPSBtaGlfbWJpbV9wcm9iZSxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njg6XFx0LnJlbW92ZSA9IG1oaV9tYmltX3JlbW92ZSxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njk6XFx0LmRsX3hmZXJfY2IgPSBtaGlfbWJpbV9kbF9jYWxsYmFjayxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NzA6XFx0LnVsX3hmZXJfY2IgPSBtaGlfbWJpbV91bF9jYWxsYmFjayxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NzE6XFx0LmlkX3RhYmxlID0gbWhpX21iaW1faWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjcyLVxcdC5kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NzYtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6Njc3Om1vZHVsZV9taGlfZHJpdmVyKG1oaV9tYmltX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjc4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0Njo0NC44MjczNTY4NzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjkwMDU1NTYxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQsIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpdmluZyBEZWVwZXI6IEV4cGxvcmluZyBgdDd4eF9uZXRkZXYuY2AgYW5kIGBtdGtfdDd4eGAqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBuZXR3b3JrIGRldmljZSBkcml2ZXJzIGhlcmUsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIFQ3eHggYXJjaGl0ZWN0dXJlLCB3aGljaCwgZnJvbSB3aGF0IEkga25vdywgaXMgbGlrZWx5IGEgTWVkaWFUZWsgcGxhdGZvcm0uIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIHBhcnRpY3VsYXIgbmV0d29yayBkZXZpY2UgaXMgaGFuZGxlZCBpbiB0aGUga2VybmVsLiBMZXQncyBkaWcgaW50byBgdDd4eF9uZXRkZXYuY2Ag4oCTIHRoYXQgZmlsZSBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgZHJpdmVyIGNvZGUgcmVzaWRlcyBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4gSSBzdXNwZWN0IGl0J2xsIGNvbnRhaW4gdGhpbmdzIGxpa2UgaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGludGVycnVwdCBoYW5kbGVycywgYW5kIGFsbCB0aGUgbG93LWxldmVsIGxvZ2ljIHRvIGludGVyZmFjZSB3aXRoIHRoZSBoYXJkd2FyZS5cblxuVGhlbiwgdGhlcmUncyBgbXRrX3Q3eHhgLCB3aGljaCBJJ20gYmV0dGluZyBpcyBhIGJyb2FkZXIgbW9kdWxlIG9yIHBlcmhhcHMgYSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciAoSEFMKSB0YWlsb3JlZCB0byBNZWRpYVRlaydzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBUN3h4IGNoaXBzZXQuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0ZGV2IGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGF0IEhBTC4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGxheWVycyBvZiBhYnN0cmFjdGlvbiBoZXJlIHRvIHJlYWxseSBncmFzcCB0aGUgZGF0YSBmbG93IGFuZCBob3cgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGFjdHVhbGx5IG1hbmFnZWQuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGNvbW1vbiBwYXR0ZXJucywgYW55IHF1aXJrcyBvciBvcHRpbWl6YXRpb25zIHNwZWNpZmljIHRvIHRoZSBUN3h4IHBsYXRmb3JtLCBhbmQgaG93IHRoZXkgZGV2aWF0ZSBmcm9tLCBvciBhZGhlcmUgdG8sIHRoZSBzdGFuZGFyZCBuZXR3b3JrIGRldmljZSBkcml2ZXIgbW9kZWwuIFRoaXMgd2lsbCBwcm92aWRlIGEgY3J1Y2lhbCBpbnNpZ2h0IGludG8gZGVzaWduIGNob2ljZXMgYW5kIGFueSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIEl0J3MgYSBrZXkgcGFydCBvZiB0aGUgcHV6emxlIGZvciB1bmRlcnN0YW5kaW5nIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1MDIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0Njo0Ny43Mjc5MTUwMDRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTc2MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInQ3eHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi90N3h4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTUyMCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjM6b2JqLSR7Q09ORklHX01US19UN1hYfSA6PSBtdGtfdDd4eC5vXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjQ6bXRrX3Q3eHgteTo9XFx0dDd4eF9wY2kubyBcXFxcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjU6XFx0XFx0dDd4eF9wY2llX21hYy5vIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6NjpcXHRcXHR0N3h4X21oY2NpZi5vIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6NzpcXHRcXHR0N3h4X3N0YXRlX21vbml0b3IubyAgXFxcXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZTo4OlxcdFxcdHQ3eHhfbW9kZW1fb3BzLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZTo5OlxcdFxcdHQ3eHhfY2xkbWEubyBcXFxcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjEwOlxcdFxcdHQ3eHhfaGlmX2NsZG1hLm8gIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTE6XFx0XFx0dDd4eF9wb3J0X3Byb3h5Lm8gIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTI6XFx0XFx0dDd4eF9wb3J0X2N0cmxfbXNnLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZToxMzpcXHRcXHR0N3h4X3BvcnRfd3dhbi5vIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTQ6XFx0XFx0dDd4eF9oaWZfZHBtYWlmLm8gIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTU6XFx0XFx0dDd4eF9oaWZfZHBtYWlmX3R4Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZToxNjpcXHRcXHR0N3h4X2hpZl9kcG1haWZfcngubyAgXFxcXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZToxNzpcXHRcXHR0N3h4X2RwbWFpZi5vIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTg6XFx0XFx0dDd4eF9uZXRkZXYub1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZS0xOS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MjA6bXRrX3Q3eHgtJChDT05GSUdfV1dBTl9ERUJVR0ZTKSArPSBcXFxcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjIxOlxcdFxcdHQ3eHhfcG9ydF90cmFjZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoyNDojaW5jbHVkZSBcXFwidDd4eF9jbGRtYS5oXFxcIlxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI3LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6Mjg6dm9pZCB0N3h4X2NsZG1hX2NsZWFyX2lwX2J1c3koc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yOS17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTM3LS8qKlxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6Mzg6ICogdDd4eF9jbGRtYV9od19yZXN0b3JlKCkgLSBSZXN0b3JlIENMRE1BIEhXIHJlZ2lzdGVycy5cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjM5OiAqIEBod19pbmZvOiBQb2ludGVyIHRvIHN0cnVjdCB0N3h4X2NsZG1hX2h3LlxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNDAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNDItICovXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzo0Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfcmVzdG9yZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNjItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzo2Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfc3RhcnRfcXVldWUoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy02NC1cXHRcXHRcXHQgICAgICAgZW51bSBtdGtfdHhyeCB0eF9yeClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNzQtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzo3NTp2b2lkIHQ3eHhfY2xkbWFfaHdfc3RhcnQoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy03Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTg0LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6ODU6dm9pZCB0N3h4X2NsZG1hX2h3X3Jlc2V0KHZvaWQgX19pb21lbSAqYW9fYmFzZSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTA0LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MTA1OmJvb2wgdDd4eF9jbGRtYV90eF9hZGRyX2lzX3NldChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTEwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTExMS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjExMjp2b2lkIHQ3eHhfY2xkbWFfaHdfc2V0X3N0YXJ0X2FkZHIoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sIHU2NCBhZGRyZXNzLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTEzLVxcdFxcdFxcdFxcdCAgZW51bSBtdGtfdHhyeCB0eF9yeClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTIyLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MTIzOnZvaWQgdDd4eF9jbGRtYV9od19yZXN1bWVfcXVldWUoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xMjQtXFx0XFx0XFx0XFx0ZW51bSBtdGtfdHhyeCB0eF9yeClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTMzLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MTM0OnVuc2lnbmVkIGludCB0N3h4X2NsZG1hX2h3X3F1ZXVlX3N0YXR1cyhzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTEzNS1cXHRcXHRcXHRcXHRcXHRlbnVtIG10a190eHJ4IHR4X3J4KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xNDctXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxNDg6dm9pZCB0N3h4X2NsZG1hX2h3X3R4X2RvbmUoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBiaXRtYXNrKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTU4LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MTU5OnZvaWQgdDd4eF9jbGRtYV9od19yeF9kb25lKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgYml0bWFzaylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTE2MC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTE2OS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjE3MDp1bnNpZ25lZCBpbnQgdDd4eF9jbGRtYV9od19pbnRfc3RhdHVzKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgYml0bWFzayxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTE3MS1cXHRcXHRcXHRcXHQgICAgICBlbnVtIG10a190eHJ4IHR4X3J4KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xODEtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxODI6dm9pZCB0N3h4X2NsZG1hX2h3X2lycV9kaXNfdHhyeChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTE4My1cXHRcXHRcXHRcXHRlbnVtIG10a190eHJ4IHR4X3J4KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xOTMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxOTQ6dm9pZCB0N3h4X2NsZG1hX2h3X2lycV9kaXNfZXEoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sIGVudW0gbXRrX3R4cnggdHhfcngpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xOTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yMDQtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoyMDU6dm9pZCB0N3h4X2NsZG1hX2h3X2lycV9lbl90eHJ4KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjA2LVxcdFxcdFxcdCAgICAgICBlbnVtIG10a190eHJ4IHR4X3J4KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yMTYtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoyMTc6dm9pZCB0N3h4X2NsZG1hX2h3X2lycV9lbl9lcShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubywgZW51bSBtdGtfdHhyeCB0eF9yeClcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTIxOC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTIyOC0vKipcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjIyOTogKiB0N3h4X2NsZG1hX2h3X2luaXQoKSAtIEluaXRpYWxpemUgQ0xETUEgSFcuXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoyMzA6ICogQGh3X2luZm86IFBvaW50ZXIgdG8gc3RydWN0IHQ3eHhfY2xkbWFfaHcuXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yMzEtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjMzLSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MjM0OnZvaWQgdDd4eF9jbGRtYV9od19pbml0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjYzLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MjY0OnZvaWQgdDd4eF9jbGRtYV9od19zdG9wX2FsbF9xcyhzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgZW51bSBtdGtfdHhyeCB0eF9yeClcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI3Mi1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjI3Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfc3RvcChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgZW51bSBtdGtfdHhyeCB0eF9yeClcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oPTEzND1lbnVtIG10a190eHJ4IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTM4LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTM5OmVudW0gdDd4eF9od19tb2RlIHtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE0MC1cXHRNT0RFX0JJVF8zMixcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTQ1LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTQ2OnN0cnVjdCB0N3h4X2NsZG1hX2h3IHtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE0NzpcXHRlbnVtIHQ3eHhfaHdfbW9kZVxcdFxcdGh3X21vZGU7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNDgtXFx0dm9pZCBfX2lvbWVtXFx0XFx0XFx0KmFwX2FvX2Jhc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE1Mi1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE1Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfaXJxX2Rpc190eHJ4KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTU0LVxcdFxcdFxcdFxcdGVudW0gbXRrX3R4cnggdHhfcngpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTU1OnZvaWQgdDd4eF9jbGRtYV9od19pcnFfZGlzX2VxKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTU2LVxcdFxcdFxcdCAgICAgIGVudW0gbXRrX3R4cnggdHhfcngpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTU3OnZvaWQgdDd4eF9jbGRtYV9od19pcnFfZW5fdHhyeChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE1OC1cXHRcXHRcXHQgICAgICAgZW51bSBtdGtfdHhyeCB0eF9yeCk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNTk6dm9pZCB0N3h4X2NsZG1hX2h3X2lycV9lbl9lcShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubywgZW51bSBtdGtfdHhyeCB0eF9yeCk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNjA6dW5zaWduZWQgaW50IHQ3eHhfY2xkbWFfaHdfcXVldWVfc3RhdHVzKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTYxLVxcdFxcdFxcdFxcdFxcdGVudW0gbXRrX3R4cnggdHhfcngpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTYyOnZvaWQgdDd4eF9jbGRtYV9od19pbml0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE2Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfcmVzdW1lX3F1ZXVlKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTY0LVxcdFxcdFxcdFxcdGVudW0gbXRrX3R4cnggdHhfcngpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTY1OnZvaWQgdDd4eF9jbGRtYV9od19zdGFydChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNjY6dm9pZCB0N3h4X2NsZG1hX2h3X3N0YXJ0X3F1ZXVlKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTY3LVxcdFxcdFxcdCAgICAgICBlbnVtIG10a190eHJ4IHR4X3J4KTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE2ODp2b2lkIHQ3eHhfY2xkbWFfaHdfdHhfZG9uZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IGJpdG1hc2spO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTY5OnZvaWQgdDd4eF9jbGRtYV9od19yeF9kb25lKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgYml0bWFzayk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNzA6dm9pZCB0N3h4X2NsZG1hX2h3X3N0b3BfYWxsX3FzKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCBlbnVtIG10a190eHJ4IHR4X3J4KTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE3MTp2b2lkIHQ3eHhfY2xkbWFfaHdfc2V0X3N0YXJ0X2FkZHIoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNzItXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgcW5vLCB1NjQgYWRkcmVzcywgZW51bSBtdGtfdHhyeCB0eF9yeCk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNzM6dm9pZCB0N3h4X2NsZG1hX2h3X3Jlc2V0KHZvaWQgX19pb21lbSAqYW9fYmFzZSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNzQ6dm9pZCB0N3h4X2NsZG1hX2h3X3N0b3Aoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIGVudW0gbXRrX3R4cnggdHhfcngpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc1OnVuc2lnbmVkIGludCB0N3h4X2NsZG1hX2h3X2ludF9zdGF0dXMoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBiaXRtYXNrLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTc2LVxcdFxcdFxcdFxcdCAgICAgIGVudW0gbXRrX3R4cnggdHhfcngpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc3OnZvaWQgdDd4eF9jbGRtYV9od19yZXN0b3JlKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE3ODp2b2lkIHQ3eHhfY2xkbWFfY2xlYXJfaXBfYnVzeShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNzk6Ym9vbCB0N3h4X2NsZG1hX3R4X2FkZHJfaXNfc2V0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE4MC0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI3LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI4OiNpbmNsdWRlIFxcXCJ0N3h4X2RwbWFpZi5oXFxcIlxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI5OiNpbmNsdWRlIFxcXCJ0N3h4X3JlZy5oXFxcIlxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTMwLVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzQ6c3RhdGljIGludCB0N3h4X2RwbWFpZl9pbml0X2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTgxLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX21hc2tfdWxxX2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcV9udW0pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtODMte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTAxLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjEwMjp2b2lkIHQ3eHhfZHBtYWlmX3VubWFza191bHFfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxX251bSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMDMte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTIxLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjEyMjp2b2lkIHQ3eHhfZHBtYWlmX2RsX3VubWFza19iYXRjbnRfbGVuX2Vycl9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTI3LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjEyODp2b2lkIHQ3eHhfZHBtYWlmX2RsX3VubWFza19waXRjbnRfbGVuX2Vycl9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTMzLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjEzNDpzdGF0aWMgdTMyIHQ3eHhfdXBkYXRlX2RscV9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbywgdTMyIHFfZG9uZSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTQyLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE0MzpzdGF0aWMgaW50IHQ3eHhfbWFza19kbHFfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE1MC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoxNTE6XFx0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXRfYXRvbWljKHQ3eHhfdXBkYXRlX2RscV9pbnRyLCB2YWx1ZSwgdmFsdWUgXFx1MDAyNiBxX2RvbmUsXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTUyLVxcdFxcdFxcdFxcdCAgICAgICAwLCBEUE1BSUZfQ0hFQ0tfVElNRU9VVF9VUywgZmFsc2UsIGh3X2luZm8sIHFfZG9uZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xNjMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MTY0OnZvaWQgdDd4eF9kcG1haWZfZGxxX3VubWFza19yeF9kb25lKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTcyLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE3Mzp2b2lkIHQ3eHhfZHBtYWlmX2Nscl9pcF9idXN5X3N0cyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE4MC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoxODE6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxxX21hc2tfcnhfcGl0Y250X2xlbl9lcnJfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTgyLVxcdFxcdFxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBxbm8pXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xOTEtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MTkyOnZvaWQgdDd4eF9kcG1haWZfZGxxX3VubWFza19waXRjbnRfbGVuX2Vycl9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbyxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xOTMtXFx0XFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IHFubylcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIwMi1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyMDM6dm9pZCB0N3h4X2RwbWFpZl91bF9jbHJfYWxsX2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIwNC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMDctXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjA4OnZvaWQgdDd4eF9kcG1haWZfZGxfY2xyX2FsbF9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMDkte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjEyLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjIxMzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHN0cnVjdCBkcG1haWZfaHdfaW50cl9zdF9wYXJhICpwYXJhLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIxNC1cXHRcXHRcXHRcXHQgICAgICBlbnVtIGRwbWFpZl9od19pbnRyX3R5cGUgaW50cl90eXBlLCB1bnNpZ25lZCBpbnQgaW50cl9xdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIyMy0gKi9cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyMjQ6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfY2hlY2tfdHhfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjI1LVxcdFxcdFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgaW50cl9zdGF0dXMsXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMzMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjM0OlxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfVUxfRE9ORSwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIzNS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMzYtXFx0XFx0Zm9yX2VhY2hfc2V0X2JpdChpbmRleCwgXFx1MDAyNnZhbHVlLCBEUE1BSUZfVFhRX05VTSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyMzc6XFx0XFx0XFx0dDd4eF9kcG1haWZfbWFza191bHFfaW50cihod19pbmZvLCBpbmRleCk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjM4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI0MS1cXHRpZiAodmFsdWUpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjQyOlxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfVUxfRFJCX0VNUFRZLCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjQzLVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjQ1LVxcdGlmICh2YWx1ZSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyNDY6XFx0XFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9VTF9NRF9OT1RSRUFEWSwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI0OS1cXHRpZiAodmFsdWUpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjUwOlxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfVUxfTURfUFdSX05PVFJFQURZLCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjUxLVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjUzLVxcdGlmICh2YWx1ZSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyNTQ6XFx0XFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9VTF9MRU5fRVJSLCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjYyLSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI2MzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19jaGVja19yeF9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbyxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNjQtXFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBpbnRyX3N0YXR1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI2OC1cXHRcXHRpZiAoaW50cl9zdGF0dXMgXFx1MDAyNiBEUF9ETF9JTlRfU0tCX0xFTl9FUlIpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjY5OlxcdFxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfU0tCX0xFTl9FUlIsIERQRl9SWF9RTk9fREZUKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNzAtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjcxLVxcdFxcdGlmIChpbnRyX3N0YXR1cyBcXHUwMDI2IERQX0RMX0lOVF9CQVRDTlRfTEVOX0VSUikge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI3MjpcXHRcXHRcXHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX0JBVENOVF9MRU5fRVJSLCBEUEZfUlhfUU5PX0RGVCk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjczLVxcdFxcdFxcdGh3X2luZm8tXFx1MDAzZWlzcl9lbl9tYXNrLmFwX2RsX2wyaW50cl9lbl9tc2sgXFx1MDAyNj0gfkRQX0RMX0lOVF9CQVRDTlRfTEVOX0VSUjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI3OC1cXHRcXHRpZiAoaW50cl9zdGF0dXMgXFx1MDAyNiBEUF9ETF9JTlRfUElUQ05UX0xFTl9FUlIpIHtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyNzk6XFx0XFx0XFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9QSVRDTlRfTEVOX0VSUiwgRFBGX1JYX1FOT19ERlQpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI4MC1cXHRcXHRcXHRod19pbmZvLVxcdTAwM2Vpc3JfZW5fbWFzay5hcF9kbF9sMmludHJfZW5fbXNrIFxcdTAwMjY9IH5EUF9ETF9JTlRfUElUQ05UX0xFTl9FUlI7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yODUtXFx0XFx0aWYgKGludHJfc3RhdHVzIFxcdTAwMjYgRFBfRExfSU5UX1BLVF9FTVBUWV9NU0spXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Mjg2OlxcdFxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfUEtUX0VNUFRZX1NFVCwgRFBGX1JYX1FOT19ERlQpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI4Ny1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yODgtXFx0XFx0aWYgKGludHJfc3RhdHVzIFxcdTAwMjYgRFBfRExfSU5UX0ZSR19FTVBUWV9NU0spXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Mjg5OlxcdFxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfRlJHX0VNUFRZX1NFVCwgRFBGX1JYX1FOT19ERlQpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI5MC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yOTEtXFx0XFx0aWYgKGludHJfc3RhdHVzIFxcdTAwMjYgRFBfRExfSU5UX01UVV9FUlJfTVNLKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI5MjpcXHRcXHRcXHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX01UVV9FUlIsIERQRl9SWF9RTk9fREZUKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yOTMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjk0LVxcdFxcdGlmIChpbnRyX3N0YXR1cyBcXHUwMDI2IERQX0RMX0lOVF9GUkdfTEVOX0VSUl9NU0spXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Mjk1OlxcdFxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfRlJHQ05UX0xFTl9FUlIsIERQRl9SWF9RTk9fREZUKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yOTYtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjk3LVxcdFxcdGlmIChpbnRyX3N0YXR1cyBcXHUwMDI2IERQX0RMX0lOVF9RMF9QSVRDTlRfTEVOX0VSUikge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI5ODpcXHRcXHRcXHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX1EwX1BJVENOVF9MRU5fRVJSLCBCSVQocW5vKSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Mjk5OlxcdFxcdFxcdHQ3eHhfZHBtYWlmX2RscV9tYXNrX3J4X3BpdGNudF9sZW5fZXJyX2ludHIoaHdfaW5mbywgcW5vKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMDAtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzAyLVxcdFxcdGlmIChpbnRyX3N0YXR1cyBcXHUwMDI2IERQX0RMX0lOVF9IUENfRU5UX1RZUEVfRVJSKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMwMzpcXHRcXHRcXHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX0hQQ19FTlRfVFlQRV9FUlIsXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzA0LVxcdFxcdFxcdFxcdFxcdFxcdCAgRFBGX1JYX1FOT19ERlQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzA5LVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMxMDpcXHRcXHRcXHRpZiAoIXQ3eHhfbWFza19kbHFfaW50cihod19pbmZvLCBxbm8pKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMxMTpcXHRcXHRcXHRcXHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX1EwX0RPTkUsIEJJVChxbm8pKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMTItXFx0XFx0XFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzE2LVxcdFxcdGlmIChpbnRyX3N0YXR1cyBcXHUwMDI2IERQX0RMX0lOVF9RMV9QSVRDTlRfTEVOX0VSUikge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMxNzpcXHRcXHRcXHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX1ExX1BJVENOVF9MRU5fRVJSLCBCSVQocW5vKSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzE4OlxcdFxcdFxcdHQ3eHhfZHBtYWlmX2RscV9tYXNrX3J4X3BpdGNudF9sZW5fZXJyX2ludHIoaHdfaW5mbywgcW5vKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMTktXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzIxLVxcdFxcdGlmIChpbnRyX3N0YXR1cyBcXHUwMDI2IERQX0RMX0lOVF9RMV9ET05FKSB7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzIyOlxcdFxcdFxcdGlmICghdDd4eF9tYXNrX2RscV9pbnRyKGh3X2luZm8sIHFubykpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzIzOlxcdFxcdFxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfUTFfRE9ORSwgQklUKHFubykpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTMyNC1cXHRcXHRcXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMzQtLyoqXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzM1OiAqIHQ3eHhfZHBtYWlmX2h3X2dldF9pbnRyX2NudCgpIC0gUmVhZHMgaW50ZXJydXB0IHN0YXR1cyBhbmQgY291bnQgZnJvbSBIVy5cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMzYtICogQGh3X2luZm86IFBvaW50ZXIgdG8gc3RydWN0IGh3X2luZm8uXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zNDMtICovXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzQ0OmludCB0N3h4X2RwbWFpZl9od19nZXRfaW50cl9jbnQoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM0NS1cXHRcXHRcXHRcXHRzdHJ1Y3QgZHBtYWlmX2h3X2ludHJfc3RfcGFyYSAqcGFyYSwgaW50IHFubylcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM2MS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzozNjI6XFx0dDd4eF9kcG1haWZfY2xyX2lwX2J1c3lfc3RzKGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM2My1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM2OS1cXHRcXHRpZiAodHhfaW50cl9zdGF0dXMpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzcwOlxcdFxcdFxcdHQ3eHhfZHBtYWlmX2h3X2NoZWNrX3R4X2ludHIoaHdfaW5mbywgdHhfaW50cl9zdGF0dXMsIHBhcmEpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM3MS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zODctXFx0XFx0aWYgKHJ4X2ludHJfc3RhdHVzKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjM4ODpcXHRcXHRcXHR0N3h4X2RwbWFpZl9od19jaGVja19yeF9pbnRyKGh3X2luZm8sIHJ4X2ludHJfc3RhdHVzLCBwYXJhLCBxbm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM4OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zOTMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Mzk0OnN0YXRpYyBpbnQgdDd4eF9kcG1haWZfc3JhbV9pbml0KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zOTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDA2LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQwNzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19yZXNldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQxOC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0MTk6c3RhdGljIGludCB0N3h4X2RwbWFpZl9od19jb25maWcoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQyMC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00MjMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NDI0OlxcdHQ3eHhfZHBtYWlmX2h3X3Jlc2V0KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQyNS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0MjY6XFx0cmV0ID0gdDd4eF9kcG1haWZfc3JhbV9pbml0KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQyNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDM2LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQzNzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9wY2llX2RwbWFpZl9zaWduKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00Mzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDQxLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQ0MjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9wZXJmb3JtYW5jZShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ1Ni1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0NTc6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfaHBjX2NudGxfc2V0KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00NTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDY2LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQ2NzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19hZ2dfY2ZnX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ3NC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0NzU6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfaGFzaF9iaXRfY2hvb3NlX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ4MC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0ODE6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfbWlkX3BpdF90aW1lb3V0X3RocmVzX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDgyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ4NS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0ODY6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfZGxxX3RpbWVvdXRfdGhyZXNfc2V0KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00ODcte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDk5LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwMDpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19kbHFfc3RhcnRfcHJzX3RocmVzX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTUwNC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1MDU6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfZGxxX2hwY19od19pbml0KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01MDYte1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwNzpcXHR0N3h4X2RwbWFpZl9od19ocGNfY250bF9zZXQoaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NTA4OlxcdHQ3eHhfZHBtYWlmX2h3X2FnZ19jZmdfc2V0KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwOTpcXHR0N3h4X2RwbWFpZl9od19oYXNoX2JpdF9jaG9vc2Vfc2V0KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUxMDpcXHR0N3h4X2RwbWFpZl9od19taWRfcGl0X3RpbWVvdXRfdGhyZXNfc2V0KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUxMTpcXHR0N3h4X2RwbWFpZl9od19kbHFfdGltZW91dF90aHJlc19zZXQoaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NTEyOlxcdHQ3eHhfZHBtYWlmX2h3X2RscV9zdGFydF9wcnNfdGhyZXNfc2V0KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTUxMy19XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTE0LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUxNTpzdGF0aWMgaW50IHQ3eHhfZHBtYWlmX2RsX2JhdF9pbml0X2RvbmUoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCBib29sIGZyZ19lbilcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01MTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTQ0LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU0NTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYmF0X2Jhc2VfYWRkcihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTQ2LVxcdFxcdFxcdFxcdFxcdCAgICAgZG1hX2FkZHJfdCBhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU1MjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYmF0X3NpemUoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCB1bnNpZ25lZCBpbnQgc2l6ZSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTYxLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU2MjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9iYXRfZW4oc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCBib29sIGVuYWJsZSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTc1LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU3NjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmlkX21heGNudChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU4NS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1ODY6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX210dShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU5MC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1OTE6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX3BpdF9jaGtudW0oc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02MDAtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjAxOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19yZW1haW5fbWluc3ooc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYwMi17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02MTEtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjEyOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19iYXRfYnVmc3ooc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYxMy17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02MjItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjIzOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19iYXRfcnN2X2xlbmd0aChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYzMi1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo2MzM6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X3BrdF9hbGlnbm1lbnQoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYzNC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02NDItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjQzOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9wa3RfY2hlY2tzdW0oc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY0NC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02NTEtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjUyOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19mcmdfY2hlY2tfdGhyZXMoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY1My17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02NjEtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjYyOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19mcmdfYnVmc3ooc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY2My17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02NzItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjczOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX2ZyZ19hb19lbihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02ODYtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Njg3OnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19iYXRfY2hlY2tfdGhyZXMoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY4OC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02OTYtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Njk3OnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9waXRfc2VxbnVtKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02OTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzA2LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjcwNzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfZGxxX3BpdF9iYXNlX2FkZHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTcwOC1cXHRcXHRcXHRcXHRcXHRcXHQgZG1hX2FkZHJfdCBhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzEzLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjcxNDpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfZGxxX3BpdF9zaXplKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHNpemUpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTcyNy1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3Mjg6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfZGxxX3BpdF9lbihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTczNi1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3Mzc6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfZGxxX3BpdF9pbml0X2RvbmUoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTczOC1cXHRcXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBwaXRfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzY1LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjc2NjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9jb25maWdfZGxxX3BpdF9odyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxX251bSxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03NjctXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHBtYWlmX2RsICpkbF9xdWUpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzY4LXtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3Njk6XFx0dDd4eF9kcG1haWZfZGxfc2V0X2RscV9waXRfYmFzZV9hZGRyKGh3X2luZm8sIGRsX3F1ZS1cXHUwMDNlcGl0X2Jhc2UpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjc3MDpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfZGxxX3BpdF9zaXplKGh3X2luZm8sIGRsX3F1ZS1cXHUwMDNlcGl0X3NpemVfY250KTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3NzE6XFx0dDd4eF9kcG1haWZfZGxfZGxxX3BpdF9lbihod19pbmZvKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3NzI6XFx0dDd4eF9kcG1haWZfZGxfZGxxX3BpdF9pbml0X2RvbmUoaHdfaW5mbywgcV9udW0pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc3My19XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzc0LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjc3NTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9jb25maWdfYWxsX2RscV9odyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc3OS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRFBNQUlGX1JYUV9OVU07IGkrKylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3ODA6XFx0XFx0dDd4eF9kcG1haWZfY29uZmlnX2RscV9waXRfaHcoaHdfaW5mbywgaSwgXFx1MDAyNmh3X2luZm8tXFx1MDAzZWRsX3F1ZVtpXSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzgxLX1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03ODItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NzgzOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX2FsbF9xX2VuKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbywgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTgxMi1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4MTM6c3RhdGljIGludCB0N3h4X2RwbWFpZl9jb25maWdfZGxxX2h3KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy04MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtODE3LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgxODpcXHR0N3h4X2RwbWFpZl9kbF9kbHFfaHBjX2h3X2luaXQoaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtODE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtODIzLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyNDpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fcmVtYWluX21pbnN6KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyNTpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmF0X2J1ZnN6KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyNjpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fZnJnX2J1ZnN6KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyNzpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmF0X3Jzdl9sZW5ndGgoaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODI4OlxcdHQ3eHhfZHBtYWlmX2RsX3NldF9hb19iaWRfbWF4Y250KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyOTpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfcGt0X2FsaWdubWVudChod19pbmZvKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4MzA6XFx0dDd4eF9kcG1haWZfZGxfc2V0X3BpdF9zZXFudW0oaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODMxOlxcdHQ3eHhfZHBtYWlmX2RsX3NldF9hb19tdHUoaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODMyOlxcdHQ3eHhfZHBtYWlmX2RsX3NldF9hb19waXRfY2hrbnVtKGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgzMzpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmF0X2NoZWNrX3RocmVzKGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgzNDpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fZnJnX2NoZWNrX3RocmVzKGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgzNTpcXHR0N3h4X2RwbWFpZl9kbF9mcmdfYW9fZW4oaHdfaW5mbywgdHJ1ZSk7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ2OjQ3Ljc3NjA5NzgxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NjQxMzU3NjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBDSWUgTW9kZW0gRHJpdmVyIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIG1vZGVtIGRyaXZlciBmaWxlcywgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGluZ3MuIFJpZ2h0LCBzbyBgdDd4eF9wY2kuY2AsIHRoYXQncyB0aGUgTWVkaWFUZWsgTVRLIFBDSWUgNUcgV1dBTiBtb2RlbSBkcml2ZXIsIHRoYXQgbWFrZXMgc2Vuc2UuIEFuZCB0aGVuIHdlJ3ZlIGdvdCBgbWhpX3d3YW5fbWJpbS5jYCwgd2hpY2ggaXMgdGhlIE1ISSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBRdWFsY29tbS1iYXNlZCBQQ0llIG1vZGVtcywgdXNpbmcgdGhlIGBNSElfQlVTYCBpbnRlcmZhY2UuIEhtbSwgYnV0IGhvdyBkb2VzIHRoZSBzeXN0ZW0ga25vdyB3aGljaCBkZXZpY2VzIGFyZSBldmVuICp1c2luZyogTUhJPyBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiB3aXRoaW4gdGhlIE1ISSBidXMgY29kZSBpdHNlbGYuIExvb2tzIGxpa2UgYGRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmNgIGlzIGEgcHJpbWUgZXhhbXBsZS4gT2theSwgbm93IEkgbmVlZCB0byBmaW5kIGFsbCB0aGUgTUhJIGNvbnRyb2xsZXJzIGluIHRoZSBzeXN0ZW0uIExldCdzIHN0YXJ0IHRoZSBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjAzLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ2OjUyLjQxNzQ1ODQ1NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTEzNzMyMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1oaV9yZWdpc3Rlcl9jb250cm9sbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jPTgwMD1zdGF0aWMgaW50IG1oaV9yZXNldF9hbmRfYXN5bmNfcG93ZXJfdXAoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04MjYtXFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM6ODI3OnN0cnVjdCBtaGlfY29udHJvbGxlciAqcWFpY19taGlfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgcGNpX2RldiAqcGNpX2Rldiwgdm9pZCBfX2lvbWVtICptaGlfYmFyLFxcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jLTgyOC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgaW50IG1oaV9pcnEsIGJvb2wgc2hhcmVkX21zaSwgaW50IGZhbWlseSlcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jLTg3NS1cXHRtaGlfY29uZmlnLnRpbWVvdXRfbXMgPSBtaGlfdGltZW91dF9tcztcXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYzo4NzY6XFx0cmV0ID0gbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2NudHJsLCBcXHUwMDI2bWhpX2NvbmZpZyk7XFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmMtODc3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYzo4Nzg6XFx0XFx0cGNpX2VycihwY2lfZGV2LCBcXFwibWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jLTg3OS1cXHRcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmgtOC1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuaDo5OnN0cnVjdCBtaGlfY29udHJvbGxlciAqcWFpY19taGlfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgcGNpX2RldiAqcGNpX2Rldiwgdm9pZCBfX2lvbWVtICptaGlfYmFyLFxcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5oLTEwLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBpbnQgbWhpX2lycSwgYm9vbCBzaGFyZWRfbXNpLCBpbnQgZmFtaWx5KTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jPTU3MD1zdGF0aWMgaW50IHFhaWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy01OTYtXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6NTk3OlxcdHFkZXYtXFx1MDAzZW1oaV9jbnRybCA9IHFhaWNfbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIocGRldiwgcWRldi1cXHUwMDNlYmFyX21oaSwgbWhpX2lycSxcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy01OTgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHFkZXYtXFx1MDAzZXNpbmdsZV9tc2ksIGNvbmZpZy1cXHUwMDNlZmFtaWx5KTtcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYz04ODE9c3RhdGljIGludCBwYXJzZV9jb25maWcoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtOTE4LVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYzo5MTk6aW50IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsLFxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYy05MjAtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBtaGlfY29udHJvbGxlcl9jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYy0xMDU4LX1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmM6MTA1OTpFWFBPUlRfU1lNQk9MX0dQTChtaGlfcmVnaXN0ZXJfY29udHJvbGxlcik7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwNjAtXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jPTEzNjU9c3RhdGljIGludCBtaGlfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE0NDAtXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYzoxNDQxOlxcdGVyciA9IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jbnRybCwgbWhpX2NudHJsX2NvbmZpZyk7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNDQyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21oaS5jPTMzNT1pbnQgYXRoMTFrX21oaV9yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrX3BjaSAqYWJfcGNpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYy00MDktXFx0YWJfcGNpLVxcdTAwM2VtaGlfcHJlX2NiID0gTUhJX0NCX0lOVkFMSUQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYzo0MTA6XFx0cmV0ID0gbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2N0cmwsIGF0aDExa19taGlfY29uZmlnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21oaS5jLTQxMS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTE4Nz1pbnQgYXRoMTJrX21oaV9yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX3BjaSAqYWJfcGNpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy0yNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzoyNjU6XFx0cmV0ID0gbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2N0cmwsIGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZW1oaV9jb25maWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMjY2LVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6NTMuMzMxMTk4ODQ1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEzODMxOTc5Nzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgTUhJIFdXQU4gYW5kIFQ3eHggRHJpdmVyIEFjY2Vzc2liaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBNSEkgV1dBTiBhbmQgVDd4eCBXV0FOIGRyaXZlcnMgYXJlICpmdW5kYW1lbnRhbGx5KiBkZXBlbmRlbnQgb24gc3BlY2lmaWMgaGFyZHdhcmUuIEkgbmVlZCB0byBhcHBseSB0aGUgdHJpYWdlIGNyaXRlcmlhIG1ldGljdWxvdXNseS4gU2VjdGlvbiAyIGlzIGtleSBoZXJlLiBJdCBkaXN0aW5ndWlzaGVzIGJldHdlZW4gZHJpdmVycyB0aGF0IHJlcXVpcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIChsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBHUFVzIHRoYXQgYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUpIGFuZCB0aG9zZSB0aGF0IGFyZSByZWFjaGFibGUgdmlhIHZpcnR1YWwgYnVzZXMsIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBvciB0aGUgbGlrZS5cblxuVGhlIGNvcmUgb2YgbXkgYW5hbHlzaXMgaGluZ2VzIG9uIHRoaXM6IGNhbiBJICpyZWFjaCogYG1oaV93d2FuX21iaW1gIG9yIHRoZSBUN3h4IGRyaXZlciB3aXRob3V0IGEgcGh5c2ljYWwgUENJZSBjYXJkPyBUaGF0J3MgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGFueSB2aXJ0dWFsIGJ1cyBtZWNoYW5pc21zIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBleGlzdCB0aGF0IHdvdWxkIGFsbG93IG1lIHRvIGluc3RhbnRpYXRlIG9yIGludGVyYWN0IHdpdGggdGhlc2UgZHJpdmVycy5cblxuUmlnaHQsIHRpbWUgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIHNlZSBpZiBgbWhpX3d3YW5fbWJpbWAgaXMgZXZlciBpbnN0YW50aWF0ZWQgdmlhIG5ldGxpbmssIGEgdmlydHVhbCBidXMsIG9yIGFueXRoaW5nIHNpbWlsYXIuIFRoZSBjb2RlIGl0c2VsZiBzaG91bGQgcmV2ZWFsIHNvbWV0aGluZyB1c2VmdWwuIExldCdzIHN0YXJ0IHdpdGggYG1oaV93d2FuX21iaW0uY2AgYW5kIHNwZWNpZmljYWxseSBsaW5lIDYxOC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBwcm9iZSBmdW5jdGlvbiwgYG1oaV9tYmltX3Byb2JlYC4gQWgsIGl0IHJlZ2lzdGVycyBXV0FOIGxpbmsgb3BlcmF0aW9ucy4gYHd3YW5fcmVnaXN0ZXJfb3BzYCBhbmQgYWxsIHRoYXQuIFRoYXQncyBnb29kLCBidXQgdGhlIGtleSBpcyAqd2hlbiogYG1oaV9tYmltX3Byb2JlYCBnZXRzIGNhbGxlZC5cblxuTG9va3MgbGlrZSBgbWhpX21iaW1fcHJvYmVgIGlzIGNhbGxlZCBvbmx5IHdoZW4gYW4gYG1oaV9kZXZpY2VgIHRoYXQgbWF0Y2hlcyB0aGUgYG1oaV9tYmltX2lkX3RhYmxlYCBpcyByZWdpc3RlcmVkIG9uIHRoZSBNSEkgYnVzLiBUaGF0J3MgYSBjcml0aWNhbCBjbHVlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGFuIGBtaGlfZGV2aWNlYCBpcyBjcmVhdGVkLiBUaGF04oCZcyB0aGUgY3J1eC4gSSBuZWVkIHRvIGZpbmQgdGhlIGNyZWF0aW9uIG1lY2hhbmlzbS4gVGltZSB0byBzZWFyY2ggdGhlIGtlcm5lbCBmb3IgYG1oaV9kZXZpY2VgIGluc3RhbnRpYXRpb24uIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGRyaXZlciBpcyBsb2FkZWQgYW5kIGlmIEkgY2FuIGxvYWQgaXQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxODQzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ3OjA3LjE2MzE4MDk3OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE4ODMwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWhpX2RldmljZV9jcmVhdGV8bWhpX2FsbG9jX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2J1cy9taGlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTkxOT1pbnQgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTAwOS1cXHQvKiBSZWdpc3RlciBjb250cm9sbGVyIHdpdGggTUhJIGJ1cyAqL1xcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYzoxMDEwOlxcdG1oaV9kZXYgPSBtaGlfYWxsb2NfZGV2aWNlKG1oaV9jbnRybCk7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwMTEtXFx0aWYgKElTX0VSUihtaGlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTEyMTA9c3RhdGljIHZvaWQgbWhpX3JlbGVhc2VfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYy0xMjI4LVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYzoxMjI5OnN0cnVjdCBtaGlfZGV2aWNlICptaGlfYWxsb2NfZGV2aWNlKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsKVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYy0xMjMwLXtcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2ludGVybmFsLmg9MzE0PXN0YXRpYyBpbmxpbmUgdm9pZCBtaGlfZGVidWdmc19leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbnRlcm5hbC5oLTMxOC1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbnRlcm5hbC5oOjMxOTpzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2FsbG9jX2RldmljZShzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCk7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW50ZXJuYWwuaC0zMjAtXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9tYWluLmM9MzY5PXZvaWQgbWhpX2NyZWF0ZV9kZXZpY2VzKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsKVxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvbWFpbi5jLTM4MC1cXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9tYWluLmM6MzgxOlxcdFxcdG1oaV9kZXYgPSBtaGlfYWxsb2NfZGV2aWNlKG1oaV9jbnRybCk7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvbWFpbi5jLTM4Mi1cXHRcXHRpZiAoSVNfRVJSKG1oaV9kZXYpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NzowNy4yMTUwNjg4OTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjAxMzkzMTIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1ISS9QQ0kgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXJgIGZ1bmN0aW9uIGFuZCB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBNSEkgYW5kIFBDSSBjb250ZXh0LiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCBgbWhpX3BjaV9wcm9iZWAgY2FsbHMgaXQsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHJlY29nbml6ZSBgbWhpX3BjaV9wcm9iZWAgYXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBwcm9iaW5nIHJlYWwtd29ybGQgUXVhbGNvbW0gUENJZSBtb2RlbXMg4oCTIHRoZSBGb3hjb25uIFQ5OVcxNzUsIHRoZSBUZWxpdCBGTjk4MCwgdGhvc2UgUXVlY3RlbCBFTTEyMFItR0xzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMuIEknbSBub3RpbmcgdGhlIHZlbmRvciBJRHMgKDB4MTdjYiwgZXRjLikgYXMgYSBwb2ludCBvZiByZWZlcmVuY2UuIEkgYWxzbyBzZWUgdGhhdCBgYXRoMTFrX3BjaWAsIGBhdGgxMmtfcGNpYCwgYW5kIGBxYWljYCBhcmUgY2FsbGluZyB0aGlzIHJlZ2lzdGVyIGNvbnRyb2xsZXIsIGFuZCBJIG5lZWQgdG8gY29tZSBiYWNrIHRvIHRoZXNlLlxuXG5UaGVuIHRoZXJlJ3MgYHQ3eHhgLCB3aGljaCBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSBhcyBNZWRpYVRlaydzIE1USyBQQ0llIDVHIFdXQU4gbW9kZW0gZGV2aWNlcy4gSSBrbm93IHRoYXQncyBmb3VuZCBpbiBgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmNgLiBUaGUgUENJIElEcywgZm9yIE1lZGlhVGVrICgweDE0YzMpIGFuZCB0aGUgZGV2aWNlIGl0c2VsZiAoMHg0ZDc1KSwgYXJlIHdoYXQgSSdkIGV4cGVjdC4gTm93IEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2suLi4gSSBzaG91bGQgY2hlY2sgdGhhdCBgdDd4eF9wY2kuY2AgZmlsZSBhZ2FpbiBhbmQgbWFrZSBzdXJlIHRoYXQgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHNvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzI0NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NzoxMy4yMjkwMDMxODZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4ODQzOTUwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNT0RVTEVfREVWSUNFX1RBQkxFXFxcXChwY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi90N3h4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jPTk0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgdDd4eF9wY2lfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jLTk0OC19O1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jOjk0OTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgdDd4eF9wY2lfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jLTk1MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6MTMuNjE3NDQ4NTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg2MjQzMTg0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIFQ3eHggUENJIEluaXRpYWxpemF0aW9uKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBUN3h4IFdXQU4gZGV2aWNlIGlzIGhhbmRsZWQsIHNvIGxldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgaXRzIFBDSSBpbml0aWFsaXphdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBkZWx2ZSBpbnRvIHRoZSBgdDd4eF9wY2lfdGFibGVgIHN0cnVjdHVyZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGlkZW50aWZpZXMgYW5kIGNvbmZpZ3VyZXMgdGhlIGhhcmR3YXJlLiBUaGUgZmlsZSBJJ20gaW50ZXJlc3RlZCBpbiBpcyBgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmNgLiBUaGUgdGFibGUgZGVmaW5pdGlvbiBhbmQgZGV2aWNlIG1hdGNoaW5nIGxvZ2ljIGFyZSBsaWtlbHkgaG91c2VkIHdpdGhpbiB0aGF0IG1vZHVsZS4gVW5kZXJzdGFuZGluZyB0aGlzIHRhYmxlIHdpbGwgb2ZmZXIgY2x1ZXMgYWJvdXQgc3VwcG9ydGVkIGRldmljZXMsIGFzc29jaWF0ZWQgUENJIElEcywgYW5kIGRyaXZlciBiaW5kaW5nLiBJdCBpcyB0aGUgY29yZSBvZiBob3cgdGhlIGRyaXZlciBpcyBzdXBwb3NlZCB0byByZWNvZ25pemUgYW5kIHdvcmsgd2l0aCBkaWZmZXJlbnQgaXRlcmF0aW9ucyBvZiB0aGUgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTgzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6MTYuNDc5ODgzMTc5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDk0MDpcXHRcXHRwY2lfZnJlZV9pcnFfdmVjdG9ycyh0N3h4X2Rldi1cXHUwMDNlcGRldik7XFxuIDk0MTpcXHR9XFxuIDk0MjpcXHRcXG4gOTQzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCB0N3h4X3BjaV90YWJsZVtdID0ge1xcbiA5NDQ6XFx0XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUVESUFURUssIDB4NGQ3NSkgfSxcXG4gOTQ1OlxcdFxcdHsgUENJX0RFVklDRSgweDAzZjAsIDB4MDljOCkgfSwgLy8gSFAgRFJNUi1IMDFcXG4gOTQ2OlxcdFxcdHsgUENJX0RFVklDRSgweDE0YzAsIDB4NGQ3NSkgfSwgLy8gRGVsbCBEVzU5MzNlXFxuIDk0NzpcXHRcXHR7IH1cXG4gOTQ4OlxcdH07XFxuIDk0OTpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgdDd4eF9wY2lfdGFibGUpO1xcbiA5NTA6XFx0XFxuIDk1MTpcXHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgdDd4eF9wY2lfZHJpdmVyID0ge1xcbiA5NTI6XFx0XFx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcXG4gOTUzOlxcdFxcdC5pZF90YWJsZSA9IHQ3eHhfcGNpX3RhYmxlLFxcbiA5NTQ6XFx0XFx0LnByb2JlID0gdDd4eF9wY2lfcHJvYmUsXFxuIDk1NTpcXHRcXHQucmVtb3ZlID0gdDd4eF9wY2lfcmVtb3ZlLFxcbiA5NTY6XFx0XFx0LmRyaXZlci5wbSA9IFxcdTAwMjZ0N3h4X3BjaV9wbV9vcHMsXFxuIDk1NzpcXHRcXHQuc2h1dGRvd24gPSB0N3h4X3BjaV9zaHV0ZG93bixcXG4gOTU4OlxcdH07XFxuIDk1OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6MTYuNDc5OTcwMzA5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1NTk3NjQyMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBEZWVwZXI6IEludmVzdGlnYXRpbmcgYG1oaV9wY2lfZ2VuZXJpYy5jYCoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBicm9hZGVuIHRoZSBzY29wZSBvZiB0aGlzIGludmVzdGlnYXRpb24uIFdlJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGUgY29yZSBpc3N1ZSwgYnV0IHRoZXJlJ3MgYSBzdHJvbmcgbGlrZWxpaG9vZCBpdCBjb3VsZCBiZSBtYW5pZmVzdGluZyBmcm9tIGxvd2VyIGxldmVscy4gSSdtIHRoaW5raW5nLCBiZWZvcmUgd2UgZ28gYW55IGZ1cnRoZXIsIEkgc2hvdWxkIGRlZmluaXRlbHkgcHVsbCB1cCBhbmQgbWV0aWN1bG91c2x5IGV4YW1pbmUgYG1oaV9wY2lfZ2VuZXJpYy5jYC4gSXQncyBhIGtleSBjb21wb25lbnQgaW4gTUhJIFBDSSBpbnRlcmFjdGlvbiwgYW5kIGl0J3MgcHJhY3RpY2FsbHkgc2NyZWFtaW5nIHBvdGVudGlhbCBmb3IgY29udHJpYnV0aW5nIHRvIHRoaXMgcHJvYmxlbS4gVW5kZXJzdGFuZGluZyB0aGUgc3RhdGUgYW5kIGhhbmRsaW5nIHRoZXJlIGlzIGNyaXRpY2FsIGJlZm9yZSBqdW1waW5nIHRvIGFueSBtYWpvciBjb25jbHVzaW9ucyBvciBzb2x1dGlvbnMuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDYzMywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6MTkuMDM5NzM3NTM3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQ0MDY2NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWhpX3BjaV90YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2J1cy9taGlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ3OjE5LjA4ODE4NTgzNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDI5NDg2ODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkh1bnRpbmcgRG93biB0aGUgUENJIElEIFRhYmxlKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIFBDSSBJRCB0YWJsZSBmb3IgdGhlIE1ISSBob3N0IGNvbnRyb2xsZXIuIE15IGd1dCBzYXlzIGl0J3MgbGlrZWx5IG5lc3RsZWQgd2l0aGluIHRoZSBkcml2ZXIgY29kZSBpdHNlbGYsIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBQQ0kgaW1wbGVtZW50YXRpb24uIFRoYXQgbWVhbnMgSSBzaG91bGQgYmUgbG9va2luZyBpbiB0aGUgYGRyaXZlcnMvYnVzL21oaS9ob3N0L2AgZGlyZWN0b3J5LCBhbmQgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyBgcGNpX2dlbmVyaWMuY2AuIEl0J3MgYSBwcmV0dHkgc3RhbmRhcmQgbmFtaW5nIGNvbnZlbnRpb247IFwiZ2VuZXJpY1wiIG9mdGVuIGluZGljYXRlcyB0aGUgYmFzZSBvciBmb3VuZGF0aW9uYWwgUENJLXJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQncyBzZWUgaWYgdGhhdCBmaWxlIGNvbnRhaW5zIHRoZSBkZXZpY2UgSUQgbGlzdCBvciBpZiBpdCBwb2ludHMgdG8gd2hlcmUgdGhlIGluZm9ybWF0aW9uIGlzLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiwgbW9zdCBsaWtlbHkgd2l0aCBhIGBzdHJ1Y3QgcGNpX2RldmljZV9pZGAga2luZCBvZiBhcnJhbmdlbWVudCwgd2hpY2ggd291bGQgbGlzdCB2ZW5kb3IgSURzLCBkZXZpY2UgSURzLCBzdWJzeXN0ZW0gdmVuZG9yIElEcywgc3Vic3lzdGVtIGRldmljZSBJRHMsIGFuZCBtYXliZSBldmVuIGEgZHJpdmVyLXNwZWNpZmljIGZ1bmN0aW9uIHBvaW50ZXIuIEknbGwgZm9jdXMgb24gcXVpY2tseSBzY2FubmluZyB0aGUgZmlsZSBmb3IgYSBzdGF0aWNhbGx5IGRlZmluZWQgYXJyYXkgb2YgdGhlc2UgUENJIElEIHN0cnVjdHVyZXMuIEhvcGVmdWxseSwgSSdsbCBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yIHRoZXJlIHF1aWNrbHkuIElmIG5vdCwgSSdsbCBuZWVkIHRvIHN0YXJ0IGh1bnRpbmcgdGhyb3VnaCB0aGUgc3Vycm91bmRpbmcgaW5jbHVkZSBmaWxlcyBmb3IgZGVmaW5pdGlvbnMgb2YgYHN0cnVjdCBwY2lfZGV2aWNlX2lkYCBpZiBpdCdzIGV4dGVybmFsLCBvciBtYXliZSBhIG1hY3JvIGRlZmluaXRpb24gZXhwYW5kaW5nIHRvIHRoYXQgc3RydWN0dXJlLiBJJ2xsIGtlZXAgdGhlIHNlYXJjaCBmb2N1c2VkOyBob3BlZnVsbHksIGl0J3Mgbm90IHRvbyBkZWVwbHkgYnVyaWVkIGluIHNvbWUgbGF5ZXJlZCBhYnN0cmFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ4NTYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NzoyMy4xMTc2NzY1MzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDAwNDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1PRFVMRV9ERVZJQ0VfVEFCTEVcXFxcKHBjaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2J1cy9taGlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz05NTI9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1oaV9wY2lfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTA4Ni19O1xcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTA4NzpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbWhpX3BjaV9pZF90YWJsZSk7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xMDg4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NzoyMy4xNjU2ODQ3ODVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODk4NDcxOTc0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgTW9kZW0gRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGVzZSBtb2RlbSBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYG1oaV93d2FuX21iaW0uY2AgYW5kIGB0N3h4X25ldGRldi5jYCwgd29yay4gSXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgdGhleSBib3RoIG5lZWQgYWN0dWFsIHBoeXNpY2FsIFBDSSBtb2RlbSBoYXJkd2FyZS4gVGhlIGBtaGlgIGRyaXZlciB1c2VzIHRoZSBNSEkgYnVzLCBpbnN0YW50aWF0ZWQgYnkgZWl0aGVyIGBtaGlfcGNpX2dlbmVyaWMuY2Agb3IgUXVhbGNvbW0ncyBQQ0llIG1vZGVtcywgd2hpbGUgdGhlIE1lZGlhVGVrIG9uZSByZWxpZXMgb24gYHQ3eHhfcGNpLmNgLiBUaGUgY29yZSBhc3N1bXB0aW9uIHJpZ2h0IG5vdyBpcyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGRpcmVjdGx5IGNvbm5lY3RlZCBoYXJkd2FyZSBkZXZpY2UuXG5cbkJ1dCwgYmVmb3JlIEkgZ28gZG93biB0aGF0IHBhdGggY29tcGxldGVseSwgbGV0J3MganVzdCBtYWtlIHN1cmUgdGhlcmUgaXNuJ3Qgc29tZXRoaW5nIG1vcmUgaW50ZXJlc3Rpbmcgb3IgZmxleGlibGUgYXQgcGxheSBoZXJlLiBJdCdzIGEgZ29vZCBoYWJpdCB0byBydWxlIG91dCBhbnkgcG9zc2liaWxpdGllcyB0aGF0IGNvdWxkIG9mZmVyIG90aGVyIG9wdGlvbnMuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIG1pZ2h0IGJlIGEgdmlydHVhbCBvciBlbXVsYXRlZCBtb2RlbSBkZXZpY2Ugc29tZXdoZXJlIGluIHRoZSBzeXN0ZW0sIG9yIHBlcmhhcHMgYSB1c2VyLXNwYWNlIGludGVyZmFjZS4gSXMgdGhlcmUgYSB3YXkgdG8gaW5qZWN0IHBhY2tldHMgZGlyZWN0bHkgaW50byB0aGUgYG1oaV9tYmltX3J4YCBvciBgdDd4eF9jY21uaV9yZWN2X3NrYmAgZnVuY3Rpb25zP1xuXG5JJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBjYWxsIHNpdGVzIGZvciBgdDd4eF9jY21uaV9yZWN2X3NrYmAgdG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIGRhdGEgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUzNjMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6MzIuMTUwNDA3NTA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTAyODIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0N3h4X2NjbW5pX3JlY3Zfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vdDd4eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYz0zOTk9c3RhdGljIHZvaWQgaW5pdF9tZF9zdGF0dXNfbm90aWZpZXIoc3RydWN0IHQ3eHhfcGNpX2RldiAqdDd4eF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy00MTEtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM6NDEyOnN0YXRpYyB2b2lkIHQ3eHhfY2NtbmlfcmVjdl9za2Ioc3RydWN0IHQ3eHhfY2NtbmlfY3RybCAqY2NtbmlfY3RsYiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy00MTMtXFx0XFx0XFx0XFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM9NDkwPWludCB0N3h4X2NjbW5pX2luaXQoc3RydWN0IHQ3eHhfcGNpX2RldiAqdDd4eF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy01MDItXFx0Y3RsYi1cXHUwMDNlY2FsbGJhY2tzLnN0YXRlX25vdGlmeSA9IHQ3eHhfY2NtbmlfcXVldWVfc3RhdGVfbm90aWZ5O1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jOjUwMzpcXHRjdGxiLVxcdTAwM2VjYWxsYmFja3MucmVjdl9za2IgPSB0N3h4X2NjbW5pX3JlY3Zfc2tiO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTUwNC1cXHRjdGxiLVxcdTAwM2VuaWNfZGV2X251bSA9IE5JQ19ERVZfREVGQVVMVDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6MzIuMjAxNDQyMTM1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ0MzE5OTAxNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgV1dBTiBEZXZpY2UgRW11bGF0aW9uKipcblxuT2theSwgc28gYHQ3eHhfY2NtbmlfcmVjdl9za2JgIGlzIHRoZSBlbnRyeSBwb2ludCB3aGVuIHRoZSBUN3h4IFBDSWUgaGFyZHdhcmUgaXMgcmVjZWl2aW5nIHBhY2tldHMgZnJvbSB0aGUgRFBNQUlGIFJYIHF1ZXVlLiBUaGF0IG1ha2VzIHNlbnNlLiBBbmQsIGFzIGV4cGVjdGVkLCBgbWhpX21iaW1fcnhgIGlzIGNhbGxlZCB0aHJvdWdoIGBtaGlfbWJpbV9kbF9jYWxsYmFja2Agd2hpY2ggaXMgdGhlIE1ISSBidXMgdHJhbnNmZXIgY2FsbGJhY2suIEFsbCBzZWVtcyBzdGFuZGFyZC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVzZSBzcGVjaWZpYyBtb2RlbXMgYXJlIGVtdWxhdGFibGUuIExldCBtZSBjaGVjayBTZWN0aW9uIDIgb2YgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24uLi4gc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBPa2F5LCB0aGF0IHVzdWFsbHkgbWVhbnMgdmVuZG9yLXNwZWNpZmljIHN0dWZmIHRoYXQgUUVNVSBkb2Vzbid0IHRvdWNoOiBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIGxpa2UgbWx4c3csIHBkc19jb3JlLCBhbmQgb3RoZXJzLiBUaGV5IGFsbCBuZWVkIHRoYXQgcGh5c2ljYWwgQVNJQyBvciBQQ0llIGNhcmQsIG5vdCBzb21ldGhpbmcgUUVNVSBub3JtYWxseSBwcm92aWRlcy5cblxuVGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uOiBBcmUgUXVhbGNvbW0gTUhJIFBDSWUgbW9kZW1zICpvciogTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtcyBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzPyBUaGUgYW5zd2VyIGlzIGEgY2xlYXIgKm5vKi4gU3RhbmRhcmQgUUVNVSBhbmQgR0NFICpkb24ndCogZW11bGF0ZSB0aGUgUXVhbGNvbW0gTUhJIG1vZGVtcyAobGlrZSB0aGUgRm94Y29ubiwgUXVlY3RlbCwgVGVsaXQgb25lcykgb3IgdGhlIE1lZGlhVGVrIDVHIFdXQU4gUENJZSBtb2RlbXMgKHRob3NlIHdpdGggdGhlIDB4MTRjMzoweDRkNzUgdmVuZG9yOmRldmljZSBJRCkuIEl0J3MgZXhwbGljaXRseSBzdGF0ZWQgdGhhdCB0aGV5IHJlcXVpcmUgKnBoeXNpY2FsKiBQQ0llIG1vZGVtIGhhcmR3YXJlLCB3aGljaCBpc24ndCBhdmFpbGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5IbW0sIHRoaXMgcHJlc2VudHMgYSBwcm9ibGVtLiBCdXQsIHdhaXQuLi4gY291bGQgdGhlcmUgYmUgYSB3b3JrYXJvdW5kPyBJcyB0aGVyZSAqYW55KiBwb3NzaWJpbGl0eSB0aGUgV1dBTiBjb3JlIHN1YnN5c3RlbSBjb3VsZCBjcmVhdGUgYSBkdW1teSBvciB2aXJ0dWFsIFdXQU4gZGV2aWNlPyBJdCdzIHdvcnRoIGV4cGxvcmluZy4gVG8gZmluZCBvdXQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvbmV0L3d3YW4vYCBkaXJlY3RvcnkuIE1heWJlIEknbGwgZ2V0IGx1Y2t5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjIxNywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NzozNi42MzM0MzUzNDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3d3YW5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwibWhpX3d3YW5fY3RybC5jXCIsXG4gICAgXCJtaGlfd3dhbl9tYmltLmNcIixcbiAgICBcInFjb21fYmFtX2RtdXguY1wiLFxuICAgIFwicnBtc2dfd3dhbl9jdHJsLmNcIixcbiAgICBcInd3YW5fY29yZS5jXCIsXG4gICAgXCJ3d2FuX2h3c2ltLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiaW9zbVwiLFxuICAgIFwidDd4eFwiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ3OjM2LjYzMzQ5MDEzN1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTI4OTA0MTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb3JlIG9mIFdXQU4gU2ltdWxhdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiTGV0J3MgY3JhY2sgb3BlbiBgd3dhbl9od3NpbS5jYC5cIiBUaGF0J3MgdGhlIGZpbGUgSSBuZWVkIHRvIHVuZGVyc3RhbmQsIGJ1dCB3aGF0ICpleGFjdGx5KiBpcyBpdCBkb2luZz8gTXkgbWluZCBpcyBhdXRvbWF0aWNhbGx5IHByb2Jpbmc6IFdoYXQncyB0aGUgZnVuZGFtZW50YWwgcm9sZSBvZiB0aGlzIHNpbXVsYXRpb24/IFdoYXQgYXNwZWN0cyBvZiB0aGUgV1dBTiAoV2lyZWxlc3MgV2lkZSBBcmVhIE5ldHdvcmspIGhhcmR3YXJlIGFyZSBiZWluZyBlbXVsYXRlZCBoZXJlPyBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBoYXJkd2FyZSBpdCdzIG1lYW50IHRvIHJlcGxpY2F0ZS4gQW0gSSBsb29raW5nIGF0IHRoZSBwaHlzaWNhbCByYWRpbyBsYXllciwgdGhlIG1vZGVtIGludGVyZmFjZSwgdGhlIHByb3RvY29sIHN0YWNrLCBvciBhIGNvbWJpbmF0aW9uPyBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgcmVhbGx5IGRpZ2dpbmcgaW50byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwNTMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6NDEuNzYyMzk2NTUxWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93d2FuL3d3YW5faHdzaW0uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBXV0FOIGRldmljZSBzaW11bGF0b3IgZm9yIFdXQU4gZnJhbWV3b3JrIHRlc3RpbmcuXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IChjKSAyMDIxLCAyMDI1LCBTZXJnZXkgUnlhemFub3YgXFx1MDAzY3J5YXphbm92LnMuYUBnbWFpbC5jb21cXHUwMDNlXFxuICAgNjpcXHQgKi9cXG4gICA3OlxcdFxcbiAgIDg6XFx0I2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcXFwiOiBcXFwiIGZtdFxcbiAgIDk6XFx0XFxuICAxMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAxMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbiAgMTM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmljZS5oXFx1MDAzZVxcbiAgMTQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcXHUwMDNlXFxuICAxNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdGltZS5oXFx1MDAzZVxcbiAgMTY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpc3QuaFxcdTAwM2VcXG4gIDE3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9za2J1ZmYuaFxcdTAwM2VcXG4gIDE4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC90aW1lci5oXFx1MDAzZVxcbiAgMTk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGRldmljZS5oXFx1MDAzZVxcbiAgMjA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3d3YW4uaFxcdTAwM2VcXG4gIDIxOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWJ1Z2ZzLmhcXHUwMDNlXFxuICAyMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcXHUwMDNlXFxuICAyMzpcXHRcXG4gIDI0OlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvYXJwLmhcXHUwMDNlXFxuICAyNTpcXHRcXG4gIDI2OlxcdHN0YXRpYyBpbnQgd3dhbl9od3NpbV9kZXZzbnVtID0gMjtcXG4gIDI3OlxcdG1vZHVsZV9wYXJhbV9uYW1lZChkZXZpY2VzLCB3d2FuX2h3c2ltX2RldnNudW0sIGludCwgMDQ0NCk7XFxuICAyODpcXHRNT0RVTEVfUEFSTV9ERVNDKGRldmljZXMsIFxcXCJOdW1iZXIgb2Ygc2ltdWxhdGVkIGRldmljZXNcXFwiKTtcXG4gIDI5OlxcdFxcbiAgMzA6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBjbGFzcyB3d2FuX2h3c2ltX2NsYXNzID0ge1xcbiAgMzE6XFx0XFx0Lm5hbWUgPSBcXFwid3dhbl9od3NpbVxcXCIsXFxuICAzMjpcXHR9O1xcbiAgMzM6XFx0XFxuICAzNDpcXHRzdGF0aWMgc3RydWN0IGRlbnRyeSAqd3dhbl9od3NpbV9kZWJ1Z2ZzX3RvcGRpcjtcXG4gIDM1OlxcdHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICp3d2FuX2h3c2ltX2RlYnVnZnNfZGV2Y3JlYXRlO1xcbiAgMzY6XFx0XFxuICAzNzpcXHRzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHd3YW5faHdzaW1fZGV2c19sb2NrKTtcXG4gIDM4OlxcdHN0YXRpYyBMSVNUX0hFQUQod3dhbl9od3NpbV9kZXZzKTtcXG4gIDM5OlxcdHN0YXRpYyB1bnNpZ25lZCBpbnQgd3dhbl9od3NpbV9kZXZfaWR4O1xcbiAgNDA6XFx0c3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3d2FuX3dxO1xcbiAgNDE6XFx0XFxuICA0MjpcXHRzdHJ1Y3Qgd3dhbl9od3NpbV9kZXYge1xcbiAgNDM6XFx0XFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbiAgNDQ6XFx0XFx0dW5zaWduZWQgaW50IGlkO1xcbiAgNDU6XFx0XFx0c3RydWN0IGRldmljZSBkZXY7XFxuICA0NjpcXHRcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZGVsX3dvcms7XFxuICA0NzpcXHRcXHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3RvcGRpcjtcXG4gIDQ4OlxcdFxcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcG9ydGNyZWF0ZTtcXG4gIDQ5OlxcdFxcdHNwaW5sb2NrX3QgcG9ydHNfbG9jaztcXHQvKiBTZXJpYWxpemUgcG9ydHMgY3JlYXRpb24vZGVsZXRpb24gKi9cXG4gIDUwOlxcdFxcdHVuc2lnbmVkIGludCBwb3J0X2lkeDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6NDEuNzYyNTAzNTYxWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNTk4NTQ0OTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IFN0cnVjdHVyYWxseSBVbnJlYWNoYWJsZSBDb2RlIGZvciBGdXp6aW5nKipcblxuT2theSwgYWZ0ZXIgYSBjbG9zZSBsb29rLCBJJ3ZlIGNvbmZpcm1lZCB0aGF0IHRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSB3aXRoaW4gdGhlIGB3d2FuYCBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbnZvbHZpbmcgZHJpdmVycyBmb3IgcGh5c2ljYWwgUENJZSBtb2RlbXMuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgd3dhbl9od3NpbS5jYCBpcyBhIHNpbXVsYXRvciBmb3IgdGhlIGB3d2FuX2NvcmVgIGJ1dCB0aGUgcmVsZXZhbnQgZHJpdmVycyBpbiB0aGlzIGNhc2Ug4oCTIGBtaGlfd3dhbl9tYmltLmNgIChRdWFsY29tbSBNSEkpIGFuZCBgdDd4eC90N3h4X25ldGRldi5jYCAoTWVkaWFUZWsgVDd4eCkg4oCTIGFyZSAqaGFyZHdhcmUtc3BlY2lmaWMqIGRyaXZlcnMgdGhhdCBjb21tdW5pY2F0ZSBkaXJlY3RseSB3aXRoIHBoeXNpY2FsIFBDSWUgbW9kZW0gZGV2aWNlcy4gVGhlc2UgYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy5cblxuVGhlIG1vZGlmaWNhdGlvbnMgYXJlIGluIHRoZSBSWCBwYWNrZXQgcHJvY2Vzc2luZyBwYXRoczogYG1oaV9tYmltX3J4YCBhbmQgYG1oaV9tYmltX3J4X2Ryb3BgIGluIHRoZSBRdWFsY29tbSBkcml2ZXIsIGhhbmRsaW5nIHRoZSBkb3dubGluayBjYWxsYmFjaywgYW5kIGB0N3h4X2NjbW5pX3JlY3Zfc2tiYCBpbiB0aGUgTWVkaWFUZWsgZHJpdmVyLCB2YWxpZGF0aW5nIHRoZSBgbmV0aWZfaWRgLiBUaGVzZSBmdW5jdGlvbnMgb25seSBjb21lIGludG8gcGxheSB3aGVuIHJlY2VpdmluZyBwYWNrZXRzIGRpcmVjdGx5IGZyb20gdGhlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUuXG5cbkJhc2VkIG9uIHRoZSB0cmlhZ2UgcGhpbG9zb3BoeSBvdXRsaW5lZCBpbiBTZWN0aW9uIDIsIHRoZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIHNjZW5hcmlvIGFwcGxpZXMgcGVyZmVjdGx5IGhlcmUuIFRoZSBwYXRjaCBmYWxscyBpbnRvIHRoZSBjYXRlZ29yeSBvZiBjb2RlIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMuXG5cblRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIGluaGVyZW50bHkgdW5yZWFjaGFibGUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGFzIHdlIHdvdWxkIGJlIHVuYWJsZSB0byB0cmlnZ2VyIHRoZSBtb2RpZmllZCBsb2dpYy4gTXkgZGVjaXNpb24gaXMgc3RyYWlnaHRmb3J3YXJkOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IGZhbHNlKipcbiogICAqKkZvY3VzU3ltYm9sczogXFxbIF0qKlxuKiAgICoqRW5hYmxlQ29uZmlnczogXFxbIF0qKlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyBSWCBwYWNrZXQgcHJvY2Vzc2luZyBpbiBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCwgbm9uLWVtdWxhdGVkIFBDSWUgbW9kZW0gaGFyZHdhcmUuIEhlbmNlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MDM3LCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ4OjA0LjM2MTA1MTQ5NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgbW9kaWZ5IFJYIGhhbmRsaW5nIHJvdXRpbmVzIGluIGRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jIChNSEkgV1dBTiBNQklNIGRyaXZlciBmb3IgUXVhbGNvbW0gbW9kZW1zKSBhbmQgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMgKE1lZGlhVGVrIFQ3eHggUENJZSBtb2RlbSBkcml2ZXIpLiBCb3RoIGRyaXZlcnMgZGVwZW5kIG9uIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgbW9kZW0gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgUlggaGFuZGxpbmcgcm91dGluZXMgaW4gZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKE1ISSBXV0FOIE1CSU0gZHJpdmVyIGZvciBRdWFsY29tbSBtb2RlbXMpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyBkZXBlbmQgb24gc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBtb2RlbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0ODowNC4zNjEwODAyOTRaIiwiU2VxIjozMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2l2gl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-11 02:28:26 +0000 UTC FinishedAt: 2026-09-11 02:48:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAyOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgUlggaGFuZGxpbmcgcm91dGluZXMgaW4gZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKE1ISSBXV0FOIE1CSU0gZHJpdmVyIGZvciBRdWFsY29tbSBtb2RlbXMpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyBkZXBlbmQgb24gc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBtb2RlbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAyOjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzM5Njg5YTdlYmRkYjQ5MjVhNTA2YzhlYzZjNzVjZGEyZTExYjA0ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDExIDAyOjQ2OjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jIGIvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcbmluZGV4IGE5NDk5ODcxMjU5NzYuLjMzNmY4OTc1NmYxMGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcbkBAIC0yNTEsNiAmIzQzOzI1MSwxNCBAQCBzdGF0aWMgaW50IG1iaW1fcnhfdmVyaWZ5X25kcDE2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB1c2JfY2RjX25jbV9uZHAxNiAqblxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIG1oaV9tYmltX3J4X2Ryb3Aoc3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmssIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuJiM0MztcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2bGluay1cdTAwM2VyeF9zeW5jcCk7XG4mIzQzO1x0dTY0X3N0YXRzX2luYyhcdTAwMjZsaW5rLVx1MDAzZXJ4X2Vycm9ycyk7XG4mIzQzO1x0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2bGluay1cdTAwM2VyeF9zeW5jcCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0aW50IG5kcG9mZnNldDtcbkBAIC0zMjAsNyAmIzQzOzMyOCwxMCBAQCBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdHNrYl9wdXQoc2tibiwgZGdyYW1fbGVuKTtcbi1cdFx0XHRza2JfY29weV9iaXRzKHNrYiwgZGdyYW1fb2Zmc2V0LCBza2JuLVx1MDAzZWRhdGEsIGRncmFtX2xlbik7XG4mIzQzO1x0XHRcdGlmIChza2JfY29weV9iaXRzKHNrYiwgZGdyYW1fb2Zmc2V0LCBza2JuLVx1MDAzZWRhdGEsIGRncmFtX2xlbikpIHtcbiYjNDM7XHRcdFx0XHRtaGlfbWJpbV9yeF9kcm9wKGxpbmssIHNrYm4pO1xuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0XHR9XG4gXG4gXHRcdFx0c3dpdGNoIChza2JuLVx1MDAzZWRhdGFbMF0gXHUwMDI2IDB4ZjApIHtcbiBcdFx0XHRjYXNlIDB4NDA6XG5AQCAtMzMyLDEwICYjNDM7MzQzLDcgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdFx0ZGVmYXVsdDpcbiBcdFx0XHRcdG5ldF9lcnJfcmF0ZWxpbWl0ZWQoXCYjMzQ7JXM6IHVua25vd24gcHJvdG9jb2xcXG5cJiMzNDssXG4gXHRcdFx0XHRcdFx0ICAgIGxpbmstXHUwMDNlbmRldi1cdTAwM2VuYW1lKTtcbi1cdFx0XHRcdGRldl9rZnJlZV9za2JfYW55KHNrYm4pO1xuLVx0XHRcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZsaW5rLVx1MDAzZXJ4X3N5bmNwKTtcbi1cdFx0XHRcdHU2NF9zdGF0c19pbmMoXHUwMDI2bGluay1cdTAwM2VyeF9lcnJvcnMpO1xuLVx0XHRcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2bGluay1cdTAwM2VyeF9zeW5jcCk7XG4mIzQzO1x0XHRcdFx0bWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdH1cbiBcbkBAIC0zNDksOSAmIzQzOzM1NywxMyBAQCBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB1bmxvY2s6XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIG5leHRfbmRwOlxuLVx0XHQvKiBPdGhlciBORFAgdG8gcHJvY2Vzcz8gKi9cbi1cdFx0bmRwb2Zmc2V0ID0gKGludClsZTE2X3RvX2NwdShuZHAxNi53TmV4dE5kcEluZGV4KTtcbi1cdFx0aWYgKCFuZHBvZmZzZXQpXG4mIzQzO1x0XHQvKiBPdGhlciBORFAgdG8gcHJvY2Vzcz8gIFRoZSBvZmZzZXRzIG11c3QgYWR2YW5jZSwgb3IgYVxuJiM0MztcdFx0ICogc2VsZi1yZWZlcmVuY2luZyBORFAga2VlcHMgdGhlIGxvb3Agc3Bpbm5pbmcgZm9yZXZlci5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0biA9IChpbnQpbGUxNl90b19jcHUobmRwMTYud05leHROZHBJbmRleCk7XG4mIzQzO1x0XHRpZiAobiBcdTAwM2UgbmRwb2Zmc2V0KVxuJiM0MztcdFx0XHRuZHBvZmZzZXQgPSBuO1xuJiM0MztcdFx0ZWxzZVxuIFx0XHRcdGJyZWFrO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jIGIvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNcbmluZGV4IGZjMGE3Y2IxODFkZjIuLjhmMzJjMmQyNjkzMTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNcbkBAIC00MjAsNiAmIzQzOzQyMCwxMCBAQCBzdGF0aWMgdm9pZCB0N3h4X2NjbW5pX3JlY3Zfc2tiKHN0cnVjdCB0N3h4X2NjbW5pX2N0cmwgKmNjbW5pX2N0bGIsIHN0cnVjdCBza19idVxuIFxuIFx0c2tiX2NiID0gVDdYWF9TS0JfQ0Ioc2tiKTtcbiBcdG5ldGlmX2lkID0gc2tiX2NiLVx1MDAzZW5ldGlmX2lkeDtcbiYjNDM7XHRpZiAobmV0aWZfaWQgXHUwMDNlPSBOSUNfREVWX01BWCkge1xuJiM0MztcdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiBcdGNjbW5pID0gUkVBRF9PTkNFKGNjbW5pX2N0bGItXHUwMDNlY2NtbmlfaW5zdFtuZXRpZl9pZF0pO1xuIFx0aWYgKCFjY21uaSkge1xuIFx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgUlggaGFuZGxpbmcgcm91dGluZXMgaW4gZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKE1ISSBXV0FOIE1CSU0gZHJpdmVyIGZvciBRdWFsY29tbSBtb2RlbXMpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyBkZXBlbmQgb24gc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBtb2RlbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzM5Njg5YTdlYmRkYjQ5MjVhNTA2YzhlYzZjNzVjZGEyZTExYjA0ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDAyOjQ2OjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYwppbmRleCBhOTQ5OTg3MTI1OTc2Li4zMzZmODk3NTZmMTBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYwpAQCAtMjUxLDYgJiM0MzsyNTEsMTQgQEAgc3RhdGljIGludCBtYmltX3J4X3ZlcmlmeV9uZHAxNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgKm4KIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7c3RhdGljIHZvaWQgbWhpX21iaW1fcnhfZHJvcChzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0Mzt7CiYjNDM7CWRldl9rZnJlZV9za2JfYW55KHNrYik7CiYjNDM7CXU2NF9zdGF0c191cGRhdGVfYmVnaW4oJmFtcDtsaW5rLSZndDtyeF9zeW5jcCk7CiYjNDM7CXU2NF9zdGF0c19pbmMoJmFtcDtsaW5rLSZndDtyeF9lcnJvcnMpOwomIzQzOwl1NjRfc3RhdHNfdXBkYXRlX2VuZCgmYW1wO2xpbmstJmd0O3J4X3N5bmNwKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlpbnQgbmRwb2Zmc2V0OwpAQCAtMzIwLDcgJiM0MzszMjgsMTAgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpCiAJCQkJY29udGludWU7CiAKIAkJCXNrYl9wdXQoc2tibiwgZGdyYW1fbGVuKTsKLQkJCXNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tJmd0O2RhdGEsIGRncmFtX2xlbik7CiYjNDM7CQkJaWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tJmd0O2RhdGEsIGRncmFtX2xlbikpIHsKJiM0MzsJCQkJbWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTsKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CQkJfQogCiAJCQlzd2l0Y2ggKHNrYm4tJmd0O2RhdGFbMF0gJmFtcDsgMHhmMCkgewogCQkJY2FzZSAweDQwOgpAQCAtMzMyLDEwICYjNDM7MzQzLDcgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpCiAJCQlkZWZhdWx0OgogCQkJCW5ldF9lcnJfcmF0ZWxpbWl0ZWQoJiMzNDslczogdW5rbm93biBwcm90b2NvbFxuJiMzNDssCiAJCQkJCQkgICAgbGluay0mZ3Q7bmRldi0mZ3Q7bmFtZSk7Ci0JCQkJZGV2X2tmcmVlX3NrYl9hbnkoc2tibik7Ci0JCQkJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmYW1wO2xpbmstJmd0O3J4X3N5bmNwKTsKLQkJCQl1NjRfc3RhdHNfaW5jKCZhbXA7bGluay0mZ3Q7cnhfZXJyb3JzKTsKLQkJCQl1NjRfc3RhdHNfdXBkYXRlX2VuZCgmYW1wO2xpbmstJmd0O3J4X3N5bmNwKTsKJiM0MzsJCQkJbWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTsKIAkJCQljb250aW51ZTsKIAkJCX0KIApAQCAtMzQ5LDkgJiM0MzszNTcsMTMgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpCiB1bmxvY2s6CiAJCXJjdV9yZWFkX3VubG9jaygpOwogbmV4dF9uZHA6Ci0JCS8qIE90aGVyIE5EUCB0byBwcm9jZXNzPyAqLwotCQluZHBvZmZzZXQgPSAoaW50KWxlMTZfdG9fY3B1KG5kcDE2LndOZXh0TmRwSW5kZXgpOwotCQlpZiAoIW5kcG9mZnNldCkKJiM0MzsJCS8qIE90aGVyIE5EUCB0byBwcm9jZXNzPyAgVGhlIG9mZnNldHMgbXVzdCBhZHZhbmNlLCBvciBhCiYjNDM7CQkgKiBzZWxmLXJlZmVyZW5jaW5nIE5EUCBrZWVwcyB0aGUgbG9vcCBzcGlubmluZyBmb3JldmVyLgomIzQzOwkJICovCiYjNDM7CQluID0gKGludClsZTE2X3RvX2NwdShuZHAxNi53TmV4dE5kcEluZGV4KTsKJiM0MzsJCWlmIChuICZndDsgbmRwb2Zmc2V0KQomIzQzOwkJCW5kcG9mZnNldCA9IG47CiYjNDM7CQllbHNlCiAJCQlicmVhazsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jIGIvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMKaW5kZXggZmMwYTdjYjE4MWRmMi4uOGYzMmMyZDI2OTMxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMKQEAgLTQyMCw2ICYjNDM7NDIwLDEwIEBAIHN0YXRpYyB2b2lkIHQ3eHhfY2NtbmlfcmVjdl9za2Ioc3RydWN0IHQ3eHhfY2NtbmlfY3RybCAqY2NtbmlfY3RsYiwgc3RydWN0IHNrX2J1CiAKIAlza2JfY2IgPSBUN1hYX1NLQl9DQihza2IpOwogCW5ldGlmX2lkID0gc2tiX2NiLSZndDtuZXRpZl9pZHg7CiYjNDM7CWlmIChuZXRpZl9pZCAmZ3Q7PSBOSUNfREVWX01BWCkgewomIzQzOwkJZGV2X2tmcmVlX3NrYihza2IpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiAJY2NtbmkgPSBSRUFEX09OQ0UoY2NtbmlfY3RsYi0mZ3Q7Y2NtbmlfaW5zdFtuZXRpZl9pZF0pOwogCWlmICghY2NtbmkpIHsKIAkJZGV2X2tmcmVlX3NrYihza2IpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODkyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIEFuYWx5c2lzIC0gQSBRdWljayBMb29rKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgZnV6emFibGU/JiMzNDsgRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGl0JiMzOTtzIGV2ZW4gd29ydGggdGhlIHRpbWUuICBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVhY2hhYmlsaXR5LCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIGFuZCBhbnkgaW50ZXJlc3RpbmcgZm9jdXMgc3ltYm9scy4KClJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgZmlsZXMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQuIEkgc2VlIGBkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY2AgYW5kIGBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuY2AuICBPa2F5LCBXV0FOIGRyaXZlcnMuIEdvdCBpdC4gTm93LCB3aGF0JiMzOTtzIHRoZWlyIGNvbnRleHQ/IEFyZSB0aGV5IGxpa2VseSB0byBiZSB0cmlnZ2VyZWQgZWFzaWx5IGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgYW0gSSBnb2luZyB0byBuZWVkIHNwZWNpYWxpemVkIGhhcmR3YXJlIHRvIGFjdHVhbGx5IGdldCBhdCB0aGVtPyBJIG5lZWQgdG8ga25vdyB0aGlzIEFTQVAuCgpOZXh0IHN0ZXA6IHRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgb3IgZmlyZSB1cCBgZ3JlcHBlcmAuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgd2l0aCBgZ3JlcHBlcmAsIGFzIGl0JiMzOTtzIG9mdGVuIGZhc3RlciBmb3IgdGhpcyBpbml0aWFsIGFzc2Vzc21lbnQsIHRvIHNlZSBpZiBJIGNhbiBxdWlja2x5IGlkZW50aWZ5IGFueSByZWxldmFudCBjb25maWd1cmF0aW9ucyBvciBwb3RlbnRpYWwgYnVpbGQgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgaWxsdW1pbmF0ZSB0aGUgcGF0aCB0byByZWFjaGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUhJX1dXQU5fTUJJTXxNVEtfVDdYWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTQwPWNvbmZpZyBNSElfV1dBTl9DVFJMXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjUzOmNvbmZpZyBNSElfV1dBTl9NQklNXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNTQtICAgICAgICB0cmlzdGF0ZSBcJiMzNDtNSEkgV1dBTiBNQklNIG5ldHdvcmsgZHJpdmVyIGZvciBRdWFsY29tbS1iYXNlZCBQQ0llIG1vZGVtc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZz05Nj1jb25maWcgSU9TTVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDgtXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTA5OmNvbmZpZyBNVEtfVDdYWFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTExMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRldmljZVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX01ISV9XV0FOX0NUUkwpICYjNDM7PSBtaGlfd3dhbl9jdHJsLm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX01ISV9XV0FOX01CSU0pICYjNDM7PSBtaGlfd3dhbl9tYmltLm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX1FDT01fQkFNX0RNVVgpICYjNDM7PSBxY29tX2JhbV9kbXV4Lm9cbi0tXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19JT1NNKSAmIzQzOz0gaW9zbS9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX01US19UN1hYKSAmIzQzOz0gdDd4eC9cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGUtMi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZTozOm9iai0ke0NPTkZJR19NVEtfVDdYWH0gOj0gbXRrX3Q3eHgub1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTQtbXRrX3Q3eHgteTo9XHR0N3h4X3BjaS5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc2NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBpbnZlc3RpZ2F0aW9uLCBmcm9tIG15IHBlcnNwZWN0aXZlOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZWVwIERpdmU6IFdXQU4gJmFtcDsgTUJJTSoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gYE1ISV9XV0FOX01CSU1gIGFuZCBgTVRLX1Q3WFhgIHdpdGhpbiB0aGUgV1dBTiBzdWJzeXN0ZW0mIzM5O3MgS2NvbmZpZyBmaWxlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYC4gSSYjMzk7bGwgd2FudCB0byBxdWlja2x5IHBhcnNlIHRoYXQgZmlsZSwgcGF5aW5nIHNwZWNpZmljIGF0dGVudGlvbiB0byBob3cgdGhlc2UgdHdvIG9wdGlvbnMg4oCTIGBNSElfV1dBTl9NQklNYCBhbmQgYE1US19UN1hYYCBhcmUgZGVmaW5lZCBhbmQsIG1vcmUgaW1wb3J0YW50bHksICp3aGF0KiB0aGV5IGRlcGVuZCBvbi4gQXJlIHRoZXkgbXV0dWFsbHkgZXhjbHVzaXZlPyBEb2VzIG9uZSAqcmVxdWlyZSogdGhlIG90aGVyPyBBcmUgdGhlcmUgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgYnJvdWdodCBpbnRvIHRoZSBwaWN0dXJlIGJhc2VkIG9uIGVpdGhlciBvZiB0aGVzZSBiZWluZyBzZXQ/IFVuZGVyc3RhbmRpbmcgdGhlaXIgZGVwZW5kZW5jaWVzIGlzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyB0aGV5IHBsYXkgdG9nZXRoZXIgaW4gdGhlIGJyb2FkZXIgV1dBTiBlY29zeXN0ZW0gYW5kIGhvdyBJIG1pZ2h0IG5lZWQgdG8gYWRqdXN0IHRoaW5ncy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gYW55IHBsYXRmb3JtIG9yIGJ1cy1zcGVjaWZpYyBjb25zdHJhaW50cyByZXZlYWxlZCBpbiB0aGUgS2NvbmZpZyBmaWxlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgYmFzZSBvZiBrbm93bGVkZ2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBNQklNIHByb3RvY29sIGlzIG1hbmFnZWQgd2hlbiB1c2luZyB0aGUgTVRLIFQ3WFggaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0Y29uZmlnIE1ISV9XV0FOX0NUUkxcbiAgNDE6XHRcdHRyaXN0YXRlIFwmIzM0O01ISSBXV0FOIGNvbnRyb2wgZHJpdmVyIGZvciBRdWFsY29tbS1iYXNlZCBQQ0llIG1vZGVtc1wmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBNSElfQlVTXG4gIDQzOlx0XHRoZWxwXG4gIDQ0Olx0XHQgIE1ISSBXV0FOIENUUkwgYWxsb3dzIFFDT00tYmFzZWQgUENJZSBtb2RlbXMgdG8gZXhwb3NlIGRpZmZlcmVudCBtb2RlbVxuICA0NTpcdFx0ICBjb250cm9sIHByb3RvY29scy9wb3J0cyB0byB1c2Vyc3BhY2UsIGluY2x1ZGluZyBBVCwgTUJJTSwgUU1JLCBESUFHXG4gIDQ2Olx0XHQgIGFuZCBGSVJFSE9TRS4gVGhlc2UgcHJvdG9jb2xzIGNhbiBiZSBhY2Nlc3NlZCBkaXJlY3RseSBmcm9tIHVzZXJzcGFjZVxuICA0NzpcdFx0ICAoZS5nLiBBVCBjb21tYW5kcykgb3IgdmlhIGxpYnJhcmllcy90b29scyAoZS5nLiBsaWJtYmltLCBsaWJxbWksXG4gIDQ4Olx0XHQgIGxpYnFjZG0uLi4pLlxuICA0OTpcdFxuICA1MDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcbiAgNTE6XHRcdCAgY2FsbGVkIG1oaV93d2FuX2N0cmwuXG4gIDUyOlx0XG4gIDUzOlx0Y29uZmlnIE1ISV9XV0FOX01CSU1cbiAgNTQ6XHQgICAgICAgIHRyaXN0YXRlIFwmIzM0O01ISSBXV0FOIE1CSU0gbmV0d29yayBkcml2ZXIgZm9yIFF1YWxjb21tLWJhc2VkIFBDSWUgbW9kZW1zXCYjMzQ7XG4gIDU1Olx0ICAgICAgICBkZXBlbmRzIG9uIE1ISV9CVVNcbiAgNTY6XHQgICAgICAgIGhlbHBcbiAgNTc6XHQgICAgICAgICAgTUhJIFdXQU4gTUJJTSBpcyBhIFdXQU4gbmV0d29yayBkcml2ZXIgZm9yIFFDT00tYmFzZWQgUENJZSBtb2RlbXMuXG4gIDU4Olx0ICAgICAgICAgIEl0IGltcGxlbWVudHMgTUJJTSBvdmVyIE1ISSwgZm9yIElQIGRhdGEgYWdncmVnYXRpb24gYW5kIG11eGluZy5cbiAgNTk6XHQgICAgICAgICAgQSBkZWZhdWx0IHd3YW4wIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGNyZWF0ZWQgZm9yIE1CSU0gZGF0YSBzZXNzaW9uXG4gIDYwOlx0ICAgICAgICAgIElEIDAuIEFkZGl0aW9uYWwgbGlua3MgY2FuIGJlIGNyZWF0ZWQgdmlhIHd3YW4gcnRuZXRsaW5rIHR5cGUuXG4gIDYxOlx0XG4gIDYyOlx0ICAgICAgICAgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxuICA2MzpcdCAgICAgICAgICBjYWxsZWQgbWhpX3d3YW5fbWJpbS5cbiAgNjQ6XHRcbiAgNjU6XHRjb25maWcgUUNPTV9CQU1fRE1VWFxuICA2NjpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gQkFNLURNVVggV1dBTiBuZXR3b3JrIGRyaXZlclwmIzM0O1xuICA2NzpcdFx0ZGVwZW5kcyBvbiAoRE1BX0VOR0lORSBcdTAwMjZcdTAwMjYgUE0gXHUwMDI2XHUwMDI2IFFDT01fU01FTV9TVEFURSkgfHwgQ09NUElMRV9URVNUXG4gIDY4Olx0XHRoZWxwXG4gIDY5Olx0XHQgIFRoZSBCQU0gRGF0YSBNdWx0aXBsZXhlciBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIG5ldHdvcmsgZGF0YSBjaGFubmVsc1xuICA3MDpcdFx0ICBvZiBtb2RlbXMgaW50ZWdyYXRlZCBpbnRvIG1hbnkgb2xkZXIgUXVhbGNvbW0gU29DcywgZS5nLiBRdWFsY29tbVxuICA3MTpcdFx0ICBNU004OTE2IG9yIE1TTTg5NzQuIFRoZSBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCB2aWEgUU1JL0FUIGZyb21cbiAgNzI6XHRcdCAgdXNlcnNwYWNlIHdpdGggY29udHJvbCBwb3J0cyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgV1dBTiBzdWJzeXN0ZW1cbiAgNzM6XHRcdCAgKENPTkZJR19SUE1TR19XV0FOX0NUUkwpIG9yIFFSVFIgbmV0d29yayBzb2NrZXRzIChDT05GSUdfUVJUUikuXG4gIDc0Olx0XG4gIDc1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxuICA3NjpcdFx0ICBjYWxsZWQgcWNvbV9iYW1fZG11eC5cbiAgNzc6XHRcbiAgNzg6XHRjb25maWcgUlBNU0dfV1dBTl9DVFJMXG4gIDc5Olx0XHR0cmlzdGF0ZSBcJiMzNDtSUE1TRyBXV0FOIGNvbnRyb2wgZHJpdmVyXCYjMzQ7XG4gIDgwOlx0XHRkZXBlbmRzIG9uIFJQTVNHXG4gIDgxOlx0XHRoZWxwXG4gIDgyOlx0XHQgIFJQTVNHIFdXQU4gQ1RSTCBhbGxvd3MgbW9kZW1zIGF2YWlsYWJsZSB2aWEgUlBNU0cgY2hhbm5lbHMgdG8gZXhwb3NlXG4gIDgzOlx0XHQgIGRpZmZlcmVudCBtb2RlbSBwcm90b2NvbHMvcG9ydHMgdG8gdXNlcnNwYWNlLCBpbmNsdWRpbmcgQVQgYW5kIFFNSS5cbiAgODQ6XHRcdCAgVGhlc2UgcHJvdG9jb2xzIGNhbiBiZSBhY2Nlc3NlZCBkaXJlY3RseSBmcm9tIHVzZXJzcGFjZVxuICA4NTpcdFx0ICAoZS5nLiBBVCBjb21tYW5kcykgb3IgdmlhIGxpYnJhcmllcy90b29scyAoZS5nLiBsaWJxbWksIGxpYnFjZG0uLi4pLlxuICA4NjpcdFxuICA4NzpcdFx0ICBUaGlzIGlzIG1haW5seSB1c2VkIGZvciBtb2RlbXMgaW50ZWdyYXRlZCBpbnRvIG1hbnkgUXVhbGNvbW0gU29DcyxcbiAgODg6XHRcdCAgZS5nLiBmb3IgQVQgYW5kIFFNSSBvbiBRdWFsY29tbSBNU004OTE2IG9yIE1TTTg5NzQuIE5vdGUgdGhhdCBtYW55XG4gIDg5Olx0XHQgIG5ld2VyIFF1YWxjb21tIFNvQ3MgKGUuZy4gU0RNODQ1KSBzdGlsbCBwcm92aWRlIGFuIEFUIHBvcnQgdGhyb3VnaFxuICA5MDpcdFx0ICB0aGlzIGRyaXZlciBidXQgdGhlIFFNSSBtZXNzYWdlcyBjYW4gb25seSBiZSBzZW50IHRocm91Z2hcbiAgOTE6XHRcdCAgUVJUUiBuZXR3b3JrIHNvY2tldHMgKENPTkZJR19RUlRSKS5cbiAgOTI6XHRcbiAgOTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gIDk0Olx0XHQgIGNhbGxlZCBycG1zZ193d2FuX2N0cmwuXG4gIDk1Olx0XG4gIDk2Olx0Y29uZmlnIElPU01cbiAgOTc6XHRcdHRyaXN0YXRlIFwmIzM0O0lPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcJiMzNDtcbiAgOTg6XHRcdGRlcGVuZHMgb24gUENJXG4gIDk5Olx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAxMDA6XHRcdHNlbGVjdCBSRUxBWSBpZiBXV0FOX0RFQlVHRlNcbiAxMDE6XHRcdGhlbHBcbiAxMDI6XHRcdCAgVGhpcyBkcml2ZXIgZW5hYmxlcyBJbnRlbCBNLjIgV1dBTiBEZXZpY2UgY29tbXVuaWNhdGlvbi5cbiAxMDM6XHRcbiAxMDQ6XHRcdCAgSWYgeW91IGhhdmUgb25lIG9mIHRob3NlIEludGVsIE0uMiBXV0FOIE1vZHVsZXMgYW5kIHdpc2ggdG8gdXNlIGl0IGluXG4gMTA1Olx0XHQgIExpbnV4IHNheSBZL00gaGVyZS5cbiAxMDY6XHRcbiAxMDc6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxMDg6XHRcbiAxMDk6XHRjb25maWcgTVRLX1Q3WFhcbiAxMTA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRldmljZVwmIzM0O1xuIDExMTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAxMTI6XHRcdHNlbGVjdCBSRUxBWSBpZiBXV0FOX0RFQlVHRlNcbiAxMTM6XHRcdGhlbHBcbiAxMTQ6XHRcdCAgRW5hYmxlcyBNZWRpYVRlayBQQ0llIGJhc2VkIDVHIFdXQU4gbW9kZW0gKFQ3eHggc2VyaWVzKSBkZXZpY2UuXG4gMTE1Olx0XHQgIEFkYXB0cyBXV0FOIGZyYW1ld29yayBhbmQgcHJvdmlkZXMgbmV0d29yayBpbnRlcmZhY2UgbGlrZSB3d2FuMFxuIDExNjpcdFx0ICBhbmQgdHR5IGludGVyZmFjZXMgbGlrZSB3d2FuMGF0MCAoQVQgcHJvdG9jb2wpLCB3d2FuMG1iaW0wXG4gMTE3Olx0XHQgIChNQklNIHByb3RvY29sKSwgZXRjLlxuIDExODpcdFxuIDExOTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDc0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERyaXZlciBSZWFjaGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBzaXR1YXRpb24uIFdlJiMzOTt2ZSBnb3QgdHdvIGRyaXZlcnMgdG8gY29uc2lkZXIgaW4gdGVybXMgb2YgcmVhY2hhYmlsaXR5OiBgTUhJX1dXQU5fTUJJTWAuIEkga25vdyBgTUhJYCBzdGFuZHMgZm9yIE1vZGVtIEhvc3QgSW50ZXJmYWNlLCBhbmQgaXQmIzM5O3MgdXNlZCBmb3IgUXVhbGNvbW0gUENJZSBtb2RlbXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlIGRvZXMgdGhpcyBhY3R1YWxseSBsaXZlPyYjMzQ7IElzIGBNSElfV1dBTl9NQklNYCBkaXJlY3RseSB0aWVkIHRvIHBoeXNpY2FsIGhhcmR3YXJlIHRocm91Z2ggdGhlIGBNSElgIGJ1cywgb3IgYXJlIHRoZXJlIHZpcnR1YWwgY29uc3RydWN0cyBhdCBwbGF5PyBQZXJoYXBzIGFuIGVtdWxhdGVkIE1ISSBidXMgb3IgZXZlbiBzb21lIE1ISSBFUCBlbXVsYXRpb24gZ29pbmcgb24/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gcGlucG9pbnQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgaG93IHRvIGFjY2VzcyBpdHMgZnVuY3Rpb25hbGl0eS4gU28sIHRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSBleGFjdGx5IGhvdyB0aGUgTUhJIGJ1cyBhbmQgaXRzIGFzc29jaWF0ZWQgZGV2aWNlcyBhcmUgY3JlYXRlZCBpbiB0aGUgc3lzdGVtLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGVyZSBpcyBhICYjMzk7cmVhY2gmIzM5Oy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttaGlfZHJpdmVyX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZGVidWdmcy5jPTI5OD1pbnQgcWFpY19ib290bG9nX3JlZ2lzdGVyKHZvaWQpXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kZWJ1Z2ZzLmMtMjk5LXtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RlYnVnZnMuYzozMDA6XHRyZXR1cm4gbWhpX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZxYWljX2Jvb3Rsb2dfbWhpX2RyaXZlcik7XG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kZWJ1Z2ZzLmMtMzAxLX1cbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYz03NzY9c3RhdGljIGludCBfX2luaXQgcWFpY19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNzg1LVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6Nzg2Olx0cmV0ID0gbWhpX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZxYWljX21oaV9kcml2ZXIpO1xuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNzg3LVx0aWYgKHJldCkge1xuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6Nzg4Olx0XHRwcl9kZWJ1ZyhcJiMzNDtxYWljOiBtaGlfZHJpdmVyX3JlZ2lzdGVyIGZhaWxlZCAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTc4OS1cdFx0Z290byBmcmVlX3BjaTtcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19yYXMuYz02MzM9aW50IHFhaWNfcmFzX3JlZ2lzdGVyKHZvaWQpXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19yYXMuYy02MzQte1xuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfcmFzLmM6NjM1Olx0cmV0dXJuIG1oaV9kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2cWFpY19yYXNfbWhpX2RyaXZlcik7XG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19yYXMuYy02MzYtfVxuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3Nzci5jPTgwNz1pbnQgcWFpY19zc3JfcmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3Nzci5jLTgwOC17XG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19zc3IuYzo4MDk6XHRyZXR1cm4gbWhpX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZxYWljX3Nzcl9taGlfZHJpdmVyKTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3Nzci5jLTgxMC19XG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfdGltZXN5bmMuYz0zODg9aW50IHFhaWNfdGltZXN5bmNfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3RpbWVzeW5jLmMtMzkxLVxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfdGltZXN5bmMuYzozOTI6XHRyZXQgPSBtaGlfZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNnFhaWNfdGltZXN5bmNfZHJpdmVyKTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3RpbWVzeW5jLmMtMzkzLVx0aWYgKHJldClcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3RpbWVzeW5jLmMtMzk0LVx0XHRyZXR1cm4gcmV0O1xuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfdGltZXN5bmMuYzozOTU6XHRyZXQgPSBtaGlfZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNnFhaWNfYm9vdF90aW1lc3luY19kcml2ZXIpO1xuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfdGltZXN5bmMuYy0zOTYtXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL3NhaGFyYS5jPTkyNj1pbnQgc2FoYXJhX3JlZ2lzdGVyKHZvaWQpXG5kcml2ZXJzL2FjY2VsL3FhaWMvc2FoYXJhLmMtOTI3LXtcbmRyaXZlcnMvYWNjZWwvcWFpYy9zYWhhcmEuYzo5Mjg6XHRyZXR1cm4gbWhpX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZzYWhhcmFfbWhpX2RyaXZlcik7XG5kcml2ZXJzL2FjY2VsL3FhaWMvc2FoYXJhLmMtOTI5LX1cbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmM9MTMzMz1zdGF0aWMgdm9pZCBtaGlfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTQwMC1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYzoxNDAxOmludCBfX21oaV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1oaV9kcml2ZXIgKm1oaV9kcnYsIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTE0MDIte1xuLS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYy0xNDEyLX1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYzoxNDEzOkVYUE9SVF9TWU1CT0xfR1BMKF9fbWhpX2RyaXZlcl9yZWdpc3Rlcik7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTQxNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODEwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhpbmtpbmcgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1ISSBXV0FOIGFuZCBUN1hYIE5ldHdvcmsgRGV2aWNlIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtaGlfd3dhbl9tYmltLmNgIGFuZCBgdDd4eF9uZXRkZXYuY2Ag4oCTIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGFjdGlvbiBpcywgaXQgbG9va3MgbGlrZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgYWx3YXlzIHRvIHRyYWNlIHRoZSByZWdpc3RyYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIHRoYXQgYG1oaV93d2FuX21iaW1gIG1vZHVsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGJyb3VnaHQgb25saW5lLiBIb3cgaXMgdGhlIE1ISSBpbnRlcmZhY2UgaG9va2VkIGludG8gdGhlIE1CSU0gZnJhbWV3b3JrPyBBbmQgaG93IGRvZXMgdGhhdCBpbnRlcmFjdGlvbiB3aXRoIHRoZSB0N3h4IGhhcmR3YXJlIGFjdHVhbGx5IHRyYW5zbGF0ZSBpbnRvIGEgd29ya2luZyBuZXR3b3JrIGRldmljZT8gVGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGlzIGtleSDigJMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgZHJpdmVyIHNldHMgdXAgdGhlIGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGVzIHJlc291cmNlcywgYW5kIHByZXBhcmVzIGZvciBjb21tdW5pY2F0aW9uLiBHb3R0YSB1bmRlcnN0YW5kIHRoYXQgaW5pdGlhbCBoYW5kc2hha2UgdG8gdHJ1bHkgZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aG9zZSBmaWxlcyBhbmQgZmlndXJlIG91dCB0aGF0IHJlZ2lzdHJhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWhpX21iaW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ2OnN0cnVjdCBtaGlfbWJpbV9saW5rIHtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ3Olx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW07XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00OC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY0LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjU6c3RydWN0IG1oaV9tYmltX2NvbnRleHQge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjYtXHRzdHJ1Y3QgbWhpX2RldmljZSAqbWRldjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYz03OD1zdHJ1Y3QgbWJpbV90eF9oZHIge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTgzLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6ODQ6c3RhdGljIHN0cnVjdCBtaGlfbWJpbV9saW5rICptaGlfbWJpbV9nZXRfbGlua19yY3Uoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy04NS1cdFx0XHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgc2Vzc2lvbilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTg2LXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjg3Olx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbms7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy04OC1cbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy05Ni1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjk3OnN0YXRpYyBpbnQgbWhpX21iaW1fZ2V0X2xpbmtfbXV4X2lkKHN0cnVjdCBtaGlfY29udHJvbGxlciAqY250cmwpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy05OC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM9MTA3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWJpbV90eF9maXh1cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgc2Vzc2lvbixcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0xNTAtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoxNTE6c3RhdGljIG5ldGRldl90eF90IG1oaV9tYmltX25kb194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTUyLXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE1MzpcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE1NDpcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gbGluay1cdTAwM2VtYmltO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTU1LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0xOTItXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoxOTM6c3RhdGljIGludCBtYmltX3J4X3ZlcmlmeV9udGgxNihzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE5NC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM9MjMxPXN0YXRpYyBpbnQgbWJpbV9yeF92ZXJpZnlfbmRwMTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2ICpuZHAxNilcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNTMtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoyNTQ6c3RhdGljIHZvaWQgbWhpX21iaW1fcnhfZHJvcChzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTI1NS17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMjYxLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MjYyOnN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMjYzLXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNzYtXHRcdHN0cnVjdCB1c2JfY2RjX25jbV9kcGUxNiBkcGUxNjtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjI3NzpcdFx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbms7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNzgtXHRcdGludCBuZnJhbWVzLCBuLCBkcGVvZmZzZXQ7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMzA0LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MzA1Olx0XHRsaW5rID0gbWhpX21iaW1fZ2V0X2xpbmtfcmN1KG1iaW0sIHNlc3Npb24pO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMzA2LVx0XHRpZiAoIWxpbmspIHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zMzEtXHRcdFx0aWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXHUwMDNlZGF0YSwgZGdyYW1fbGVuKSkge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MzMyOlx0XHRcdFx0bWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTMzMy1cdFx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM0NS1cdFx0XHRcdFx0XHQgICAgbGluay1cdTAwM2VuZGV2LVx1MDAzZW5hbWUpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MzQ2Olx0XHRcdFx0bWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM0Ny1cdFx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM3Ni1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjM3NzpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm1oaV9uZXRfc2tiX2FnZyhzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM3OC1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jPTQwMz1zdGF0aWMgdm9pZCBtaGlfbmV0X3J4X3JlZmlsbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQwNC17XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0MDU6XHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQwNi1cdFx0XHRcdFx0XHQgICAgIHJ4X3JlZmlsbC53b3JrKTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MzMtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0MzQ6c3RhdGljIHZvaWQgbWhpX21iaW1fZGxfY2FsbGJhY2soc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MzUtXHRcdFx0XHQgc3RydWN0IG1oaV9yZXN1bHQgKm1oaV9yZXMpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MzYte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDM3Olx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWhpX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDM4LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IG1oaV9yZXMtXHUwMDNlYnVmX2FkZHI7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDY2LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDY3Olx0XHRtaGlfbWJpbV9yeChtYmltLCBza2IpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDY4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ3NC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ3NTpzdGF0aWMgdm9pZCBtaGlfbWJpbV9uZG9fZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NzYtXHRcdFx0XHQgICAgIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqc3RhdHMpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00Nzcte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDc4Olx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDc5LVx0dW5zaWduZWQgaW50IHN0YXJ0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ5Ni1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ5NzpzdGF0aWMgdm9pZCBtaGlfbWJpbV91bF9jYWxsYmFjayhzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2RldixcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ5OC1cdFx0XHRcdCBzdHJ1Y3QgbWhpX3Jlc3VsdCAqbWhpX3JlcylcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ5OS17XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1MDA6XHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtaGlfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MDEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gbWhpX3Jlcy1cdTAwM2VidWZfYWRkcjtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUwMi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gc2tiLVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUwMzpcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUwNC1cbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MjgtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1Mjk6c3RhdGljIGludCBtaGlfbWJpbV9uZG9fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUzMC17XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1MzE6XHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluayA9IHd3YW5fbmV0ZGV2X2RydnByaXYobmRldik7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MzItXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTQzLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTQ0OnN0YXRpYyBpbnQgbWhpX21iaW1fbmRvX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NDUte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU1MS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1MjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1oaV9tYmltX25kbyA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1MzpcdC5uZG9fb3BlbiA9IG1oaV9tYmltX25kb19vcGVuLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU0Olx0Lm5kb19zdG9wID0gbWhpX21iaW1fbmRvX3N0b3AsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NTU6XHQubmRvX3N0YXJ0X3htaXQgPSBtaGlfbWJpbV9uZG9feG1pdCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1NjpcdC5uZG9fZ2V0X3N0YXRzNjQgPSBtaGlfbWJpbV9uZG9fZ2V0X3N0YXRzNjQsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NTctfTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU1OC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1OTpzdGF0aWMgaW50IG1oaV9tYmltX25ld2xpbmsodm9pZCAqY3R4dCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBpZl9pZCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2MC1cdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTYxLXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU2MjpcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU2MzpcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gY3R4dDtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2NC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2NS1cdGxpbmstXHUwMDNlbWJpbSA9IG1iaW07XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NjY6XHRsaW5rLVx1MDAzZXNlc3Npb24gPSBtaGlfbWJpbV9nZXRfbGlua19tdXhfaWQobGluay1cdTAwM2VtYmltLVx1MDAzZW1kZXYtXHUwMDNlbWhpX2NudHJsKSAmIzQzOyBpZl9pZDtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2Ny1cdGxpbmstXHUwMDNlbmRldiA9IG5kZXY7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTcxLVx0cmN1X3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTcyOlx0aWYgKG1oaV9tYmltX2dldF9saW5rX3JjdShtYmltLCBpZl9pZCkpIHtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU3My1cdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTgzLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTg0OnN0YXRpYyB2b2lkIG1oaV9tYmltX2RlbGxpbmsodm9pZCAqY3R4dCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01ODUtXHRcdFx0ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTg2LXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU4NzpcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU4OC1cbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01OTQtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1OTU6c3RhdGljIHZvaWQgbWhpX21iaW1fc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01OTYte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYwMi1cdG5kZXYtXHUwMDNlZmxhZ3MgPSBJRkZfUE9JTlRPUE9JTlQgfCBJRkZfTk9BUlA7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MDM6XHRuZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZtaGlfbWJpbV9uZG87XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MDQtXHRuZGV2LVx1MDAzZW10dSA9IE1ISV9NQklNX0RFRkFVTFRfTVRVO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxMC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxMTpzdGF0aWMgY29uc3Qgc3RydWN0IHd3YW5fb3BzIG1oaV9tYmltX3d3YW5fb3BzID0ge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjEyOlx0LnByaXZfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgbWhpX21iaW1fbGluayksXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTM6XHQuc2V0dXAgPSBtaGlfbWJpbV9zZXR1cCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxNDpcdC5uZXdsaW5rID0gbWhpX21iaW1fbmV3bGluayxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxNTpcdC5kZWxsaW5rID0gbWhpX21iaW1fZGVsbGluayxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxNi19O1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjE3LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjE4OnN0YXRpYyBpbnQgbWhpX21iaW1fcHJvYmUoc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYsIGNvbnN0IHN0cnVjdCBtaGlfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxOS17XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MjAtXHRzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKmNudHJsID0gbWhpX2Rldi1cdTAwM2VtaGlfY250cmw7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MjE6XHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYyMi1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQzLVx0LyogUmVnaXN0ZXIgd3dhbiBsaW5rIG9wcyB3aXRoIE1ISSBjb250cm9sbGVyIHJlcHJlc2VudGluZyBXV0FOIGluc3RhbmNlICovXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NDQ6XHRyZXR1cm4gd3dhbl9yZWdpc3Rlcl9vcHMoXHUwMDI2Y250cmwtXHUwMDNlbWhpX2Rldi1cdTAwM2VkZXYsIFx1MDAyNm1oaV9tYmltX3d3YW5fb3BzLCBtYmltLCAwKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY0NS19XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NDYtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NDc6c3RhdGljIHZvaWQgbWhpX21iaW1fcmVtb3ZlKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2KVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQ4LXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY0OTpcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1oaV9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY1MC1cdHN0cnVjdCBtaGlfY29udHJvbGxlciAqY250cmwgPSBtaGlfZGV2LVx1MDAzZW1oaV9jbnRybDtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NTgtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NTk6c3RhdGljIGNvbnN0IHN0cnVjdCBtaGlfZGV2aWNlX2lkIG1oaV9tYmltX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NjAtXHQvKiBIYXJkd2FyZSBhY2NlbGVyYXRlZCBkYXRhIFBBVEggKHRvIG1vZGVtIElQQSksIE1CSU0gcHJvdG9jb2wgKi9cbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NjMtfTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2NDpNT0RVTEVfREVWSUNFX1RBQkxFKG1oaSwgbWhpX21iaW1faWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjY1LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjY2OnN0YXRpYyBzdHJ1Y3QgbWhpX2RyaXZlciBtaGlfbWJpbV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njc6XHQucHJvYmUgPSBtaGlfbWJpbV9wcm9iZSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2ODpcdC5yZW1vdmUgPSBtaGlfbWJpbV9yZW1vdmUsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njk6XHQuZGxfeGZlcl9jYiA9IG1oaV9tYmltX2RsX2NhbGxiYWNrLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjcwOlx0LnVsX3hmZXJfY2IgPSBtaGlfbWJpbV91bF9jYWxsYmFjayxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY3MTpcdC5pZF90YWJsZSA9IG1oaV9tYmltX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjcyLVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NzYtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Nzc6bW9kdWxlX21oaV9kcml2ZXIobWhpX21iaW1fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY3OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1MDIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0JiMzOTtzIGdvaW5nIHRocm91Z2ggbXkgbWluZCwgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBEZWVwZXI6IEV4cGxvcmluZyBgdDd4eF9uZXRkZXYuY2AgYW5kIGBtdGtfdDd4eGAqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMgaGVyZSwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgVDd4eCBhcmNoaXRlY3R1cmUsIHdoaWNoLCBmcm9tIHdoYXQgSSBrbm93LCBpcyBsaWtlbHkgYSBNZWRpYVRlayBwbGF0Zm9ybS4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoaXMgcGFydGljdWxhciBuZXR3b3JrIGRldmljZSBpcyBoYW5kbGVkIGluIHRoZSBrZXJuZWwuIExldCYjMzk7cyBkaWcgaW50byBgdDd4eF9uZXRkZXYuY2Ag4oCTIHRoYXQgZmlsZSBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgZHJpdmVyIGNvZGUgcmVzaWRlcyBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4gSSBzdXNwZWN0IGl0JiMzOTtsbCBjb250YWluIHRoaW5ncyBsaWtlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBpbnRlcnJ1cHQgaGFuZGxlcnMsIGFuZCBhbGwgdGhlIGxvdy1sZXZlbCBsb2dpYyB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgaGFyZHdhcmUuCgpUaGVuLCB0aGVyZSYjMzk7cyBgbXRrX3Q3eHhgLCB3aGljaCBJJiMzOTttIGJldHRpbmcgaXMgYSBicm9hZGVyIG1vZHVsZSBvciBwZXJoYXBzIGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgKEhBTCkgdGFpbG9yZWQgdG8gTWVkaWFUZWsmIzM5O3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIFQ3eHggY2hpcHNldC4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0ZGV2IGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGF0IEhBTC4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBsYXllcnMgb2YgYWJzdHJhY3Rpb24gaGVyZSB0byByZWFsbHkgZ3Jhc3AgdGhlIGRhdGEgZmxvdyBhbmQgaG93IHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyBhY3R1YWxseSBtYW5hZ2VkLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgY29tbW9uIHBhdHRlcm5zLCBhbnkgcXVpcmtzIG9yIG9wdGltaXphdGlvbnMgc3BlY2lmaWMgdG8gdGhlIFQ3eHggcGxhdGZvcm0sIGFuZCBob3cgdGhleSBkZXZpYXRlIGZyb20sIG9yIGFkaGVyZSB0bywgdGhlIHN0YW5kYXJkIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBtb2RlbC4gVGhpcyB3aWxsIHByb3ZpZGUgYSBjcnVjaWFsIGluc2lnaHQgaW50byBkZXNpZ24gY2hvaWNlcyBhbmQgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4gSXQmIzM5O3MgYSBrZXkgcGFydCBvZiB0aGUgcHV6emxlIGZvciB1bmRlcnN0YW5kaW5nIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dDd4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vdDd4eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTUyMCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MzpvYmotJHtDT05GSUdfTVRLX1Q3WFh9IDo9IG10a190N3h4Lm9cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZTo0Om10a190N3h4LXk6PVx0dDd4eF9wY2kubyBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjU6XHRcdHQ3eHhfcGNpZV9tYWMubyBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjY6XHRcdHQ3eHhfbWhjY2lmLm8gXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZTo3Olx0XHR0N3h4X3N0YXRlX21vbml0b3IubyAgXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZTo4Olx0XHR0N3h4X21vZGVtX29wcy5vIFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6OTpcdFx0dDd4eF9jbGRtYS5vIFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTA6XHRcdHQ3eHhfaGlmX2NsZG1hLm8gIFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTE6XHRcdHQ3eHhfcG9ydF9wcm94eS5vICBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjEyOlx0XHR0N3h4X3BvcnRfY3RybF9tc2cubyBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjEzOlx0XHR0N3h4X3BvcnRfd3dhbi5vIFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTQ6XHRcdHQ3eHhfaGlmX2RwbWFpZi5vICBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjE1Olx0XHR0N3h4X2hpZl9kcG1haWZfdHgubyBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjE2Olx0XHR0N3h4X2hpZl9kcG1haWZfcngubyAgXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZToxNzpcdFx0dDd4eF9kcG1haWYubyBcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjE4Olx0XHR0N3h4X25ldGRldi5vXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGUtMTktXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MjA6bXRrX3Q3eHgtJChDT05GSUdfV1dBTl9ERUJVR0ZTKSAmIzQzOz0gXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZToyMTpcdFx0dDd4eF9wb3J0X3RyYWNlLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTIzLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoyNDojaW5jbHVkZSBcJiMzNDt0N3h4X2NsZG1hLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjUtXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yNy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6Mjg6dm9pZCB0N3h4X2NsZG1hX2NsZWFyX2lwX2J1c3koc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI5LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTM3LS8qKlxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzozODogKiB0N3h4X2NsZG1hX2h3X3Jlc3RvcmUoKSAtIFJlc3RvcmUgQ0xETUEgSFcgcmVnaXN0ZXJzLlxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzozOTogKiBAaHdfaW5mbzogUG9pbnRlciB0byBzdHJ1Y3QgdDd4eF9jbGRtYV9ody5cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNDAtICpcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTQyLSAqL1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzo0Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfcmVzdG9yZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNDQte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNjItXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjYzOnZvaWQgdDd4eF9jbGRtYV9od19zdGFydF9xdWV1ZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNjQtXHRcdFx0ICAgICAgIGVudW0gbXRrX3R4cnggdHhfcngpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy03NC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6NzU6dm9pZCB0N3h4X2NsZG1hX2h3X3N0YXJ0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy03Ni17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy04NC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6ODU6dm9pZCB0N3h4X2NsZG1hX2h3X3Jlc2V0KHZvaWQgX19pb21lbSAqYW9fYmFzZSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtODYte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTA0LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxMDU6Ym9vbCB0N3h4X2NsZG1hX3R4X2FkZHJfaXNfc2V0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xMDYte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTExLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxMTI6dm9pZCB0N3h4X2NsZG1hX2h3X3NldF9zdGFydF9hZGRyKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLCB1NjQgYWRkcmVzcyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTEzLVx0XHRcdFx0ICBlbnVtIG10a190eHJ4IHR4X3J4KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTIyLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxMjM6dm9pZCB0N3h4X2NsZG1hX2h3X3Jlc3VtZV9xdWV1ZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTI0LVx0XHRcdFx0ZW51bSBtdGtfdHhyeCB0eF9yeClcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTEzMy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MTM0OnVuc2lnbmVkIGludCB0N3h4X2NsZG1hX2h3X3F1ZXVlX3N0YXR1cyhzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTM1LVx0XHRcdFx0XHRlbnVtIG10a190eHJ4IHR4X3J4KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTQ3LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxNDg6dm9pZCB0N3h4X2NsZG1hX2h3X3R4X2RvbmUoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBiaXRtYXNrKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xNDkte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTU4LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxNTk6dm9pZCB0N3h4X2NsZG1hX2h3X3J4X2RvbmUoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBiaXRtYXNrKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xNjAte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTY5LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxNzA6dW5zaWduZWQgaW50IHQ3eHhfY2xkbWFfaHdfaW50X3N0YXR1cyhzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IGJpdG1hc2ssXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTE3MS1cdFx0XHRcdCAgICAgIGVudW0gbXRrX3R4cnggdHhfcngpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xODEtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjE4Mjp2b2lkIHQ3eHhfY2xkbWFfaHdfaXJxX2Rpc190eHJ4KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xODMtXHRcdFx0XHRlbnVtIG10a190eHJ4IHR4X3J4KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTkzLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxOTQ6dm9pZCB0N3h4X2NsZG1hX2h3X2lycV9kaXNfZXEoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sIGVudW0gbXRrX3R4cnggdHhfcngpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTE5NS17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yMDQtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjIwNTp2b2lkIHQ3eHhfY2xkbWFfaHdfaXJxX2VuX3R4cngoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTIwNi1cdFx0XHQgICAgICAgZW51bSBtdGtfdHhyeCB0eF9yeClcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTIxNi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MjE3OnZvaWQgdDd4eF9jbGRtYV9od19pcnFfZW5fZXEoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sIGVudW0gbXRrX3R4cnggdHhfcngpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTIxOC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yMjgtLyoqXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjIyOTogKiB0N3h4X2NsZG1hX2h3X2luaXQoKSAtIEluaXRpYWxpemUgQ0xETUEgSFcuXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjIzMDogKiBAaHdfaW5mbzogUG9pbnRlciB0byBzdHJ1Y3QgdDd4eF9jbGRtYV9ody5cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjMxLSAqXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yMzMtICovXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjIzNDp2b2lkIHQ3eHhfY2xkbWFfaHdfaW5pdChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjM1LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI2My1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MjY0OnZvaWQgdDd4eF9jbGRtYV9od19zdG9wX2FsbF9xcyhzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgZW51bSBtdGtfdHhyeCB0eF9yeClcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjY1LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI3Mi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MjczOnZvaWQgdDd4eF9jbGRtYV9od19zdG9wKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCBlbnVtIG10a190eHJ4IHR4X3J4KVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yNzQte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg9MTM0PWVudW0gbXRrX3R4cngge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTM4LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxMzk6ZW51bSB0N3h4X2h3X21vZGUge1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNDAtXHRNT0RFX0JJVF8zMixcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE0NS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTQ2OnN0cnVjdCB0N3h4X2NsZG1hX2h3IHtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTQ3Olx0ZW51bSB0N3h4X2h3X21vZGVcdFx0aHdfbW9kZTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTQ4LVx0dm9pZCBfX2lvbWVtXHRcdFx0KmFwX2FvX2Jhc2U7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNTItXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE1Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfaXJxX2Rpc190eHJ4KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNTQtXHRcdFx0XHRlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTU1OnZvaWQgdDd4eF9jbGRtYV9od19pcnFfZGlzX2VxKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNTYtXHRcdFx0ICAgICAgZW51bSBtdGtfdHhyeCB0eF9yeCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE1Nzp2b2lkIHQ3eHhfY2xkbWFfaHdfaXJxX2VuX3R4cngoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE1OC1cdFx0XHQgICAgICAgZW51bSBtdGtfdHhyeCB0eF9yeCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE1OTp2b2lkIHQ3eHhfY2xkbWFfaHdfaXJxX2VuX2VxKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLCBlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTYwOnVuc2lnbmVkIGludCB0N3h4X2NsZG1hX2h3X3F1ZXVlX3N0YXR1cyhzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTYxLVx0XHRcdFx0XHRlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTYyOnZvaWQgdDd4eF9jbGRtYV9od19pbml0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTYzOnZvaWQgdDd4eF9jbGRtYV9od19yZXN1bWVfcXVldWUoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE2NC1cdFx0XHRcdGVudW0gbXRrX3R4cnggdHhfcngpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNjU6dm9pZCB0N3h4X2NsZG1hX2h3X3N0YXJ0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTY2OnZvaWQgdDd4eF9jbGRtYV9od19zdGFydF9xdWV1ZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTY3LVx0XHRcdCAgICAgICBlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTY4OnZvaWQgdDd4eF9jbGRtYV9od190eF9kb25lKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgYml0bWFzayk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE2OTp2b2lkIHQ3eHhfY2xkbWFfaHdfcnhfZG9uZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IGJpdG1hc2spO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNzA6dm9pZCB0N3h4X2NsZG1hX2h3X3N0b3BfYWxsX3FzKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCBlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTcxOnZvaWQgdDd4eF9jbGRtYV9od19zZXRfc3RhcnRfYWRkcihzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTcyLVx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgcW5vLCB1NjQgYWRkcmVzcywgZW51bSBtdGtfdHhyeCB0eF9yeCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE3Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfcmVzZXQodm9pZCBfX2lvbWVtICphb19iYXNlKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc0OnZvaWQgdDd4eF9jbGRtYV9od19zdG9wKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCBlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc1OnVuc2lnbmVkIGludCB0N3h4X2NsZG1hX2h3X2ludF9zdGF0dXMoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBiaXRtYXNrLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNzYtXHRcdFx0XHQgICAgICBlbnVtIG10a190eHJ4IHR4X3J4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc3OnZvaWQgdDd4eF9jbGRtYV9od19yZXN0b3JlKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc4OnZvaWQgdDd4eF9jbGRtYV9jbGVhcl9pcF9idXN5KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc5OmJvb2wgdDd4eF9jbGRtYV90eF9hZGRyX2lzX3NldChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE4MC0jZW5kaWZcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI4OiNpbmNsdWRlIFwmIzM0O3Q3eHhfZHBtYWlmLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI5OiNpbmNsdWRlIFwmIzM0O3Q3eHhfcmVnLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTMwLVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTMzLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzQ6c3RhdGljIGludCB0N3h4X2RwbWFpZl9pbml0X2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzUte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTgxLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODI6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfbWFza191bHFfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxX251bSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTgzLXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMDEtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoxMDI6dm9pZCB0N3h4X2RwbWFpZl91bm1hc2tfdWxxX2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcV9udW0pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMDMte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTEyMS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjEyMjp2b2lkIHQ3eHhfZHBtYWlmX2RsX3VubWFza19iYXRjbnRfbGVuX2Vycl9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTEyMy17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTI3LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MTI4OnZvaWQgdDd4eF9kcG1haWZfZGxfdW5tYXNrX3BpdGNudF9sZW5fZXJyX2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTI5LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMzMtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoxMzQ6c3RhdGljIHUzMiB0N3h4X3VwZGF0ZV9kbHFfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHUzMiBxX2RvbmUpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMzUte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE0Mi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE0MzpzdGF0aWMgaW50IHQ3eHhfbWFza19kbHFfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xNDQte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE1MC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE1MTpcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0X2F0b21pYyh0N3h4X3VwZGF0ZV9kbHFfaW50ciwgdmFsdWUsIHZhbHVlIFx1MDAyNiBxX2RvbmUsXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xNTItXHRcdFx0XHQgICAgICAgMCwgRFBNQUlGX0NIRUNLX1RJTUVPVVRfVVMsIGZhbHNlLCBod19pbmZvLCBxX2RvbmUpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE2My1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE2NDp2b2lkIHQ3eHhfZHBtYWlmX2RscV91bm1hc2tfcnhfZG9uZShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xNjUte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE3Mi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE3Mzp2b2lkIHQ3eHhfZHBtYWlmX2Nscl9pcF9idXN5X3N0cyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xNzQte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE4MC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE4MTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbHFfbWFza19yeF9waXRjbnRfbGVuX2Vycl9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE4Mi1cdFx0XHRcdFx0XHRcdHVuc2lnbmVkIGludCBxbm8pXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTkxLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MTkyOnZvaWQgdDd4eF9kcG1haWZfZGxxX3VubWFza19waXRjbnRfbGVuX2Vycl9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE5My1cdFx0XHRcdFx0XHR1bnNpZ25lZCBpbnQgcW5vKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIwMi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjIwMzp2b2lkIHQ3eHhfZHBtYWlmX3VsX2Nscl9hbGxfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMDQte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIwNy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjIwODp2b2lkIHQ3eHhfZHBtYWlmX2RsX2Nscl9hbGxfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMDkte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIxMi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjIxMzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHN0cnVjdCBkcG1haWZfaHdfaW50cl9zdF9wYXJhICpwYXJhLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjE0LVx0XHRcdFx0ICAgICAgZW51bSBkcG1haWZfaHdfaW50cl90eXBlIGludHJfdHlwZSwgdW5zaWduZWQgaW50IGludHJfcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjIzLSAqL1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjI0OnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2h3X2NoZWNrX3R4X2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjI1LVx0XHRcdFx0XHQgdW5zaWduZWQgaW50IGludHJfc3RhdHVzLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIzMy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjIzNDpcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9VTF9ET05FLCB2YWx1ZSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMzUtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMzYtXHRcdGZvcl9lYWNoX3NldF9iaXQoaW5kZXgsIFx1MDAyNnZhbHVlLCBEUE1BSUZfVFhRX05VTSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjIzNzpcdFx0XHR0N3h4X2RwbWFpZl9tYXNrX3VscV9pbnRyKGh3X2luZm8sIGluZGV4KTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIzOC1cdH1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNDEtXHRpZiAodmFsdWUpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyNDI6XHRcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfVUxfRFJCX0VNUFRZLCB2YWx1ZSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNDMtXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjQ1LVx0aWYgKHZhbHVlKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjQ2Olx0XHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX1VMX01EX05PVFJFQURZLCB2YWx1ZSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNDctXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjQ5LVx0aWYgKHZhbHVlKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjUwOlx0XHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX1VMX01EX1BXUl9OT1RSRUFEWSwgdmFsdWUpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjUxLVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI1My1cdGlmICh2YWx1ZSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI1NDpcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9VTF9MRU5fRVJSLCB2YWx1ZSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNTUtXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjYyLSAqL1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjYzOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2h3X2NoZWNrX3J4X2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjY0LVx0XHRcdFx0XHQgdW5zaWduZWQgaW50IGludHJfc3RhdHVzLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI2OC1cdFx0aWYgKGludHJfc3RhdHVzIFx1MDAyNiBEUF9ETF9JTlRfU0tCX0xFTl9FUlIpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyNjk6XHRcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9TS0JfTEVOX0VSUiwgRFBGX1JYX1FOT19ERlQpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjcwLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjcxLVx0XHRpZiAoaW50cl9zdGF0dXMgXHUwMDI2IERQX0RMX0lOVF9CQVRDTlRfTEVOX0VSUikge1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjcyOlx0XHRcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfQkFUQ05UX0xFTl9FUlIsIERQRl9SWF9RTk9fREZUKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI3My1cdFx0XHRod19pbmZvLVx1MDAzZWlzcl9lbl9tYXNrLmFwX2RsX2wyaW50cl9lbl9tc2sgXHUwMDI2PSB+RFBfRExfSU5UX0JBVENOVF9MRU5fRVJSO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI3OC1cdFx0aWYgKGludHJfc3RhdHVzIFx1MDAyNiBEUF9ETF9JTlRfUElUQ05UX0xFTl9FUlIpIHtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI3OTpcdFx0XHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX1BJVENOVF9MRU5fRVJSLCBEUEZfUlhfUU5PX0RGVCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yODAtXHRcdFx0aHdfaW5mby1cdTAwM2Vpc3JfZW5fbWFzay5hcF9kbF9sMmludHJfZW5fbXNrIFx1MDAyNj0gfkRQX0RMX0lOVF9QSVRDTlRfTEVOX0VSUjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yODUtXHRcdGlmIChpbnRyX3N0YXR1cyBcdTAwMjYgRFBfRExfSU5UX1BLVF9FTVBUWV9NU0spXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyODY6XHRcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9QS1RfRU1QVFlfU0VULCBEUEZfUlhfUU5PX0RGVCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yODctXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yODgtXHRcdGlmIChpbnRyX3N0YXR1cyBcdTAwMjYgRFBfRExfSU5UX0ZSR19FTVBUWV9NU0spXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyODk6XHRcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9GUkdfRU1QVFlfU0VULCBEUEZfUlhfUU5PX0RGVCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yOTAtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yOTEtXHRcdGlmIChpbnRyX3N0YXR1cyBcdTAwMjYgRFBfRExfSU5UX01UVV9FUlJfTVNLKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjkyOlx0XHRcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfTVRVX0VSUiwgRFBGX1JYX1FOT19ERlQpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjkzLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjk0LVx0XHRpZiAoaW50cl9zdGF0dXMgXHUwMDI2IERQX0RMX0lOVF9GUkdfTEVOX0VSUl9NU0spXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyOTU6XHRcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9GUkdDTlRfTEVOX0VSUiwgRFBGX1JYX1FOT19ERlQpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjk2LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjk3LVx0XHRpZiAoaW50cl9zdGF0dXMgXHUwMDI2IERQX0RMX0lOVF9RMF9QSVRDTlRfTEVOX0VSUikge1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Mjk4Olx0XHRcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfUTBfUElUQ05UX0xFTl9FUlIsIEJJVChxbm8pKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI5OTpcdFx0XHR0N3h4X2RwbWFpZl9kbHFfbWFza19yeF9waXRjbnRfbGVuX2Vycl9pbnRyKGh3X2luZm8sIHFubyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMDAtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMDItXHRcdGlmIChpbnRyX3N0YXR1cyBcdTAwMjYgRFBfRExfSU5UX0hQQ19FTlRfVFlQRV9FUlIpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzozMDM6XHRcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9IUENfRU5UX1RZUEVfRVJSLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzA0LVx0XHRcdFx0XHRcdCAgRFBGX1JYX1FOT19ERlQpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTMwOS1cdFx0XHQgKi9cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMxMDpcdFx0XHRpZiAoIXQ3eHhfbWFza19kbHFfaW50cihod19pbmZvLCBxbm8pKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzExOlx0XHRcdFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9RMF9ET05FLCBCSVQocW5vKSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMTItXHRcdFx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTMxNi1cdFx0aWYgKGludHJfc3RhdHVzIFx1MDAyNiBEUF9ETF9JTlRfUTFfUElUQ05UX0xFTl9FUlIpIHtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMxNzpcdFx0XHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX1ExX1BJVENOVF9MRU5fRVJSLCBCSVQocW5vKSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzozMTg6XHRcdFx0dDd4eF9kcG1haWZfZGxxX21hc2tfcnhfcGl0Y250X2xlbl9lcnJfaW50cihod19pbmZvLCBxbm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzE5LVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzIxLVx0XHRpZiAoaW50cl9zdGF0dXMgXHUwMDI2IERQX0RMX0lOVF9RMV9ET05FKSB7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzozMjI6XHRcdFx0aWYgKCF0N3h4X21hc2tfZGxxX2ludHIoaHdfaW5mbywgcW5vKSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMyMzpcdFx0XHRcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfUTFfRE9ORSwgQklUKHFubykpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzI0LVx0XHRcdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMzQtLyoqXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzozMzU6ICogdDd4eF9kcG1haWZfaHdfZ2V0X2ludHJfY250KCkgLSBSZWFkcyBpbnRlcnJ1cHQgc3RhdHVzIGFuZCBjb3VudCBmcm9tIEhXLlxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzM2LSAqIEBod19pbmZvOiBQb2ludGVyIHRvIHN0cnVjdCBod19pbmZvLlxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM0My0gKi9cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjM0NDppbnQgdDd4eF9kcG1haWZfaHdfZ2V0X2ludHJfY250KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM0NS1cdFx0XHRcdHN0cnVjdCBkcG1haWZfaHdfaW50cl9zdF9wYXJhICpwYXJhLCBpbnQgcW5vKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM2MS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjM2MjpcdHQ3eHhfZHBtYWlmX2Nscl9pcF9idXN5X3N0cyhod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM2My1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zNjktXHRcdGlmICh0eF9pbnRyX3N0YXR1cylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjM3MDpcdFx0XHR0N3h4X2RwbWFpZl9od19jaGVja190eF9pbnRyKGh3X2luZm8sIHR4X2ludHJfc3RhdHVzLCBwYXJhKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM3MS1cdH1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zODctXHRcdGlmIChyeF9pbnRyX3N0YXR1cylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjM4ODpcdFx0XHR0N3h4X2RwbWFpZl9od19jaGVja19yeF9pbnRyKGh3X2luZm8sIHJ4X2ludHJfc3RhdHVzLCBwYXJhLCBxbm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzg5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM5My1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjM5NDpzdGF0aWMgaW50IHQ3eHhfZHBtYWlmX3NyYW1faW5pdChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zOTUte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQwNi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQwNzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19yZXNldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00MDgte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQxOC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQxOTpzdGF0aWMgaW50IHQ3eHhfZHBtYWlmX2h3X2NvbmZpZyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00MjAte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQyMy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQyNDpcdHQ3eHhfZHBtYWlmX2h3X3Jlc2V0KGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDI1LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NDI2Olx0cmV0ID0gdDd4eF9kcG1haWZfc3JhbV9pbml0KGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDI3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00MzYtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0Mzc6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfcGNpZV9kcG1haWZfc2lnbihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00Mzgte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ0MS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQ0MjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9wZXJmb3JtYW5jZShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00NDMte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ1Ni1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQ1NzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19ocGNfY250bF9zZXQoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDU4LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00NjYtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0Njc6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfYWdnX2NmZ19zZXQoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDY4LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00NzQtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0NzU6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfaGFzaF9iaXRfY2hvb3NlX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00NzYte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ4MC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQ4MTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19taWRfcGl0X3RpbWVvdXRfdGhyZXNfc2V0KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ4Mi17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDg1LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NDg2OnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2h3X2RscV90aW1lb3V0X3RocmVzX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00ODcte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ5OS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwMDpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19kbHFfc3RhcnRfcHJzX3RocmVzX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01MDEte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTUwNC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwNTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9kbHFfaHBjX2h3X2luaXQoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTA2LXtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwNzpcdHQ3eHhfZHBtYWlmX2h3X2hwY19jbnRsX3NldChod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwODpcdHQ3eHhfZHBtYWlmX2h3X2FnZ19jZmdfc2V0KGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NTA5Olx0dDd4eF9kcG1haWZfaHdfaGFzaF9iaXRfY2hvb3NlX3NldChod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUxMDpcdHQ3eHhfZHBtYWlmX2h3X21pZF9waXRfdGltZW91dF90aHJlc19zZXQoaHdfaW5mbyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1MTE6XHR0N3h4X2RwbWFpZl9od19kbHFfdGltZW91dF90aHJlc19zZXQoaHdfaW5mbyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1MTI6XHR0N3h4X2RwbWFpZl9od19kbHFfc3RhcnRfcHJzX3RocmVzX3NldChod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTUxMy19XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01MTQtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1MTU6c3RhdGljIGludCB0N3h4X2RwbWFpZl9kbF9iYXRfaW5pdF9kb25lKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbywgYm9vbCBmcmdfZW4pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01MTYte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU0NC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU0NTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYmF0X2Jhc2VfYWRkcihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01NDYtXHRcdFx0XHRcdCAgICAgZG1hX2FkZHJfdCBhZGRyKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU1MS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU1MjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYmF0X3NpemUoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU1My17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTYxLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NTYyOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX2JhdF9lbihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTYzLXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01NzUtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1NzY6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX2JpZF9tYXhjbnQoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTc3LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01ODUtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1ODY6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX210dShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01ODcte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU5MC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU5MTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYW9fcGl0X2Noa251bShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01OTIte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYwMC1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjYwMTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYW9fcmVtYWluX21pbnN6KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYwMi17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjExLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjEyOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19iYXRfYnVmc3ooc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjEzLXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02MjItXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo2MjM6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX2JhdF9yc3ZfbGVuZ3RoKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYyNC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjMyLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjMzOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9wa3RfYWxpZ25tZW50KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYzNC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjQyLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjQzOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9wa3RfY2hlY2tzdW0oc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjQ0LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02NTEtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo2NTI6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX2ZyZ19jaGVja190aHJlcyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02NTMte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY2MS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjY2MjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYW9fZnJnX2J1ZnN6KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY2My17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjcyLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjczOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX2ZyZ19hb19lbihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjc0LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02ODYtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo2ODc6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX2JhdF9jaGVja190aHJlcyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02ODgte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY5Ni1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjY5NzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfcGl0X3NlcW51bShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02OTgte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTcwNi1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjcwNzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfZGxxX3BpdF9iYXNlX2FkZHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzA4LVx0XHRcdFx0XHRcdCBkbWFfYWRkcl90IGFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzEzLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NzE0OnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9kbHFfcGl0X3NpemUoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTcxNS17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzI3LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NzI4OnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX2RscV9waXRfZW4oc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzI5LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03MzYtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3Mzc6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfZGxxX3BpdF9pbml0X2RvbmUoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzM4LVx0XHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBwaXRfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc2NS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjc2NjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9jb25maWdfZGxxX3BpdF9odyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxX251bSxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc2Ny1cdFx0XHRcdFx0ICBzdHJ1Y3QgZHBtYWlmX2RsICpkbF9xdWUpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03Njgte1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NzY5Olx0dDd4eF9kcG1haWZfZGxfc2V0X2RscV9waXRfYmFzZV9hZGRyKGh3X2luZm8sIGRsX3F1ZS1cdTAwM2VwaXRfYmFzZSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3NzA6XHR0N3h4X2RwbWFpZl9kbF9zZXRfZGxxX3BpdF9zaXplKGh3X2luZm8sIGRsX3F1ZS1cdTAwM2VwaXRfc2l6ZV9jbnQpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NzcxOlx0dDd4eF9kcG1haWZfZGxfZGxxX3BpdF9lbihod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjc3MjpcdHQ3eHhfZHBtYWlmX2RsX2RscV9waXRfaW5pdF9kb25lKGh3X2luZm8sIHFfbnVtKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc3My19XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03NzQtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3NzU6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfY29uZmlnX2FsbF9kbHFfaHcoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzc2LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03NzktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEUE1BSUZfUlhRX05VTTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3ODA6XHRcdHQ3eHhfZHBtYWlmX2NvbmZpZ19kbHFfcGl0X2h3KGh3X2luZm8sIGksIFx1MDAyNmh3X2luZm8tXHUwMDNlZGxfcXVlW2ldKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc4MS19XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03ODItXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3ODM6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfYWxsX3FfZW4oc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc4NC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtODEyLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODEzOnN0YXRpYyBpbnQgdDd4eF9kcG1haWZfY29uZmlnX2RscV9odyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy04MTQte1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTgxNy1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgxODpcdHQ3eHhfZHBtYWlmX2RsX2RscV9ocGNfaHdfaW5pdChod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTgxOS1cbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy04MjMtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4MjQ6XHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fcmVtYWluX21pbnN6KGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODI1Olx0dDd4eF9kcG1haWZfZGxfc2V0X2FvX2JhdF9idWZzeihod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyNjpcdHQ3eHhfZHBtYWlmX2RsX3NldF9hb19mcmdfYnVmc3ooaHdfaW5mbyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4Mjc6XHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmF0X3Jzdl9sZW5ndGgoaHdfaW5mbyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4Mjg6XHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmlkX21heGNudChod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyOTpcdHQ3eHhfZHBtYWlmX2RsX3NldF9wa3RfYWxpZ25tZW50KGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODMwOlx0dDd4eF9kcG1haWZfZGxfc2V0X3BpdF9zZXFudW0oaHdfaW5mbyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4MzE6XHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fbXR1KGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODMyOlx0dDd4eF9kcG1haWZfZGxfc2V0X2FvX3BpdF9jaGtudW0oaHdfaW5mbyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4MzM6XHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmF0X2NoZWNrX3RocmVzKGh3X2luZm8pO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODM0Olx0dDd4eF9kcG1haWZfZGxfc2V0X2FvX2ZyZ19jaGVja190aHJlcyhod19pbmZvKTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgzNTpcdHQ3eHhfZHBtYWlmX2RsX2ZyZ19hb19lbihod19pbmZvLCB0cnVlKTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDIwMwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQQ0llIE1vZGVtIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIG1vZGVtIGRyaXZlciBmaWxlcywgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGluZ3MuIFJpZ2h0LCBzbyBgdDd4eF9wY2kuY2AsIHRoYXQmIzM5O3MgdGhlIE1lZGlhVGVrIE1USyBQQ0llIDVHIFdXQU4gbW9kZW0gZHJpdmVyLCB0aGF0IG1ha2VzIHNlbnNlLiBBbmQgdGhlbiB3ZSYjMzk7dmUgZ290IGBtaGlfd3dhbl9tYmltLmNgLCB3aGljaCBpcyB0aGUgTUhJIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tLWJhc2VkIFBDSWUgbW9kZW1zLCB1c2luZyB0aGUgYE1ISV9CVVNgIGludGVyZmFjZS4gSG1tLCBidXQgaG93IGRvZXMgdGhlIHN5c3RlbSBrbm93IHdoaWNoIGRldmljZXMgYXJlIGV2ZW4gKnVzaW5nKiBNSEk/IExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBkZXZpY2UgcmVnaXN0cmF0aW9uIHdpdGhpbiB0aGUgTUhJIGJ1cyBjb2RlIGl0c2VsZi4gTG9va3MgbGlrZSBgZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuY2AgaXMgYSBwcmltZSBleGFtcGxlLiBPa2F5LCBub3cgSSBuZWVkIHRvIGZpbmQgYWxsIHRoZSBNSEkgY29udHJvbGxlcnMgaW4gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHN0YXJ0IHRoZSBzZWFyY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9yZWdpc3Rlcl9jb250cm9sbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM9ODAwPXN0YXRpYyBpbnQgbWhpX3Jlc2V0X2FuZF9hc3luY19wb3dlcl91cChzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybClcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04MjYtXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYzo4Mjc6c3RydWN0IG1oaV9jb250cm9sbGVyICpxYWljX21oaV9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCB2b2lkIF9faW9tZW0gKm1oaV9iYXIsXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04MjgtXHRcdFx0XHRcdFx0ICAgIGludCBtaGlfaXJxLCBib29sIHNoYXJlZF9tc2ksIGludCBmYW1pbHkpXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmMtODc1LVx0bWhpX2NvbmZpZy50aW1lb3V0X21zID0gbWhpX3RpbWVvdXRfbXM7XG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYzo4NzY6XHRyZXQgPSBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihtaGlfY250cmwsIFx1MDAyNm1oaV9jb25maWcpO1xuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmMtODc3LVx0aWYgKHJldCkge1xuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM6ODc4Olx0XHRwY2lfZXJyKHBjaV9kZXYsIFwmIzM0O21oaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZCAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jLTg3OS1cdFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuaC04LVxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmg6OTpzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKnFhaWNfbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIHZvaWQgX19pb21lbSAqbWhpX2JhcixcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5oLTEwLVx0XHRcdFx0XHRcdCAgICBpbnQgbWhpX2lycSwgYm9vbCBzaGFyZWRfbXNpLCBpbnQgZmFtaWx5KTtcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYz01NzA9c3RhdGljIGludCBxYWljX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTU5Ni1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jOjU5NzpcdHFkZXYtXHUwMDNlbWhpX2NudHJsID0gcWFpY19taGlfcmVnaXN0ZXJfY29udHJvbGxlcihwZGV2LCBxZGV2LVx1MDAzZWJhcl9taGksIG1oaV9pcnEsXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy01OTgtXHRcdFx0XHRcdFx0ICAgICAgIHFkZXYtXHUwMDNlc2luZ2xlX21zaSwgY29uZmlnLVx1MDAzZWZhbWlseSk7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTg4MT1zdGF0aWMgaW50IHBhcnNlX2NvbmZpZyhzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCxcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtOTE4LVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjkxOTppbnQgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtOTIwLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbWhpX2NvbnRyb2xsZXJfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwNTgtfVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjEwNTk6RVhQT1JUX1NZTUJPTF9HUEwobWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIpO1xuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwNjAtXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xMzY1PXN0YXRpYyBpbnQgbWhpX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTQ0MC1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTQ0MTpcdGVyciA9IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jbnRybCwgbWhpX2NudHJsX2NvbmZpZyk7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE0NDItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWhpLmM9MzM1PWludCBhdGgxMWtfbWhpX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfcGNpICphYl9wY2kpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYy00MDktXHRhYl9wY2ktXHUwMDNlbWhpX3ByZV9jYiA9IE1ISV9DQl9JTlZBTElEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYzo0MTA6XHRyZXQgPSBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihtaGlfY3RybCwgYXRoMTFrX21oaV9jb25maWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYy00MTEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz0xODc9aW50IGF0aDEya19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTI2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6MjY1Olx0cmV0ID0gbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2N0cmwsIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtaGlfY29uZmlnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMjY2LVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTg0MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIE1ISSBXV0FOIGFuZCBUN3h4IERyaXZlciBBY2Nlc3NpYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBNSEkgV1dBTiBhbmQgVDd4eCBXV0FOIGRyaXZlcnMgYXJlICpmdW5kYW1lbnRhbGx5KiBkZXBlbmRlbnQgb24gc3BlY2lmaWMgaGFyZHdhcmUuIEkgbmVlZCB0byBhcHBseSB0aGUgdHJpYWdlIGNyaXRlcmlhIG1ldGljdWxvdXNseS4gU2VjdGlvbiAyIGlzIGtleSBoZXJlLiBJdCBkaXN0aW5ndWlzaGVzIGJldHdlZW4gZHJpdmVycyB0aGF0IHJlcXVpcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIChsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBHUFVzIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VKSBhbmQgdGhvc2UgdGhhdCBhcmUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgb3IgdGhlIGxpa2UuCgpUaGUgY29yZSBvZiBteSBhbmFseXNpcyBoaW5nZXMgb24gdGhpczogY2FuIEkgKnJlYWNoKiBgbWhpX3d3YW5fbWJpbWAgb3IgdGhlIFQ3eHggZHJpdmVyIHdpdGhvdXQgYSBwaHlzaWNhbCBQQ0llIGNhcmQ/IFRoYXQmIzM5O3MgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGFueSB2aXJ0dWFsIGJ1cyBtZWNoYW5pc21zIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBleGlzdCB0aGF0IHdvdWxkIGFsbG93IG1lIHRvIGluc3RhbnRpYXRlIG9yIGludGVyYWN0IHdpdGggdGhlc2UgZHJpdmVycy4KClJpZ2h0LCB0aW1lIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byBzZWUgaWYgYG1oaV93d2FuX21iaW1gIGlzIGV2ZXIgaW5zdGFudGlhdGVkIHZpYSBuZXRsaW5rLCBhIHZpcnR1YWwgYnVzLCBvciBhbnl0aGluZyBzaW1pbGFyLiBUaGUgY29kZSBpdHNlbGYgc2hvdWxkIHJldmVhbCBzb21ldGhpbmcgdXNlZnVsLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgbWhpX3d3YW5fbWJpbS5jYCBhbmQgc3BlY2lmaWNhbGx5IGxpbmUgNjE4LiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBwcm9iZSBmdW5jdGlvbiwgYG1oaV9tYmltX3Byb2JlYC4gQWgsIGl0IHJlZ2lzdGVycyBXV0FOIGxpbmsgb3BlcmF0aW9ucy4gYHd3YW5fcmVnaXN0ZXJfb3BzYCBhbmQgYWxsIHRoYXQuIFRoYXQmIzM5O3MgZ29vZCwgYnV0IHRoZSBrZXkgaXMgKndoZW4qIGBtaGlfbWJpbV9wcm9iZWAgZ2V0cyBjYWxsZWQuCgpMb29rcyBsaWtlIGBtaGlfbWJpbV9wcm9iZWAgaXMgY2FsbGVkIG9ubHkgd2hlbiBhbiBgbWhpX2RldmljZWAgdGhhdCBtYXRjaGVzIHRoZSBgbWhpX21iaW1faWRfdGFibGVgIGlzIHJlZ2lzdGVyZWQgb24gdGhlIE1ISSBidXMuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBjbHVlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGFuIGBtaGlfZGV2aWNlYCBpcyBjcmVhdGVkLiBUaGF04oCZcyB0aGUgY3J1eC4gSSBuZWVkIHRvIGZpbmQgdGhlIGNyZWF0aW9uIG1lY2hhbmlzbS4gVGltZSB0byBzZWFyY2ggdGhlIGtlcm5lbCBmb3IgYG1oaV9kZXZpY2VgIGluc3RhbnRpYXRpb24uIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGRyaXZlciBpcyBsb2FkZWQgYW5kIGlmIEkgY2FuIGxvYWQgaXQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9kZXZpY2VfY3JlYXRlfG1oaV9hbGxvY19kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9taGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTkxOT1pbnQgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwMDktXHQvKiBSZWdpc3RlciBjb250cm9sbGVyIHdpdGggTUhJIGJ1cyAqL1xuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjEwMTA6XHRtaGlfZGV2ID0gbWhpX2FsbG9jX2RldmljZShtaGlfY250cmwpO1xuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwMTEtXHRpZiAoSVNfRVJSKG1oaV9kZXYpKSB7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTEyMTA9c3RhdGljIHZvaWQgbWhpX3JlbGVhc2VfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTIyOC1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYzoxMjI5OnN0cnVjdCBtaGlfZGV2aWNlICptaGlfYWxsb2NfZGV2aWNlKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsKVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEyMzAte1xuLS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L2ludGVybmFsLmg9MzE0PXN0YXRpYyBpbmxpbmUgdm9pZCBtaGlfZGVidWdmc19leGl0KHZvaWQpXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW50ZXJuYWwuaC0zMTgtXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbnRlcm5hbC5oOjMxOTpzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2FsbG9jX2RldmljZShzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCk7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbnRlcm5hbC5oLTMyMC1cbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9tYWluLmM9MzY5PXZvaWQgbWhpX2NyZWF0ZV9kZXZpY2VzKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsKVxuLS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L21haW4uYy0zODAtXHRcdFx0Y29udGludWU7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9tYWluLmM6MzgxOlx0XHRtaGlfZGV2ID0gbWhpX2FsbG9jX2RldmljZShtaGlfY250cmwpO1xuZHJpdmVycy9idXMvbWhpL2hvc3QvbWFpbi5jLTM4Mi1cdFx0aWYgKElTX0VSUihtaGlfZGV2KSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMyNDYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBNSEkvUENJIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXJgIGZ1bmN0aW9uIGFuZCB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBNSEkgYW5kIFBDSSBjb250ZXh0LiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCBgbWhpX3BjaV9wcm9iZWAgY2FsbHMgaXQsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHJlY29nbml6ZSBgbWhpX3BjaV9wcm9iZWAgYXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBwcm9iaW5nIHJlYWwtd29ybGQgUXVhbGNvbW0gUENJZSBtb2RlbXMg4oCTIHRoZSBGb3hjb25uIFQ5OVcxNzUsIHRoZSBUZWxpdCBGTjk4MCwgdGhvc2UgUXVlY3RlbCBFTTEyMFItR0xzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMuIEkmIzM5O20gbm90aW5nIHRoZSB2ZW5kb3IgSURzICgweDE3Y2IsIGV0Yy4pIGFzIGEgcG9pbnQgb2YgcmVmZXJlbmNlLiBJIGFsc28gc2VlIHRoYXQgYGF0aDExa19wY2lgLCBgYXRoMTJrX3BjaWAsIGFuZCBgcWFpY2AgYXJlIGNhbGxpbmcgdGhpcyByZWdpc3RlciBjb250cm9sbGVyLCBhbmQgSSBuZWVkIHRvIGNvbWUgYmFjayB0byB0aGVzZS4KClRoZW4gdGhlcmUmIzM5O3MgYHQ3eHhgLCB3aGljaCBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSBhcyBNZWRpYVRlayYjMzk7cyBNVEsgUENJZSA1RyBXV0FOIG1vZGVtIGRldmljZXMuIEkga25vdyB0aGF0JiMzOTtzIGZvdW5kIGluIGBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuY2AuIFRoZSBQQ0kgSURzLCBmb3IgTWVkaWFUZWsgKDB4MTRjMykgYW5kIHRoZSBkZXZpY2UgaXRzZWxmICgweDRkNzUpLCBhcmUgd2hhdCBJJiMzOTtkIGV4cGVjdC4gTm93IEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2suLi4gSSBzaG91bGQgY2hlY2sgdGhhdCBgdDd4eF9wY2kuY2AgZmlsZSBhZ2FpbiBhbmQgbWFrZSBzdXJlIHRoYXQgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHNvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFXFwocGNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi90N3h4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jPTk0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgdDd4eF9wY2lfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYy05NDgtfTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jOjk0OTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgdDd4eF9wY2lfdGFibGUpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmMtOTUwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzk4MwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBUN3h4IFBDSSBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIFQ3eHggV1dBTiBkZXZpY2UgaXMgaGFuZGxlZCwgc28gbGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgaXRzIFBDSSBpbml0aWFsaXphdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBkZWx2ZSBpbnRvIHRoZSBgdDd4eF9wY2lfdGFibGVgIHN0cnVjdHVyZS4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHN5c3RlbSBpZGVudGlmaWVzIGFuZCBjb25maWd1cmVzIHRoZSBoYXJkd2FyZS4gVGhlIGZpbGUgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGlzIGBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuY2AuIFRoZSB0YWJsZSBkZWZpbml0aW9uIGFuZCBkZXZpY2UgbWF0Y2hpbmcgbG9naWMgYXJlIGxpa2VseSBob3VzZWQgd2l0aGluIHRoYXQgbW9kdWxlLiBVbmRlcnN0YW5kaW5nIHRoaXMgdGFibGUgd2lsbCBvZmZlciBjbHVlcyBhYm91dCBzdXBwb3J0ZWQgZGV2aWNlcywgYXNzb2NpYXRlZCBQQ0kgSURzLCBhbmQgZHJpdmVyIGJpbmRpbmcuIEl0IGlzIHRoZSBjb3JlIG9mIGhvdyB0aGUgZHJpdmVyIGlzIHN1cHBvc2VkIHRvIHJlY29nbml6ZSBhbmQgd29yayB3aXRoIGRpZmZlcmVudCBpdGVyYXRpb25zIG9mIHRoZSBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTQwOlx0XHRwY2lfZnJlZV9pcnFfdmVjdG9ycyh0N3h4X2Rldi1cdTAwM2VwZGV2KTtcbiA5NDE6XHR9XG4gOTQyOlx0XG4gOTQzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHQ3eHhfcGNpX3RhYmxlW10gPSB7XG4gOTQ0Olx0XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg0ZDc1KSB9LFxuIDk0NTpcdFx0eyBQQ0lfREVWSUNFKDB4MDNmMCwgMHgwOWM4KSB9LCAvLyBIUCBEUk1SLUgwMVxuIDk0NjpcdFx0eyBQQ0lfREVWSUNFKDB4MTRjMCwgMHg0ZDc1KSB9LCAvLyBEZWxsIERXNTkzM2VcbiA5NDc6XHRcdHsgfVxuIDk0ODpcdH07XG4gOTQ5Olx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHQ3eHhfcGNpX3RhYmxlKTtcbiA5NTA6XHRcbiA5NTE6XHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgdDd4eF9wY2lfZHJpdmVyID0ge1xuIDk1MjpcdFx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcbiA5NTM6XHRcdC5pZF90YWJsZSA9IHQ3eHhfcGNpX3RhYmxlLFxuIDk1NDpcdFx0LnByb2JlID0gdDd4eF9wY2lfcHJvYmUsXG4gOTU1Olx0XHQucmVtb3ZlID0gdDd4eF9wY2lfcmVtb3ZlLFxuIDk1NjpcdFx0LmRyaXZlci5wbSA9IFx1MDAyNnQ3eHhfcGNpX3BtX29wcyxcbiA5NTc6XHRcdC5zaHV0ZG93biA9IHQ3eHhfcGNpX3NodXRkb3duLFxuIDk1ODpcdH07XG4gOTU5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NjMzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIERlZXBlcjogSW52ZXN0aWdhdGluZyBgbWhpX3BjaV9nZW5lcmljLmNgKioKCkFscmlnaHQsIEkgbmVlZCB0byBicm9hZGVuIHRoZSBzY29wZSBvZiB0aGlzIGludmVzdGlnYXRpb24uIFdlJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGNvcmUgaXNzdWUsIGJ1dCB0aGVyZSYjMzk7cyBhIHN0cm9uZyBsaWtlbGlob29kIGl0IGNvdWxkIGJlIG1hbmlmZXN0aW5nIGZyb20gbG93ZXIgbGV2ZWxzLiBJJiMzOTttIHRoaW5raW5nLCBiZWZvcmUgd2UgZ28gYW55IGZ1cnRoZXIsIEkgc2hvdWxkIGRlZmluaXRlbHkgcHVsbCB1cCBhbmQgbWV0aWN1bG91c2x5IGV4YW1pbmUgYG1oaV9wY2lfZ2VuZXJpYy5jYC4gSXQmIzM5O3MgYSBrZXkgY29tcG9uZW50IGluIE1ISSBQQ0kgaW50ZXJhY3Rpb24sIGFuZCBpdCYjMzk7cyBwcmFjdGljYWxseSBzY3JlYW1pbmcgcG90ZW50aWFsIGZvciBjb250cmlidXRpbmcgdG8gdGhpcyBwcm9ibGVtLiBVbmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBhbmQgaGFuZGxpbmcgdGhlcmUgaXMgY3JpdGljYWwgYmVmb3JlIGp1bXBpbmcgdG8gYW55IG1ham9yIGNvbmNsdXNpb25zIG9yIHNvbHV0aW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9wY2lfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9taGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDg1NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSHVudGluZyBEb3duIHRoZSBQQ0kgSUQgVGFibGUqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIFBDSSBJRCB0YWJsZSBmb3IgdGhlIE1ISSBob3N0IGNvbnRyb2xsZXIuIE15IGd1dCBzYXlzIGl0JiMzOTtzIGxpa2VseSBuZXN0bGVkIHdpdGhpbiB0aGUgZHJpdmVyIGNvZGUgaXRzZWxmLCBhbmQgc3BlY2lmaWNhbGx5LCB0aGUgUENJIGltcGxlbWVudGF0aW9uLiBUaGF0IG1lYW5zIEkgc2hvdWxkIGJlIGxvb2tpbmcgaW4gdGhlIGBkcml2ZXJzL2J1cy9taGkvaG9zdC9gIGRpcmVjdG9yeSwgYW5kIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgYHBjaV9nZW5lcmljLmNgLiBJdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBuYW1pbmcgY29udmVudGlvbjsgJiMzNDtnZW5lcmljJiMzNDsgb2Z0ZW4gaW5kaWNhdGVzIHRoZSBiYXNlIG9yIGZvdW5kYXRpb25hbCBQQ0ktcmVsYXRlZCBmdW5jdGlvbnMuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBmaWxlIGNvbnRhaW5zIHRoZSBkZXZpY2UgSUQgbGlzdCBvciBpZiBpdCBwb2ludHMgdG8gd2hlcmUgdGhlIGluZm9ybWF0aW9uIGlzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgc3RydWN0dXJlIGRlZmluaXRpb24sIG1vc3QgbGlrZWx5IHdpdGggYSBgc3RydWN0IHBjaV9kZXZpY2VfaWRgIGtpbmQgb2YgYXJyYW5nZW1lbnQsIHdoaWNoIHdvdWxkIGxpc3QgdmVuZG9yIElEcywgZGV2aWNlIElEcywgc3Vic3lzdGVtIHZlbmRvciBJRHMsIHN1YnN5c3RlbSBkZXZpY2UgSURzLCBhbmQgbWF5YmUgZXZlbiBhIGRyaXZlci1zcGVjaWZpYyBmdW5jdGlvbiBwb2ludGVyLiBJJiMzOTtsbCBmb2N1cyBvbiBxdWlja2x5IHNjYW5uaW5nIHRoZSBmaWxlIGZvciBhIHN0YXRpY2FsbHkgZGVmaW5lZCBhcnJheSBvZiB0aGVzZSBQQ0kgSUQgc3RydWN0dXJlcy4gSG9wZWZ1bGx5LCBJJiMzOTtsbCBmaW5kIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciB0aGVyZSBxdWlja2x5LiBJZiBub3QsIEkmIzM5O2xsIG5lZWQgdG8gc3RhcnQgaHVudGluZyB0aHJvdWdoIHRoZSBzdXJyb3VuZGluZyBpbmNsdWRlIGZpbGVzIGZvciBkZWZpbml0aW9ucyBvZiBgc3RydWN0IHBjaV9kZXZpY2VfaWRgIGlmIGl0JiMzOTtzIGV4dGVybmFsLCBvciBtYXliZSBhIG1hY3JvIGRlZmluaXRpb24gZXhwYW5kaW5nIHRvIHRoYXQgc3RydWN0dXJlLiBJJiMzOTtsbCBrZWVwIHRoZSBzZWFyY2ggZm9jdXNlZDsgaG9wZWZ1bGx5LCBpdCYjMzk7cyBub3QgdG9vIGRlZXBseSBidXJpZWQgaW4gc29tZSBsYXllcmVkIGFic3RyYWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFXFwocGNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvbWhpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM9OTUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtaGlfcGNpX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xMDg2LX07XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jOjEwODc6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG1oaV9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xMDg4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTM2MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgTW9kZW0gRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIG1vZGVtIGRyaXZlcnMsIHNwZWNpZmljYWxseSBgbWhpX3d3YW5fbWJpbS5jYCBhbmQgYHQ3eHhfbmV0ZGV2LmNgLCB3b3JrLiBJdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCB0aGV5IGJvdGggbmVlZCBhY3R1YWwgcGh5c2ljYWwgUENJIG1vZGVtIGhhcmR3YXJlLiBUaGUgYG1oaWAgZHJpdmVyIHVzZXMgdGhlIE1ISSBidXMsIGluc3RhbnRpYXRlZCBieSBlaXRoZXIgYG1oaV9wY2lfZ2VuZXJpYy5jYCBvciBRdWFsY29tbSYjMzk7cyBQQ0llIG1vZGVtcywgd2hpbGUgdGhlIE1lZGlhVGVrIG9uZSByZWxpZXMgb24gYHQ3eHhfcGNpLmNgLiBUaGUgY29yZSBhc3N1bXB0aW9uIHJpZ2h0IG5vdyBpcyB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBkaXJlY3RseSBjb25uZWN0ZWQgaGFyZHdhcmUgZGV2aWNlLgoKQnV0LCBiZWZvcmUgSSBnbyBkb3duIHRoYXQgcGF0aCBjb21wbGV0ZWx5LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgaXNuJiMzOTt0IHNvbWV0aGluZyBtb3JlIGludGVyZXN0aW5nIG9yIGZsZXhpYmxlIGF0IHBsYXkgaGVyZS4gSXQmIzM5O3MgYSBnb29kIGhhYml0IHRvIHJ1bGUgb3V0IGFueSBwb3NzaWJpbGl0aWVzIHRoYXQgY291bGQgb2ZmZXIgb3RoZXIgb3B0aW9ucy4KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIG1pZ2h0IGJlIGEgdmlydHVhbCBvciBlbXVsYXRlZCBtb2RlbSBkZXZpY2Ugc29tZXdoZXJlIGluIHRoZSBzeXN0ZW0sIG9yIHBlcmhhcHMgYSB1c2VyLXNwYWNlIGludGVyZmFjZS4gSXMgdGhlcmUgYSB3YXkgdG8gaW5qZWN0IHBhY2tldHMgZGlyZWN0bHkgaW50byB0aGUgYG1oaV9tYmltX3J4YCBvciBgdDd4eF9jY21uaV9yZWN2X3NrYmAgZnVuY3Rpb25zPwoKSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGNhbGwgc2l0ZXMgZm9yIGB0N3h4X2NjbW5pX3JlY3Zfc2tiYCB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0N3h4X2NjbW5pX3JlY3Zfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi90N3h4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jPTM5OT1zdGF0aWMgdm9pZCBpbml0X21kX3N0YXR1c19ub3RpZmllcihzdHJ1Y3QgdDd4eF9wY2lfZGV2ICp0N3h4X2Rldilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy00MTEtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYzo0MTI6c3RhdGljIHZvaWQgdDd4eF9jY21uaV9yZWN2X3NrYihzdHJ1Y3QgdDd4eF9jY21uaV9jdHJsICpjY21uaV9jdGxiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtNDEzLVx0XHRcdFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jPTQ5MD1pbnQgdDd4eF9jY21uaV9pbml0KHN0cnVjdCB0N3h4X3BjaV9kZXYgKnQ3eHhfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTUwMi1cdGN0bGItXHUwMDNlY2FsbGJhY2tzLnN0YXRlX25vdGlmeSA9IHQ3eHhfY2NtbmlfcXVldWVfc3RhdGVfbm90aWZ5O1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM6NTAzOlx0Y3RsYi1cdTAwM2VjYWxsYmFja3MucmVjdl9za2IgPSB0N3h4X2NjbW5pX3JlY3Zfc2tiO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtNTA0LVx0Y3RsYi1cdTAwM2VuaWNfZGV2X251bSA9IE5JQ19ERVZfREVGQVVMVDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYyMTcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgV1dBTiBEZXZpY2UgRW11bGF0aW9uKioKCk9rYXksIHNvIGB0N3h4X2NjbW5pX3JlY3Zfc2tiYCBpcyB0aGUgZW50cnkgcG9pbnQgd2hlbiB0aGUgVDd4eCBQQ0llIGhhcmR3YXJlIGlzIHJlY2VpdmluZyBwYWNrZXRzIGZyb20gdGhlIERQTUFJRiBSWCBxdWV1ZS4gVGhhdCBtYWtlcyBzZW5zZS4gQW5kLCBhcyBleHBlY3RlZCwgYG1oaV9tYmltX3J4YCBpcyBjYWxsZWQgdGhyb3VnaCBgbWhpX21iaW1fZGxfY2FsbGJhY2tgIHdoaWNoIGlzIHRoZSBNSEkgYnVzIHRyYW5zZmVyIGNhbGxiYWNrLiBBbGwgc2VlbXMgc3RhbmRhcmQuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXNlIHNwZWNpZmljIG1vZGVtcyBhcmUgZW11bGF0YWJsZS4gTGV0IG1lIGNoZWNrIFNlY3Rpb24gMiBvZiB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbi4uLiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIE9rYXksIHRoYXQgdXN1YWxseSBtZWFucyB2ZW5kb3Itc3BlY2lmaWMgc3R1ZmYgdGhhdCBRRU1VIGRvZXNuJiMzOTt0IHRvdWNoOiBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIGxpa2UgbWx4c3csIHBkc19jb3JlLCBhbmQgb3RoZXJzLiBUaGV5IGFsbCBuZWVkIHRoYXQgcGh5c2ljYWwgQVNJQyBvciBQQ0llIGNhcmQsIG5vdCBzb21ldGhpbmcgUUVNVSBub3JtYWxseSBwcm92aWRlcy4KClRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbjogQXJlIFF1YWxjb21tIE1ISSBQQ0llIG1vZGVtcyAqb3IqIE1lZGlhVGVrIFQ3eHggUENJZSBtb2RlbXMgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cz8gVGhlIGFuc3dlciBpcyBhIGNsZWFyICpubyouIFN0YW5kYXJkIFFFTVUgYW5kIEdDRSAqZG9uJiMzOTt0KiBlbXVsYXRlIHRoZSBRdWFsY29tbSBNSEkgbW9kZW1zIChsaWtlIHRoZSBGb3hjb25uLCBRdWVjdGVsLCBUZWxpdCBvbmVzKSBvciB0aGUgTWVkaWFUZWsgNUcgV1dBTiBQQ0llIG1vZGVtcyAodGhvc2Ugd2l0aCB0aGUgMHgxNGMzOjB4NGQ3NSB2ZW5kb3I6ZGV2aWNlIElEKS4gSXQmIzM5O3MgZXhwbGljaXRseSBzdGF0ZWQgdGhhdCB0aGV5IHJlcXVpcmUgKnBoeXNpY2FsKiBQQ0llIG1vZGVtIGhhcmR3YXJlLCB3aGljaCBpc24mIzM5O3QgYXZhaWxhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCkhtbSwgdGhpcyBwcmVzZW50cyBhIHByb2JsZW0uIEJ1dCwgd2FpdC4uLiBjb3VsZCB0aGVyZSBiZSBhIHdvcmthcm91bmQ/IElzIHRoZXJlICphbnkqIHBvc3NpYmlsaXR5IHRoZSBXV0FOIGNvcmUgc3Vic3lzdGVtIGNvdWxkIGNyZWF0ZSBhIGR1bW15IG9yIHZpcnR1YWwgV1dBTiBkZXZpY2U/IEl0JiMzOTtzIHdvcnRoIGV4cGxvcmluZy4gVG8gZmluZCBvdXQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC93d2FuL2AgZGlyZWN0b3J5LiBNYXliZSBJJiMzOTtsbCBnZXQgbHVja3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDttaGlfd3dhbl9jdHJsLmMmIzM0OywKICAgICYjMzQ7bWhpX3d3YW5fbWJpbS5jJiMzNDssCiAgICAmIzM0O3Fjb21fYmFtX2RtdXguYyYjMzQ7LAogICAgJiMzNDtycG1zZ193d2FuX2N0cmwuYyYjMzQ7LAogICAgJiMzNDt3d2FuX2NvcmUuYyYjMzQ7LAogICAgJiMzNDt3d2FuX2h3c2ltLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7aW9zbSYjMzQ7LAogICAgJiMzNDt0N3h4JiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwNTMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDb3JlIG9mIFdXQU4gU2ltdWxhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0xldCYjMzk7cyBjcmFjayBvcGVuIGB3d2FuX2h3c2ltLmNgLiYjMzQ7IFRoYXQmIzM5O3MgdGhlIGZpbGUgSSBuZWVkIHRvIHVuZGVyc3RhbmQsIGJ1dCB3aGF0ICpleGFjdGx5KiBpcyBpdCBkb2luZz8gTXkgbWluZCBpcyBhdXRvbWF0aWNhbGx5IHByb2Jpbmc6IFdoYXQmIzM5O3MgdGhlIGZ1bmRhbWVudGFsIHJvbGUgb2YgdGhpcyBzaW11bGF0aW9uPyBXaGF0IGFzcGVjdHMgb2YgdGhlIFdXQU4gKFdpcmVsZXNzIFdpZGUgQXJlYSBOZXR3b3JrKSBoYXJkd2FyZSBhcmUgYmVpbmcgZW11bGF0ZWQgaGVyZT8gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgaGFyZHdhcmUgaXQmIzM5O3MgbWVhbnQgdG8gcmVwbGljYXRlLiBBbSBJIGxvb2tpbmcgYXQgdGhlIHBoeXNpY2FsIHJhZGlvIGxheWVyLCB0aGUgbW9kZW0gaW50ZXJmYWNlLCB0aGUgcHJvdG9jb2wgc3RhY2ssIG9yIGEgY29tYmluYXRpb24/IFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciByZWFsbHkgZGlnZ2luZyBpbnRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vd3dhbl9od3NpbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogV1dBTiBkZXZpY2Ugc2ltdWxhdG9yIGZvciBXV0FOIGZyYW1ld29yayB0ZXN0aW5nLlxuICAgNDpcdCAqXG4gICA1Olx0ICogQ29weXJpZ2h0IChjKSAyMDIxLCAyMDI1LCBTZXJnZXkgUnlhemFub3YgXHUwMDNjcnlhemFub3Yucy5hQGdtYWlsLmNvbVx1MDAzZVxuICAgNjpcdCAqL1xuICAgNzpcdFxuICAgODpcdCNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXCYjMzQ7OiBcJiMzNDsgZm10XG4gICA5Olx0XG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICAxMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICAxNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3RpbWUuaFx1MDAzZVxuICAxNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpc3QuaFx1MDAzZVxuICAxNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4gIDE4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdGltZXIuaFx1MDAzZVxuICAxOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gIDIwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvd3dhbi5oXHUwMDNlXG4gIDIxOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvZGVidWdmcy5oXHUwMDNlXG4gIDIyOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcdTAwM2VcbiAgMjM6XHRcbiAgMjQ6XHQjaW5jbHVkZSBcdTAwM2NuZXQvYXJwLmhcdTAwM2VcbiAgMjU6XHRcbiAgMjY6XHRzdGF0aWMgaW50IHd3YW5faHdzaW1fZGV2c251bSA9IDI7XG4gIDI3Olx0bW9kdWxlX3BhcmFtX25hbWVkKGRldmljZXMsIHd3YW5faHdzaW1fZGV2c251bSwgaW50LCAwNDQ0KTtcbiAgMjg6XHRNT0RVTEVfUEFSTV9ERVNDKGRldmljZXMsIFwmIzM0O051bWJlciBvZiBzaW11bGF0ZWQgZGV2aWNlc1wmIzM0Oyk7XG4gIDI5Olx0XG4gIDMwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBjbGFzcyB3d2FuX2h3c2ltX2NsYXNzID0ge1xuICAzMTpcdFx0Lm5hbWUgPSBcJiMzNDt3d2FuX2h3c2ltXCYjMzQ7LFxuICAzMjpcdH07XG4gIDMzOlx0XG4gIDM0Olx0c3RhdGljIHN0cnVjdCBkZW50cnkgKnd3YW5faHdzaW1fZGVidWdmc190b3BkaXI7XG4gIDM1Olx0c3RhdGljIHN0cnVjdCBkZW50cnkgKnd3YW5faHdzaW1fZGVidWdmc19kZXZjcmVhdGU7XG4gIDM2Olx0XG4gIDM3Olx0c3RhdGljIERFRklORV9TUElOTE9DSyh3d2FuX2h3c2ltX2RldnNfbG9jayk7XG4gIDM4Olx0c3RhdGljIExJU1RfSEVBRCh3d2FuX2h3c2ltX2RldnMpO1xuICAzOTpcdHN0YXRpYyB1bnNpZ25lZCBpbnQgd3dhbl9od3NpbV9kZXZfaWR4O1xuICA0MDpcdHN0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd3dhbl93cTtcbiAgNDE6XHRcbiAgNDI6XHRzdHJ1Y3Qgd3dhbl9od3NpbV9kZXYge1xuICA0MzpcdFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuICA0NDpcdFx0dW5zaWduZWQgaW50IGlkO1xuICA0NTpcdFx0c3RydWN0IGRldmljZSBkZXY7XG4gIDQ2Olx0XHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZGVsX3dvcms7XG4gIDQ3Olx0XHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3RvcGRpcjtcbiAgNDg6XHRcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcG9ydGNyZWF0ZTtcbiAgNDk6XHRcdHNwaW5sb2NrX3QgcG9ydHNfbG9jaztcdC8qIFNlcmlhbGl6ZSBwb3J0cyBjcmVhdGlvbi9kZWxldGlvbiAqL1xuICA1MDpcdFx0dW5zaWduZWQgaW50IHBvcnRfaWR4O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODAzNwoJCQkJCQkJb3V0cHV0OiAxMzUKCQkJCQkJCXRob3VnaHRzOiA1ODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogU3RydWN0dXJhbGx5IFVucmVhY2hhYmxlIENvZGUgZm9yIEZ1enppbmcqKgoKT2theSwgYWZ0ZXIgYSBjbG9zZSBsb29rLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgd2l0aGluIHRoZSBgd3dhbmAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgaW52b2x2aW5nIGRyaXZlcnMgZm9yIHBoeXNpY2FsIFBDSWUgbW9kZW1zLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYHd3YW5faHdzaW0uY2AgaXMgYSBzaW11bGF0b3IgZm9yIHRoZSBgd3dhbl9jb3JlYCBidXQgdGhlIHJlbGV2YW50IGRyaXZlcnMgaW4gdGhpcyBjYXNlIOKAkyBgbWhpX3d3YW5fbWJpbS5jYCAoUXVhbGNvbW0gTUhJKSBhbmQgYHQ3eHgvdDd4eF9uZXRkZXYuY2AgKE1lZGlhVGVrIFQ3eHgpIOKAkyBhcmUgKmhhcmR3YXJlLXNwZWNpZmljKiBkcml2ZXJzIHRoYXQgY29tbXVuaWNhdGUgZGlyZWN0bHkgd2l0aCBwaHlzaWNhbCBQQ0llIG1vZGVtIGRldmljZXMuIFRoZXNlIGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLgoKVGhlIG1vZGlmaWNhdGlvbnMgYXJlIGluIHRoZSBSWCBwYWNrZXQgcHJvY2Vzc2luZyBwYXRoczogYG1oaV9tYmltX3J4YCBhbmQgYG1oaV9tYmltX3J4X2Ryb3BgIGluIHRoZSBRdWFsY29tbSBkcml2ZXIsIGhhbmRsaW5nIHRoZSBkb3dubGluayBjYWxsYmFjaywgYW5kIGB0N3h4X2NjbW5pX3JlY3Zfc2tiYCBpbiB0aGUgTWVkaWFUZWsgZHJpdmVyLCB2YWxpZGF0aW5nIHRoZSBgbmV0aWZfaWRgLiBUaGVzZSBmdW5jdGlvbnMgb25seSBjb21lIGludG8gcGxheSB3aGVuIHJlY2VpdmluZyBwYWNrZXRzIGRpcmVjdGx5IGZyb20gdGhlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUuCgpCYXNlZCBvbiB0aGUgdHJpYWdlIHBoaWxvc29waHkgb3V0bGluZWQgaW4gU2VjdGlvbiAyLCB0aGUgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBzY2VuYXJpbyBhcHBsaWVzIHBlcmZlY3RseSBoZXJlLiBUaGUgcGF0Y2ggZmFsbHMgaW50byB0aGUgY2F0ZWdvcnkgb2YgY29kZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLgoKVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgaW5oZXJlbnRseSB1bnJlYWNoYWJsZSBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgYXMgd2Ugd291bGQgYmUgdW5hYmxlIHRvIHRyaWdnZXIgdGhlIG1vZGlmaWVkIGxvZ2ljLiBNeSBkZWNpc2lvbiBpcyBzdHJhaWdodGZvcndhcmQ6CgoqICAgKipXb3J0aEZ1enppbmc6IGZhbHNlKioKKiAgICoqRm9jdXNTeW1ib2xzOiBcWyBdKioKKiAgICoqRW5hYmxlQ29uZmlnczogXFsgXSoqCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggbW9kaWZpZXMgUlggcGFja2V0IHByb2Nlc3NpbmcgaW4gZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwsIG5vbi1lbXVsYXRlZCBQQ0llIG1vZGVtIGhhcmR3YXJlLiBIZW5jZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgbW9kaWZ5IFJYIGhhbmRsaW5nIHJvdXRpbmVzIGluIGRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jIChNSEkgV1dBTiBNQklNIGRyaXZlciBmb3IgUXVhbGNvbW0gbW9kZW1zKSBhbmQgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMgKE1lZGlhVGVrIFQ3eHggUENJZSBtb2RlbSBkcml2ZXIpLiBCb3RoIGRyaXZlcnMgZGVwZW5kIG9uIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgbW9kZW0gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgUlggaGFuZGxpbmcgcm91dGluZXMgaW4gZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKE1ISSBXV0FOIE1CSU0gZHJpdmVyIGZvciBRdWFsY29tbSBtb2RlbXMpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyBkZXBlbmQgb24gc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBtb2RlbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMjo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6MDkuNjQ4NTY2NzM5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE0NzEyNTIzOTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgUlggaGFuZGxpbmcgcm91dGluZXMgaW4gZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKE1ISSBXV0FOIE1CSU0gZHJpdmVyIGZvciBRdWFsY29tbSBtb2RlbXMpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyBkZXBlbmQgb24gc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBtb2RlbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NjowOS42NDg1NzM3NDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNTMxNDI3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGMzOTY4OWE3ZWJkZGI0OTI1YTUwNmM4ZWM2Yzc1Y2RhMmUxMWIwNGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBTZXAgMTEgMDI6NDY6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xcbmluZGV4IGE5NDk5ODcxMjU5NzYuLjMzNmY4OTc1NmYxMGQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcXG4rKysgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xcbkBAIC0yNTEsNiArMjUxLDE0IEBAIHN0YXRpYyBpbnQgbWJpbV9yeF92ZXJpZnlfbmRwMTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2ICpuXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIG1oaV9tYmltX3J4X2Ryb3Aoc3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmssIHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4rXFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2bGluay1cXHUwMDNlcnhfc3luY3ApO1xcbitcXHR1NjRfc3RhdHNfaW5jKFxcdTAwMjZsaW5rLVxcdTAwM2VyeF9lcnJvcnMpO1xcbitcXHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcXHUwMDI2bGluay1cXHUwMDNlcnhfc3luY3ApO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbiBcXHRpbnQgbmRwb2Zmc2V0O1xcbkBAIC0zMjAsNyArMzI4LDEwIEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdFxcdHNrYl9wdXQoc2tibiwgZGdyYW1fbGVuKTtcXG4tXFx0XFx0XFx0c2tiX2NvcHlfYml0cyhza2IsIGRncmFtX29mZnNldCwgc2tibi1cXHUwMDNlZGF0YSwgZGdyYW1fbGVuKTtcXG4rXFx0XFx0XFx0aWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXFx1MDAzZWRhdGEsIGRncmFtX2xlbikpIHtcXG4rXFx0XFx0XFx0XFx0bWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTtcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdFxcdH1cXG4gXFxuIFxcdFxcdFxcdHN3aXRjaCAoc2tibi1cXHUwMDNlZGF0YVswXSBcXHUwMDI2IDB4ZjApIHtcXG4gXFx0XFx0XFx0Y2FzZSAweDQwOlxcbkBAIC0zMzIsMTAgKzM0Myw3IEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRcXHRkZWZhdWx0OlxcbiBcXHRcXHRcXHRcXHRuZXRfZXJyX3JhdGVsaW1pdGVkKFxcXCIlczogdW5rbm93biBwcm90b2NvbFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGxpbmstXFx1MDAzZW5kZXYtXFx1MDAzZW5hbWUpO1xcbi1cXHRcXHRcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueShza2JuKTtcXG4tXFx0XFx0XFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2bGluay1cXHUwMDNlcnhfc3luY3ApO1xcbi1cXHRcXHRcXHRcXHR1NjRfc3RhdHNfaW5jKFxcdTAwMjZsaW5rLVxcdTAwM2VyeF9lcnJvcnMpO1xcbi1cXHRcXHRcXHRcXHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcXHUwMDI2bGluay1cXHUwMDNlcnhfc3luY3ApO1xcbitcXHRcXHRcXHRcXHRtaGlfbWJpbV9yeF9kcm9wKGxpbmssIHNrYm4pO1xcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0XFx0fVxcbiBcXG5AQCAtMzQ5LDkgKzM1NywxMyBAQCBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gdW5sb2NrOlxcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gbmV4dF9uZHA6XFxuLVxcdFxcdC8qIE90aGVyIE5EUCB0byBwcm9jZXNzPyAqL1xcbi1cXHRcXHRuZHBvZmZzZXQgPSAoaW50KWxlMTZfdG9fY3B1KG5kcDE2LndOZXh0TmRwSW5kZXgpO1xcbi1cXHRcXHRpZiAoIW5kcG9mZnNldClcXG4rXFx0XFx0LyogT3RoZXIgTkRQIHRvIHByb2Nlc3M/ICBUaGUgb2Zmc2V0cyBtdXN0IGFkdmFuY2UsIG9yIGFcXG4rXFx0XFx0ICogc2VsZi1yZWZlcmVuY2luZyBORFAga2VlcHMgdGhlIGxvb3Agc3Bpbm5pbmcgZm9yZXZlci5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdG4gPSAoaW50KWxlMTZfdG9fY3B1KG5kcDE2LndOZXh0TmRwSW5kZXgpO1xcbitcXHRcXHRpZiAobiBcXHUwMDNlIG5kcG9mZnNldClcXG4rXFx0XFx0XFx0bmRwb2Zmc2V0ID0gbjtcXG4rXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuY1xcbmluZGV4IGZjMGE3Y2IxODFkZjIuLjhmMzJjMmQyNjkzMTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNcXG4rKysgYi9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuY1xcbkBAIC00MjAsNiArNDIwLDEwIEBAIHN0YXRpYyB2b2lkIHQ3eHhfY2NtbmlfcmVjdl9za2Ioc3RydWN0IHQ3eHhfY2NtbmlfY3RybCAqY2NtbmlfY3RsYiwgc3RydWN0IHNrX2J1XFxuIFxcbiBcXHRza2JfY2IgPSBUN1hYX1NLQl9DQihza2IpO1xcbiBcXHRuZXRpZl9pZCA9IHNrYl9jYi1cXHUwMDNlbmV0aWZfaWR4O1xcbitcXHRpZiAobmV0aWZfaWQgXFx1MDAzZT0gTklDX0RFVl9NQVgpIHtcXG4rXFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4gXFx0Y2NtbmkgPSBSRUFEX09OQ0UoY2NtbmlfY3RsYi1cXHUwMDNlY2NtbmlfaW5zdFtuZXRpZl9pZF0pO1xcbiBcXHRpZiAoIWNjbW5pKSB7XFxuIFxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6MTAuMDc0NTE2MzlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjExNDI4NjU2MTU1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgUlggaGFuZGxpbmcgcm91dGluZXMgaW4gZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKE1ISSBXV0FOIE1CSU0gZHJpdmVyIGZvciBRdWFsY29tbSBtb2RlbXMpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyBkZXBlbmQgb24gc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBtb2RlbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMzOTY4OWE3ZWJkZGI0OTI1YTUwNmM4ZWM2Yzc1Y2RhMmUxMWIwNGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwMjo0NjowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jIGIvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcbmluZGV4IGE5NDk5ODcxMjU5NzYuLjMzNmY4OTc1NmYxMGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xuKysrIGIvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcbkBAIC0yNTEsNiArMjUxLDE0IEBAIHN0YXRpYyBpbnQgbWJpbV9yeF92ZXJpZnlfbmRwMTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2ICpuXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbitzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeF9kcm9wKHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3tcbitcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4rXHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNmxpbmstXHUwMDNlcnhfc3luY3ApO1xuK1x0dTY0X3N0YXRzX2luYyhcdTAwMjZsaW5rLVx1MDAzZXJ4X2Vycm9ycyk7XG4rXHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZsaW5rLVx1MDAzZXJ4X3N5bmNwKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0aW50IG5kcG9mZnNldDtcbkBAIC0zMjAsNyArMzI4LDEwIEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0c2tiX3B1dChza2JuLCBkZ3JhbV9sZW4pO1xuLVx0XHRcdHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXHUwMDNlZGF0YSwgZGdyYW1fbGVuKTtcbitcdFx0XHRpZiAoc2tiX2NvcHlfYml0cyhza2IsIGRncmFtX29mZnNldCwgc2tibi1cdTAwM2VkYXRhLCBkZ3JhbV9sZW4pKSB7XG4rXHRcdFx0XHRtaGlfbWJpbV9yeF9kcm9wKGxpbmssIHNrYm4pO1xuK1x0XHRcdFx0Y29udGludWU7XG4rXHRcdFx0fVxuIFxuIFx0XHRcdHN3aXRjaCAoc2tibi1cdTAwM2VkYXRhWzBdIFx1MDAyNiAweGYwKSB7XG4gXHRcdFx0Y2FzZSAweDQwOlxuQEAgLTMzMiwxMCArMzQzLDcgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdFx0ZGVmYXVsdDpcbiBcdFx0XHRcdG5ldF9lcnJfcmF0ZWxpbWl0ZWQoXCIlczogdW5rbm93biBwcm90b2NvbFxcblwiLFxuIFx0XHRcdFx0XHRcdCAgICBsaW5rLVx1MDAzZW5kZXYtXHUwMDNlbmFtZSk7XG4tXHRcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2JuKTtcbi1cdFx0XHRcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2bGluay1cdTAwM2VyeF9zeW5jcCk7XG4tXHRcdFx0XHR1NjRfc3RhdHNfaW5jKFx1MDAyNmxpbmstXHUwMDNlcnhfZXJyb3JzKTtcbi1cdFx0XHRcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNmxpbmstXHUwMDNlcnhfc3luY3ApO1xuK1x0XHRcdFx0bWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdH1cbiBcbkBAIC0zNDksOSArMzU3LDEzIEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHVubG9jazpcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gbmV4dF9uZHA6XG4tXHRcdC8qIE90aGVyIE5EUCB0byBwcm9jZXNzPyAqL1xuLVx0XHRuZHBvZmZzZXQgPSAoaW50KWxlMTZfdG9fY3B1KG5kcDE2LndOZXh0TmRwSW5kZXgpO1xuLVx0XHRpZiAoIW5kcG9mZnNldClcbitcdFx0LyogT3RoZXIgTkRQIHRvIHByb2Nlc3M/ICBUaGUgb2Zmc2V0cyBtdXN0IGFkdmFuY2UsIG9yIGFcbitcdFx0ICogc2VsZi1yZWZlcmVuY2luZyBORFAga2VlcHMgdGhlIGxvb3Agc3Bpbm5pbmcgZm9yZXZlci5cbitcdFx0ICovXG4rXHRcdG4gPSAoaW50KWxlMTZfdG9fY3B1KG5kcDE2LndOZXh0TmRwSW5kZXgpO1xuK1x0XHRpZiAobiBcdTAwM2UgbmRwb2Zmc2V0KVxuK1x0XHRcdG5kcG9mZnNldCA9IG47XG4rXHRcdGVsc2VcbiBcdFx0XHRicmVhaztcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXG5pbmRleCBmYzBhN2NiMTgxZGYyLi44ZjMyYzJkMjY5MzEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXG5AQCAtNDIwLDYgKzQyMCwxMCBAQCBzdGF0aWMgdm9pZCB0N3h4X2NjbW5pX3JlY3Zfc2tiKHN0cnVjdCB0N3h4X2NjbW5pX2N0cmwgKmNjbW5pX2N0bGIsIHN0cnVjdCBza19idVxuIFxuIFx0c2tiX2NiID0gVDdYWF9TS0JfQ0Ioc2tiKTtcbiBcdG5ldGlmX2lkID0gc2tiX2NiLVx1MDAzZW5ldGlmX2lkeDtcbitcdGlmIChuZXRpZl9pZCBcdTAwM2U9IE5JQ19ERVZfTUFYKSB7XG4rXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuIFx0Y2NtbmkgPSBSRUFEX09OQ0UoY2NtbmlfY3RsYi1cdTAwM2VjY21uaV9pbnN0W25ldGlmX2lkXSk7XG4gXHRpZiAoIWNjbW5pKSB7XG4gXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ2OjEwLjA3NDUxNzU2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDMwNzMyNjM4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpcyAtIEEgUXVpY2sgTG9vayoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiSXMgdGhpcyBmdXp6YWJsZT9cIiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXQncyBldmVuIHdvcnRoIHRoZSB0aW1lLiAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlYWNoYWJpbGl0eSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLCBhbmQgYW55IGludGVyZXN0aW5nIGZvY3VzIHN5bWJvbHMuXG5cblJpZ2h0LCBsZXQncyBzdGFydCB3aXRoIHRoZSBmaWxlcyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZC4gSSBzZWUgYGRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jYCBhbmQgYGRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jYC4gIE9rYXksIFdXQU4gZHJpdmVycy4gR290IGl0LiBOb3csIHdoYXQncyB0aGVpciBjb250ZXh0PyBBcmUgdGhleSBsaWtlbHkgdG8gYmUgdHJpZ2dlcmVkIGVhc2lseSBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQsIG9yIGFtIEkgZ29pbmcgdG8gbmVlZCBzcGVjaWFsaXplZCBoYXJkd2FyZSB0byBhY3R1YWxseSBnZXQgYXQgdGhlbT8gSSBuZWVkIHRvIGtub3cgdGhpcyBBU0FQLlxuXG5OZXh0IHN0ZXA6IHRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgb3IgZmlyZSB1cCBgZ3JlcHBlcmAuIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IHdpdGggYGdyZXBwZXJgLCBhcyBpdCdzIG9mdGVuIGZhc3RlciBmb3IgdGhpcyBpbml0aWFsIGFzc2Vzc21lbnQsIHRvIHNlZSBpZiBJIGNhbiBxdWlja2x5IGlkZW50aWZ5IGFueSByZWxldmFudCBjb25maWd1cmF0aW9ucyBvciBwb3RlbnRpYWwgYnVpbGQgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgaWxsdW1pbmF0ZSB0aGUgcGF0aCB0byByZWFjaGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4OTIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NjoxNC4zODE4NTAzNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTY3MjYyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNSElfV1dBTl9NQklNfE1US19UN1hYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTQwPWNvbmZpZyBNSElfV1dBTl9DVFJMXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNTItXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjUzOmNvbmZpZyBNSElfV1dBTl9NQklNXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTU0LSAgICAgICAgdHJpc3RhdGUgXFxcIk1ISSBXV0FOIE1CSU0gbmV0d29yayBkcml2ZXIgZm9yIFF1YWxjb21tLWJhc2VkIFBDSWUgbW9kZW1zXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTk2PWNvbmZpZyBJT1NNXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTA4LVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMDk6Y29uZmlnIE1US19UN1hYXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTExMC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgUENJZSA1RyBXV0FOIG1vZGVtIFQ3eHggZGV2aWNlXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfTUhJX1dXQU5fQ1RSTCkgKz0gbWhpX3d3YW5fY3RybC5vXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTUhJX1dXQU5fTUJJTSkgKz0gbWhpX3d3YW5fbWJpbS5vXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfUUNPTV9CQU1fRE1VWCkgKz0gcWNvbV9iYW1fZG11eC5vXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19JT1NNKSArPSBpb3NtL1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX01US19UN1hYKSArPSB0N3h4L1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjM6b2JqLSR7Q09ORklHX01US19UN1hYfSA6PSBtdGtfdDd4eC5vXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTQtbXRrX3Q3eHgteTo9XFx0dDd4eF9wY2kubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ2OjE0LjQzMTUyNjQ4OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5MjU0ODczNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGF0IGtlcm5lbCBjb25maWd1cmF0aW9uIGludmVzdGlnYXRpb24sIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlOiBXV0FOIFx1MDAyNiBNQklNKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGBNSElfV1dBTl9NQklNYCBhbmQgYE1US19UN1hYYCB3aXRoaW4gdGhlIFdXQU4gc3Vic3lzdGVtJ3MgS2NvbmZpZyBmaWxlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYC4gSSdsbCB3YW50IHRvIHF1aWNrbHkgcGFyc2UgdGhhdCBmaWxlLCBwYXlpbmcgc3BlY2lmaWMgYXR0ZW50aW9uIHRvIGhvdyB0aGVzZSB0d28gb3B0aW9ucyDigJMgYE1ISV9XV0FOX01CSU1gIGFuZCBgTVRLX1Q3WFhgIGFyZSBkZWZpbmVkIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgKndoYXQqIHRoZXkgZGVwZW5kIG9uLiBBcmUgdGhleSBtdXR1YWxseSBleGNsdXNpdmU/IERvZXMgb25lICpyZXF1aXJlKiB0aGUgb3RoZXI/IEFyZSB0aGVyZSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBicm91Z2h0IGludG8gdGhlIHBpY3R1cmUgYmFzZWQgb24gZWl0aGVyIG9mIHRoZXNlIGJlaW5nIHNldD8gVW5kZXJzdGFuZGluZyB0aGVpciBkZXBlbmRlbmNpZXMgaXMgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHRoZXkgcGxheSB0b2dldGhlciBpbiB0aGUgYnJvYWRlciBXV0FOIGVjb3N5c3RlbSBhbmQgaG93IEkgbWlnaHQgbmVlZCB0byBhZGp1c3QgdGhpbmdzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGFueSBwbGF0Zm9ybSBvciBidXMtc3BlY2lmaWMgY29uc3RyYWludHMgcmV2ZWFsZWQgaW4gdGhlIEtjb25maWcgZmlsZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGJhc2Ugb2Yga25vd2xlZGdlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgTUJJTSBwcm90b2NvbCBpcyBtYW5hZ2VkIHdoZW4gdXNpbmcgdGhlIE1USyBUN1hYIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzY1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6MjEuMzU3MDE2Mjg2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0MDpcXHRjb25maWcgTUhJX1dXQU5fQ1RSTFxcbiAgNDE6XFx0XFx0dHJpc3RhdGUgXFxcIk1ISSBXV0FOIGNvbnRyb2wgZHJpdmVyIGZvciBRdWFsY29tbS1iYXNlZCBQQ0llIG1vZGVtc1xcXCJcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gTUhJX0JVU1xcbiAgNDM6XFx0XFx0aGVscFxcbiAgNDQ6XFx0XFx0ICBNSEkgV1dBTiBDVFJMIGFsbG93cyBRQ09NLWJhc2VkIFBDSWUgbW9kZW1zIHRvIGV4cG9zZSBkaWZmZXJlbnQgbW9kZW1cXG4gIDQ1OlxcdFxcdCAgY29udHJvbCBwcm90b2NvbHMvcG9ydHMgdG8gdXNlcnNwYWNlLCBpbmNsdWRpbmcgQVQsIE1CSU0sIFFNSSwgRElBR1xcbiAgNDY6XFx0XFx0ICBhbmQgRklSRUhPU0UuIFRoZXNlIHByb3RvY29scyBjYW4gYmUgYWNjZXNzZWQgZGlyZWN0bHkgZnJvbSB1c2Vyc3BhY2VcXG4gIDQ3OlxcdFxcdCAgKGUuZy4gQVQgY29tbWFuZHMpIG9yIHZpYSBsaWJyYXJpZXMvdG9vbHMgKGUuZy4gbGlibWJpbSwgbGlicW1pLFxcbiAgNDg6XFx0XFx0ICBsaWJxY2RtLi4uKS5cXG4gIDQ5OlxcdFxcbiAgNTA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG4gIDUxOlxcdFxcdCAgY2FsbGVkIG1oaV93d2FuX2N0cmwuXFxuICA1MjpcXHRcXG4gIDUzOlxcdGNvbmZpZyBNSElfV1dBTl9NQklNXFxuICA1NDpcXHQgICAgICAgIHRyaXN0YXRlIFxcXCJNSEkgV1dBTiBNQklNIG5ldHdvcmsgZHJpdmVyIGZvciBRdWFsY29tbS1iYXNlZCBQQ0llIG1vZGVtc1xcXCJcXG4gIDU1OlxcdCAgICAgICAgZGVwZW5kcyBvbiBNSElfQlVTXFxuICA1NjpcXHQgICAgICAgIGhlbHBcXG4gIDU3OlxcdCAgICAgICAgICBNSEkgV1dBTiBNQklNIGlzIGEgV1dBTiBuZXR3b3JrIGRyaXZlciBmb3IgUUNPTS1iYXNlZCBQQ0llIG1vZGVtcy5cXG4gIDU4OlxcdCAgICAgICAgICBJdCBpbXBsZW1lbnRzIE1CSU0gb3ZlciBNSEksIGZvciBJUCBkYXRhIGFnZ3JlZ2F0aW9uIGFuZCBtdXhpbmcuXFxuICA1OTpcXHQgICAgICAgICAgQSBkZWZhdWx0IHd3YW4wIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGNyZWF0ZWQgZm9yIE1CSU0gZGF0YSBzZXNzaW9uXFxuICA2MDpcXHQgICAgICAgICAgSUQgMC4gQWRkaXRpb25hbCBsaW5rcyBjYW4gYmUgY3JlYXRlZCB2aWEgd3dhbiBydG5ldGxpbmsgdHlwZS5cXG4gIDYxOlxcdFxcbiAgNjI6XFx0ICAgICAgICAgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxcbiAgNjM6XFx0ICAgICAgICAgIGNhbGxlZCBtaGlfd3dhbl9tYmltLlxcbiAgNjQ6XFx0XFxuICA2NTpcXHRjb25maWcgUUNPTV9CQU1fRE1VWFxcbiAgNjY6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEJBTS1ETVVYIFdXQU4gbmV0d29yayBkcml2ZXJcXFwiXFxuICA2NzpcXHRcXHRkZXBlbmRzIG9uIChETUFfRU5HSU5FIFxcdTAwMjZcXHUwMDI2IFBNIFxcdTAwMjZcXHUwMDI2IFFDT01fU01FTV9TVEFURSkgfHwgQ09NUElMRV9URVNUXFxuICA2ODpcXHRcXHRoZWxwXFxuICA2OTpcXHRcXHQgIFRoZSBCQU0gRGF0YSBNdWx0aXBsZXhlciBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIG5ldHdvcmsgZGF0YSBjaGFubmVsc1xcbiAgNzA6XFx0XFx0ICBvZiBtb2RlbXMgaW50ZWdyYXRlZCBpbnRvIG1hbnkgb2xkZXIgUXVhbGNvbW0gU29DcywgZS5nLiBRdWFsY29tbVxcbiAgNzE6XFx0XFx0ICBNU004OTE2IG9yIE1TTTg5NzQuIFRoZSBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCB2aWEgUU1JL0FUIGZyb21cXG4gIDcyOlxcdFxcdCAgdXNlcnNwYWNlIHdpdGggY29udHJvbCBwb3J0cyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgV1dBTiBzdWJzeXN0ZW1cXG4gIDczOlxcdFxcdCAgKENPTkZJR19SUE1TR19XV0FOX0NUUkwpIG9yIFFSVFIgbmV0d29yayBzb2NrZXRzIChDT05GSUdfUVJUUikuXFxuICA3NDpcXHRcXG4gIDc1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuICA3NjpcXHRcXHQgIGNhbGxlZCBxY29tX2JhbV9kbXV4LlxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgUlBNU0dfV1dBTl9DVFJMXFxuICA3OTpcXHRcXHR0cmlzdGF0ZSBcXFwiUlBNU0cgV1dBTiBjb250cm9sIGRyaXZlclxcXCJcXG4gIDgwOlxcdFxcdGRlcGVuZHMgb24gUlBNU0dcXG4gIDgxOlxcdFxcdGhlbHBcXG4gIDgyOlxcdFxcdCAgUlBNU0cgV1dBTiBDVFJMIGFsbG93cyBtb2RlbXMgYXZhaWxhYmxlIHZpYSBSUE1TRyBjaGFubmVscyB0byBleHBvc2VcXG4gIDgzOlxcdFxcdCAgZGlmZmVyZW50IG1vZGVtIHByb3RvY29scy9wb3J0cyB0byB1c2Vyc3BhY2UsIGluY2x1ZGluZyBBVCBhbmQgUU1JLlxcbiAgODQ6XFx0XFx0ICBUaGVzZSBwcm90b2NvbHMgY2FuIGJlIGFjY2Vzc2VkIGRpcmVjdGx5IGZyb20gdXNlcnNwYWNlXFxuICA4NTpcXHRcXHQgIChlLmcuIEFUIGNvbW1hbmRzKSBvciB2aWEgbGlicmFyaWVzL3Rvb2xzIChlLmcuIGxpYnFtaSwgbGlicWNkbS4uLikuXFxuICA4NjpcXHRcXG4gIDg3OlxcdFxcdCAgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3IgbW9kZW1zIGludGVncmF0ZWQgaW50byBtYW55IFF1YWxjb21tIFNvQ3MsXFxuICA4ODpcXHRcXHQgIGUuZy4gZm9yIEFUIGFuZCBRTUkgb24gUXVhbGNvbW0gTVNNODkxNiBvciBNU004OTc0LiBOb3RlIHRoYXQgbWFueVxcbiAgODk6XFx0XFx0ICBuZXdlciBRdWFsY29tbSBTb0NzIChlLmcuIFNETTg0NSkgc3RpbGwgcHJvdmlkZSBhbiBBVCBwb3J0IHRocm91Z2hcXG4gIDkwOlxcdFxcdCAgdGhpcyBkcml2ZXIgYnV0IHRoZSBRTUkgbWVzc2FnZXMgY2FuIG9ubHkgYmUgc2VudCB0aHJvdWdoXFxuICA5MTpcXHRcXHQgIFFSVFIgbmV0d29yayBzb2NrZXRzIChDT05GSUdfUVJUUikuXFxuICA5MjpcXHRcXG4gIDkzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuICA5NDpcXHRcXHQgIGNhbGxlZCBycG1zZ193d2FuX2N0cmwuXFxuICA5NTpcXHRcXG4gIDk2OlxcdGNvbmZpZyBJT1NNXFxuICA5NzpcXHRcXHR0cmlzdGF0ZSBcXFwiSU9TTSBEcml2ZXIgZm9yIEludGVsIE0uMiBXV0FOIERldmljZVxcXCJcXG4gIDk4OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA5OTpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gMTAwOlxcdFxcdHNlbGVjdCBSRUxBWSBpZiBXV0FOX0RFQlVHRlNcXG4gMTAxOlxcdFxcdGhlbHBcXG4gMTAyOlxcdFxcdCAgVGhpcyBkcml2ZXIgZW5hYmxlcyBJbnRlbCBNLjIgV1dBTiBEZXZpY2UgY29tbXVuaWNhdGlvbi5cXG4gMTAzOlxcdFxcbiAxMDQ6XFx0XFx0ICBJZiB5b3UgaGF2ZSBvbmUgb2YgdGhvc2UgSW50ZWwgTS4yIFdXQU4gTW9kdWxlcyBhbmQgd2lzaCB0byB1c2UgaXQgaW5cXG4gMTA1OlxcdFxcdCAgTGludXggc2F5IFkvTSBoZXJlLlxcbiAxMDY6XFx0XFxuIDEwNzpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDEwODpcXHRcXG4gMTA5OlxcdGNvbmZpZyBNVEtfVDdYWFxcbiAxMTA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRldmljZVxcXCJcXG4gMTExOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDExMjpcXHRcXHRzZWxlY3QgUkVMQVkgaWYgV1dBTl9ERUJVR0ZTXFxuIDExMzpcXHRcXHRoZWxwXFxuIDExNDpcXHRcXHQgIEVuYWJsZXMgTWVkaWFUZWsgUENJZSBiYXNlZCA1RyBXV0FOIG1vZGVtIChUN3h4IHNlcmllcykgZGV2aWNlLlxcbiAxMTU6XFx0XFx0ICBBZGFwdHMgV1dBTiBmcmFtZXdvcmsgYW5kIHByb3ZpZGVzIG5ldHdvcmsgaW50ZXJmYWNlIGxpa2Ugd3dhbjBcXG4gMTE2OlxcdFxcdCAgYW5kIHR0eSBpbnRlcmZhY2VzIGxpa2Ugd3dhbjBhdDAgKEFUIHByb3RvY29sKSwgd3dhbjBtYmltMFxcbiAxMTc6XFx0XFx0ICAoTUJJTSBwcm90b2NvbCksIGV0Yy5cXG4gMTE4OlxcdFxcbiAxMTk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6MjEuMzU3MTQ3NzM2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI2MzM4NDAwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRHJpdmVyIFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBzaXR1YXRpb24uIFdlJ3ZlIGdvdCB0d28gZHJpdmVycyB0byBjb25zaWRlciBpbiB0ZXJtcyBvZiByZWFjaGFiaWxpdHk6IGBNSElfV1dBTl9NQklNYC4gSSBrbm93IGBNSElgIHN0YW5kcyBmb3IgTW9kZW0gSG9zdCBJbnRlcmZhY2UsIGFuZCBpdCdzIHVzZWQgZm9yIFF1YWxjb21tIFBDSWUgbW9kZW1zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSBkb2VzIHRoaXMgYWN0dWFsbHkgbGl2ZT9cIiBJcyBgTUhJX1dXQU5fTUJJTWAgZGlyZWN0bHkgdGllZCB0byBwaHlzaWNhbCBoYXJkd2FyZSB0aHJvdWdoIHRoZSBgTUhJYCBidXMsIG9yIGFyZSB0aGVyZSB2aXJ0dWFsIGNvbnN0cnVjdHMgYXQgcGxheT8gUGVyaGFwcyBhbiBlbXVsYXRlZCBNSEkgYnVzIG9yIGV2ZW4gc29tZSBNSEkgRVAgZW11bGF0aW9uIGdvaW5nIG9uPyBUaGF0J3Mgd2hhdCBJIG5lZWQgdG8gcGlucG9pbnQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgaG93IHRvIGFjY2VzcyBpdHMgZnVuY3Rpb25hbGl0eS4gU28sIHRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSBleGFjdGx5IGhvdyB0aGUgTUhJIGJ1cyBhbmQgaXRzIGFzc29jaWF0ZWQgZGV2aWNlcyBhcmUgY3JlYXRlZCBpbiB0aGUgc3lzdGVtLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGlmIHRoZXJlIGlzIGEgJ3JlYWNoJy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ3NCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6MjMuNjIwNTM0NDI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNjAzOTE2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaGlfZHJpdmVyX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RlYnVnZnMuYz0yOTg9aW50IHFhaWNfYm9vdGxvZ19yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RlYnVnZnMuYy0yOTkte1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2RlYnVnZnMuYzozMDA6XFx0cmV0dXJuIG1oaV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNnFhaWNfYm9vdGxvZ19taGlfZHJpdmVyKTtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kZWJ1Z2ZzLmMtMzAxLX1cXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jPTc3Nj1zdGF0aWMgaW50IF9faW5pdCBxYWljX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTc4NS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYzo3ODY6XFx0cmV0ID0gbWhpX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2cWFpY19taGlfZHJpdmVyKTtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy03ODctXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jOjc4ODpcXHRcXHRwcl9kZWJ1ZyhcXFwicWFpYzogbWhpX2RyaXZlcl9yZWdpc3RlciBmYWlsZWQgJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNzg5LVxcdFxcdGdvdG8gZnJlZV9wY2k7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19yYXMuYz02MzM9aW50IHFhaWNfcmFzX3JlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfcmFzLmMtNjM0LXtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19yYXMuYzo2MzU6XFx0cmV0dXJuIG1oaV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNnFhaWNfcmFzX21oaV9kcml2ZXIpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3Jhcy5jLTYzNi19XFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19zc3IuYz04MDc9aW50IHFhaWNfc3NyX3JlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfc3NyLmMtODA4LXtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19zc3IuYzo4MDk6XFx0cmV0dXJuIG1oaV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNnFhaWNfc3NyX21oaV9kcml2ZXIpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3Nzci5jLTgxMC19XFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY190aW1lc3luYy5jPTM4OD1pbnQgcWFpY190aW1lc3luY19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY190aW1lc3luYy5jLTM5MS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY190aW1lc3luYy5jOjM5MjpcXHRyZXQgPSBtaGlfZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZxYWljX3RpbWVzeW5jX2RyaXZlcik7XFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfdGltZXN5bmMuYy0zOTMtXFx0aWYgKHJldClcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY190aW1lc3luYy5jLTM5NC1cXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3RpbWVzeW5jLmM6Mzk1OlxcdHJldCA9IG1oaV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNnFhaWNfYm9vdF90aW1lc3luY19kcml2ZXIpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX3RpbWVzeW5jLmMtMzk2LVxcbi0tXFxuZHJpdmVycy9hY2NlbC9xYWljL3NhaGFyYS5jPTkyNj1pbnQgc2FoYXJhX3JlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9hY2NlbC9xYWljL3NhaGFyYS5jLTkyNy17XFxuZHJpdmVycy9hY2NlbC9xYWljL3NhaGFyYS5jOjkyODpcXHRyZXR1cm4gbWhpX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2c2FoYXJhX21oaV9kcml2ZXIpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9zYWhhcmEuYy05MjktfVxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTEzMzM9c3RhdGljIHZvaWQgbWhpX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTQwMC1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmM6MTQwMTppbnQgX19taGlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBtaGlfZHJpdmVyICptaGlfZHJ2LCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTQwMi17XFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTQxMi19XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjE0MTM6RVhQT1JUX1NZTUJPTF9HUEwoX19taGlfZHJpdmVyX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTQxNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6MjQuNDU2NTc4MzA1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAzMjExODk3MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNSEkgV1dBTiBhbmQgVDdYWCBOZXR3b3JrIERldmljZSBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG1oaV93d2FuX21iaW0uY2AgYW5kIGB0N3h4X25ldGRldi5jYCDigJMgdGhhdCdzIHdoZXJlIHRoZSBhY3Rpb24gaXMsIGl0IGxvb2tzIGxpa2UuIE15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyB0byB0cmFjZSB0aGUgcmVnaXN0cmF0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBvZiB0aGF0IGBtaGlfd3dhbl9tYmltYCBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGJyb3VnaHQgb25saW5lLiBIb3cgaXMgdGhlIE1ISSBpbnRlcmZhY2UgaG9va2VkIGludG8gdGhlIE1CSU0gZnJhbWV3b3JrPyBBbmQgaG93IGRvZXMgdGhhdCBpbnRlcmFjdGlvbiB3aXRoIHRoZSB0N3h4IGhhcmR3YXJlIGFjdHVhbGx5IHRyYW5zbGF0ZSBpbnRvIGEgd29ya2luZyBuZXR3b3JrIGRldmljZT8gVGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGlzIGtleSDigJMgdGhhdCdzIHdoZXJlIHRoZSBkcml2ZXIgc2V0cyB1cCB0aGUgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0ZXMgcmVzb3VyY2VzLCBhbmQgcHJlcGFyZXMgZm9yIGNvbW11bmljYXRpb24uIEdvdHRhIHVuZGVyc3RhbmQgdGhhdCBpbml0aWFsIGhhbmRzaGFrZSB0byB0cnVseSBnZXQgdGhlIHdob2xlIHBpY3R1cmUuIEknbSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhvc2UgZmlsZXMgYW5kIGZpZ3VyZSBvdXQgdGhhdCByZWdpc3RyYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MTAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0Njo0NC43Nzc3NzAzNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1ODA4NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWhpX21iaW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDUtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDY6c3RydWN0IG1oaV9tYmltX2xpbmsge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ3OlxcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ4LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjU6c3RydWN0IG1oaV9tYmltX2NvbnRleHQge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2LVxcdHN0cnVjdCBtaGlfZGV2aWNlICptZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM9Nzg9c3RydWN0IG1iaW1fdHhfaGRyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTgzLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjg0OnN0YXRpYyBzdHJ1Y3QgbWhpX21iaW1fbGluayAqbWhpX21iaW1fZ2V0X2xpbmtfcmN1KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTg1LVxcdFxcdFxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBzZXNzaW9uKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTg2LXtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo4NzpcXHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluaztcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy04OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTk2LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjk3OnN0YXRpYyBpbnQgbWhpX21iaW1fZ2V0X2xpbmtfbXV4X2lkKHN0cnVjdCBtaGlfY29udHJvbGxlciAqY250cmwpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM9MTA3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWJpbV90eF9maXh1cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgc2Vzc2lvbixcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE1MC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoxNTE6c3RhdGljIG5ldGRldl90eF90IG1oaV9tYmltX25kb194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE1Mi17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MTUzOlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoxNTQ6XFx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBsaW5rLVxcdTAwM2VtYmltO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE1NS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTkyLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE5MzpzdGF0aWMgaW50IG1iaW1fcnhfdmVyaWZ5X250aDE2KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE5NC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYz0yMzE9c3RhdGljIGludCBtYmltX3J4X3ZlcmlmeV9uZHAxNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgKm5kcDE2KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMjUzLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjI1NDpzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeF9kcm9wKHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTI1NS17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNjEtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MjYyOnN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTI2My17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNzYtXFx0XFx0c3RydWN0IHVzYl9jZGNfbmNtX2RwZTE2IGRwZTE2O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjI3NzpcXHRcXHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluaztcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNzgtXFx0XFx0aW50IG5mcmFtZXMsIG4sIGRwZW9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTMwNC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzozMDU6XFx0XFx0bGluayA9IG1oaV9tYmltX2dldF9saW5rX3JjdShtYmltLCBzZXNzaW9uKTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zMDYtXFx0XFx0aWYgKCFsaW5rKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zMzEtXFx0XFx0XFx0aWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXFx1MDAzZWRhdGEsIGRncmFtX2xlbikpIHtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzozMzI6XFx0XFx0XFx0XFx0bWhpX21iaW1fcnhfZHJvcChsaW5rLCBza2JuKTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zMzMtXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zNDUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGxpbmstXFx1MDAzZW5kZXYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjM0NjpcXHRcXHRcXHRcXHRtaGlfbWJpbV9yeF9kcm9wKGxpbmssIHNrYm4pO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM0Ny1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM3Ni1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzozNzc6c3RhdGljIHN0cnVjdCBza19idWZmICptaGlfbmV0X3NrYl9hZ2coc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMzc4LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM9NDAzPXN0YXRpYyB2b2lkIG1oaV9uZXRfcnhfcmVmaWxsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQwNC17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDA1OlxcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQwNi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIHJ4X3JlZmlsbC53b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQzMy1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0MzQ6c3RhdGljIHZvaWQgbWhpX21iaW1fZGxfY2FsbGJhY2soc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDM1LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbWhpX3Jlc3VsdCAqbWhpX3JlcylcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MzYte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQzNzpcXHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWhpX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MzgtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IG1oaV9yZXMtXFx1MDAzZWJ1Zl9hZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDY2LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ2NzpcXHRcXHRtaGlfbWJpbV9yeChtYmltLCBza2IpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ2OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NzQtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDc1OnN0YXRpYyB2b2lkIG1oaV9tYmltX25kb19nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NzYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnN0YXRzKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ3Ny17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDc4OlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NzktXFx0dW5zaWduZWQgaW50IHN0YXJ0O1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDk2LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ5NzpzdGF0aWMgdm9pZCBtaGlfbWJpbV91bF9jYWxsYmFjayhzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2RldixcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00OTgtXFx0XFx0XFx0XFx0IHN0cnVjdCBtaGlfcmVzdWx0ICptaGlfcmVzKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ5OS17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTAwOlxcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtaGlfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUwMS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gbWhpX3Jlcy1cXHUwMDNlYnVmX2FkZHI7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTAyLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gc2tiLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTAzOlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MDQtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MjgtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTI5OnN0YXRpYyBpbnQgbWhpX21iaW1fbmRvX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTMwLXtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1MzE6XFx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU0My1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NDQ6c3RhdGljIGludCBtaGlfbWJpbV9uZG9fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1MjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1oaV9tYmltX25kbyA9IHtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NTM6XFx0Lm5kb19vcGVuID0gbWhpX21iaW1fbmRvX29wZW4sXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU0OlxcdC5uZG9fc3RvcCA9IG1oaV9tYmltX25kb19zdG9wLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1NTpcXHQubmRvX3N0YXJ0X3htaXQgPSBtaGlfbWJpbV9uZG9feG1pdCxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NTY6XFx0Lm5kb19nZXRfc3RhdHM2NCA9IG1oaV9tYmltX25kb19nZXRfc3RhdHM2NCxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NTctfTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NTgtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU5OnN0YXRpYyBpbnQgbWhpX21iaW1fbmV3bGluayh2b2lkICpjdHh0LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGlmX2lkLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2MC1cXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2MS17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTYyOlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NjM6XFx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBjdHh0O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2NC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NjUtXFx0bGluay1cXHUwMDNlbWJpbSA9IG1iaW07XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTY2OlxcdGxpbmstXFx1MDAzZXNlc3Npb24gPSBtaGlfbWJpbV9nZXRfbGlua19tdXhfaWQobGluay1cXHUwMDNlbWJpbS1cXHUwMDNlbWRldi1cXHUwMDNlbWhpX2NudHJsKSArIGlmX2lkO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU2Ny1cXHRsaW5rLVxcdTAwM2VuZGV2ID0gbmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU3MS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTcyOlxcdGlmIChtaGlfbWJpbV9nZXRfbGlua19yY3UobWJpbSwgaWZfaWQpKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTczLVxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTgzLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU4NDpzdGF0aWMgdm9pZCBtaGlfbWJpbV9kZWxsaW5rKHZvaWQgKmN0eHQsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU4NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTg2LXtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1ODc6XFx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU5NC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1OTU6c3RhdGljIHZvaWQgbWhpX21iaW1fc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYwMi1cXHRuZGV2LVxcdTAwM2VmbGFncyA9IElGRl9QT0lOVE9QT0lOVCB8IElGRl9OT0FSUDtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MDM6XFx0bmRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZtaGlfbWJpbV9uZG87XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjA0LVxcdG5kZXYtXFx1MDAzZW10dSA9IE1ISV9NQklNX0RFRkFVTFRfTVRVO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjEwLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxMTpzdGF0aWMgY29uc3Qgc3RydWN0IHd3YW5fb3BzIG1oaV9tYmltX3d3YW5fb3BzID0ge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxMjpcXHQucHJpdl9zaXplID0gc2l6ZW9mKHN0cnVjdCBtaGlfbWJpbV9saW5rKSxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTM6XFx0LnNldHVwID0gbWhpX21iaW1fc2V0dXAsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjE0OlxcdC5uZXdsaW5rID0gbWhpX21iaW1fbmV3bGluayxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTU6XFx0LmRlbGxpbmsgPSBtaGlfbWJpbV9kZWxsaW5rLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxNi19O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxNy1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTg6c3RhdGljIGludCBtaGlfbWJpbV9wcm9iZShzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2RldiwgY29uc3Qgc3RydWN0IG1oaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxOS17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjIwLVxcdHN0cnVjdCBtaGlfY29udHJvbGxlciAqY250cmwgPSBtaGlfZGV2LVxcdTAwM2VtaGlfY250cmw7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjIxOlxcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYyMi1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQzLVxcdC8qIFJlZ2lzdGVyIHd3YW4gbGluayBvcHMgd2l0aCBNSEkgY29udHJvbGxlciByZXByZXNlbnRpbmcgV1dBTiBpbnN0YW5jZSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY0NDpcXHRyZXR1cm4gd3dhbl9yZWdpc3Rlcl9vcHMoXFx1MDAyNmNudHJsLVxcdTAwM2VtaGlfZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZtaGlfbWJpbV93d2FuX29wcywgbWJpbSwgMCk7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQ1LX1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NDYtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjQ3OnN0YXRpYyB2b2lkIG1oaV9tYmltX3JlbW92ZShzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2RldilcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NDgte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY0OTpcXHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWhpX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NTAtXFx0c3RydWN0IG1oaV9jb250cm9sbGVyICpjbnRybCA9IG1oaV9kZXYtXFx1MDAzZW1oaV9jbnRybDtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY1OC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NTk6c3RhdGljIGNvbnN0IHN0cnVjdCBtaGlfZGV2aWNlX2lkIG1oaV9tYmltX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjYwLVxcdC8qIEhhcmR3YXJlIGFjY2VsZXJhdGVkIGRhdGEgUEFUSCAodG8gbW9kZW0gSVBBKSwgTUJJTSBwcm90b2NvbCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjYzLX07XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjY0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUobWhpLCBtaGlfbWJpbV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjY1LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2NjpzdGF0aWMgc3RydWN0IG1oaV9kcml2ZXIgbWhpX21iaW1fZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2NzpcXHQucHJvYmUgPSBtaGlfbWJpbV9wcm9iZSxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njg6XFx0LnJlbW92ZSA9IG1oaV9tYmltX3JlbW92ZSxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njk6XFx0LmRsX3hmZXJfY2IgPSBtaGlfbWJpbV9kbF9jYWxsYmFjayxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NzA6XFx0LnVsX3hmZXJfY2IgPSBtaGlfbWJpbV91bF9jYWxsYmFjayxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NzE6XFx0LmlkX3RhYmxlID0gbWhpX21iaW1faWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjcyLVxcdC5kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NzYtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6Njc3Om1vZHVsZV9taGlfZHJpdmVyKG1oaV9tYmltX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjc4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0Njo0NC44MjczNTY4NzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjkwMDU1NTYxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQsIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpdmluZyBEZWVwZXI6IEV4cGxvcmluZyBgdDd4eF9uZXRkZXYuY2AgYW5kIGBtdGtfdDd4eGAqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBuZXR3b3JrIGRldmljZSBkcml2ZXJzIGhlcmUsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIFQ3eHggYXJjaGl0ZWN0dXJlLCB3aGljaCwgZnJvbSB3aGF0IEkga25vdywgaXMgbGlrZWx5IGEgTWVkaWFUZWsgcGxhdGZvcm0uIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIHBhcnRpY3VsYXIgbmV0d29yayBkZXZpY2UgaXMgaGFuZGxlZCBpbiB0aGUga2VybmVsLiBMZXQncyBkaWcgaW50byBgdDd4eF9uZXRkZXYuY2Ag4oCTIHRoYXQgZmlsZSBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgZHJpdmVyIGNvZGUgcmVzaWRlcyBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4gSSBzdXNwZWN0IGl0J2xsIGNvbnRhaW4gdGhpbmdzIGxpa2UgaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGludGVycnVwdCBoYW5kbGVycywgYW5kIGFsbCB0aGUgbG93LWxldmVsIGxvZ2ljIHRvIGludGVyZmFjZSB3aXRoIHRoZSBoYXJkd2FyZS5cblxuVGhlbiwgdGhlcmUncyBgbXRrX3Q3eHhgLCB3aGljaCBJJ20gYmV0dGluZyBpcyBhIGJyb2FkZXIgbW9kdWxlIG9yIHBlcmhhcHMgYSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciAoSEFMKSB0YWlsb3JlZCB0byBNZWRpYVRlaydzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBUN3h4IGNoaXBzZXQuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0ZGV2IGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGF0IEhBTC4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGxheWVycyBvZiBhYnN0cmFjdGlvbiBoZXJlIHRvIHJlYWxseSBncmFzcCB0aGUgZGF0YSBmbG93IGFuZCBob3cgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGFjdHVhbGx5IG1hbmFnZWQuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGNvbW1vbiBwYXR0ZXJucywgYW55IHF1aXJrcyBvciBvcHRpbWl6YXRpb25zIHNwZWNpZmljIHRvIHRoZSBUN3h4IHBsYXRmb3JtLCBhbmQgaG93IHRoZXkgZGV2aWF0ZSBmcm9tLCBvciBhZGhlcmUgdG8sIHRoZSBzdGFuZGFyZCBuZXR3b3JrIGRldmljZSBkcml2ZXIgbW9kZWwuIFRoaXMgd2lsbCBwcm92aWRlIGEgY3J1Y2lhbCBpbnNpZ2h0IGludG8gZGVzaWduIGNob2ljZXMgYW5kIGFueSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIEl0J3MgYSBrZXkgcGFydCBvZiB0aGUgcHV6emxlIGZvciB1bmRlcnN0YW5kaW5nIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1MDIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0Njo0Ny43Mjc5MTUwMDRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTc2MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInQ3eHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi90N3h4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTUyMCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjM6b2JqLSR7Q09ORklHX01US19UN1hYfSA6PSBtdGtfdDd4eC5vXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjQ6bXRrX3Q3eHgteTo9XFx0dDd4eF9wY2kubyBcXFxcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjU6XFx0XFx0dDd4eF9wY2llX21hYy5vIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6NjpcXHRcXHR0N3h4X21oY2NpZi5vIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6NzpcXHRcXHR0N3h4X3N0YXRlX21vbml0b3IubyAgXFxcXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZTo4OlxcdFxcdHQ3eHhfbW9kZW1fb3BzLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZTo5OlxcdFxcdHQ3eHhfY2xkbWEubyBcXFxcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjEwOlxcdFxcdHQ3eHhfaGlmX2NsZG1hLm8gIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTE6XFx0XFx0dDd4eF9wb3J0X3Byb3h5Lm8gIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTI6XFx0XFx0dDd4eF9wb3J0X2N0cmxfbXNnLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZToxMzpcXHRcXHR0N3h4X3BvcnRfd3dhbi5vIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTQ6XFx0XFx0dDd4eF9oaWZfZHBtYWlmLm8gIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTU6XFx0XFx0dDd4eF9oaWZfZHBtYWlmX3R4Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZToxNjpcXHRcXHR0N3h4X2hpZl9kcG1haWZfcngubyAgXFxcXFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZToxNzpcXHRcXHR0N3h4X2RwbWFpZi5vIFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MTg6XFx0XFx0dDd4eF9uZXRkZXYub1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZS0xOS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGU6MjA6bXRrX3Q3eHgtJChDT05GSUdfV1dBTl9ERUJVR0ZTKSArPSBcXFxcXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjIxOlxcdFxcdHQ3eHhfcG9ydF90cmFjZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoyNDojaW5jbHVkZSBcXFwidDd4eF9jbGRtYS5oXFxcIlxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI3LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6Mjg6dm9pZCB0N3h4X2NsZG1hX2NsZWFyX2lwX2J1c3koc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yOS17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTM3LS8qKlxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6Mzg6ICogdDd4eF9jbGRtYV9od19yZXN0b3JlKCkgLSBSZXN0b3JlIENMRE1BIEhXIHJlZ2lzdGVycy5cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjM5OiAqIEBod19pbmZvOiBQb2ludGVyIHRvIHN0cnVjdCB0N3h4X2NsZG1hX2h3LlxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNDAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNDItICovXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzo0Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfcmVzdG9yZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNjItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzo2Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfc3RhcnRfcXVldWUoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy02NC1cXHRcXHRcXHQgICAgICAgZW51bSBtdGtfdHhyeCB0eF9yeClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtNzQtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzo3NTp2b2lkIHQ3eHhfY2xkbWFfaHdfc3RhcnQoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy03Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTg0LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6ODU6dm9pZCB0N3h4X2NsZG1hX2h3X3Jlc2V0KHZvaWQgX19pb21lbSAqYW9fYmFzZSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTA0LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MTA1OmJvb2wgdDd4eF9jbGRtYV90eF9hZGRyX2lzX3NldChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTEwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTExMS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjExMjp2b2lkIHQ3eHhfY2xkbWFfaHdfc2V0X3N0YXJ0X2FkZHIoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sIHU2NCBhZGRyZXNzLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTEzLVxcdFxcdFxcdFxcdCAgZW51bSBtdGtfdHhyeCB0eF9yeClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTIyLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MTIzOnZvaWQgdDd4eF9jbGRtYV9od19yZXN1bWVfcXVldWUoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xMjQtXFx0XFx0XFx0XFx0ZW51bSBtdGtfdHhyeCB0eF9yeClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTMzLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MTM0OnVuc2lnbmVkIGludCB0N3h4X2NsZG1hX2h3X3F1ZXVlX3N0YXR1cyhzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTEzNS1cXHRcXHRcXHRcXHRcXHRlbnVtIG10a190eHJ4IHR4X3J4KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xNDctXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxNDg6dm9pZCB0N3h4X2NsZG1hX2h3X3R4X2RvbmUoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBiaXRtYXNrKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMTU4LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MTU5OnZvaWQgdDd4eF9jbGRtYV9od19yeF9kb25lKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgYml0bWFzaylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTE2MC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTE2OS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjE3MDp1bnNpZ25lZCBpbnQgdDd4eF9jbGRtYV9od19pbnRfc3RhdHVzKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgYml0bWFzayxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTE3MS1cXHRcXHRcXHRcXHQgICAgICBlbnVtIG10a190eHJ4IHR4X3J4KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xODEtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxODI6dm9pZCB0N3h4X2NsZG1hX2h3X2lycV9kaXNfdHhyeChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTE4My1cXHRcXHRcXHRcXHRlbnVtIG10a190eHJ4IHR4X3J4KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xOTMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoxOTQ6dm9pZCB0N3h4X2NsZG1hX2h3X2lycV9kaXNfZXEoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8sIGVudW0gbXRrX3R4cnggdHhfcngpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0xOTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yMDQtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoyMDU6dm9pZCB0N3h4X2NsZG1hX2h3X2lycV9lbl90eHJ4KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjA2LVxcdFxcdFxcdCAgICAgICBlbnVtIG10a190eHJ4IHR4X3J4KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yMTYtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoyMTc6dm9pZCB0N3h4X2NsZG1hX2h3X2lycV9lbl9lcShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubywgZW51bSBtdGtfdHhyeCB0eF9yeClcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTIxOC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTIyOC0vKipcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjIyOTogKiB0N3h4X2NsZG1hX2h3X2luaXQoKSAtIEluaXRpYWxpemUgQ0xETUEgSFcuXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYzoyMzA6ICogQGh3X2luZm86IFBvaW50ZXIgdG8gc3RydWN0IHQ3eHhfY2xkbWFfaHcuXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuYy0yMzEtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjMzLSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MjM0OnZvaWQgdDd4eF9jbGRtYV9od19pbml0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmMtMjYzLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmM6MjY0OnZvaWQgdDd4eF9jbGRtYV9od19zdG9wX2FsbF9xcyhzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgZW51bSBtdGtfdHhyeCB0eF9yeClcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI3Mi1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jOjI3Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfc3RvcChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgZW51bSBtdGtfdHhyeCB0eF9yeClcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5jLTI3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oPTEzND1lbnVtIG10a190eHJ4IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTM4LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTM5OmVudW0gdDd4eF9od19tb2RlIHtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE0MC1cXHRNT0RFX0JJVF8zMixcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTQ1LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTQ2OnN0cnVjdCB0N3h4X2NsZG1hX2h3IHtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE0NzpcXHRlbnVtIHQ3eHhfaHdfbW9kZVxcdFxcdGh3X21vZGU7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNDgtXFx0dm9pZCBfX2lvbWVtXFx0XFx0XFx0KmFwX2FvX2Jhc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE1Mi1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE1Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfaXJxX2Rpc190eHJ4KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTU0LVxcdFxcdFxcdFxcdGVudW0gbXRrX3R4cnggdHhfcngpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTU1OnZvaWQgdDd4eF9jbGRtYV9od19pcnFfZGlzX2VxKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTU2LVxcdFxcdFxcdCAgICAgIGVudW0gbXRrX3R4cnggdHhfcngpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTU3OnZvaWQgdDd4eF9jbGRtYV9od19pcnFfZW5fdHhyeChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubyxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE1OC1cXHRcXHRcXHQgICAgICAgZW51bSBtdGtfdHhyeCB0eF9yeCk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNTk6dm9pZCB0N3h4X2NsZG1hX2h3X2lycV9lbl9lcShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubywgZW51bSBtdGtfdHhyeCB0eF9yeCk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNjA6dW5zaWduZWQgaW50IHQ3eHhfY2xkbWFfaHdfcXVldWVfc3RhdHVzKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTYxLVxcdFxcdFxcdFxcdFxcdGVudW0gbXRrX3R4cnggdHhfcngpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTYyOnZvaWQgdDd4eF9jbGRtYV9od19pbml0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE2Mzp2b2lkIHQ3eHhfY2xkbWFfaHdfcmVzdW1lX3F1ZXVlKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTY0LVxcdFxcdFxcdFxcdGVudW0gbXRrX3R4cnggdHhfcngpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTY1OnZvaWQgdDd4eF9jbGRtYV9od19zdGFydChzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNjY6dm9pZCB0N3h4X2NsZG1hX2h3X3N0YXJ0X3F1ZXVlKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTY3LVxcdFxcdFxcdCAgICAgICBlbnVtIG10a190eHJ4IHR4X3J4KTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE2ODp2b2lkIHQ3eHhfY2xkbWFfaHdfdHhfZG9uZShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbywgdW5zaWduZWQgaW50IGJpdG1hc2spO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTY5OnZvaWQgdDd4eF9jbGRtYV9od19yeF9kb25lKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgYml0bWFzayk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNzA6dm9pZCB0N3h4X2NsZG1hX2h3X3N0b3BfYWxsX3FzKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCBlbnVtIG10a190eHJ4IHR4X3J4KTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE3MTp2b2lkIHQ3eHhfY2xkbWFfaHdfc2V0X3N0YXJ0X2FkZHIoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaC0xNzItXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgcW5vLCB1NjQgYWRkcmVzcywgZW51bSBtdGtfdHhyeCB0eF9yeCk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNzM6dm9pZCB0N3h4X2NsZG1hX2h3X3Jlc2V0KHZvaWQgX19pb21lbSAqYW9fYmFzZSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNzQ6dm9pZCB0N3h4X2NsZG1hX2h3X3N0b3Aoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIGVudW0gbXRrX3R4cnggdHhfcngpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc1OnVuc2lnbmVkIGludCB0N3h4X2NsZG1hX2h3X2ludF9zdGF0dXMoc3RydWN0IHQ3eHhfY2xkbWFfaHcgKmh3X2luZm8sIHVuc2lnbmVkIGludCBiaXRtYXNrLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmgtMTc2LVxcdFxcdFxcdFxcdCAgICAgIGVudW0gbXRrX3R4cnggdHhfcngpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2NsZG1hLmg6MTc3OnZvaWQgdDd4eF9jbGRtYV9od19yZXN0b3JlKHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oOjE3ODp2b2lkIHQ3eHhfY2xkbWFfY2xlYXJfaXBfYnVzeShzdHJ1Y3QgdDd4eF9jbGRtYV9odyAqaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfY2xkbWEuaDoxNzk6Ym9vbCB0N3h4X2NsZG1hX3R4X2FkZHJfaXNfc2V0KHN0cnVjdCB0N3h4X2NsZG1hX2h3ICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcW5vKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9jbGRtYS5oLTE4MC0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI3LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI4OiNpbmNsdWRlIFxcXCJ0N3h4X2RwbWFpZi5oXFxcIlxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI5OiNpbmNsdWRlIFxcXCJ0N3h4X3JlZy5oXFxcIlxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTMwLVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzQ6c3RhdGljIGludCB0N3h4X2RwbWFpZl9pbml0X2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTgxLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX21hc2tfdWxxX2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCB1bnNpZ25lZCBpbnQgcV9udW0pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtODMte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTAxLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjEwMjp2b2lkIHQ3eHhfZHBtYWlmX3VubWFza191bHFfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxX251bSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMDMte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTIxLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjEyMjp2b2lkIHQ3eHhfZHBtYWlmX2RsX3VubWFza19iYXRjbnRfbGVuX2Vycl9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTI3LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjEyODp2b2lkIHQ3eHhfZHBtYWlmX2RsX3VubWFza19waXRjbnRfbGVuX2Vycl9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTMzLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjEzNDpzdGF0aWMgdTMyIHQ3eHhfdXBkYXRlX2RscV9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbywgdTMyIHFfZG9uZSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTQyLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE0MzpzdGF0aWMgaW50IHQ3eHhfbWFza19kbHFfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxbm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE1MC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoxNTE6XFx0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXRfYXRvbWljKHQ3eHhfdXBkYXRlX2RscV9pbnRyLCB2YWx1ZSwgdmFsdWUgXFx1MDAyNiBxX2RvbmUsXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTUyLVxcdFxcdFxcdFxcdCAgICAgICAwLCBEUE1BSUZfQ0hFQ0tfVElNRU9VVF9VUywgZmFsc2UsIGh3X2luZm8sIHFfZG9uZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xNjMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MTY0OnZvaWQgdDd4eF9kcG1haWZfZGxxX3VubWFza19yeF9kb25lKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHFubylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTcyLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjE3Mzp2b2lkIHQ3eHhfZHBtYWlmX2Nscl9pcF9idXN5X3N0cyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTE4MC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoxODE6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxxX21hc2tfcnhfcGl0Y250X2xlbl9lcnJfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMTgyLVxcdFxcdFxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBxbm8pXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xOTEtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MTkyOnZvaWQgdDd4eF9kcG1haWZfZGxxX3VubWFza19waXRjbnRfbGVuX2Vycl9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbyxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0xOTMtXFx0XFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IHFubylcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIwMi1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyMDM6dm9pZCB0N3h4X2RwbWFpZl91bF9jbHJfYWxsX2ludHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIwNC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMDctXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjA4OnZvaWQgdDd4eF9kcG1haWZfZGxfY2xyX2FsbF9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMDkte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjEyLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjIxMzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHN0cnVjdCBkcG1haWZfaHdfaW50cl9zdF9wYXJhICpwYXJhLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIxNC1cXHRcXHRcXHRcXHQgICAgICBlbnVtIGRwbWFpZl9od19pbnRyX3R5cGUgaW50cl90eXBlLCB1bnNpZ25lZCBpbnQgaW50cl9xdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIyMy0gKi9cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyMjQ6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfY2hlY2tfdHhfaW50cihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjI1LVxcdFxcdFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgaW50cl9zdGF0dXMsXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMzMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjM0OlxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfVUxfRE9ORSwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTIzNS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yMzYtXFx0XFx0Zm9yX2VhY2hfc2V0X2JpdChpbmRleCwgXFx1MDAyNnZhbHVlLCBEUE1BSUZfVFhRX05VTSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyMzc6XFx0XFx0XFx0dDd4eF9kcG1haWZfbWFza191bHFfaW50cihod19pbmZvLCBpbmRleCk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjM4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI0MS1cXHRpZiAodmFsdWUpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjQyOlxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfVUxfRFJCX0VNUFRZLCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjQzLVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjQ1LVxcdGlmICh2YWx1ZSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyNDY6XFx0XFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9VTF9NRF9OT1RSRUFEWSwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI0OS1cXHRpZiAodmFsdWUpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjUwOlxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfVUxfTURfUFdSX05PVFJFQURZLCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjUxLVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjUzLVxcdGlmICh2YWx1ZSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyNTQ6XFx0XFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9VTF9MRU5fRVJSLCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjYyLSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI2MzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19jaGVja19yeF9pbnRyKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbyxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNjQtXFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBpbnRyX3N0YXR1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI2OC1cXHRcXHRpZiAoaW50cl9zdGF0dXMgXFx1MDAyNiBEUF9ETF9JTlRfU0tCX0xFTl9FUlIpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MjY5OlxcdFxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfU0tCX0xFTl9FUlIsIERQRl9SWF9RTk9fREZUKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yNzAtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjcxLVxcdFxcdGlmIChpbnRyX3N0YXR1cyBcXHUwMDI2IERQX0RMX0lOVF9CQVRDTlRfTEVOX0VSUikge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI3MjpcXHRcXHRcXHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX0JBVENOVF9MRU5fRVJSLCBEUEZfUlhfUU5PX0RGVCk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjczLVxcdFxcdFxcdGh3X2luZm8tXFx1MDAzZWlzcl9lbl9tYXNrLmFwX2RsX2wyaW50cl9lbl9tc2sgXFx1MDAyNj0gfkRQX0RMX0lOVF9CQVRDTlRfTEVOX0VSUjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI3OC1cXHRcXHRpZiAoaW50cl9zdGF0dXMgXFx1MDAyNiBEUF9ETF9JTlRfUElUQ05UX0xFTl9FUlIpIHtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzoyNzk6XFx0XFx0XFx0dDd4eF9kcG1haWZfc2V0X2ludHJfcGFyYShwYXJhLCBEUEZfSU5UUl9ETF9QSVRDTlRfTEVOX0VSUiwgRFBGX1JYX1FOT19ERlQpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI4MC1cXHRcXHRcXHRod19pbmZvLVxcdTAwM2Vpc3JfZW5fbWFzay5hcF9kbF9sMmludHJfZW5fbXNrIFxcdTAwMjY9IH5EUF9ETF9JTlRfUElUQ05UX0xFTl9FUlI7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yODUtXFx0XFx0aWYgKGludHJfc3RhdHVzIFxcdTAwMjYgRFBfRExfSU5UX1BLVF9FTVBUWV9NU0spXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Mjg2OlxcdFxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfUEtUX0VNUFRZX1NFVCwgRFBGX1JYX1FOT19ERlQpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI4Ny1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yODgtXFx0XFx0aWYgKGludHJfc3RhdHVzIFxcdTAwMjYgRFBfRExfSU5UX0ZSR19FTVBUWV9NU0spXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Mjg5OlxcdFxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfRlJHX0VNUFRZX1NFVCwgRFBGX1JYX1FOT19ERlQpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTI5MC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yOTEtXFx0XFx0aWYgKGludHJfc3RhdHVzIFxcdTAwMjYgRFBfRExfSU5UX01UVV9FUlJfTVNLKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI5MjpcXHRcXHRcXHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX01UVV9FUlIsIERQRl9SWF9RTk9fREZUKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yOTMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjk0LVxcdFxcdGlmIChpbnRyX3N0YXR1cyBcXHUwMDI2IERQX0RMX0lOVF9GUkdfTEVOX0VSUl9NU0spXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Mjk1OlxcdFxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfRlJHQ05UX0xFTl9FUlIsIERQRl9SWF9RTk9fREZUKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0yOTYtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMjk3LVxcdFxcdGlmIChpbnRyX3N0YXR1cyBcXHUwMDI2IERQX0RMX0lOVF9RMF9QSVRDTlRfTEVOX0VSUikge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjI5ODpcXHRcXHRcXHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX1EwX1BJVENOVF9MRU5fRVJSLCBCSVQocW5vKSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Mjk5OlxcdFxcdFxcdHQ3eHhfZHBtYWlmX2RscV9tYXNrX3J4X3BpdGNudF9sZW5fZXJyX2ludHIoaHdfaW5mbywgcW5vKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMDAtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzAyLVxcdFxcdGlmIChpbnRyX3N0YXR1cyBcXHUwMDI2IERQX0RMX0lOVF9IUENfRU5UX1RZUEVfRVJSKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMwMzpcXHRcXHRcXHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX0hQQ19FTlRfVFlQRV9FUlIsXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzA0LVxcdFxcdFxcdFxcdFxcdFxcdCAgRFBGX1JYX1FOT19ERlQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzA5LVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMxMDpcXHRcXHRcXHRpZiAoIXQ3eHhfbWFza19kbHFfaW50cihod19pbmZvLCBxbm8pKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMxMTpcXHRcXHRcXHRcXHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX1EwX0RPTkUsIEJJVChxbm8pKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMTItXFx0XFx0XFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzE2LVxcdFxcdGlmIChpbnRyX3N0YXR1cyBcXHUwMDI2IERQX0RMX0lOVF9RMV9QSVRDTlRfTEVOX0VSUikge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjMxNzpcXHRcXHRcXHR0N3h4X2RwbWFpZl9zZXRfaW50cl9wYXJhKHBhcmEsIERQRl9JTlRSX0RMX1ExX1BJVENOVF9MRU5fRVJSLCBCSVQocW5vKSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzE4OlxcdFxcdFxcdHQ3eHhfZHBtYWlmX2RscV9tYXNrX3J4X3BpdGNudF9sZW5fZXJyX2ludHIoaHdfaW5mbywgcW5vKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMTktXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtMzIxLVxcdFxcdGlmIChpbnRyX3N0YXR1cyBcXHUwMDI2IERQX0RMX0lOVF9RMV9ET05FKSB7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzIyOlxcdFxcdFxcdGlmICghdDd4eF9tYXNrX2RscV9pbnRyKGh3X2luZm8sIHFubykpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzIzOlxcdFxcdFxcdFxcdHQ3eHhfZHBtYWlmX3NldF9pbnRyX3BhcmEocGFyYSwgRFBGX0lOVFJfRExfUTFfRE9ORSwgQklUKHFubykpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTMyNC1cXHRcXHRcXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMzQtLyoqXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzM1OiAqIHQ3eHhfZHBtYWlmX2h3X2dldF9pbnRyX2NudCgpIC0gUmVhZHMgaW50ZXJydXB0IHN0YXR1cyBhbmQgY291bnQgZnJvbSBIVy5cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zMzYtICogQGh3X2luZm86IFBvaW50ZXIgdG8gc3RydWN0IGh3X2luZm8uXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zNDMtICovXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzQ0OmludCB0N3h4X2RwbWFpZl9od19nZXRfaW50cl9jbnQoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM0NS1cXHRcXHRcXHRcXHRzdHJ1Y3QgZHBtYWlmX2h3X2ludHJfc3RfcGFyYSAqcGFyYSwgaW50IHFubylcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM2MS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzozNjI6XFx0dDd4eF9kcG1haWZfY2xyX2lwX2J1c3lfc3RzKGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM2My1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM2OS1cXHRcXHRpZiAodHhfaW50cl9zdGF0dXMpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6MzcwOlxcdFxcdFxcdHQ3eHhfZHBtYWlmX2h3X2NoZWNrX3R4X2ludHIoaHdfaW5mbywgdHhfaW50cl9zdGF0dXMsIHBhcmEpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM3MS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zODctXFx0XFx0aWYgKHJ4X2ludHJfc3RhdHVzKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjM4ODpcXHRcXHRcXHR0N3h4X2RwbWFpZl9od19jaGVja19yeF9pbnRyKGh3X2luZm8sIHJ4X2ludHJfc3RhdHVzLCBwYXJhLCBxbm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTM4OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zOTMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Mzk0OnN0YXRpYyBpbnQgdDd4eF9kcG1haWZfc3JhbV9pbml0KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy0zOTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDA2LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQwNzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19yZXNldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQxOC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0MTk6c3RhdGljIGludCB0N3h4X2RwbWFpZl9od19jb25maWcoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQyMC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00MjMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NDI0OlxcdHQ3eHhfZHBtYWlmX2h3X3Jlc2V0KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQyNS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0MjY6XFx0cmV0ID0gdDd4eF9kcG1haWZfc3JhbV9pbml0KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQyNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDM2LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQzNzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9wY2llX2RwbWFpZl9zaWduKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00Mzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDQxLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQ0MjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9wZXJmb3JtYW5jZShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ1Ni1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0NTc6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfaHBjX2NudGxfc2V0KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00NTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDY2LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjQ2NzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19hZ2dfY2ZnX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ3NC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0NzU6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfaGFzaF9iaXRfY2hvb3NlX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ4MC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0ODE6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfbWlkX3BpdF90aW1lb3V0X3RocmVzX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDgyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTQ4NS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo0ODY6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfaHdfZGxxX3RpbWVvdXRfdGhyZXNfc2V0KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy00ODcte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNDk5LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwMDpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9od19kbHFfc3RhcnRfcHJzX3RocmVzX3NldChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTUwNC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1MDU6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfZGxxX2hwY19od19pbml0KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01MDYte1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwNzpcXHR0N3h4X2RwbWFpZl9od19ocGNfY250bF9zZXQoaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NTA4OlxcdHQ3eHhfZHBtYWlmX2h3X2FnZ19jZmdfc2V0KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUwOTpcXHR0N3h4X2RwbWFpZl9od19oYXNoX2JpdF9jaG9vc2Vfc2V0KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUxMDpcXHR0N3h4X2RwbWFpZl9od19taWRfcGl0X3RpbWVvdXRfdGhyZXNfc2V0KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUxMTpcXHR0N3h4X2RwbWFpZl9od19kbHFfdGltZW91dF90aHJlc19zZXQoaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NTEyOlxcdHQ3eHhfZHBtYWlmX2h3X2RscV9zdGFydF9wcnNfdGhyZXNfc2V0KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTUxMy19XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTE0LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjUxNTpzdGF0aWMgaW50IHQ3eHhfZHBtYWlmX2RsX2JhdF9pbml0X2RvbmUoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCBib29sIGZyZ19lbilcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01MTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTQ0LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU0NTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYmF0X2Jhc2VfYWRkcihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTQ2LVxcdFxcdFxcdFxcdFxcdCAgICAgZG1hX2FkZHJfdCBhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU1MjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYmF0X3NpemUoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCB1bnNpZ25lZCBpbnQgc2l6ZSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTYxLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU2MjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9iYXRfZW4oc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLCBib29sIGVuYWJsZSlcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy01NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTc1LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjU3NjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmlkX21heGNudChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU4NS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1ODY6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX210dShzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNTg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU5MC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo1OTE6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X2FvX3BpdF9jaGtudW0oc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTU5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02MDAtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjAxOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19yZW1haW5fbWluc3ooc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYwMi17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02MTEtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjEyOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19iYXRfYnVmc3ooc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYxMy17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02MjItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjIzOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19iYXRfcnN2X2xlbmd0aChzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNjI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYzMi1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo2MzM6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfc2V0X3BrdF9hbGlnbm1lbnQoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTYzNC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02NDItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjQzOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9wa3RfY2hlY2tzdW0oc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY0NC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02NTEtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjUyOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19mcmdfY2hlY2tfdGhyZXMoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY1My17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02NjEtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjYyOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19mcmdfYnVmc3ooc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY2My17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02NzItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NjczOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX2ZyZ19hb19lbihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02ODYtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Njg3OnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9hb19iYXRfY2hlY2tfdGhyZXMoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTY4OC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02OTYtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6Njk3OnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX3NldF9waXRfc2VxbnVtKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy02OTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzA2LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjcwNzpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfZGxxX3BpdF9iYXNlX2FkZHIoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTcwOC1cXHRcXHRcXHRcXHRcXHRcXHQgZG1hX2FkZHJfdCBhZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzEzLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjcxNDpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9kbF9zZXRfZGxxX3BpdF9zaXplKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbywgdW5zaWduZWQgaW50IHNpemUpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTcyNy1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3Mjg6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfZGxxX3BpdF9lbihzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTczNi1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3Mzc6c3RhdGljIHZvaWQgdDd4eF9kcG1haWZfZGxfZGxxX3BpdF9pbml0X2RvbmUoc3RydWN0IGRwbWFpZl9od19pbmZvICpod19pbmZvLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTczOC1cXHRcXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBwaXRfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzY1LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjc2NjpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9jb25maWdfZGxxX3BpdF9odyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8sIHVuc2lnbmVkIGludCBxX251bSxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03NjctXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHBtYWlmX2RsICpkbF9xdWUpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzY4LXtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3Njk6XFx0dDd4eF9kcG1haWZfZGxfc2V0X2RscV9waXRfYmFzZV9hZGRyKGh3X2luZm8sIGRsX3F1ZS1cXHUwMDNlcGl0X2Jhc2UpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjc3MDpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfZGxxX3BpdF9zaXplKGh3X2luZm8sIGRsX3F1ZS1cXHUwMDNlcGl0X3NpemVfY250KTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3NzE6XFx0dDd4eF9kcG1haWZfZGxfZGxxX3BpdF9lbihod19pbmZvKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3NzI6XFx0dDd4eF9kcG1haWZfZGxfZGxxX3BpdF9pbml0X2RvbmUoaHdfaW5mbywgcV9udW0pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc3My19XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzc0LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjc3NTpzdGF0aWMgdm9pZCB0N3h4X2RwbWFpZl9jb25maWdfYWxsX2RscV9odyhzdHJ1Y3QgZHBtYWlmX2h3X2luZm8gKmh3X2luZm8pXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTc3OS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRFBNQUlGX1JYUV9OVU07IGkrKylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo3ODA6XFx0XFx0dDd4eF9kcG1haWZfY29uZmlnX2RscV9waXRfaHcoaHdfaW5mbywgaSwgXFx1MDAyNmh3X2luZm8tXFx1MDAzZWRsX3F1ZVtpXSk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzgxLX1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy03ODItXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6NzgzOnN0YXRpYyB2b2lkIHQ3eHhfZHBtYWlmX2RsX2FsbF9xX2VuKHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbywgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtNzg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jLTgxMi1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4MTM6c3RhdGljIGludCB0N3h4X2RwbWFpZl9jb25maWdfZGxxX2h3KHN0cnVjdCBkcG1haWZfaHdfaW5mbyAqaHdfaW5mbylcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYy04MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtODE3LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgxODpcXHR0N3h4X2RwbWFpZl9kbF9kbHFfaHBjX2h3X2luaXQoaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtODE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmMtODIzLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyNDpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fcmVtYWluX21pbnN6KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyNTpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmF0X2J1ZnN6KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyNjpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fZnJnX2J1ZnN6KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyNzpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmF0X3Jzdl9sZW5ndGgoaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODI4OlxcdHQ3eHhfZHBtYWlmX2RsX3NldF9hb19iaWRfbWF4Y250KGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgyOTpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfcGt0X2FsaWdubWVudChod19pbmZvKTtcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9kcG1haWYuYzo4MzA6XFx0dDd4eF9kcG1haWZfZGxfc2V0X3BpdF9zZXFudW0oaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODMxOlxcdHQ3eHhfZHBtYWlmX2RsX3NldF9hb19tdHUoaHdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfZHBtYWlmLmM6ODMyOlxcdHQ3eHhfZHBtYWlmX2RsX3NldF9hb19waXRfY2hrbnVtKGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgzMzpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fYmF0X2NoZWNrX3RocmVzKGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgzNDpcXHR0N3h4X2RwbWFpZl9kbF9zZXRfYW9fZnJnX2NoZWNrX3RocmVzKGh3X2luZm8pO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X2RwbWFpZi5jOjgzNTpcXHR0N3h4X2RwbWFpZl9kbF9mcmdfYW9fZW4oaHdfaW5mbywgdHJ1ZSk7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ2OjQ3Ljc3NjA5NzgxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NjQxMzU3NjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBDSWUgTW9kZW0gRHJpdmVyIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIG1vZGVtIGRyaXZlciBmaWxlcywgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGluZ3MuIFJpZ2h0LCBzbyBgdDd4eF9wY2kuY2AsIHRoYXQncyB0aGUgTWVkaWFUZWsgTVRLIFBDSWUgNUcgV1dBTiBtb2RlbSBkcml2ZXIsIHRoYXQgbWFrZXMgc2Vuc2UuIEFuZCB0aGVuIHdlJ3ZlIGdvdCBgbWhpX3d3YW5fbWJpbS5jYCwgd2hpY2ggaXMgdGhlIE1ISSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBRdWFsY29tbS1iYXNlZCBQQ0llIG1vZGVtcywgdXNpbmcgdGhlIGBNSElfQlVTYCBpbnRlcmZhY2UuIEhtbSwgYnV0IGhvdyBkb2VzIHRoZSBzeXN0ZW0ga25vdyB3aGljaCBkZXZpY2VzIGFyZSBldmVuICp1c2luZyogTUhJPyBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiB3aXRoaW4gdGhlIE1ISSBidXMgY29kZSBpdHNlbGYuIExvb2tzIGxpa2UgYGRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmNgIGlzIGEgcHJpbWUgZXhhbXBsZS4gT2theSwgbm93IEkgbmVlZCB0byBmaW5kIGFsbCB0aGUgTUhJIGNvbnRyb2xsZXJzIGluIHRoZSBzeXN0ZW0uIExldCdzIHN0YXJ0IHRoZSBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjAzLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ2OjUyLjQxNzQ1ODQ1NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTEzNzMyMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1oaV9yZWdpc3Rlcl9jb250cm9sbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jPTgwMD1zdGF0aWMgaW50IG1oaV9yZXNldF9hbmRfYXN5bmNfcG93ZXJfdXAoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04MjYtXFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM6ODI3OnN0cnVjdCBtaGlfY29udHJvbGxlciAqcWFpY19taGlfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgcGNpX2RldiAqcGNpX2Rldiwgdm9pZCBfX2lvbWVtICptaGlfYmFyLFxcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jLTgyOC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgaW50IG1oaV9pcnEsIGJvb2wgc2hhcmVkX21zaSwgaW50IGZhbWlseSlcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jLTg3NS1cXHRtaGlfY29uZmlnLnRpbWVvdXRfbXMgPSBtaGlfdGltZW91dF9tcztcXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYzo4NzY6XFx0cmV0ID0gbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2NudHJsLCBcXHUwMDI2bWhpX2NvbmZpZyk7XFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmMtODc3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYzo4Nzg6XFx0XFx0cGNpX2VycihwY2lfZGV2LCBcXFwibWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgZmFpbGVkICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jLTg3OS1cXHRcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmgtOC1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuaDo5OnN0cnVjdCBtaGlfY29udHJvbGxlciAqcWFpY19taGlfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgcGNpX2RldiAqcGNpX2Rldiwgdm9pZCBfX2lvbWVtICptaGlfYmFyLFxcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5oLTEwLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBpbnQgbWhpX2lycSwgYm9vbCBzaGFyZWRfbXNpLCBpbnQgZmFtaWx5KTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jPTU3MD1zdGF0aWMgaW50IHFhaWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy01OTYtXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmM6NTk3OlxcdHFkZXYtXFx1MDAzZW1oaV9jbnRybCA9IHFhaWNfbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIocGRldiwgcWRldi1cXHUwMDNlYmFyX21oaSwgbWhpX2lycSxcXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy01OTgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHFkZXYtXFx1MDAzZXNpbmdsZV9tc2ksIGNvbmZpZy1cXHUwMDNlZmFtaWx5KTtcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYz04ODE9c3RhdGljIGludCBwYXJzZV9jb25maWcoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtOTE4LVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYzo5MTk6aW50IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsLFxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYy05MjAtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBtaGlfY29udHJvbGxlcl9jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYy0xMDU4LX1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmM6MTA1OTpFWFBPUlRfU1lNQk9MX0dQTChtaGlfcmVnaXN0ZXJfY29udHJvbGxlcik7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwNjAtXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jPTEzNjU9c3RhdGljIGludCBtaGlfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE0NDAtXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYzoxNDQxOlxcdGVyciA9IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jbnRybCwgbWhpX2NudHJsX2NvbmZpZyk7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNDQyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21oaS5jPTMzNT1pbnQgYXRoMTFrX21oaV9yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrX3BjaSAqYWJfcGNpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYy00MDktXFx0YWJfcGNpLVxcdTAwM2VtaGlfcHJlX2NiID0gTUhJX0NCX0lOVkFMSUQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYzo0MTA6XFx0cmV0ID0gbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2N0cmwsIGF0aDExa19taGlfY29uZmlnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21oaS5jLTQxMS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTE4Nz1pbnQgYXRoMTJrX21oaV9yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX3BjaSAqYWJfcGNpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy0yNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzoyNjU6XFx0cmV0ID0gbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2N0cmwsIGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZW1oaV9jb25maWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMjY2LVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDY6NTMuMzMxMTk4ODQ1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEzODMxOTc5Nzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgTUhJIFdXQU4gYW5kIFQ3eHggRHJpdmVyIEFjY2Vzc2liaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBNSEkgV1dBTiBhbmQgVDd4eCBXV0FOIGRyaXZlcnMgYXJlICpmdW5kYW1lbnRhbGx5KiBkZXBlbmRlbnQgb24gc3BlY2lmaWMgaGFyZHdhcmUuIEkgbmVlZCB0byBhcHBseSB0aGUgdHJpYWdlIGNyaXRlcmlhIG1ldGljdWxvdXNseS4gU2VjdGlvbiAyIGlzIGtleSBoZXJlLiBJdCBkaXN0aW5ndWlzaGVzIGJldHdlZW4gZHJpdmVycyB0aGF0IHJlcXVpcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIChsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBHUFVzIHRoYXQgYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUpIGFuZCB0aG9zZSB0aGF0IGFyZSByZWFjaGFibGUgdmlhIHZpcnR1YWwgYnVzZXMsIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBvciB0aGUgbGlrZS5cblxuVGhlIGNvcmUgb2YgbXkgYW5hbHlzaXMgaGluZ2VzIG9uIHRoaXM6IGNhbiBJICpyZWFjaCogYG1oaV93d2FuX21iaW1gIG9yIHRoZSBUN3h4IGRyaXZlciB3aXRob3V0IGEgcGh5c2ljYWwgUENJZSBjYXJkPyBUaGF0J3MgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGFueSB2aXJ0dWFsIGJ1cyBtZWNoYW5pc21zIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBleGlzdCB0aGF0IHdvdWxkIGFsbG93IG1lIHRvIGluc3RhbnRpYXRlIG9yIGludGVyYWN0IHdpdGggdGhlc2UgZHJpdmVycy5cblxuUmlnaHQsIHRpbWUgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIHNlZSBpZiBgbWhpX3d3YW5fbWJpbWAgaXMgZXZlciBpbnN0YW50aWF0ZWQgdmlhIG5ldGxpbmssIGEgdmlydHVhbCBidXMsIG9yIGFueXRoaW5nIHNpbWlsYXIuIFRoZSBjb2RlIGl0c2VsZiBzaG91bGQgcmV2ZWFsIHNvbWV0aGluZyB1c2VmdWwuIExldCdzIHN0YXJ0IHdpdGggYG1oaV93d2FuX21iaW0uY2AgYW5kIHNwZWNpZmljYWxseSBsaW5lIDYxOC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBwcm9iZSBmdW5jdGlvbiwgYG1oaV9tYmltX3Byb2JlYC4gQWgsIGl0IHJlZ2lzdGVycyBXV0FOIGxpbmsgb3BlcmF0aW9ucy4gYHd3YW5fcmVnaXN0ZXJfb3BzYCBhbmQgYWxsIHRoYXQuIFRoYXQncyBnb29kLCBidXQgdGhlIGtleSBpcyAqd2hlbiogYG1oaV9tYmltX3Byb2JlYCBnZXRzIGNhbGxlZC5cblxuTG9va3MgbGlrZSBgbWhpX21iaW1fcHJvYmVgIGlzIGNhbGxlZCBvbmx5IHdoZW4gYW4gYG1oaV9kZXZpY2VgIHRoYXQgbWF0Y2hlcyB0aGUgYG1oaV9tYmltX2lkX3RhYmxlYCBpcyByZWdpc3RlcmVkIG9uIHRoZSBNSEkgYnVzLiBUaGF0J3MgYSBjcml0aWNhbCBjbHVlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGFuIGBtaGlfZGV2aWNlYCBpcyBjcmVhdGVkLiBUaGF04oCZcyB0aGUgY3J1eC4gSSBuZWVkIHRvIGZpbmQgdGhlIGNyZWF0aW9uIG1lY2hhbmlzbS4gVGltZSB0byBzZWFyY2ggdGhlIGtlcm5lbCBmb3IgYG1oaV9kZXZpY2VgIGluc3RhbnRpYXRpb24uIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGRyaXZlciBpcyBsb2FkZWQgYW5kIGlmIEkgY2FuIGxvYWQgaXQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxODQzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ3OjA3LjE2MzE4MDk3OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE4ODMwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWhpX2RldmljZV9jcmVhdGV8bWhpX2FsbG9jX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2J1cy9taGlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTkxOT1pbnQgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTAwOS1cXHQvKiBSZWdpc3RlciBjb250cm9sbGVyIHdpdGggTUhJIGJ1cyAqL1xcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYzoxMDEwOlxcdG1oaV9kZXYgPSBtaGlfYWxsb2NfZGV2aWNlKG1oaV9jbnRybCk7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwMTEtXFx0aWYgKElTX0VSUihtaGlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTEyMTA9c3RhdGljIHZvaWQgbWhpX3JlbGVhc2VfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYy0xMjI4LVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYzoxMjI5OnN0cnVjdCBtaGlfZGV2aWNlICptaGlfYWxsb2NfZGV2aWNlKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsKVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYy0xMjMwLXtcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2ludGVybmFsLmg9MzE0PXN0YXRpYyBpbmxpbmUgdm9pZCBtaGlfZGVidWdmc19leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbnRlcm5hbC5oLTMxOC1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbnRlcm5hbC5oOjMxOTpzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2FsbG9jX2RldmljZShzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCk7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW50ZXJuYWwuaC0zMjAtXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9tYWluLmM9MzY5PXZvaWQgbWhpX2NyZWF0ZV9kZXZpY2VzKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsKVxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvbWFpbi5jLTM4MC1cXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9tYWluLmM6MzgxOlxcdFxcdG1oaV9kZXYgPSBtaGlfYWxsb2NfZGV2aWNlKG1oaV9jbnRybCk7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvbWFpbi5jLTM4Mi1cXHRcXHRpZiAoSVNfRVJSKG1oaV9kZXYpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NzowNy4yMTUwNjg4OTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjAxMzkzMTIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1ISS9QQ0kgTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXJgIGZ1bmN0aW9uIGFuZCB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBNSEkgYW5kIFBDSSBjb250ZXh0LiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCBgbWhpX3BjaV9wcm9iZWAgY2FsbHMgaXQsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHJlY29nbml6ZSBgbWhpX3BjaV9wcm9iZWAgYXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBwcm9iaW5nIHJlYWwtd29ybGQgUXVhbGNvbW0gUENJZSBtb2RlbXMg4oCTIHRoZSBGb3hjb25uIFQ5OVcxNzUsIHRoZSBUZWxpdCBGTjk4MCwgdGhvc2UgUXVlY3RlbCBFTTEyMFItR0xzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMuIEknbSBub3RpbmcgdGhlIHZlbmRvciBJRHMgKDB4MTdjYiwgZXRjLikgYXMgYSBwb2ludCBvZiByZWZlcmVuY2UuIEkgYWxzbyBzZWUgdGhhdCBgYXRoMTFrX3BjaWAsIGBhdGgxMmtfcGNpYCwgYW5kIGBxYWljYCBhcmUgY2FsbGluZyB0aGlzIHJlZ2lzdGVyIGNvbnRyb2xsZXIsIGFuZCBJIG5lZWQgdG8gY29tZSBiYWNrIHRvIHRoZXNlLlxuXG5UaGVuIHRoZXJlJ3MgYHQ3eHhgLCB3aGljaCBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSBhcyBNZWRpYVRlaydzIE1USyBQQ0llIDVHIFdXQU4gbW9kZW0gZGV2aWNlcy4gSSBrbm93IHRoYXQncyBmb3VuZCBpbiBgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmNgLiBUaGUgUENJIElEcywgZm9yIE1lZGlhVGVrICgweDE0YzMpIGFuZCB0aGUgZGV2aWNlIGl0c2VsZiAoMHg0ZDc1KSwgYXJlIHdoYXQgSSdkIGV4cGVjdC4gTm93IEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2suLi4gSSBzaG91bGQgY2hlY2sgdGhhdCBgdDd4eF9wY2kuY2AgZmlsZSBhZ2FpbiBhbmQgbWFrZSBzdXJlIHRoYXQgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHNvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzI0NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NzoxMy4yMjkwMDMxODZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4ODQzOTUwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNT0RVTEVfREVWSUNFX1RBQkxFXFxcXChwY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi90N3h4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jPTk0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgdDd4eF9wY2lfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jLTk0OC19O1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jOjk0OTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgdDd4eF9wY2lfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jLTk1MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6MTMuNjE3NDQ4NTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg2MjQzMTg0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIFQ3eHggUENJIEluaXRpYWxpemF0aW9uKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBUN3h4IFdXQU4gZGV2aWNlIGlzIGhhbmRsZWQsIHNvIGxldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgaXRzIFBDSSBpbml0aWFsaXphdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBkZWx2ZSBpbnRvIHRoZSBgdDd4eF9wY2lfdGFibGVgIHN0cnVjdHVyZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGlkZW50aWZpZXMgYW5kIGNvbmZpZ3VyZXMgdGhlIGhhcmR3YXJlLiBUaGUgZmlsZSBJJ20gaW50ZXJlc3RlZCBpbiBpcyBgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmNgLiBUaGUgdGFibGUgZGVmaW5pdGlvbiBhbmQgZGV2aWNlIG1hdGNoaW5nIGxvZ2ljIGFyZSBsaWtlbHkgaG91c2VkIHdpdGhpbiB0aGF0IG1vZHVsZS4gVW5kZXJzdGFuZGluZyB0aGlzIHRhYmxlIHdpbGwgb2ZmZXIgY2x1ZXMgYWJvdXQgc3VwcG9ydGVkIGRldmljZXMsIGFzc29jaWF0ZWQgUENJIElEcywgYW5kIGRyaXZlciBiaW5kaW5nLiBJdCBpcyB0aGUgY29yZSBvZiBob3cgdGhlIGRyaXZlciBpcyBzdXBwb3NlZCB0byByZWNvZ25pemUgYW5kIHdvcmsgd2l0aCBkaWZmZXJlbnQgaXRlcmF0aW9ucyBvZiB0aGUgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTgzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6MTYuNDc5ODgzMTc5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDk0MDpcXHRcXHRwY2lfZnJlZV9pcnFfdmVjdG9ycyh0N3h4X2Rldi1cXHUwMDNlcGRldik7XFxuIDk0MTpcXHR9XFxuIDk0MjpcXHRcXG4gOTQzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCB0N3h4X3BjaV90YWJsZVtdID0ge1xcbiA5NDQ6XFx0XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUVESUFURUssIDB4NGQ3NSkgfSxcXG4gOTQ1OlxcdFxcdHsgUENJX0RFVklDRSgweDAzZjAsIDB4MDljOCkgfSwgLy8gSFAgRFJNUi1IMDFcXG4gOTQ2OlxcdFxcdHsgUENJX0RFVklDRSgweDE0YzAsIDB4NGQ3NSkgfSwgLy8gRGVsbCBEVzU5MzNlXFxuIDk0NzpcXHRcXHR7IH1cXG4gOTQ4OlxcdH07XFxuIDk0OTpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgdDd4eF9wY2lfdGFibGUpO1xcbiA5NTA6XFx0XFxuIDk1MTpcXHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgdDd4eF9wY2lfZHJpdmVyID0ge1xcbiA5NTI6XFx0XFx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcXG4gOTUzOlxcdFxcdC5pZF90YWJsZSA9IHQ3eHhfcGNpX3RhYmxlLFxcbiA5NTQ6XFx0XFx0LnByb2JlID0gdDd4eF9wY2lfcHJvYmUsXFxuIDk1NTpcXHRcXHQucmVtb3ZlID0gdDd4eF9wY2lfcmVtb3ZlLFxcbiA5NTY6XFx0XFx0LmRyaXZlci5wbSA9IFxcdTAwMjZ0N3h4X3BjaV9wbV9vcHMsXFxuIDk1NzpcXHRcXHQuc2h1dGRvd24gPSB0N3h4X3BjaV9zaHV0ZG93bixcXG4gOTU4OlxcdH07XFxuIDk1OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6MTYuNDc5OTcwMzA5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1NTk3NjQyMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBEZWVwZXI6IEludmVzdGlnYXRpbmcgYG1oaV9wY2lfZ2VuZXJpYy5jYCoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBicm9hZGVuIHRoZSBzY29wZSBvZiB0aGlzIGludmVzdGlnYXRpb24uIFdlJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGUgY29yZSBpc3N1ZSwgYnV0IHRoZXJlJ3MgYSBzdHJvbmcgbGlrZWxpaG9vZCBpdCBjb3VsZCBiZSBtYW5pZmVzdGluZyBmcm9tIGxvd2VyIGxldmVscy4gSSdtIHRoaW5raW5nLCBiZWZvcmUgd2UgZ28gYW55IGZ1cnRoZXIsIEkgc2hvdWxkIGRlZmluaXRlbHkgcHVsbCB1cCBhbmQgbWV0aWN1bG91c2x5IGV4YW1pbmUgYG1oaV9wY2lfZ2VuZXJpYy5jYC4gSXQncyBhIGtleSBjb21wb25lbnQgaW4gTUhJIFBDSSBpbnRlcmFjdGlvbiwgYW5kIGl0J3MgcHJhY3RpY2FsbHkgc2NyZWFtaW5nIHBvdGVudGlhbCBmb3IgY29udHJpYnV0aW5nIHRvIHRoaXMgcHJvYmxlbS4gVW5kZXJzdGFuZGluZyB0aGUgc3RhdGUgYW5kIGhhbmRsaW5nIHRoZXJlIGlzIGNyaXRpY2FsIGJlZm9yZSBqdW1waW5nIHRvIGFueSBtYWpvciBjb25jbHVzaW9ucyBvciBzb2x1dGlvbnMuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDYzMywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6MTkuMDM5NzM3NTM3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQ0MDY2NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWhpX3BjaV90YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2J1cy9taGlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ3OjE5LjA4ODE4NTgzNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDI5NDg2ODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkh1bnRpbmcgRG93biB0aGUgUENJIElEIFRhYmxlKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIFBDSSBJRCB0YWJsZSBmb3IgdGhlIE1ISSBob3N0IGNvbnRyb2xsZXIuIE15IGd1dCBzYXlzIGl0J3MgbGlrZWx5IG5lc3RsZWQgd2l0aGluIHRoZSBkcml2ZXIgY29kZSBpdHNlbGYsIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBQQ0kgaW1wbGVtZW50YXRpb24uIFRoYXQgbWVhbnMgSSBzaG91bGQgYmUgbG9va2luZyBpbiB0aGUgYGRyaXZlcnMvYnVzL21oaS9ob3N0L2AgZGlyZWN0b3J5LCBhbmQgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyBgcGNpX2dlbmVyaWMuY2AuIEl0J3MgYSBwcmV0dHkgc3RhbmRhcmQgbmFtaW5nIGNvbnZlbnRpb247IFwiZ2VuZXJpY1wiIG9mdGVuIGluZGljYXRlcyB0aGUgYmFzZSBvciBmb3VuZGF0aW9uYWwgUENJLXJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQncyBzZWUgaWYgdGhhdCBmaWxlIGNvbnRhaW5zIHRoZSBkZXZpY2UgSUQgbGlzdCBvciBpZiBpdCBwb2ludHMgdG8gd2hlcmUgdGhlIGluZm9ybWF0aW9uIGlzLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiwgbW9zdCBsaWtlbHkgd2l0aCBhIGBzdHJ1Y3QgcGNpX2RldmljZV9pZGAga2luZCBvZiBhcnJhbmdlbWVudCwgd2hpY2ggd291bGQgbGlzdCB2ZW5kb3IgSURzLCBkZXZpY2UgSURzLCBzdWJzeXN0ZW0gdmVuZG9yIElEcywgc3Vic3lzdGVtIGRldmljZSBJRHMsIGFuZCBtYXliZSBldmVuIGEgZHJpdmVyLXNwZWNpZmljIGZ1bmN0aW9uIHBvaW50ZXIuIEknbGwgZm9jdXMgb24gcXVpY2tseSBzY2FubmluZyB0aGUgZmlsZSBmb3IgYSBzdGF0aWNhbGx5IGRlZmluZWQgYXJyYXkgb2YgdGhlc2UgUENJIElEIHN0cnVjdHVyZXMuIEhvcGVmdWxseSwgSSdsbCBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yIHRoZXJlIHF1aWNrbHkuIElmIG5vdCwgSSdsbCBuZWVkIHRvIHN0YXJ0IGh1bnRpbmcgdGhyb3VnaCB0aGUgc3Vycm91bmRpbmcgaW5jbHVkZSBmaWxlcyBmb3IgZGVmaW5pdGlvbnMgb2YgYHN0cnVjdCBwY2lfZGV2aWNlX2lkYCBpZiBpdCdzIGV4dGVybmFsLCBvciBtYXliZSBhIG1hY3JvIGRlZmluaXRpb24gZXhwYW5kaW5nIHRvIHRoYXQgc3RydWN0dXJlLiBJJ2xsIGtlZXAgdGhlIHNlYXJjaCBmb2N1c2VkOyBob3BlZnVsbHksIGl0J3Mgbm90IHRvbyBkZWVwbHkgYnVyaWVkIGluIHNvbWUgbGF5ZXJlZCBhYnN0cmFjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ4NTYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NzoyMy4xMTc2NzY1MzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDAwNDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1PRFVMRV9ERVZJQ0VfVEFCTEVcXFxcKHBjaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2J1cy9taGlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz05NTI9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1oaV9wY2lfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTA4Ni19O1xcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTA4NzpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbWhpX3BjaV9pZF90YWJsZSk7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xMDg4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NzoyMy4xNjU2ODQ3ODVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODk4NDcxOTc0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgTW9kZW0gRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGVzZSBtb2RlbSBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYG1oaV93d2FuX21iaW0uY2AgYW5kIGB0N3h4X25ldGRldi5jYCwgd29yay4gSXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgdGhleSBib3RoIG5lZWQgYWN0dWFsIHBoeXNpY2FsIFBDSSBtb2RlbSBoYXJkd2FyZS4gVGhlIGBtaGlgIGRyaXZlciB1c2VzIHRoZSBNSEkgYnVzLCBpbnN0YW50aWF0ZWQgYnkgZWl0aGVyIGBtaGlfcGNpX2dlbmVyaWMuY2Agb3IgUXVhbGNvbW0ncyBQQ0llIG1vZGVtcywgd2hpbGUgdGhlIE1lZGlhVGVrIG9uZSByZWxpZXMgb24gYHQ3eHhfcGNpLmNgLiBUaGUgY29yZSBhc3N1bXB0aW9uIHJpZ2h0IG5vdyBpcyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGRpcmVjdGx5IGNvbm5lY3RlZCBoYXJkd2FyZSBkZXZpY2UuXG5cbkJ1dCwgYmVmb3JlIEkgZ28gZG93biB0aGF0IHBhdGggY29tcGxldGVseSwgbGV0J3MganVzdCBtYWtlIHN1cmUgdGhlcmUgaXNuJ3Qgc29tZXRoaW5nIG1vcmUgaW50ZXJlc3Rpbmcgb3IgZmxleGlibGUgYXQgcGxheSBoZXJlLiBJdCdzIGEgZ29vZCBoYWJpdCB0byBydWxlIG91dCBhbnkgcG9zc2liaWxpdGllcyB0aGF0IGNvdWxkIG9mZmVyIG90aGVyIG9wdGlvbnMuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIG1pZ2h0IGJlIGEgdmlydHVhbCBvciBlbXVsYXRlZCBtb2RlbSBkZXZpY2Ugc29tZXdoZXJlIGluIHRoZSBzeXN0ZW0sIG9yIHBlcmhhcHMgYSB1c2VyLXNwYWNlIGludGVyZmFjZS4gSXMgdGhlcmUgYSB3YXkgdG8gaW5qZWN0IHBhY2tldHMgZGlyZWN0bHkgaW50byB0aGUgYG1oaV9tYmltX3J4YCBvciBgdDd4eF9jY21uaV9yZWN2X3NrYmAgZnVuY3Rpb25zP1xuXG5JJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBjYWxsIHNpdGVzIGZvciBgdDd4eF9jY21uaV9yZWN2X3NrYmAgdG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIGRhdGEgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUzNjMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6MzIuMTUwNDA3NTA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTAyODIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0N3h4X2NjbW5pX3JlY3Zfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vdDd4eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYz0zOTk9c3RhdGljIHZvaWQgaW5pdF9tZF9zdGF0dXNfbm90aWZpZXIoc3RydWN0IHQ3eHhfcGNpX2RldiAqdDd4eF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy00MTEtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM6NDEyOnN0YXRpYyB2b2lkIHQ3eHhfY2NtbmlfcmVjdl9za2Ioc3RydWN0IHQ3eHhfY2NtbmlfY3RybCAqY2NtbmlfY3RsYiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy00MTMtXFx0XFx0XFx0XFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM9NDkwPWludCB0N3h4X2NjbW5pX2luaXQoc3RydWN0IHQ3eHhfcGNpX2RldiAqdDd4eF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy01MDItXFx0Y3RsYi1cXHUwMDNlY2FsbGJhY2tzLnN0YXRlX25vdGlmeSA9IHQ3eHhfY2NtbmlfcXVldWVfc3RhdGVfbm90aWZ5O1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jOjUwMzpcXHRjdGxiLVxcdTAwM2VjYWxsYmFja3MucmVjdl9za2IgPSB0N3h4X2NjbW5pX3JlY3Zfc2tiO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTUwNC1cXHRjdGxiLVxcdTAwM2VuaWNfZGV2X251bSA9IE5JQ19ERVZfREVGQVVMVDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6MzIuMjAxNDQyMTM1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ0MzE5OTAxNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgV1dBTiBEZXZpY2UgRW11bGF0aW9uKipcblxuT2theSwgc28gYHQ3eHhfY2NtbmlfcmVjdl9za2JgIGlzIHRoZSBlbnRyeSBwb2ludCB3aGVuIHRoZSBUN3h4IFBDSWUgaGFyZHdhcmUgaXMgcmVjZWl2aW5nIHBhY2tldHMgZnJvbSB0aGUgRFBNQUlGIFJYIHF1ZXVlLiBUaGF0IG1ha2VzIHNlbnNlLiBBbmQsIGFzIGV4cGVjdGVkLCBgbWhpX21iaW1fcnhgIGlzIGNhbGxlZCB0aHJvdWdoIGBtaGlfbWJpbV9kbF9jYWxsYmFja2Agd2hpY2ggaXMgdGhlIE1ISSBidXMgdHJhbnNmZXIgY2FsbGJhY2suIEFsbCBzZWVtcyBzdGFuZGFyZC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVzZSBzcGVjaWZpYyBtb2RlbXMgYXJlIGVtdWxhdGFibGUuIExldCBtZSBjaGVjayBTZWN0aW9uIDIgb2YgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24uLi4gc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBPa2F5LCB0aGF0IHVzdWFsbHkgbWVhbnMgdmVuZG9yLXNwZWNpZmljIHN0dWZmIHRoYXQgUUVNVSBkb2Vzbid0IHRvdWNoOiBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIGxpa2UgbWx4c3csIHBkc19jb3JlLCBhbmQgb3RoZXJzLiBUaGV5IGFsbCBuZWVkIHRoYXQgcGh5c2ljYWwgQVNJQyBvciBQQ0llIGNhcmQsIG5vdCBzb21ldGhpbmcgUUVNVSBub3JtYWxseSBwcm92aWRlcy5cblxuVGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uOiBBcmUgUXVhbGNvbW0gTUhJIFBDSWUgbW9kZW1zICpvciogTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtcyBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzPyBUaGUgYW5zd2VyIGlzIGEgY2xlYXIgKm5vKi4gU3RhbmRhcmQgUUVNVSBhbmQgR0NFICpkb24ndCogZW11bGF0ZSB0aGUgUXVhbGNvbW0gTUhJIG1vZGVtcyAobGlrZSB0aGUgRm94Y29ubiwgUXVlY3RlbCwgVGVsaXQgb25lcykgb3IgdGhlIE1lZGlhVGVrIDVHIFdXQU4gUENJZSBtb2RlbXMgKHRob3NlIHdpdGggdGhlIDB4MTRjMzoweDRkNzUgdmVuZG9yOmRldmljZSBJRCkuIEl0J3MgZXhwbGljaXRseSBzdGF0ZWQgdGhhdCB0aGV5IHJlcXVpcmUgKnBoeXNpY2FsKiBQQ0llIG1vZGVtIGhhcmR3YXJlLCB3aGljaCBpc24ndCBhdmFpbGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5IbW0sIHRoaXMgcHJlc2VudHMgYSBwcm9ibGVtLiBCdXQsIHdhaXQuLi4gY291bGQgdGhlcmUgYmUgYSB3b3JrYXJvdW5kPyBJcyB0aGVyZSAqYW55KiBwb3NzaWJpbGl0eSB0aGUgV1dBTiBjb3JlIHN1YnN5c3RlbSBjb3VsZCBjcmVhdGUgYSBkdW1teSBvciB2aXJ0dWFsIFdXQU4gZGV2aWNlPyBJdCdzIHdvcnRoIGV4cGxvcmluZy4gVG8gZmluZCBvdXQsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvbmV0L3d3YW4vYCBkaXJlY3RvcnkuIE1heWJlIEknbGwgZ2V0IGx1Y2t5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjIxNywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0NzozNi42MzM0MzUzNDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3d3YW5cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwibWhpX3d3YW5fY3RybC5jXCIsXG4gICAgXCJtaGlfd3dhbl9tYmltLmNcIixcbiAgICBcInFjb21fYmFtX2RtdXguY1wiLFxuICAgIFwicnBtc2dfd3dhbl9jdHJsLmNcIixcbiAgICBcInd3YW5fY29yZS5jXCIsXG4gICAgXCJ3d2FuX2h3c2ltLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwiaW9zbVwiLFxuICAgIFwidDd4eFwiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ3OjM2LjYzMzQ5MDEzN1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTI4OTA0MTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb3JlIG9mIFdXQU4gU2ltdWxhdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiTGV0J3MgY3JhY2sgb3BlbiBgd3dhbl9od3NpbS5jYC5cIiBUaGF0J3MgdGhlIGZpbGUgSSBuZWVkIHRvIHVuZGVyc3RhbmQsIGJ1dCB3aGF0ICpleGFjdGx5KiBpcyBpdCBkb2luZz8gTXkgbWluZCBpcyBhdXRvbWF0aWNhbGx5IHByb2Jpbmc6IFdoYXQncyB0aGUgZnVuZGFtZW50YWwgcm9sZSBvZiB0aGlzIHNpbXVsYXRpb24/IFdoYXQgYXNwZWN0cyBvZiB0aGUgV1dBTiAoV2lyZWxlc3MgV2lkZSBBcmVhIE5ldHdvcmspIGhhcmR3YXJlIGFyZSBiZWluZyBlbXVsYXRlZCBoZXJlPyBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBoYXJkd2FyZSBpdCdzIG1lYW50IHRvIHJlcGxpY2F0ZS4gQW0gSSBsb29raW5nIGF0IHRoZSBwaHlzaWNhbCByYWRpbyBsYXllciwgdGhlIG1vZGVtIGludGVyZmFjZSwgdGhlIHByb3RvY29sIHN0YWNrLCBvciBhIGNvbWJpbmF0aW9uPyBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgcmVhbGx5IGRpZ2dpbmcgaW50byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcwNTMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6NDEuNzYyMzk2NTUxWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93d2FuL3d3YW5faHdzaW0uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBXV0FOIGRldmljZSBzaW11bGF0b3IgZm9yIFdXQU4gZnJhbWV3b3JrIHRlc3RpbmcuXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IChjKSAyMDIxLCAyMDI1LCBTZXJnZXkgUnlhemFub3YgXFx1MDAzY3J5YXphbm92LnMuYUBnbWFpbC5jb21cXHUwMDNlXFxuICAgNjpcXHQgKi9cXG4gICA3OlxcdFxcbiAgIDg6XFx0I2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcXFwiOiBcXFwiIGZtdFxcbiAgIDk6XFx0XFxuICAxMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAxMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbiAgMTM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmljZS5oXFx1MDAzZVxcbiAgMTQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcXHUwMDNlXFxuICAxNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdGltZS5oXFx1MDAzZVxcbiAgMTY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpc3QuaFxcdTAwM2VcXG4gIDE3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9za2J1ZmYuaFxcdTAwM2VcXG4gIDE4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC90aW1lci5oXFx1MDAzZVxcbiAgMTk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGRldmljZS5oXFx1MDAzZVxcbiAgMjA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3d3YW4uaFxcdTAwM2VcXG4gIDIxOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWJ1Z2ZzLmhcXHUwMDNlXFxuICAyMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcXHUwMDNlXFxuICAyMzpcXHRcXG4gIDI0OlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvYXJwLmhcXHUwMDNlXFxuICAyNTpcXHRcXG4gIDI2OlxcdHN0YXRpYyBpbnQgd3dhbl9od3NpbV9kZXZzbnVtID0gMjtcXG4gIDI3OlxcdG1vZHVsZV9wYXJhbV9uYW1lZChkZXZpY2VzLCB3d2FuX2h3c2ltX2RldnNudW0sIGludCwgMDQ0NCk7XFxuICAyODpcXHRNT0RVTEVfUEFSTV9ERVNDKGRldmljZXMsIFxcXCJOdW1iZXIgb2Ygc2ltdWxhdGVkIGRldmljZXNcXFwiKTtcXG4gIDI5OlxcdFxcbiAgMzA6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBjbGFzcyB3d2FuX2h3c2ltX2NsYXNzID0ge1xcbiAgMzE6XFx0XFx0Lm5hbWUgPSBcXFwid3dhbl9od3NpbVxcXCIsXFxuICAzMjpcXHR9O1xcbiAgMzM6XFx0XFxuICAzNDpcXHRzdGF0aWMgc3RydWN0IGRlbnRyeSAqd3dhbl9od3NpbV9kZWJ1Z2ZzX3RvcGRpcjtcXG4gIDM1OlxcdHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICp3d2FuX2h3c2ltX2RlYnVnZnNfZGV2Y3JlYXRlO1xcbiAgMzY6XFx0XFxuICAzNzpcXHRzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHd3YW5faHdzaW1fZGV2c19sb2NrKTtcXG4gIDM4OlxcdHN0YXRpYyBMSVNUX0hFQUQod3dhbl9od3NpbV9kZXZzKTtcXG4gIDM5OlxcdHN0YXRpYyB1bnNpZ25lZCBpbnQgd3dhbl9od3NpbV9kZXZfaWR4O1xcbiAgNDA6XFx0c3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3d2FuX3dxO1xcbiAgNDE6XFx0XFxuICA0MjpcXHRzdHJ1Y3Qgd3dhbl9od3NpbV9kZXYge1xcbiAgNDM6XFx0XFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbiAgNDQ6XFx0XFx0dW5zaWduZWQgaW50IGlkO1xcbiAgNDU6XFx0XFx0c3RydWN0IGRldmljZSBkZXY7XFxuICA0NjpcXHRcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZGVsX3dvcms7XFxuICA0NzpcXHRcXHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3RvcGRpcjtcXG4gIDQ4OlxcdFxcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcG9ydGNyZWF0ZTtcXG4gIDQ5OlxcdFxcdHNwaW5sb2NrX3QgcG9ydHNfbG9jaztcXHQvKiBTZXJpYWxpemUgcG9ydHMgY3JlYXRpb24vZGVsZXRpb24gKi9cXG4gIDUwOlxcdFxcdHVuc2lnbmVkIGludCBwb3J0X2lkeDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDI6NDc6NDEuNzYyNTAzNTYxWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNTk4NTQ0OTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IFN0cnVjdHVyYWxseSBVbnJlYWNoYWJsZSBDb2RlIGZvciBGdXp6aW5nKipcblxuT2theSwgYWZ0ZXIgYSBjbG9zZSBsb29rLCBJJ3ZlIGNvbmZpcm1lZCB0aGF0IHRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSB3aXRoaW4gdGhlIGB3d2FuYCBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbnZvbHZpbmcgZHJpdmVycyBmb3IgcGh5c2ljYWwgUENJZSBtb2RlbXMuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgd3dhbl9od3NpbS5jYCBpcyBhIHNpbXVsYXRvciBmb3IgdGhlIGB3d2FuX2NvcmVgIGJ1dCB0aGUgcmVsZXZhbnQgZHJpdmVycyBpbiB0aGlzIGNhc2Ug4oCTIGBtaGlfd3dhbl9tYmltLmNgIChRdWFsY29tbSBNSEkpIGFuZCBgdDd4eC90N3h4X25ldGRldi5jYCAoTWVkaWFUZWsgVDd4eCkg4oCTIGFyZSAqaGFyZHdhcmUtc3BlY2lmaWMqIGRyaXZlcnMgdGhhdCBjb21tdW5pY2F0ZSBkaXJlY3RseSB3aXRoIHBoeXNpY2FsIFBDSWUgbW9kZW0gZGV2aWNlcy4gVGhlc2UgYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy5cblxuVGhlIG1vZGlmaWNhdGlvbnMgYXJlIGluIHRoZSBSWCBwYWNrZXQgcHJvY2Vzc2luZyBwYXRoczogYG1oaV9tYmltX3J4YCBhbmQgYG1oaV9tYmltX3J4X2Ryb3BgIGluIHRoZSBRdWFsY29tbSBkcml2ZXIsIGhhbmRsaW5nIHRoZSBkb3dubGluayBjYWxsYmFjaywgYW5kIGB0N3h4X2NjbW5pX3JlY3Zfc2tiYCBpbiB0aGUgTWVkaWFUZWsgZHJpdmVyLCB2YWxpZGF0aW5nIHRoZSBgbmV0aWZfaWRgLiBUaGVzZSBmdW5jdGlvbnMgb25seSBjb21lIGludG8gcGxheSB3aGVuIHJlY2VpdmluZyBwYWNrZXRzIGRpcmVjdGx5IGZyb20gdGhlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUuXG5cbkJhc2VkIG9uIHRoZSB0cmlhZ2UgcGhpbG9zb3BoeSBvdXRsaW5lZCBpbiBTZWN0aW9uIDIsIHRoZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIHNjZW5hcmlvIGFwcGxpZXMgcGVyZmVjdGx5IGhlcmUuIFRoZSBwYXRjaCBmYWxscyBpbnRvIHRoZSBjYXRlZ29yeSBvZiBjb2RlIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMuXG5cblRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIGluaGVyZW50bHkgdW5yZWFjaGFibGUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGFzIHdlIHdvdWxkIGJlIHVuYWJsZSB0byB0cmlnZ2VyIHRoZSBtb2RpZmllZCBsb2dpYy4gTXkgZGVjaXNpb24gaXMgc3RyYWlnaHRmb3J3YXJkOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IGZhbHNlKipcbiogICAqKkZvY3VzU3ltYm9sczogXFxbIF0qKlxuKiAgICoqRW5hYmxlQ29uZmlnczogXFxbIF0qKlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyBSWCBwYWNrZXQgcHJvY2Vzc2luZyBpbiBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCwgbm9uLWVtdWxhdGVkIFBDSWUgbW9kZW0gaGFyZHdhcmUuIEhlbmNlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MDM3LCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAyOjQ4OjA0LjM2MTA1MTQ5NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgbW9kaWZ5IFJYIGhhbmRsaW5nIHJvdXRpbmVzIGluIGRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jIChNSEkgV1dBTiBNQklNIGRyaXZlciBmb3IgUXVhbGNvbW0gbW9kZW1zKSBhbmQgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMgKE1lZGlhVGVrIFQ3eHggUENJZSBtb2RlbSBkcml2ZXIpLiBCb3RoIGRyaXZlcnMgZGVwZW5kIG9uIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgbW9kZW0gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgUlggaGFuZGxpbmcgcm91dGluZXMgaW4gZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKE1ISSBXV0FOIE1CSU0gZHJpdmVyIGZvciBRdWFsY29tbSBtb2RlbXMpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgVDd4eCBQQ0llIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyBkZXBlbmQgb24gc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBtb2RlbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMjo0ODowNC4zNjEwODAyOTRaIiwiU2VxIjozMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2l2gl[1] Phase: Running StartedAt: 2026-09-11 02:48:16 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2l2gl[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-11 02:48:16 +0000 UTC FinishedAt: 2026-09-11 02:48:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}