Name: series-workflowztf7l Phase: Failed StartedAt: 2026-07-31 06:22:23 +0000 UTC FinishedAt: 2026-07-31 06:37:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztf7l[0] Phase: Succeeded StartedAt: 2026-07-31 06:22:23 +0000 UTC FinishedAt: 2026-07-31 06:37:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztf7l[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 06:22:23 +0000 UTC FinishedAt: 2026-07-31 06:37:34 +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+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgU21hcnROSUMgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBhbmQgdW50ZXN0YWJsZSBieSBzdGFuZGFyZCBmdXp6ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDZkODZjNjIyYmQ2MDJhYjE3YzNmMTAzYTgwM2Q0YWNhM2Q5Y2NmNWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwNjozNjo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcbmluZGV4IGE4YzMyOWJkYmFjZjguLjcyMGQyMmU2YWVhOTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uY1xuQEAgLTEyNDEsNiAmIzQzOzEyNDEsOSBAQCBpbnQgbWFuYV9nZF9xdWVyeV9kZXZpY2VfY2ZnKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1MzIgcHJvdG9fbWFqb3JfdmVyLFxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuJiM0MztcdGlmIChyZXNwLnBmX2NhcF9mbGFnczEgXHUwMDI2IE1BTkFfUEZfRkxBR18xX0NRRV84X0NPQUxFU0NJTkdfU1VQUE9SVEVEKVxuJiM0MztcdFx0Z2MtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX3N1cCA9IHRydWU7XG4mIzQzO1xuIFx0Km1heF9udW1fdnBvcnRzID0gcmVzcC5tYXhfbnVtX3Zwb3J0cztcbiBcbiBcdGlmIChyZXNwLmhkci5yZXNwb25zZS5tc2dfdmVyc2lvbiBcdTAwM2U9IEdETUFfTUVTU0FHRV9WMikge1xuQEAgLTE0MjYsNyAmIzQzOzE0MjksMTEgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyxcbiBcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFx1MDAyNnJlcS1cdTAwM2VoZHIsIE1BTkFfQ09ORklHX1ZQT1JUX1JYLCByZXFfYnVmX3NpemUsXG4gXHRcdFx0ICAgICBzaXplb2YocmVzcCkpO1xuIFxuLVx0cmVxLVx1MDAzZWhkci5yZXEubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjI7XG4mIzQzO1x0LyogUmVxdWVzdCBcdTAwMjYgcmVzcG9uc2UgdmVyc2lvbnMgY2FuIGJlIGRpZmZlcmVudC5cbiYjNDM7XHQgKiBIVyBjYW4gaGFuZGxlIG5ld2VyIG1zZyB2ZXJzaW9ucywgYnkgc2tpcHBpbmdcbiYjNDM7XHQgKiBuZXcgZmllbGRzLlxuJiM0MztcdCAqL1xuJiM0MztcdHJlcS1cdTAwM2VoZHIucmVxLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1Y1O1xuIFx0cmVxLVx1MDAzZWhkci5yZXNwLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1YyO1xuIFxuIFx0cmVxLVx1MDAzZXZwb3J0ID0gYXBjLVx1MDAzZXBvcnRfaGFuZGxlO1xuQEAgLTE0NDAsOCAmIzQzOzE0NDcsMTMgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyxcbiBcdHJlcS1cdTAwM2V1cGRhdGVfaW5kaXJfdGFiID0gdXBkYXRlX3RhYjtcbiBcdHJlcS1cdTAwM2VkZWZhdWx0X3J4b2JqID0gYXBjLVx1MDAzZWRlZmF1bHRfcnhvYmo7XG4gXG4tXHRpZiAocnggIT0gVFJJX1NUQVRFX0ZBTFNFKVxuJiM0MztcdC8qIFJlcXVlc3QtbXNnIHY1IHJlcXVpcmVzIHRoaXMgZmllbGQgKi9cbiYjNDM7XHRyZXEtXHUwMDNlcnNzX2hhc2hfdHlwZXMgPSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRDtcbiYjNDM7XG4mIzQzO1x0aWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSkge1xuIFx0XHRyZXEtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbiYjNDM7XHRcdHJlcS1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGU7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKHVwZGF0ZV9rZXkpXG4gXHRcdG1lbWNweShcdTAwMjZyZXEtXHUwMDNlaGFzaGtleSwgYXBjLVx1MDAzZWhhc2hrZXksIE1BTkFfSEFTSF9LRVlfU0laRSk7XG5AQCAtMjA0NiwxNiAmIzQzOzIwNTgsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptYW5hX2J1aWxkX3NrYihzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgdm9pZCAqYnVmX3ZhLFxuIFxuIHN0YXRpYyB2b2lkIG1hbmFfcnhfc2tiKHZvaWQgKmJ1Zl92YSwgYm9vbCBmcm9tX3Bvb2wsXG4gXHRcdFx0c3RydWN0IG1hbmFfcnhjb21wX29vYiAqY3FlLCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcbi1cdFx0XHRpbnQgaSlcbiYjNDM7XHRcdFx0dTMyIHBrdF9sZW4sIHUzMiBwa3RfaGFzaClcbiB7XG4gXHRzdHJ1Y3QgbWFuYV9zdGF0c19yeCAqcnhfc3RhdHMgPSBcdTAwMjZyeHEtXHUwMDNlc3RhdHM7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHJ4cS1cdTAwM2VuZGV2O1xuLVx0dWludCBwa3RfbGVuID0gY3FlLVx1MDAzZXBwaVtpXS5wa3RfbGVuO1xuIFx0dTE2IHJ4cV9pZHggPSByeHEtXHUwMDNlcnhxX2lkeDtcbiBcdHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaTtcbiBcdHN0cnVjdCB4ZHBfYnVmZiB4ZHAgPSB7fTtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4tXHR1MzIgaGFzaF92YWx1ZTtcbiBcdHUzMiBhY3Q7XG4gXG4gXHRyeHEtXHUwMDNlcnhfY3Eud29ya19kb25lJiM0MzsmIzQzOztcbkBAIC0yMDk0LDEyICYjNDM7MjEwNCwxMCBAQCBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLFxuIFx0fVxuIFxuIFx0aWYgKGNxZS1cdTAwM2VyeF9oYXNodHlwZSAhPSAwIFx1MDAyNlx1MDAyNiAobmRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9SWEhBU0gpKSB7XG4tXHRcdGhhc2hfdmFsdWUgPSBjcWUtXHUwMDNlcHBpW2ldLnBrdF9oYXNoO1xuLVxuIFx0XHRpZiAoY3FlLVx1MDAzZXJ4X2hhc2h0eXBlIFx1MDAyNiBNQU5BX0hBU0hfTDQpXG4tXHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaF92YWx1ZSwgUEtUX0hBU0hfVFlQRV9MNCk7XG4mIzQzO1x0XHRcdHNrYl9zZXRfaGFzaChza2IsIHBrdF9oYXNoLCBQS1RfSEFTSF9UWVBFX0w0KTtcbiBcdFx0ZWxzZVxuLVx0XHRcdHNrYl9zZXRfaGFzaChza2IsIGhhc2hfdmFsdWUsIFBLVF9IQVNIX1RZUEVfTDMpO1xuJiM0MztcdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBwa3RfaGFzaCwgUEtUX0hBU0hfVFlQRV9MMyk7XG4gXHR9XG4gXG4gXHRpZiAoY3FlLVx1MDAzZXJ4X3ZsYW50YWdfcHJlc2VudCkge1xuQEAgLTIyNDAsNiAmIzQzOzIyNDgsNDMgQEAgc3RhdGljIHZvaWQgbWFuYV9yZWZpbGxfcnhfb29iKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1hbmFfcnhxICpyeHEsXG4gXHRyeG9vYi1cdTAwM2VkbWFfc3luY19vZmZzZXQgPSBkbWFfc3luY19vZmZzZXQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLFxuJiM0MztcdFx0XHRcdCAgICBzdHJ1Y3QgbWFuYV9yeGNvbXBfb29iICpvb2IsXG4mIzQzO1x0XHRcdFx0ICAgIHUzMiBwa3RsZW4sIHUzMiBwa3RfaGFzaClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iO1xuJiM0MztcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLVx1MDAzZW5kZXY7XG4mIzQzO1x0dm9pZCAqb2xkX2J1ZiA9IE5VTEw7XG4mIzQzO1x0Ym9vbCBvbGRfZnA7XG4mIzQzO1xuJiM0MztcdHJ4YnVmX29vYiA9IFx1MDAyNnJ4cS1cdTAwM2VyeF9vb2JzW3J4cS1cdTAwM2VidWZfaW5kZXhdO1xuJiM0MztcdFdBUk5fT05fT05DRShyeGJ1Zl9vb2ItXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSAhPSAxKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHVubGlrZWx5KHBrdGxlbiBcdTAwM2UgcnhxLVx1MDAzZWRhdGFzaXplKSkge1xuJiM0MztcdFx0LyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbiYjMzk7dCBjYWxsZWQuICovXG4mIzQzO1x0XHRyeHEtXHUwMDNlcnhfY3Eud29ya19kb25lJiM0MzsmIzQzOztcbiYjNDM7XG4mIzQzO1x0XHQmIzQzOyYjNDM7bmRldi1cdTAwM2VzdGF0cy5yeF9kcm9wcGVkO1xuJiM0MztcdFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxuJiM0MztcdFx0XHRcdCBcJiMzNDtEcm9wcGVkIG92ZXJzaXplZCBSWCBwYWNrZXQ6IGxlbj0ldSwgZGF0YXNpemU9JXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0IHBrdGxlbiwgcnhxLVx1MDAzZWRhdGFzaXplKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovXG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdG1hbmFfcmVmaWxsX3J4X29vYihkZXYsIHJ4cSwgcnhidWZfb29iLCBwa3RsZW4sXG4mIzQzO1x0XHRcdFx0ICAgXHUwMDI2b2xkX2J1ZiwgXHUwMDI2b2xkX2ZwKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBVbnN1Y2Nlc3NmdWwgcmVmaWxsIHdpbGwgaGF2ZSBvbGRfYnVmID09IE5VTEwuXG4mIzQzO1x0XHQgKiBJbiB0aGlzIGNhc2UsIG1hbmFfcnhfc2tiKCkgd2lsbCBkcm9wIHRoZSBwYWNrZXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdG1hbmFfcnhfc2tiKG9sZF9idWYsIG9sZF9mcCwgb29iLCByeHEsIHBrdGxlbiwgcGt0X2hhc2gpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bWFuYV9tb3ZlX3dxX3RhaWwocnhxLVx1MDAzZWdkbWFfcnEsIHJ4YnVmX29vYi1cdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1KTtcbiYjNDM7XG4mIzQzO1x0bWFuYV9wb3N0X3BrdF9yeHEocnhxKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXG4gXHRcdFx0XHRzdHJ1Y3QgZ2RtYV9jb21wICpjcWUpXG4ge1xuQEAgLTIyNDksMTAgJiM0MzsyMjk0LDEwIEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcbiBcdHN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iO1xuIFx0c3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGM7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBnYy1cdTAwM2VkZXY7XG4mIzQzO1x0Ym9vbCBjb2FsZXNjZWRfOCA9IGZhbHNlO1xuIFx0Ym9vbCBjb2FsZXNjZWQgPSBmYWxzZTtcbi1cdHZvaWQgKm9sZF9idWYgPSBOVUxMO1xuLVx0dTMyIGN1cnIsIHBrdGxlbjtcbi1cdGJvb2wgb2xkX2ZwO1xuJiM0MztcdHUzMiBwa3RsZW47XG4mIzQzO1x0aW50IHBrdF9pO1xuIFx0aW50IGk7XG4gXG4gXHRhcGMgPSBuZXRkZXZfcHJpdihuZGV2KTtcbkBAIC0yMjc1LDYgJiM0MzsyMzIwLDExIEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcbiBcdFx0Y29hbGVzY2VkID0gdHJ1ZTtcbiBcdFx0YnJlYWs7XG4gXG4mIzQzO1x0Y2FzZSBDUUVfUlhfQ09BTEVTQ0VEXzg6XG4mIzQzO1x0XHRjb2FsZXNjZWQgPSB0cnVlO1xuJiM0MztcdFx0Y29hbGVzY2VkXzggPSB0cnVlO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1xuIFx0Y2FzZSBDUUVfUlhfT0JKRUNUX0ZFTkNFOlxuIFx0XHRjb21wbGV0ZShcdTAwMjZyeHEtXHUwMDNlZmVuY2VfZXZlbnQpO1xuIFx0XHRyZXR1cm47XG5AQCAtMjI4Niw1NCAmIzQzOzIzMzYsNDggQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4mIzQzO1x0cGt0X2kgPSAwO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEk7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdG9sZF9idWYgPSBOVUxMO1xuLVx0XHRwa3RsZW4gPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9sZW47XG4tXHRcdGlmIChwa3RsZW4gPT0gMClcbi1cdFx0XHRicmVhaztcbi1cbi1cdFx0Y3VyciA9IHJ4cS1cdTAwM2VidWZfaW5kZXg7XG4tXHRcdHJ4YnVmX29vYiA9IFx1MDAyNnJ4cS1cdTAwM2VyeF9vb2JzW2N1cnJdO1xuLVx0XHRXQVJOX09OX09OQ0UocnhidWZfb29iLVx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUgIT0gMSk7XG4tXG4tXHRcdGlmICh1bmxpa2VseShwa3RsZW4gXHUwMDNlIHJ4cS1cdTAwM2VkYXRhc2l6ZSkpIHtcbi1cdFx0XHQvKiBJbmNyZWFzZSBpdCBldmVuIGlmIG1hbmFfcnhfc2tiKCkgaXNuJiMzOTt0IGNhbGxlZC4gKi9cbi1cdFx0XHRyeHEtXHUwMDNlcnhfY3Eud29ya19kb25lJiM0MzsmIzQzOztcbiYjNDM7XHRcdHUzMiBwa3RfaGFzaDtcbiBcbi1cdFx0XHQmIzQzOyYjNDM7bmRldi1cdTAwM2VzdGF0cy5yeF9kcm9wcGVkO1xuLVx0XHRcdG5ldGRldl93YXJuX29uY2UobmRldixcbi1cdFx0XHRcdFwmIzM0O0Ryb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxcblwmIzM0Oyxcbi1cdFx0XHRcdHBrdGxlbiwgcnhxLVx1MDAzZWRhdGFzaXplKTtcbi1cbi1cdFx0XHQvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovXG4mIzQzO1x0XHRpZiAoY29hbGVzY2VkXzgpIHtcbiYjNDM7XHRcdFx0LyogOC1wa3QgbW9kZTogMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi9cbiYjNDM7XHRcdFx0cGt0bGVuID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfbGVuMDtcbiYjNDM7XHRcdFx0cGt0X2hhc2ggPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9oYXNoMDtcbiBcdFx0fSBlbHNlIHtcbi1cbi1cdFx0XHRtYW5hX3JlZmlsbF9yeF9vb2IoZGV2LCByeHEsIHJ4YnVmX29vYiwgcGt0bGVuLFxuLVx0XHRcdFx0XHQgICBcdTAwMjZvbGRfYnVmLCBcdTAwMjZvbGRfZnApO1xuLVxuLVx0XHRcdC8qIFVuc3VjY2Vzc2Z1bCByZWZpbGwgd2lsbCBoYXZlIG9sZF9idWYgPT0gTlVMTC5cbi1cdFx0XHQgKiBJbiB0aGlzIGNhc2UsIG1hbmFfcnhfc2tiKCkgd2lsbCBkcm9wIHRoZSBwYWNrZXQuXG4tXHRcdFx0ICovXG4tXHRcdFx0bWFuYV9yeF9za2Iob2xkX2J1Ziwgb2xkX2ZwLCBvb2IsIHJ4cSwgaSk7XG4mIzQzO1x0XHRcdHBrdGxlbiA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2xlbjtcbiYjNDM7XHRcdFx0cGt0X2hhc2ggPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9oYXNoO1xuIFx0XHR9XG4mIzQzO1x0XHRpZiAocGt0bGVuID09IDApXG4mIzQzO1x0XHRcdGJyZWFrO1xuIFxuLVx0XHRtYW5hX21vdmVfd3FfdGFpbChyeHEtXHUwMDNlZ2RtYV9ycSxcbi1cdFx0XHRcdCAgcnhidWZfb29iLVx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUpO1xuLVxuLVx0XHRtYW5hX3Bvc3RfcGt0X3J4cShyeHEpO1xuJiM0MztcdFx0bWFuYV9wcm9jZXNzX29uZV9yeF9wa3QoZGV2LCByeHEsIG9vYiwgcGt0bGVuLCBwa3RfaGFzaCk7XG4mIzQzO1x0XHRwa3RfaSYjNDM7JiM0Mzs7XG4gXG4gXHRcdGlmICghY29hbGVzY2VkKVxuIFx0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdC8qIFByb2Nlc3MgMm5kIHBhY2tldCBmcm9tIHRoZSBzYW1lIFBQSSBpbiA4LXBrdCBtb2RlICovXG4mIzQzO1x0XHRpZiAoY29hbGVzY2VkXzgpIHtcbiYjNDM7XHRcdFx0cGt0bGVuID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfbGVuMTtcbiYjNDM7XHRcdFx0cGt0X2hhc2ggPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9oYXNoMTtcbiYjNDM7XHRcdFx0aWYgKHBrdGxlbiA9PSAwKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdFx0bWFuYV9wcm9jZXNzX29uZV9yeF9wa3QoZGV2LCByeHEsIG9vYiwgcGt0bGVuLFxuJiM0MztcdFx0XHRcdFx0XHRwa3RfaGFzaCk7XG4mIzQzO1x0XHRcdHBrdF9pJiM0MzsmIzQzOztcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdC8qIENvbGxlY3QgY29hbGVzY2VkIENRRSBjb3VudCBiYXNlZCBvbiBwYWNrZXRzIHByb2Nlc3NlZC5cbi1cdCAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBpIC0gMi5cbiYjNDM7XHQgKiBDb2FsZXNjZWQgQ1FFcyBoYXZlIGF0IGxlYXN0IDIgcGFja2V0cywgc28gaW5kZXggaXMgcGt0X2kgLSAyLlxuIFx0ICovXG4tXHRpZiAoaSBcdTAwM2UgMSkge1xuJiM0MztcdGlmIChwa3RfaSBcdTAwM2UgMSkge1xuIFx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNnJ4cS1cdTAwM2VzdGF0cy5zeW5jcCk7XG4tXHRcdHJ4cS1cdTAwM2VzdGF0cy5jb2FsZXNjZWRfY3FlW2kgLSAyXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRyeHEtXHUwMDNlc3RhdHMuY29hbGVzY2VkX2NxZVtwa3RfaSAtIDJdJiM0MzsmIzQzOztcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2cnhxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbi1cdH0gZWxzZSBpZiAoIWkgXHUwMDI2XHUwMDI2ICFwa3RsZW4pIHtcbiYjNDM7XHR9IGVsc2UgaWYgKCFwa3RfaSBcdTAwMjZcdTAwMjYgIXBrdGxlbikge1xuIFx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNnJ4cS1cdTAwM2VzdGF0cy5zeW5jcCk7XG4gXHRcdHJ4cS1cdTAwM2VzdGF0cy5wa3RfbGVuMF9lcnImIzQzOyYjNDM7O1xuIFx0XHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuQEAgLTM3NjMsNiAmIzQzOzM4MDcsNyBAQCBzdGF0aWMgaW50IG1hbmFfcHJvYmVfcG9ydChzdHJ1Y3QgbWFuYV9jb250ZXh0ICphYywgaW50IHBvcnRfaWR4LFxuIFx0YXBjLVx1MDAzZXBvcnRfaWR4ID0gcG9ydF9pZHg7XG4gXHRhcGMtXHUwMDNlbGlua19jZmdfZXJyb3IgPSAxO1xuIFx0YXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSA9IDA7XG4mIzQzO1x0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPSAwO1xuIFxuIFx0LyogSW5pdGlhbGl6ZSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyBpZiBzdXBwb3J0ZWQgYnkgSFcgKi9cbiBcdGlmIChnYy1cdTAwM2VwZl9jYXBfZmxhZ3MxIFx1MDAyNiBHRE1BX1BGX0NBUF9GTEFHXzFfRFlOX0lOVEVSUlVQVF9NT0RFUkFUSU9OKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuaW5kZXggOWUzMWUyNTk1YWUzMi4uODc0M2Y3ZWRlY2JiOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuQEAgLTE2OSw3ICYjNDM7MTY5LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIHN0cmluZ3NldCwgdTggKmRhdGEpXG4gXHRcdGV0aHRvb2xfc3ByaW50ZihcdTAwMjZkYXRhLCBcJiMzNDtyeF8lZF94ZHBfdHhcJiMzNDssIGkpO1xuIFx0XHRldGh0b29sX3NwcmludGYoXHUwMDI2ZGF0YSwgXCYjMzQ7cnhfJWRfeGRwX3JlZGlyZWN0XCYjMzQ7LCBpKTtcbiBcdFx0ZXRodG9vbF9zcHJpbnRmKFx1MDAyNmRhdGEsIFwmIzM0O3J4XyVkX3BrdF9sZW4wX2VyclwmIzM0OywgaSk7XG4tXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaiYjNDM7JiM0MzspXG4mIzQzO1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDE7IGomIzQzOyYjNDM7KVxuIFx0XHRcdGV0aHRvb2xfc3ByaW50ZihcdTAwMjZkYXRhLCBcJiMzNDtyeF8lZF9jb2FsZXNjZWRfY3FlXyVkXCYjMzQ7LCBpLCBqICYjNDM7IDIpO1xuIFx0fVxuIFxuQEAgLTIwNSw3ICYjNDM7MjA1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHU2NCB4ZHBfZHJvcDtcbiBcdHU2NCB4ZHBfdHg7XG4gXHR1NjQgcGt0X2xlbjBfZXJyO1xuLVx0dTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxXTtcbiYjNDM7XHR1NjQgY29hbGVzY2VkX2NxZVtNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDFdO1xuIFx0dTY0IHRzb19wYWNrZXRzO1xuIFx0dTY0IHRzb19ieXRlcztcbiBcdHU2NCB0c29faW5uZXJfcGFja2V0cztcbkBAIC0yNDUsNyAmIzQzOzI0NSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdFx0eGRwX3R4ID0gcnhfc3RhdHMtXHUwMDNleGRwX3R4O1xuIFx0XHRcdHhkcF9yZWRpcmVjdCA9IHJ4X3N0YXRzLVx1MDAzZXhkcF9yZWRpcmVjdDtcbiBcdFx0XHRwa3RfbGVuMF9lcnIgPSByeF9zdGF0cy1cdTAwM2Vwa3RfbGVuMF9lcnI7XG4tXHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqJiM0MzsmIzQzOylcbiBcdFx0XHRcdGNvYWxlc2NlZF9jcWVbal0gPSByeF9zdGF0cy1cdTAwM2Vjb2FsZXNjZWRfY3FlW2pdO1xuIFx0XHR9IHdoaWxlICh1NjRfc3RhdHNfZmV0Y2hfcmV0cnkoXHUwMDI2cnhfc3RhdHMtXHUwMDNlc3luY3AsIHN0YXJ0KSk7XG4gXG5AQCAtMjU1LDcgJiM0MzsyNTUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRkYXRhW2kmIzQzOyYjNDM7XSA9IHhkcF90eDtcbiBcdFx0ZGF0YVtpJiM0MzsmIzQzO10gPSB4ZHBfcmVkaXJlY3Q7XG4gXHRcdGRhdGFbaSYjNDM7JiM0MztdID0gcGt0X2xlbjBfZXJyO1xuLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDE7IGomIzQzOyYjNDM7KVxuJiM0MztcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqJiM0MzsmIzQzOylcbiBcdFx0XHRkYXRhW2kmIzQzOyYjNDM7XSA9IGNvYWxlc2NlZF9jcWVbal07XG4gXHR9XG4gXG5AQCAtNDA4LDYgJiM0Mzs0MDgsNyBAQCBzdGF0aWMgaW50IG1hbmFfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0c3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGMgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcbiBcdGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgPVxuJiM0MztcdFx0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX0NRRV9DT0FMX1BLVFNfOCA6XG4gXHRcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSA6IDE7XG4gXG4gXHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfbnNlY3MgPSBhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfdGltZW91dF9ucztcbkBAIC00NDMsNiAmIzQzOzQ0NCw3IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHUxNiBpbnRyX21vZHJfdHhfdXNlYztcbiBcdFx0dTE2IGludHJfbW9kcl90eF9jb21wO1xuIFx0XHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XG4mIzQzO1x0XHR1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlO1xuIFx0XHRib29sIHJ4X2RpbV9lbmFibGVkO1xuIFx0XHRib29sIHR4X2RpbV9lbmFibGVkO1xuIFx0fSBzYXZlZDtcbkBAIC00NjYsMTAgJiM0Mzs0NjgsMTIgQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdH1cbiBcbiBcdGlmIChrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzICE9IDEgXHUwMDI2XHUwMDI2XG4tXHQgICAga2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyAhPSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSkge1xuJiM0MztcdCAgICBrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfQ1FFX0NPQUxfUEtUU184KSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHX0ZNVChleHRhY2ssXG4tXHRcdFx0XHQgICBcJiMzNDtyeC1mcmFtZXMgbXVzdCBiZSAxIG9yICV1LCBnb3QgJXVcJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgXCYjMzQ7cngtZnJhbWVzIG11c3QgYmUgMSwgJXUsIG9yICV1LCBnb3QgJXVcJiMzNDssXG4gXHRcdFx0XHQgICBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSxcbiYjNDM7XHRcdFx0XHQgICBNQU5BX0NRRV9DT0FMX1BLVFNfOCxcbiBcdFx0XHRcdCAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC01MTQsOCAmIzQzOzUxOCwxNSBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0c2F2ZWQudHhfZGltX2VuYWJsZWQgPSBhcGMtXHUwMDNldHhfZGltX2VuYWJsZWQ7XG4gXG4gXHRzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuJiM0MztcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxuLVx0XHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xuJiM0MztcdFx0a2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyBcdTAwM2U9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xuJiM0MztcbiYjNDM7XHRpZiAoZ2MtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX3N1cClcbiYjNDM7XHRcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID1cbiYjNDM7XHRcdFx0a2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyA9PSBNQU5BX0NRRV9DT0FMX1BLVFNfODtcbiYjNDM7XHRlbHNlIGlmIChrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfQ1FFX0NPQUxfUEtUU184KVxuJiM0MztcdFx0bmV0ZGV2X2luZm8obmRldiwgXCYjMzQ7RmFsbCBiYWNrIHRvIFJYLUNRRSB4NCBjb2FsZXNjaW5nXFxuXCYjMzQ7KTtcbiBcbiBcdGlmICghYXBjLVx1MDAzZXBvcnRfaXNfdXApIHtcbiBcdFx0V1JJVEVfT05DRShhcGMtXHUwMDNlcnhfZGltX2VuYWJsZWQsICEhZWMtXHUwMDNldXNlX2FkYXB0aXZlX3J4X2NvYWxlc2NlKTtcbkBAIC01MjMsNyAmIzQzOzUzNCw4IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuLVx0aWYgKGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlKSB7XG4mIzQzO1x0aWYgKGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlIHx8XG4mIzQzO1x0ICAgIGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUpIHtcbiBcdFx0LyogQ1FFIGNvYWxlc2Npbmcgc2V0dGluZyBpcyBhcHBsaWVkIHZpYSBSU1MgY29uZmlndXJhdGlvbi4gKi9cbiBcdFx0ZXJyID0gbWFuYV9jb25maWdfcnNzKGFwYywgVFJJX1NUQVRFX1RSVUUsIGZhbHNlLCBmYWxzZSk7XG4gXHRcdGlmIChlcnIpIHtcbkBAIC01MzEsNiAmIzQzOzU0Myw4IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdFx0XHQgICBlcnIpO1xuIFx0XHRcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxuIFx0XHRcdFx0c2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuJiM0MztcdFx0XHRhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9XG4mIzQzO1x0XHRcdFx0c2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdFx0XHRhcGMtXHUwMDNlaW50cl9tb2RyX3J4X3VzZWMgPSBzYXZlZC5pbnRyX21vZHJfcnhfdXNlYztcbiBcdFx0XHRhcGMtXHUwMDNlaW50cl9tb2RyX3J4X2NvbXAgPSBzYXZlZC5pbnRyX21vZHJfcnhfY29tcDtcbiBcdFx0XHRhcGMtXHUwMDNlaW50cl9tb2RyX3R4X3VzZWMgPSBzYXZlZC5pbnRyX21vZHJfdHhfdXNlYztcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaCBiL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXG5pbmRleCA4NTI5Y2VmMGQ3YzQ1Li43MGE3ZjFmZWU1ZDNiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXG5AQCAtMTgyLDYgJiM0MzsxODIsNyBAQCBzdHJ1Y3QgZ2RtYV9nZW5lcmFsX3JlcSB7XG4gI2RlZmluZSBHRE1BX01FU1NBR0VfVjIgMlxuICNkZWZpbmUgR0RNQV9NRVNTQUdFX1YzIDNcbiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WNCA0XG4mIzQzOyNkZWZpbmUgR0RNQV9NRVNTQUdFX1Y1IDVcbiBcbiBzdHJ1Y3QgZ2RtYV9nZW5lcmFsX3Jlc3Age1xuIFx0c3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyO1xuQEAgLTQyOCw2ICYjNDM7NDI5LDkgQEAgc3RydWN0IGdkbWFfY29udGV4dCB7XG4gXHQvKiBMMiBNVFUgKi9cbiBcdHUxNiBhZGFwdGVyX210dTtcbiBcbiYjNDM7XHQvKiBOSUMgc3VwcG9ydHMgQ1FFIHg4IGNvYWxlc2NpbmcgKi9cbiYjNDM7XHRib29sIGNxZThfY29hbGVzY2luZ19zdXA7XG4mIzQzO1xuIFx0LyogVGhpcyBtYXBzIGEgQ1EgaW5kZXggdG8gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gKi9cbiBcdHVuc2lnbmVkIGludFx0XHRtYXhfbnVtX2NxcztcbiBcdHN0cnVjdCBnZG1hX3F1ZXVlXHQqKmNxX3RhYmxlO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oIGIvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcbmluZGV4IDRkMDQxZmI4NDM3ZjUuLjNjYTEzOTlhMmZhZmEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9tYW5hL21hbmEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcbkBAIC02Miw5ICYjNDM7NjIsMTIgQEAgZW51bSBUUklfU1RBVEUge1xuIFxuICNkZWZpbmUgTUFYX1BPUlRTX0lOX01BTkFfREVWIDI1NlxuIFxuLS8qIE1heGltdW0gbnVtYmVyIG9mIHBhY2tldHMgcGVyIGNvYWxlc2NlZCBDUUUgKi9cbiYjNDM7LyogTWF4aW11bSBudW1iZXIgb2YgUFBJcyBwZXIgY29hbGVzY2VkIENRRSAqL1xuICNkZWZpbmUgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgNFxuIFxuJiM0MzsvKiA4LXBrdCBtb2RlIHBhY2tzIHVwIHRvIDIgcGFja2V0cyBwZXIgUFBJIGVudHJ5ICovXG4mIzQzOyNkZWZpbmUgTUFOQV9DUUVfQ09BTF9QS1RTXzggOFxuJiM0MztcbiAvKiBEZWZhdWx0L21heCBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqL1xuICNkZWZpbmUgTUFOQV9JTlRSX01PRFJfVVNFQ19ERUYgMFxuICNkZWZpbmUgTUFOQV9JTlRSX01PRFJfQ09NUF9ERUYgMFxuQEAgLTc5LDcgJiM0Mzs4Miw3IEBAIGVudW0gVFJJX1NUQVRFIHtcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfTUFTSyAgIEdFTk1BU0soMjMsIDE2KVxuIFxuIC8qIFVwZGF0ZSB0aGlzIGNvdW50IHdoZW5ldmVyIHRoZSByZXNwZWN0aXZlIHN0cnVjdHVyZXMgYXJlIGNoYW5nZWQgKi9cbi0jZGVmaW5lIE1BTkFfU1RBVFNfUlhfQ09VTlQgKDYgJiM0MzsgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxKVxuJiM0MzsjZGVmaW5lIE1BTkFfU1RBVFNfUlhfQ09VTlQgKDYgJiM0MzsgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxKVxuICNkZWZpbmUgTUFOQV9TVEFUU19UWF9DT1VOVCAxMVxuIFxuICNkZWZpbmUgTUFOQV9SWF9GUkFHX0FMSUdOTUVOVCA2NFxuQEAgLTkxLDcgJiM0Mzs5NCw3IEBAIHN0cnVjdCBtYW5hX3N0YXRzX3J4IHtcbiBcdHU2NCB4ZHBfdHg7XG4gXHR1NjQgeGRwX3JlZGlyZWN0O1xuIFx0dTY0IHBrdF9sZW4wX2Vycjtcbi1cdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XG4mIzQzO1x0dTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxXTtcbiBcdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzeW5jcDtcbiB9O1xuIFxuQEAgLTIwMiw2ICYjNDM7MjA1LDcgQEAgZW51bSBtYW5hX2NxZV90eXBlIHtcbiBcdENRRV9SWF9DT0FMRVNDRURfNFx0XHQ9IDIsXG4gXHRDUUVfUlhfT0JKRUNUX0ZFTkNFXHRcdD0gMyxcbiBcdENRRV9SWF9UUlVOQ0FURURcdFx0PSA0LFxuJiM0MztcdENRRV9SWF9DT0FMRVNDRURfOFx0XHQ9IDcsXG4gXG4gXHRDUUVfVFhfT0tBWVx0XHRcdD0gMzIsXG4gXHRDUUVfVFhfU0FfRFJPUFx0XHRcdD0gMzMsXG5AQCAtMjM4LDEyICYjNDM7MjQyLDI1IEBAIHN0cnVjdCBtYW5hX2NxZV9oZWFkZXIge1xuICNkZWZpbmUgTUFOQV9IQVNIX0w0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiBcdChORElTX0hBU0hfVENQX0lQVjQgfCBORElTX0hBU0hfVURQX0lQVjQgfCBORElTX0hBU0hfVENQX0lQVjYgfCAgICAgIFxcXG4gXHQgTkRJU19IQVNIX1VEUF9JUFY2IHwgTkRJU19IQVNIX1RDUF9JUFY2X0VYIHwgTkRJU19IQVNIX1VEUF9JUFY2X0VYKVxuJiM0MzsjZGVmaW5lIE1BTkFfSEFTSF9FTkFCTEVfU1VQUE9SVEVEIFxcXG4mIzQzO1x0KE5ESVNfSEFTSF9JUFY0IHwgTkRJU19IQVNIX1RDUF9JUFY0IHwgTkRJU19IQVNIX1VEUF9JUFY0IHwgXFxcbiYjNDM7XHQgTkRJU19IQVNIX0lQVjYgfCBORElTX0hBU0hfVENQX0lQVjYgfCBORElTX0hBU0hfVURQX0lQVjYpXG4mIzQzO1xuJiM0Mzt1bmlvbiBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyB7XG4mIzQzO1x0c3RydWN0IHtcbiYjNDM7XHRcdHUzMiBwa3RfbGVuIDogMTY7XG4mIzQzO1x0XHR1MzIgcmVzZXJ2ZWQxIDogMTY7XG4mIzQzO1x0XHR1MzIgcmVzZXJ2ZWQyO1xuJiM0MztcdFx0dTMyIHBrdF9oYXNoO1xuJiM0MztcdH07XG4gXG4tc3RydWN0IG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHtcbi1cdHUzMiBwa3RfbGVuXHQ6IDE2O1xuLVx0dTMyIHJlc2VydmVkMVx0OiAxNjtcbi1cdHUzMiByZXNlcnZlZDI7XG4tXHR1MzIgcGt0X2hhc2g7XG4mIzQzO1x0LyogVXAgdG8gdHdvIHBrdHMgcGVyIFBQSSBlbnRyeSAqL1xuJiM0MztcdHN0cnVjdCB7XG4mIzQzO1x0XHR1MzIgcGt0X2hhc2gwO1xuJiM0MztcdFx0dTE2IHBrdF9sZW4wO1xuJiM0MztcdFx0dTE2IHBrdF9sZW4xO1xuJiM0MztcdFx0dTMyIHBrdF9oYXNoMTtcbiYjNDM7XHR9O1xuIH07IC8qIEhXIERBVEEgKi9cbiBcbiAvKiBSZWNlaXZlIGNvbXBsZXRpb24gT09CICovXG5AQCAtMjY0LDcgJiM0MzsyODEsNyBAQCBzdHJ1Y3QgbWFuYV9yeGNvbXBfb29iIHtcbiBcdHUzMiByeF91ZHBfY3N1bV9mYWlsXHRcdDogMTtcbiBcdHUzMiByZXNlcnZlZDJcdFx0XHQ6IDE7XG4gXG4tXHRzdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8gcHBpW01BTkFfUlhDT01QX09PQl9OVU1fUFBJXTtcbiYjNDM7XHR1bmlvbiBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldO1xuIFxuIFx0dTMyIHJ4X3dxZV9vZmZzZXQ7XG4gfTsgLyogSFcgREFUQSAqL1xuQEAgLTYwNyw2ICYjNDM7NjI0LDcgQEAgc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0IHtcbiBcdGJvb2wgcG9ydF9zdF9zYXZlOyAvKiBTYXZlZCBwb3J0IHN0YXRlICovXG4gXG4gXHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XG4mIzQzO1x0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdHUzMiBjcWVfY29hbGVzY2luZ190aW1lb3V0X25zO1xuIFxuIFx0LyogSW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgKi9cbkBAIC03NTEsNiAmIzQzOzc2OSw4IEBAIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVxIHtcbiBcdHUzMiByZXNlcnZlZDtcbiB9OyAvKiBIVyBEQVRBICovXG4gXG4mIzQzOyNkZWZpbmUgTUFOQV9QRl9GTEFHXzFfQ1FFXzhfQ09BTEVTQ0lOR19TVVBQT1JURUQgQklUKDUpXG4mIzQzO1xuIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVzcCB7XG4gXHRzdHJ1Y3QgZ2RtYV9yZXNwX2hkciBoZHI7XG4gXG5AQCAtOTg2LDcgJiM0MzsxMDA2LDEwIEBAIHN0cnVjdCBtYW5hX2NmZ19yeF9zdGVlcl9yZXFfdjIge1xuIFx0bWFuYV9oYW5kbGVfdCBkZWZhdWx0X3J4b2JqO1xuIFx0dTggaGFzaGtleVtNQU5BX0hBU0hfS0VZX1NJWkVdO1xuIFx0dTggY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuLVx0dTggcmVzZXJ2ZWQyWzddO1xuJiM0MztcdHU4IHJlc2VydmVkMlszXTtcbiYjNDM7XHR1MTYgcnNzX2hhc2hfdHlwZXM7XG4mIzQzO1x0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsgLyogdjUgbWVzc2FnZSAqL1xuJiM0MztcdHU4IHJlc2VydmVkMztcbiBcdG1hbmFfaGFuZGxlX3QgaW5kaXJfdGFiW10gX19jb3VudGVkX2J5KG51bV9pbmRpcl9lbnRyaWVzKTtcbiB9OyAvKiBIVyBEQVRBICovXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6MzY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgU21hcnROSUMgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBhbmQgdW50ZXN0YWJsZSBieSBzdGFuZGFyZCBmdXp6ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZkODZjNjIyYmQ2MDJhYjE3YzNmMTAzYTgwM2Q0YWNhM2Q5Y2NmNWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAwNjozNjo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYwppbmRleCBhOGMzMjliZGJhY2Y4Li43MjBkMjJlNmFlYTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jCkBAIC0xMjQxLDYgJiM0MzsxMjQxLDkgQEAgaW50IG1hbmFfZ2RfcXVlcnlfZGV2aWNlX2NmZyhzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTMyIHByb3RvX21ham9yX3ZlciwKIAkJcmV0dXJuIGVycjsKIAl9CiAKJiM0MzsJaWYgKHJlc3AucGZfY2FwX2ZsYWdzMSAmYW1wOyBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCkKJiM0MzsJCWdjLSZndDtjcWU4X2NvYWxlc2Npbmdfc3VwID0gdHJ1ZTsKJiM0MzsKIAkqbWF4X251bV92cG9ydHMgPSByZXNwLm1heF9udW1fdnBvcnRzOwogCiAJaWYgKHJlc3AuaGRyLnJlc3BvbnNlLm1zZ192ZXJzaW9uICZndDs9IEdETUFfTUVTU0FHRV9WMikgewpAQCAtMTQyNiw3ICYjNDM7MTQyOSwxMSBAQCBzdGF0aWMgaW50IG1hbmFfY2ZnX3Zwb3J0X3N0ZWVyaW5nKHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjLAogCW1hbmFfZ2RfaW5pdF9yZXFfaGRyKCZhbXA7cmVxLSZndDtoZHIsIE1BTkFfQ09ORklHX1ZQT1JUX1JYLCByZXFfYnVmX3NpemUsCiAJCQkgICAgIHNpemVvZihyZXNwKSk7CiAKLQlyZXEtJmd0O2hkci5yZXEubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjI7CiYjNDM7CS8qIFJlcXVlc3QgJmFtcDsgcmVzcG9uc2UgdmVyc2lvbnMgY2FuIGJlIGRpZmZlcmVudC4KJiM0MzsJICogSFcgY2FuIGhhbmRsZSBuZXdlciBtc2cgdmVyc2lvbnMsIGJ5IHNraXBwaW5nCiYjNDM7CSAqIG5ldyBmaWVsZHMuCiYjNDM7CSAqLwomIzQzOwlyZXEtJmd0O2hkci5yZXEubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjU7CiAJcmVxLSZndDtoZHIucmVzcC5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WMjsKIAogCXJlcS0mZ3Q7dnBvcnQgPSBhcGMtJmd0O3BvcnRfaGFuZGxlOwpAQCAtMTQ0MCw4ICYjNDM7MTQ0NywxMyBAQCBzdGF0aWMgaW50IG1hbmFfY2ZnX3Zwb3J0X3N0ZWVyaW5nKHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjLAogCXJlcS0mZ3Q7dXBkYXRlX2luZGlyX3RhYiA9IHVwZGF0ZV90YWI7CiAJcmVxLSZndDtkZWZhdWx0X3J4b2JqID0gYXBjLSZndDtkZWZhdWx0X3J4b2JqOwogCi0JaWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSkKJiM0MzsJLyogUmVxdWVzdC1tc2cgdjUgcmVxdWlyZXMgdGhpcyBmaWVsZCAqLwomIzQzOwlyZXEtJmd0O3Jzc19oYXNoX3R5cGVzID0gTUFOQV9IQVNIX0VOQUJMRV9TVVBQT1JURUQ7CiYjNDM7CiYjNDM7CWlmIChyeCAhPSBUUklfU1RBVEVfRkFMU0UpIHsKIAkJcmVxLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtJmd0O2NxZV9jb2FsZXNjaW5nX2VuYWJsZTsKJiM0MzsJCXJlcS0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsKJiM0MzsJfQogCiAJaWYgKHVwZGF0ZV9rZXkpCiAJCW1lbWNweSgmYW1wO3JlcS0mZ3Q7aGFzaGtleSwgYXBjLSZndDtoYXNoa2V5LCBNQU5BX0hBU0hfS0VZX1NJWkUpOwpAQCAtMjA0NiwxNiAmIzQzOzIwNTgsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptYW5hX2J1aWxkX3NrYihzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgdm9pZCAqYnVmX3ZhLAogCiBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLAogCQkJc3RydWN0IG1hbmFfcnhjb21wX29vYiAqY3FlLCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwKLQkJCWludCBpKQomIzQzOwkJCXUzMiBwa3RfbGVuLCB1MzIgcGt0X2hhc2gpCiB7CiAJc3RydWN0IG1hbmFfc3RhdHNfcnggKnJ4X3N0YXRzID0gJmFtcDtyeHEtJmd0O3N0YXRzOwogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLSZndDtuZGV2OwotCXVpbnQgcGt0X2xlbiA9IGNxZS0mZ3Q7cHBpW2ldLnBrdF9sZW47CiAJdTE2IHJ4cV9pZHggPSByeHEtJmd0O3J4cV9pZHg7CiAJc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpOwogCXN0cnVjdCB4ZHBfYnVmZiB4ZHAgPSB7fTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwotCXUzMiBoYXNoX3ZhbHVlOwogCXUzMiBhY3Q7CiAKIAlyeHEtJmd0O3J4X2NxLndvcmtfZG9uZSYjNDM7JiM0Mzs7CkBAIC0yMDk0LDEyICYjNDM7MjEwNCwxMCBAQCBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLAogCX0KIAogCWlmIChjcWUtJmd0O3J4X2hhc2h0eXBlICE9IDAgJmFtcDsmYW1wOyAobmRldi0mZ3Q7ZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9SWEhBU0gpKSB7Ci0JCWhhc2hfdmFsdWUgPSBjcWUtJmd0O3BwaVtpXS5wa3RfaGFzaDsKLQogCQlpZiAoY3FlLSZndDtyeF9oYXNodHlwZSAmYW1wOyBNQU5BX0hBU0hfTDQpCi0JCQlza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0w0KTsKJiM0MzsJCQlza2Jfc2V0X2hhc2goc2tiLCBwa3RfaGFzaCwgUEtUX0hBU0hfVFlQRV9MNCk7CiAJCWVsc2UKLQkJCXNrYl9zZXRfaGFzaChza2IsIGhhc2hfdmFsdWUsIFBLVF9IQVNIX1RZUEVfTDMpOwomIzQzOwkJCXNrYl9zZXRfaGFzaChza2IsIHBrdF9oYXNoLCBQS1RfSEFTSF9UWVBFX0wzKTsKIAl9CiAKIAlpZiAoY3FlLSZndDtyeF92bGFudGFnX3ByZXNlbnQpIHsKQEAgLTIyNDAsNiAmIzQzOzIyNDgsNDMgQEAgc3RhdGljIHZvaWQgbWFuYV9yZWZpbGxfcnhfb29iKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1hbmFfcnhxICpyeHEsCiAJcnhvb2ItJmd0O2RtYV9zeW5jX29mZnNldCA9IGRtYV9zeW5jX29mZnNldDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19vbmVfcnhfcGt0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1hbmFfcnhxICpyeHEsCiYjNDM7CQkJCSAgICBzdHJ1Y3QgbWFuYV9yeGNvbXBfb29iICpvb2IsCiYjNDM7CQkJCSAgICB1MzIgcGt0bGVuLCB1MzIgcGt0X2hhc2gpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjsKJiM0MzsJc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSByeHEtJmd0O25kZXY7CiYjNDM7CXZvaWQgKm9sZF9idWYgPSBOVUxMOwomIzQzOwlib29sIG9sZF9mcDsKJiM0MzsKJiM0MzsJcnhidWZfb29iID0gJmFtcDtyeHEtJmd0O3J4X29vYnNbcnhxLSZndDtidWZfaW5kZXhdOwomIzQzOwlXQVJOX09OX09OQ0UocnhidWZfb29iLSZndDt3cWVfaW5mLndxZV9zaXplX2luX2J1ICE9IDEpOwomIzQzOwomIzQzOwlpZiAodW5saWtlbHkocGt0bGVuICZndDsgcnhxLSZndDtkYXRhc2l6ZSkpIHsKJiM0MzsJCS8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24mIzM5O3QgY2FsbGVkLiAqLwomIzQzOwkJcnhxLSZndDtyeF9jcS53b3JrX2RvbmUmIzQzOyYjNDM7OwomIzQzOwomIzQzOwkJJiM0MzsmIzQzO25kZXYtJmd0O3N0YXRzLnJ4X2Ryb3BwZWQ7CiYjNDM7CQluZXRkZXZfd2Fybl9vbmNlKG5kZXYsCiYjNDM7CQkJCSAmIzM0O0Ryb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxuJiMzNDssCiYjNDM7CQkJCSBwa3RsZW4sIHJ4cS0mZ3Q7ZGF0YXNpemUpOwomIzQzOwomIzQzOwkJLyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqLwomIzQzOwl9IGVsc2UgewomIzQzOwkJbWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbiwKJiM0MzsJCQkJICAgJmFtcDtvbGRfYnVmLCAmYW1wO29sZF9mcCk7CiYjNDM7CiYjNDM7CQkvKiBVbnN1Y2Nlc3NmdWwgcmVmaWxsIHdpbGwgaGF2ZSBvbGRfYnVmID09IE5VTEwuCiYjNDM7CQkgKiBJbiB0aGlzIGNhc2UsIG1hbmFfcnhfc2tiKCkgd2lsbCBkcm9wIHRoZSBwYWNrZXQuCiYjNDM7CQkgKi8KJiM0MzsJCW1hbmFfcnhfc2tiKG9sZF9idWYsIG9sZF9mcCwgb29iLCByeHEsIHBrdGxlbiwgcGt0X2hhc2gpOwomIzQzOwl9CiYjNDM7CiYjNDM7CW1hbmFfbW92ZV93cV90YWlsKHJ4cS0mZ3Q7Z2RtYV9ycSwgcnhidWZfb29iLSZndDt3cWVfaW5mLndxZV9zaXplX2luX2J1KTsKJiM0MzsKJiM0MzsJbWFuYV9wb3N0X3BrdF9yeHEocnhxKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsCiAJCQkJc3RydWN0IGdkbWFfY29tcCAqY3FlKQogewpAQCAtMjI0OSwxMCAmIzQzOzIyOTQsMTAgQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLAogCXN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iOwogCXN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9IGdjLSZndDtkZXY7CiYjNDM7CWJvb2wgY29hbGVzY2VkXzggPSBmYWxzZTsKIAlib29sIGNvYWxlc2NlZCA9IGZhbHNlOwotCXZvaWQgKm9sZF9idWYgPSBOVUxMOwotCXUzMiBjdXJyLCBwa3RsZW47Ci0JYm9vbCBvbGRfZnA7CiYjNDM7CXUzMiBwa3RsZW47CiYjNDM7CWludCBwa3RfaTsKIAlpbnQgaTsKIAogCWFwYyA9IG5ldGRldl9wcml2KG5kZXYpOwpAQCAtMjI3NSw2ICYjNDM7MjMyMCwxMSBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsCiAJCWNvYWxlc2NlZCA9IHRydWU7CiAJCWJyZWFrOwogCiYjNDM7CWNhc2UgQ1FFX1JYX0NPQUxFU0NFRF84OgomIzQzOwkJY29hbGVzY2VkID0gdHJ1ZTsKJiM0MzsJCWNvYWxlc2NlZF84ID0gdHJ1ZTsKJiM0MzsJCWJyZWFrOwomIzQzOwogCWNhc2UgQ1FFX1JYX09CSkVDVF9GRU5DRToKIAkJY29tcGxldGUoJmFtcDtyeHEtJmd0O2ZlbmNlX2V2ZW50KTsKIAkJcmV0dXJuOwpAQCAtMjI4Niw1NCAmIzQzOzIzMzYsNDggQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLAogCQlyZXR1cm47CiAJfQogCiYjNDM7CXBrdF9pID0gMDsKIAlmb3IgKGkgPSAwOyBpICZsdDsgTUFOQV9SWENPTVBfT09CX05VTV9QUEk7IGkmIzQzOyYjNDM7KSB7Ci0JCW9sZF9idWYgPSBOVUxMOwotCQlwa3RsZW4gPSBvb2ItJmd0O3BwaVtpXS5wa3RfbGVuOwotCQlpZiAocGt0bGVuID09IDApCi0JCQlicmVhazsKLQotCQljdXJyID0gcnhxLSZndDtidWZfaW5kZXg7Ci0JCXJ4YnVmX29vYiA9ICZhbXA7cnhxLSZndDtyeF9vb2JzW2N1cnJdOwotCQlXQVJOX09OX09OQ0UocnhidWZfb29iLSZndDt3cWVfaW5mLndxZV9zaXplX2luX2J1ICE9IDEpOwotCi0JCWlmICh1bmxpa2VseShwa3RsZW4gJmd0OyByeHEtJmd0O2RhdGFzaXplKSkgewotCQkJLyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbiYjMzk7dCBjYWxsZWQuICovCi0JCQlyeHEtJmd0O3J4X2NxLndvcmtfZG9uZSYjNDM7JiM0Mzs7CiYjNDM7CQl1MzIgcGt0X2hhc2g7CiAKLQkJCSYjNDM7JiM0MztuZGV2LSZndDtzdGF0cy5yeF9kcm9wcGVkOwotCQkJbmV0ZGV2X3dhcm5fb25jZShuZGV2LAotCQkJCSYjMzQ7RHJvcHBlZCBvdmVyc2l6ZWQgUlggcGFja2V0OiBsZW49JXUsIGRhdGFzaXplPSV1XG4mIzM0OywKLQkJCQlwa3RsZW4sIHJ4cS0mZ3Q7ZGF0YXNpemUpOwotCi0JCQkvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovCiYjNDM7CQlpZiAoY29hbGVzY2VkXzgpIHsKJiM0MzsJCQkvKiA4LXBrdCBtb2RlOiAyIHBhY2tldHMgcGVyIFBQSSBlbnRyeSAqLwomIzQzOwkJCXBrdGxlbiA9IG9vYi0mZ3Q7cHBpW2ldLnBrdF9sZW4wOwomIzQzOwkJCXBrdF9oYXNoID0gb29iLSZndDtwcGlbaV0ucGt0X2hhc2gwOwogCQl9IGVsc2UgewotCi0JCQltYW5hX3JlZmlsbF9yeF9vb2IoZGV2LCByeHEsIHJ4YnVmX29vYiwgcGt0bGVuLAotCQkJCQkgICAmYW1wO29sZF9idWYsICZhbXA7b2xkX2ZwKTsKLQotCQkJLyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLgotCQkJICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LgotCQkJICovCi0JCQltYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBpKTsKJiM0MzsJCQlwa3RsZW4gPSBvb2ItJmd0O3BwaVtpXS5wa3RfbGVuOwomIzQzOwkJCXBrdF9oYXNoID0gb29iLSZndDtwcGlbaV0ucGt0X2hhc2g7CiAJCX0KJiM0MzsJCWlmIChwa3RsZW4gPT0gMCkKJiM0MzsJCQlicmVhazsKIAotCQltYW5hX21vdmVfd3FfdGFpbChyeHEtJmd0O2dkbWFfcnEsCi0JCQkJICByeGJ1Zl9vb2ItJmd0O3dxZV9pbmYud3FlX3NpemVfaW5fYnUpOwotCi0JCW1hbmFfcG9zdF9wa3RfcnhxKHJ4cSk7CiYjNDM7CQltYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sIHBrdF9oYXNoKTsKJiM0MzsJCXBrdF9pJiM0MzsmIzQzOzsKIAogCQlpZiAoIWNvYWxlc2NlZCkKIAkJCWJyZWFrOwomIzQzOwomIzQzOwkJLyogUHJvY2VzcyAybmQgcGFja2V0IGZyb20gdGhlIHNhbWUgUFBJIGluIDgtcGt0IG1vZGUgKi8KJiM0MzsJCWlmIChjb2FsZXNjZWRfOCkgewomIzQzOwkJCXBrdGxlbiA9IG9vYi0mZ3Q7cHBpW2ldLnBrdF9sZW4xOwomIzQzOwkJCXBrdF9oYXNoID0gb29iLSZndDtwcGlbaV0ucGt0X2hhc2gxOwomIzQzOwkJCWlmIChwa3RsZW4gPT0gMCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CiYjNDM7CQkJbWFuYV9wcm9jZXNzX29uZV9yeF9wa3QoZGV2LCByeHEsIG9vYiwgcGt0bGVuLAomIzQzOwkJCQkJCXBrdF9oYXNoKTsKJiM0MzsJCQlwa3RfaSYjNDM7JiM0Mzs7CiYjNDM7CQl9CiAJfQogCiAJLyogQ29sbGVjdCBjb2FsZXNjZWQgQ1FFIGNvdW50IGJhc2VkIG9uIHBhY2tldHMgcHJvY2Vzc2VkLgotCSAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBpIC0gMi4KJiM0MzsJICogQ29hbGVzY2VkIENRRXMgaGF2ZSBhdCBsZWFzdCAyIHBhY2tldHMsIHNvIGluZGV4IGlzIHBrdF9pIC0gMi4KIAkgKi8KLQlpZiAoaSAmZ3Q7IDEpIHsKJiM0MzsJaWYgKHBrdF9pICZndDsgMSkgewogCQl1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKCZhbXA7cnhxLSZndDtzdGF0cy5zeW5jcCk7Ci0JCXJ4cS0mZ3Q7c3RhdHMuY29hbGVzY2VkX2NxZVtpIC0gMl0mIzQzOyYjNDM7OwomIzQzOwkJcnhxLSZndDtzdGF0cy5jb2FsZXNjZWRfY3FlW3BrdF9pIC0gMl0mIzQzOyYjNDM7OwogCQl1NjRfc3RhdHNfdXBkYXRlX2VuZCgmYW1wO3J4cS0mZ3Q7c3RhdHMuc3luY3ApOwotCX0gZWxzZSBpZiAoIWkgJmFtcDsmYW1wOyAhcGt0bGVuKSB7CiYjNDM7CX0gZWxzZSBpZiAoIXBrdF9pICZhbXA7JmFtcDsgIXBrdGxlbikgewogCQl1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKCZhbXA7cnhxLSZndDtzdGF0cy5zeW5jcCk7CiAJCXJ4cS0mZ3Q7c3RhdHMucGt0X2xlbjBfZXJyJiM0MzsmIzQzOzsKIAkJdTY0X3N0YXRzX3VwZGF0ZV9lbmQoJmFtcDtyeHEtJmd0O3N0YXRzLnN5bmNwKTsKQEAgLTM3NjMsNiAmIzQzOzM4MDcsNyBAQCBzdGF0aWMgaW50IG1hbmFfcHJvYmVfcG9ydChzdHJ1Y3QgbWFuYV9jb250ZXh0ICphYywgaW50IHBvcnRfaWR4LAogCWFwYy0mZ3Q7cG9ydF9pZHggPSBwb3J0X2lkeDsKIAlhcGMtJmd0O2xpbmtfY2ZnX2Vycm9yID0gMTsKIAlhcGMtJmd0O2NxZV9jb2FsZXNjaW5nX2VuYWJsZSA9IDA7CiYjNDM7CWFwYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IDA7CiAKIAkvKiBJbml0aWFsaXplIGludGVycnVwdCBtb2RlcmF0aW9uIHNldHRpbmdzIGlmIHN1cHBvcnRlZCBieSBIVyAqLwogCWlmIChnYy0mZ3Q7cGZfY2FwX2ZsYWdzMSAmYW1wOyBHRE1BX1BGX0NBUF9GTEFHXzFfRFlOX0lOVEVSUlVQVF9NT0RFUkFUSU9OKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jCmluZGV4IDllMzFlMjU5NWFlMzIuLjg3NDNmN2VkZWNiYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jCkBAIC0xNjksNyAmIzQzOzE2OSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBzdHJpbmdzZXQsIHU4ICpkYXRhKQogCQlldGh0b29sX3NwcmludGYoJmFtcDtkYXRhLCAmIzM0O3J4XyVkX3hkcF90eCYjMzQ7LCBpKTsKIAkJZXRodG9vbF9zcHJpbnRmKCZhbXA7ZGF0YSwgJiMzNDtyeF8lZF94ZHBfcmVkaXJlY3QmIzM0OywgaSk7CiAJCWV0aHRvb2xfc3ByaW50ZigmYW1wO2RhdGEsICYjMzQ7cnhfJWRfcGt0X2xlbjBfZXJyJiMzNDssIGkpOwotCQlmb3IgKGogPSAwOyBqICZsdDsgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqJiM0MzsmIzQzOykKJiM0MzsJCWZvciAoaiA9IDA7IGogJmx0OyBNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDE7IGomIzQzOyYjNDM7KQogCQkJZXRodG9vbF9zcHJpbnRmKCZhbXA7ZGF0YSwgJiMzNDtyeF8lZF9jb2FsZXNjZWRfY3FlXyVkJiMzNDssIGksIGogJiM0MzsgMik7CiAJfQogCkBAIC0yMDUsNyAmIzQzOzIwNSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJdTY0IHhkcF9kcm9wOwogCXU2NCB4ZHBfdHg7CiAJdTY0IHBrdF9sZW4wX2VycjsKLQl1NjQgY29hbGVzY2VkX2NxZVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDFdOwomIzQzOwl1NjQgY29hbGVzY2VkX2NxZVtNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDFdOwogCXU2NCB0c29fcGFja2V0czsKIAl1NjQgdHNvX2J5dGVzOwogCXU2NCB0c29faW5uZXJfcGFja2V0czsKQEAgLTI0NSw3ICYjNDM7MjQ1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKIAkJCXhkcF90eCA9IHJ4X3N0YXRzLSZndDt4ZHBfdHg7CiAJCQl4ZHBfcmVkaXJlY3QgPSByeF9zdGF0cy0mZ3Q7eGRwX3JlZGlyZWN0OwogCQkJcGt0X2xlbjBfZXJyID0gcnhfc3RhdHMtJmd0O3BrdF9sZW4wX2VycjsKLQkJCWZvciAoaiA9IDA7IGogJmx0OyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDE7IGomIzQzOyYjNDM7KQomIzQzOwkJCWZvciAoaiA9IDA7IGogJmx0OyBNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDE7IGomIzQzOyYjNDM7KQogCQkJCWNvYWxlc2NlZF9jcWVbal0gPSByeF9zdGF0cy0mZ3Q7Y29hbGVzY2VkX2NxZVtqXTsKIAkJfSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KCZhbXA7cnhfc3RhdHMtJmd0O3N5bmNwLCBzdGFydCkpOwogCkBAIC0yNTUsNyAmIzQzOzI1NSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJCWRhdGFbaSYjNDM7JiM0MztdID0geGRwX3R4OwogCQlkYXRhW2kmIzQzOyYjNDM7XSA9IHhkcF9yZWRpcmVjdDsKIAkJZGF0YVtpJiM0MzsmIzQzO10gPSBwa3RfbGVuMF9lcnI7Ci0JCWZvciAoaiA9IDA7IGogJmx0OyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDE7IGomIzQzOyYjNDM7KQomIzQzOwkJZm9yIChqID0gMDsgaiAmbHQ7IE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMTsgaiYjNDM7JiM0MzspCiAJCQlkYXRhW2kmIzQzOyYjNDM7XSA9IGNvYWxlc2NlZF9jcWVbal07CiAJfQogCkBAIC00MDgsNiAmIzQzOzQwOCw3IEBAIHN0YXRpYyBpbnQgbWFuYV9nZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGMgPSBuZXRkZXZfcHJpdihuZGV2KTsKIAogCWtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzID0KJiM0MzsJCWFwYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA/IE1BTkFfQ1FFX0NPQUxfUEtUU184IDoKIAkJYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSA6IDE7CiAKIAlrZXJuZWxfY29hbC0mZ3Q7cnhfY3FlX25zZWNzID0gYXBjLSZndDtjcWVfY29hbGVzY2luZ190aW1lb3V0X25zOwpAQCAtNDQzLDYgJiM0Mzs0NDQsNyBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQl1MTYgaW50cl9tb2RyX3R4X3VzZWM7CiAJCXUxNiBpbnRyX21vZHJfdHhfY29tcDsKIAkJdTggY3FlX2NvYWxlc2NpbmdfZW5hYmxlOwomIzQzOwkJdTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsKIAkJYm9vbCByeF9kaW1fZW5hYmxlZDsKIAkJYm9vbCB0eF9kaW1fZW5hYmxlZDsKIAl9IHNhdmVkOwpAQCAtNDY2LDEwICYjNDM7NDY4LDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJfQogCiAJaWYgKGtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzICE9IDEgJmFtcDsmYW1wOwotCSAgICBrZXJuZWxfY29hbC0mZ3Q7cnhfY3FlX2ZyYW1lcyAhPSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSkgewomIzQzOwkgICAga2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgIT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgJmFtcDsmYW1wOwomIzQzOwkgICAga2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgIT0gTUFOQV9DUUVfQ09BTF9QS1RTXzgpIHsKIAkJTkxfU0VUX0VSUl9NU0dfRk1UKGV4dGFjaywKLQkJCQkgICAmIzM0O3J4LWZyYW1lcyBtdXN0IGJlIDEgb3IgJXUsIGdvdCAldSYjMzQ7LAomIzQzOwkJCQkgICAmIzM0O3J4LWZyYW1lcyBtdXN0IGJlIDEsICV1LCBvciAldSwgZ290ICV1JiMzNDssCiAJCQkJICAgTUFOQV9SWENPTVBfT09CX05VTV9QUEksCiYjNDM7CQkJCSAgIE1BTkFfQ1FFX0NPQUxfUEtUU184LAogCQkJCSAgIGtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtNTE0LDggJiM0Mzs1MTgsMTUgQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKIAlzYXZlZC50eF9kaW1fZW5hYmxlZCA9IGFwYy0mZ3Q7dHhfZGltX2VuYWJsZWQ7CiAKIAlzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtJmd0O2NxZV9jb2FsZXNjaW5nX2VuYWJsZTsKJiM0MzsJc2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsKIAlhcGMtJmd0O2NxZV9jb2FsZXNjaW5nX2VuYWJsZSA9Ci0JCWtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzID09IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJOwomIzQzOwkJa2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgJmd0Oz0gTUFOQV9SWENPTVBfT09CX05VTV9QUEk7CiYjNDM7CiYjNDM7CWlmIChnYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX3N1cCkKJiM0MzsJCWFwYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9CiYjNDM7CQkJa2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgPT0gTUFOQV9DUUVfQ09BTF9QS1RTXzg7CiYjNDM7CWVsc2UgaWYgKGtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzID09IE1BTkFfQ1FFX0NPQUxfUEtUU184KQomIzQzOwkJbmV0ZGV2X2luZm8obmRldiwgJiMzNDtGYWxsIGJhY2sgdG8gUlgtQ1FFIHg0IGNvYWxlc2NpbmdcbiYjMzQ7KTsKIAogCWlmICghYXBjLSZndDtwb3J0X2lzX3VwKSB7CiAJCVdSSVRFX09OQ0UoYXBjLSZndDtyeF9kaW1fZW5hYmxlZCwgISFlYy0mZ3Q7dXNlX2FkYXB0aXZlX3J4X2NvYWxlc2NlKTsKQEAgLTUyMyw3ICYjNDM7NTM0LDggQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKGFwYy0mZ3Q7Y3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSkgewomIzQzOwlpZiAoYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlIHx8CiYjNDM7CSAgICBhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSkgewogCQkvKiBDUUUgY29hbGVzY2luZyBzZXR0aW5nIGlzIGFwcGxpZWQgdmlhIFJTUyBjb25maWd1cmF0aW9uLiAqLwogCQllcnIgPSBtYW5hX2NvbmZpZ19yc3MoYXBjLCBUUklfU1RBVEVfVFJVRSwgZmFsc2UsIGZhbHNlKTsKIAkJaWYgKGVycikgewpAQCAtNTMxLDYgJiM0Mzs1NDMsOCBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQkJCSAgIGVycik7CiAJCQlhcGMtJmd0O2NxZV9jb2FsZXNjaW5nX2VuYWJsZSA9CiAJCQkJc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlOwomIzQzOwkJCWFwYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9CiYjNDM7CQkJCXNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGU7CiAJCQlhcGMtJmd0O2ludHJfbW9kcl9yeF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3J4X3VzZWM7CiAJCQlhcGMtJmd0O2ludHJfbW9kcl9yeF9jb21wID0gc2F2ZWQuaW50cl9tb2RyX3J4X2NvbXA7CiAJCQlhcGMtJmd0O2ludHJfbW9kcl90eF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3R4X3VzZWM7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaCBiL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oCmluZGV4IDg1MjljZWYwZDdjNDUuLjcwYTdmMWZlZTVkM2IgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oCkBAIC0xODIsNiAmIzQzOzE4Miw3IEBAIHN0cnVjdCBnZG1hX2dlbmVyYWxfcmVxIHsKICNkZWZpbmUgR0RNQV9NRVNTQUdFX1YyIDIKICNkZWZpbmUgR0RNQV9NRVNTQUdFX1YzIDMKICNkZWZpbmUgR0RNQV9NRVNTQUdFX1Y0IDQKJiM0MzsjZGVmaW5lIEdETUFfTUVTU0FHRV9WNSA1CiAKIHN0cnVjdCBnZG1hX2dlbmVyYWxfcmVzcCB7CiAJc3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyOwpAQCAtNDI4LDYgJiM0Mzs0MjksOSBAQCBzdHJ1Y3QgZ2RtYV9jb250ZXh0IHsKIAkvKiBMMiBNVFUgKi8KIAl1MTYgYWRhcHRlcl9tdHU7CiAKJiM0MzsJLyogTklDIHN1cHBvcnRzIENRRSB4OCBjb2FsZXNjaW5nICovCiYjNDM7CWJvb2wgY3FlOF9jb2FsZXNjaW5nX3N1cDsKJiM0MzsKIAkvKiBUaGlzIG1hcHMgYSBDUSBpbmRleCB0byB0aGUgcXVldWUgc3RydWN0dXJlLiAqLwogCXVuc2lnbmVkIGludAkJbWF4X251bV9jcXM7CiAJc3RydWN0IGdkbWFfcXVldWUJKipjcV90YWJsZTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oIGIvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmgKaW5kZXggNGQwNDFmYjg0MzdmNS4uM2NhMTM5OWEyZmFmYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmgKQEAgLTYyLDkgJiM0Mzs2MiwxMiBAQCBlbnVtIFRSSV9TVEFURSB7CiAKICNkZWZpbmUgTUFYX1BPUlRTX0lOX01BTkFfREVWIDI1NgogCi0vKiBNYXhpbXVtIG51bWJlciBvZiBwYWNrZXRzIHBlciBjb2FsZXNjZWQgQ1FFICovCiYjNDM7LyogTWF4aW11bSBudW1iZXIgb2YgUFBJcyBwZXIgY29hbGVzY2VkIENRRSAqLwogI2RlZmluZSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSA0CiAKJiM0MzsvKiA4LXBrdCBtb2RlIHBhY2tzIHVwIHRvIDIgcGFja2V0cyBwZXIgUFBJIGVudHJ5ICovCiYjNDM7I2RlZmluZSBNQU5BX0NRRV9DT0FMX1BLVFNfOCA4CiYjNDM7CiAvKiBEZWZhdWx0L21heCBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqLwogI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9VU0VDX0RFRiAwCiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfREVGIDAKQEAgLTc5LDcgJiM0Mzs4Miw3IEBAIGVudW0gVFJJX1NUQVRFIHsKICNkZWZpbmUgTUFOQV9JTlRSX01PRFJfQ09NUF9NQVNLICAgR0VOTUFTSygyMywgMTYpCiAKIC8qIFVwZGF0ZSB0aGlzIGNvdW50IHdoZW5ldmVyIHRoZSByZXNwZWN0aXZlIHN0cnVjdHVyZXMgYXJlIGNoYW5nZWQgKi8KLSNkZWZpbmUgTUFOQV9TVEFUU19SWF9DT1VOVCAoNiAmIzQzOyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDEpCiYjNDM7I2RlZmluZSBNQU5BX1NUQVRTX1JYX0NPVU5UICg2ICYjNDM7IE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMSkKICNkZWZpbmUgTUFOQV9TVEFUU19UWF9DT1VOVCAxMQogCiAjZGVmaW5lIE1BTkFfUlhfRlJBR19BTElHTk1FTlQgNjQKQEAgLTkxLDcgJiM0Mzs5NCw3IEBAIHN0cnVjdCBtYW5hX3N0YXRzX3J4IHsKIAl1NjQgeGRwX3R4OwogCXU2NCB4ZHBfcmVkaXJlY3Q7CiAJdTY0IHBrdF9sZW4wX2VycjsKLQl1NjQgY29hbGVzY2VkX2NxZVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDFdOwomIzQzOwl1NjQgY29hbGVzY2VkX2NxZVtNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDFdOwogCXN0cnVjdCB1NjRfc3RhdHNfc3luYyBzeW5jcDsKIH07CiAKQEAgLTIwMiw2ICYjNDM7MjA1LDcgQEAgZW51bSBtYW5hX2NxZV90eXBlIHsKIAlDUUVfUlhfQ09BTEVTQ0VEXzQJCT0gMiwKIAlDUUVfUlhfT0JKRUNUX0ZFTkNFCQk9IDMsCiAJQ1FFX1JYX1RSVU5DQVRFRAkJPSA0LAomIzQzOwlDUUVfUlhfQ09BTEVTQ0VEXzgJCT0gNywKIAogCUNRRV9UWF9PS0FZCQkJPSAzMiwKIAlDUUVfVFhfU0FfRFJPUAkJCT0gMzMsCkBAIC0yMzgsMTIgJiM0MzsyNDIsMjUgQEAgc3RydWN0IG1hbmFfY3FlX2hlYWRlciB7CiAjZGVmaW5lIE1BTkFfSEFTSF9MNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAkoTkRJU19IQVNIX1RDUF9JUFY0IHwgTkRJU19IQVNIX1VEUF9JUFY0IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgICAgICBcCiAJIE5ESVNfSEFTSF9VRFBfSVBWNiB8IE5ESVNfSEFTSF9UQ1BfSVBWNl9FWCB8IE5ESVNfSEFTSF9VRFBfSVBWNl9FWCkKJiM0MzsjZGVmaW5lIE1BTkFfSEFTSF9FTkFCTEVfU1VQUE9SVEVEIFwKJiM0MzsJKE5ESVNfSEFTSF9JUFY0IHwgTkRJU19IQVNIX1RDUF9JUFY0IHwgTkRJU19IQVNIX1VEUF9JUFY0IHwgXAomIzQzOwkgTkRJU19IQVNIX0lQVjYgfCBORElTX0hBU0hfVENQX0lQVjYgfCBORElTX0hBU0hfVURQX0lQVjYpCiYjNDM7CiYjNDM7dW5pb24gbWFuYV9yeGNvbXBfcGVycGt0X2luZm8gewomIzQzOwlzdHJ1Y3QgewomIzQzOwkJdTMyIHBrdF9sZW4gOiAxNjsKJiM0MzsJCXUzMiByZXNlcnZlZDEgOiAxNjsKJiM0MzsJCXUzMiByZXNlcnZlZDI7CiYjNDM7CQl1MzIgcGt0X2hhc2g7CiYjNDM7CX07CiAKLXN0cnVjdCBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyB7Ci0JdTMyIHBrdF9sZW4JOiAxNjsKLQl1MzIgcmVzZXJ2ZWQxCTogMTY7Ci0JdTMyIHJlc2VydmVkMjsKLQl1MzIgcGt0X2hhc2g7CiYjNDM7CS8qIFVwIHRvIHR3byBwa3RzIHBlciBQUEkgZW50cnkgKi8KJiM0MzsJc3RydWN0IHsKJiM0MzsJCXUzMiBwa3RfaGFzaDA7CiYjNDM7CQl1MTYgcGt0X2xlbjA7CiYjNDM7CQl1MTYgcGt0X2xlbjE7CiYjNDM7CQl1MzIgcGt0X2hhc2gxOwomIzQzOwl9OwogfTsgLyogSFcgREFUQSAqLwogCiAvKiBSZWNlaXZlIGNvbXBsZXRpb24gT09CICovCkBAIC0yNjQsNyAmIzQzOzI4MSw3IEBAIHN0cnVjdCBtYW5hX3J4Y29tcF9vb2IgewogCXUzMiByeF91ZHBfY3N1bV9mYWlsCQk6IDE7CiAJdTMyIHJlc2VydmVkMgkJCTogMTsKIAotCXN0cnVjdCBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldOwomIzQzOwl1bmlvbiBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldOwogCiAJdTMyIHJ4X3dxZV9vZmZzZXQ7CiB9OyAvKiBIVyBEQVRBICovCkBAIC02MDcsNiAmIzQzOzYyNCw3IEBAIHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCB7CiAJYm9vbCBwb3J0X3N0X3NhdmU7IC8qIFNhdmVkIHBvcnQgc3RhdGUgKi8KIAogCXU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTsKJiM0MzsJdTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsKIAl1MzIgY3FlX2NvYWxlc2NpbmdfdGltZW91dF9uczsKIAogCS8qIEludGVycnVwdCBtb2RlcmF0aW9uIHNldHRpbmdzICovCkBAIC03NTEsNiAmIzQzOzc2OSw4IEBAIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVxIHsKIAl1MzIgcmVzZXJ2ZWQ7CiB9OyAvKiBIVyBEQVRBICovCiAKJiM0MzsjZGVmaW5lIE1BTkFfUEZfRkxBR18xX0NRRV84X0NPQUxFU0NJTkdfU1VQUE9SVEVEIEJJVCg1KQomIzQzOwogc3RydWN0IG1hbmFfcXVlcnlfZGV2aWNlX2NmZ19yZXNwIHsKIAlzdHJ1Y3QgZ2RtYV9yZXNwX2hkciBoZHI7CiAKQEAgLTk4Niw3ICYjNDM7MTAwNiwxMCBAQCBzdHJ1Y3QgbWFuYV9jZmdfcnhfc3RlZXJfcmVxX3YyIHsKIAltYW5hX2hhbmRsZV90IGRlZmF1bHRfcnhvYmo7CiAJdTggaGFzaGtleVtNQU5BX0hBU0hfS0VZX1NJWkVdOwogCXU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTsKLQl1OCByZXNlcnZlZDJbN107CiYjNDM7CXU4IHJlc2VydmVkMlszXTsKJiM0MzsJdTE2IHJzc19oYXNoX3R5cGVzOwomIzQzOwl1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlOyAvKiB2NSBtZXNzYWdlICovCiYjNDM7CXU4IHJlc2VydmVkMzsKIAltYW5hX2hhbmRsZV90IGluZGlyX3RhYltdIF9fY291bnRlZF9ieShudW1faW5kaXJfZW50cmllcyk7CiB9OyAvKiBIVyBEQVRBICovCiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTIwMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1BTkEgRHJpdmVyIFBhdGNoIGZvciBUZXN0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIE1pY3Jvc29mdCBNQU5BIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFkZGluZyBzdXBwb3J0IGZvciBDUUUgeDggY29hbGVzY2luZyDigJMgOC1wYWNrZXQgbW9kZSDigJMgd2hpY2ggaXMgYSBwcmV0dHkgaW50ZXJlc3Rpbmcgb3B0aW1pemF0aW9uLiBJdCBsb29rcyBsaWtlIGl0IHRvdWNoZXMgc2V2ZXJhbCBjb3JlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGRyaXZlcjogYG1hbmFfZ2RfcXVlcnlfZGV2aWNlX2NmZ2AsIGBtYW5hX2NmZ192cG9ydF9zdGVlcmluZ2AsIHRoZSBSWCBwYXRoIHdpdGggYG1hbmFfcnhfc2tiYCBhbmQgYG1hbmFfcHJvY2Vzc19yeF9jcWVgLCBwbHVzIHByb2JlIGFuZCBldGh0b29sIGZ1bmN0aW9uYWxpdHkuIFRoZSBwYXRoIHBvaW50cyB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvYCwgd2hpY2ggc2VlbXMgc3RhbmRhcmQgZW5vdWdoLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFsd2F5cywgJiMzNDtDYW4gSSB0ZXN0IHRoaXMgd2l0aG91dCBuZWVkaW5nIGEgc3BlY2lhbGl6ZWQgc2V0dXA/JiMzNDsgSSBuZWVkIHRvIHZlcmlmeSBpZiB0aGlzIGRyaXZlciBpcyB0ZXN0YWJsZSBpbiBRRU1VLiBHaXZlbiB0aGF0IHRoZSBNQU5BIGlzIGEgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgYW5kIHRoZXJlZm9yZSBhIFBDSSBkZXZpY2UsIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBpcyB0aGUgTUFOQSBkZXZpY2UgYWN0dWFsbHkgKmVtdWxhdGVkKiBpbiBRRU1VPyBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgbWVudGlvbiBvZiAmIzM0O21hbmEmIzM0OyBpbiBRRU1VJiMzOTtzIGRvY3VtZW50YXRpb24gb3IgY29kZSwgb3IgaWYgdGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGNhcmRzIG9yIGFuIEF6dXJlIFZNIGVudmlyb25tZW50LgoKUmlnaHQsIE1BTkEgaXMgQXp1cmUmIzM5O3MgY3VzdG9tIFNtYXJ0TklDL1NSLUlPViBkZXZpY2UuIEFzIEkgZXhwZWN0ZWQsIGl0JiMzOTtzIG5vdCB0aGUga2luZCBvZiB0aGluZyB0aGF0JiMzOTtzIGdlbmVyYWxseSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGUgaW5zdHJ1Y3Rpb25zIGRvIG1lbnRpb24gYSBzcGVjaWZpYyBjcml0ZXJpb24gZm9yIHdoZW4gYSBwYXRjaCAqc2hvdWxkbiYjMzk7dCogYmUgY29uc2lkZXJlZCB3b3J0aCBmdXp6aW5nLiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgJiMzNDtDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4KClNvIGxldCYjMzk7cyBzZWUgaWYgTUFOQSBmaXRzIHRoaXMgZGVzY3JpcHRpb24uIE1BTkEgaXMgaW5kZWVkIGEgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgYW5kIGl0IGlzIGEgUENJZSBkZXZpY2UuIFRodXMsIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIHJlbWFpbnM6IGlzIE1BTkEgZW11bGF0ZWQgaW4gUUVNVT8gQW5kIGFzIGZhciBhcyBJIGNhbiB0ZWxsLCB0aGUgYW5zd2VyIGlzIG5vLiBJIG5lZWQgdG8gZXhwbGljaXRseSBjb25maXJtIHRoaXMg4oCTIHRoYXQgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGVpdGhlciBpbiB0aGUga2VybmVsIG9yIFFFTVUgaXRzZWxmLiBJJiMzOTtsbCBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoYXQgbm8gc3VwcG9ydGluZyBlbXVsYXRpb24gZXhpc3RzLiBJZiBpdCYjMzk7cyBwdXJlIGhhcmR3YXJlLCB3ZSYjMzk7bGwgbmVlZCBhIHBoeXNpY2FsIEF6dXJlIGVudmlyb25tZW50IHRvIGRvIG1lYW5pbmdmdWwgdGVzdGluZywgd2hpY2ggaW1wYWN0cyBvdXIgdGVzdGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFuYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzYzOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01JQ1JPU09GVF9NQU5BKSAmIzQzOz0gbWFuYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9NYWtlZmlsZTo2Om1hbmEtb2JqcyA6PSBnZG1hX21haW4ubyBzaG1fY2hhbm5lbC5vIGh3X2NoYW5uZWwubyBtYW5hX2VuLm8gbWFuYV9ldGh0b29sLm8gbWFuYV9icGYub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTU6I2luY2x1ZGUgXHUwMDNjbmV0L21hbmEvbWFuYS5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxNjojaW5jbHVkZSBcdTAwM2NuZXQvbWFuYS9od19jaGFubmVsLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTg6c3RydWN0IGRlbnRyeSAqbWFuYV9kZWJ1Z2ZzX3Jvb3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIwOnN0cnVjdCBtYW5hX2Rldl9yZWNvdmVyeSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMS1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI2OnN0YXRpYyBzdHJ1Y3QgbWFuYV9kZXZfcmVjb3Zlcnlfd29yayB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNy1cdHN0cnVjdCBsaXN0X2hlYWQgZGV2X2xpc3Q7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzEtXHRzcGlubG9ja190IGxvY2s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozMjp9IG1hbmFfZGV2X3JlY292ZXJ5X3dvcms7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM0OnN0YXRpYyB1MzIgbWFuYV9nZF9yMzIoc3RydWN0IGdkbWFfY29udGV4dCAqZywgdTY0IG9mZnNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM5OnN0YXRpYyB1NjQgbWFuYV9nZF9yNjQoc3RydWN0IGdkbWFfY29udGV4dCAqZywgdTY0IG9mZnNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjQ0OnN0YXRpYyBpbnQgbWFuYV9nZF9pbml0X3BmX3JlZ3Moc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1MTpcdGdjLVx1MDAzZWRiX3BhZ2Vfc2l6ZSA9IG1hbmFfZ2RfcjMyKGdjLCBHRE1BX1BGX1JFR19EQl9QQUdFX1NJWkUpIFx1MDAyNiAweEZGRkY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjUzOlx0LyogbWFuYV9nZF9yaW5nX2Rvb3JiZWxsKCkgYWNjZXNzZXMgb2Zmc2V0cyB1cCB0byBET09SQkVMTF9PRkZTRVRfRVFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU0LVx0ICogKDB4RkY4KSAmIzQzOyA4IGJ5dGVzID0gNEtCIHdpdGhpbiBlYWNoIGRvb3JiZWxsIHBhZ2UsIHNvIHRoZSBwYWdlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2NDpcdGdjLVx1MDAzZWRiX3BhZ2Vfb2ZmID0gbWFuYV9nZF9yNjQoZ2MsIEdETUFfUEZfUkVHX0RCX1BBR0VfT0ZGKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Nzc6XHRzcmlvdl9iYXNlX29mZiA9IG1hbmFfZ2RfcjY0KGdjLCBHRE1BX1NSSU9WX1JFR19DRkdfQkFTRV9PRkYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzgtXHRpZiAoc3Jpb3ZfYmFzZV9vZmYgXHUwMDNlPSBnYy1cdTAwM2ViYXIwX3NpemUgfHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04OC1cdHJlbWFpbmluZ19iYXJzaXplID0gZ2MtXHUwMDNlYmFyMF9zaXplIC0gc3Jpb3ZfYmFzZV9vZmY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo4OTpcdHNyaW92X3NobV9vZmYgPSBtYW5hX2dkX3I2NChnYywgc3Jpb3ZfYmFzZV9vZmYgJiM0MzsgR0RNQV9QRl9SRUdfU0hNX09GRik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MC1cdGlmIChzcmlvdl9zaG1fb2ZmIFx1MDAzZT0gcmVtYWluaW5nX2JhcnNpemUgfHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDQ6c3RhdGljIGludCBtYW5hX2dkX2luaXRfdmZfcmVncyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTA5Olx0Z2MtXHUwMDNlZGJfcGFnZV9zaXplID0gbWFuYV9nZF9yMzIoZ2MsIEdETUFfUkVHX0RCX1BBR0VfU0laRSkgXHUwMDI2IDB4RkZGRjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExMTpcdC8qIG1hbmFfZ2RfcmluZ19kb29yYmVsbCgpIGFjY2Vzc2VzIG9mZnNldHMgdXAgdG8gRE9PUkJFTExfT0ZGU0VUX0VRXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTItXHQgKiAoMHhGRjgpICYjNDM7IDggYnl0ZXMgPSA0S0Igd2l0aGluIGVhY2ggZG9vcmJlbGwgcGFnZSwgc28gdGhlIHBhZ2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjI6XHRnYy1cdTAwM2VkYl9wYWdlX29mZiA9IG1hbmFfZ2RfcjY0KGdjLCBHRE1BX1JFR19EQl9QQUdFX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTM1Olx0c2htX29mZiA9IG1hbmFfZ2RfcjY0KGdjLCBHRE1BX1JFR19TSE1fT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzNi1cdGlmIChzaG1fb2ZmIFx1MDAzZT0gZ2MtXHUwMDNlYmFyMF9zaXplIHx8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTUwOnN0YXRpYyBpbnQgbWFuYV9nZF9pbml0X3JlZ2lzdGVycyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE1MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTU0LVx0aWYgKGdjLVx1MDAzZWlzX3BmIFx1MDAyNlx1MDAyNiAhZ2MtXHUwMDNlaXNfcGYyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTU1Olx0XHRyZXR1cm4gbWFuYV9nZF9pbml0X3BmX3JlZ3MocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNTYtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxNTc6XHRcdHJldHVybiBtYW5hX2dkX2luaXRfdmZfcmVncyhwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE1OC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTYwLS8qIFN1cHByZXNzIGxvZ2dpbmcgd2hlbiB3ZSBzZXQgdGltZW91dCB0byB6ZXJvICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxNjE6Ym9vbCBtYW5hX25lZWRfbG9nKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCBpbnQgZXJyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTYyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxNzg6c3RhdGljIGludCBtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5Mi1cdCAqIE1TSS1YIGFsbG9jYXRpb247IG9uIG5vbi1keW4gcGxhdGZvcm1zIG1zaV9zaGFyaW5nIGlzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxOTM6XHQgKiB1bmNvbmRpdGlvbmFsbHkgdHJ1ZSAoc2V0IGluIG1hbmFfZ2Rfc2V0dXBfaHdjX2lycXMpLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk0LVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTk4Olx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXHUwMDI2cmVxLmhkciwgR0RNQV9RVUVSWV9NQVhfUkVTT1VSQ0VTLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk5LVx0XHRcdCAgICAgc2l6ZW9mKHJlcSksIHNpemVvZihyZXNwKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMDE6XHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgc2l6ZW9mKHJlcSksIFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcdTAwMjZyZXNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIwMi1cdGlmIChlcnIgfHwgcmVzcC5oZHIuc3RhdHVzKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ2Olx0ZGVidWdmc19jcmVhdGVfdTMyKFwmIzM0O251bV9tc2l4X3VzYWJsZVwmIzM0OywgMDQwMCwgZ2MtXHUwMDNlbWFuYV9wY2lfZGVidWdmcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0Ny1cdFx0XHQgICBcdTAwMjZnYy1cdTAwM2VudW1fbXNpeF91c2FibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ4Olx0ZGVidWdmc19jcmVhdGVfdTMyKFwmIzM0O21heF9udW1fcXVldWVzXCYjMzQ7LCAwNDAwLCBnYy1cdTAwM2VtYW5hX3BjaV9kZWJ1Z2ZzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5LVx0XHRcdCAgIFx1MDAyNmdjLVx1MDAzZW1heF9udW1fcXVldWVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1MTpcdGVyciA9IG1hbmFfZ2RfcXVlcnlfZGV2aWNlX2NmZyhnYywgTUFOQV9NQUpPUl9WRVJTSU9OLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUyLVx0XHRcdFx0ICAgICAgIE1BTkFfTUlOT1JfVkVSU0lPTixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNjM6XHQvKiBDYXAgdG8gdGhlIHNhbWUgbGltaXQgdXNlZCBieSBtYW5hX3Byb2JlKCkgZm9yIHBvcnQgaW5zdGFudGlhdGlvbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI2NC1cdCAqIHNvIE1TSS1YIGFuZCBxdWV1ZSBidWRnZXRpbmcgbWF0Y2hlcyB0aGUgYWN0dWFsIHBvcnQgY291bnQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzAwOnN0YXRpYyBpbnQgbWFuYV9nZF9xdWVyeV9od2NfdGltZW91dChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTMyICp0aW1lb3V0X3ZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMwMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzA3Olx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXHUwMDI2cmVxLmhkciwgR0RNQV9RVUVSWV9IV0NfVElNRU9VVCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMwOC1cdFx0XHQgICAgIHNpemVvZihyZXEpLCBzaXplb2YocmVzcCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzA5LVx0cmVxLnRpbWVvdXRfbXMgPSAqdGltZW91dF92YWw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozMTA6XHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgc2l6ZW9mKHJlcSksIFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcdTAwMjZyZXNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMxMS1cdGlmIChlcnIgfHwgcmVzcC5oZHIuc3RhdHVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjMxOTpzdGF0aWMgaW50IG1hbmFfZ2RfZGV0ZWN0X2RldmljZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjMzMDpcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFx1MDAyNnJlcS5oZHIsIEdETUFfTElTVF9ERVZJQ0VTLCBzaXplb2YocmVxKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMzMS1cdFx0XHQgICAgIHNpemVvZihyZXNwKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozMzM6XHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgc2l6ZW9mKHJlcSksIFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcdTAwMjZyZXNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMzNC1cdGlmIChlcnIgfHwgcmVzcC5oZHIuc3RhdHVzKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzUxOlx0XHQvKiBIV0MgaXMgYWxyZWFkeSBkZXRlY3RlZCBpbiBtYW5hX2h3Y19jcmVhdGVfY2hhbm5lbCgpLiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzUyLVx0XHRpZiAoZGV2X3R5cGUgPT0gR0RNQV9ERVZJQ0VfSFdDKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM1NS1cdFx0aWYgKGRldl90eXBlID09IEdETUFfREVWSUNFX01BTkEpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM1NjpcdFx0XHRnYy1cdTAwM2VtYW5hLmdkbWFfY29udGV4dCA9IGdjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzU3Olx0XHRcdGdjLVx1MDAzZW1hbmEuZGV2X2lkID0gZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzU4LVx0XHR9IGVsc2UgaWYgKGRldl90eXBlID09IEdETUFfREVWSUNFX01BTkFfSUIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM1OTpcdFx0XHRnYy1cdTAwM2VtYW5hX2liLmRldl9pZCA9IGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM2MDpcdFx0XHRnYy1cdTAwM2VtYW5hX2liLmdkbWFfY29udGV4dCA9IGdjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzYxLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzY0Olx0cmV0dXJuIGdjLVx1MDAzZW1hbmEuZGV2X2lkLnR5cGUgPT0gMCA/IC1FTk9ERVYgOiAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzY1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM2NzppbnQgbWFuYV9nZF9zZW5kX3JlcXVlc3Qoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHUzMiByZXFfbGVuLCBjb25zdCB2b2lkICpyZXEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNjgtXHRcdFx0IHUzMiByZXNwX2xlbiwgdm9pZCAqcmVzcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozNzI6XHRyZXR1cm4gbWFuYV9od2Nfc2VuZF9yZXF1ZXN0KGh3YywgcmVxX2xlbiwgcmVxLCByZXNwX2xlbiwgcmVzcCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNzMtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Mzc0OkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF9zZW5kX3JlcXVlc3QsIFwmIzM0O05FVF9NQU5BXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM3NjppbnQgbWFuYV9nZF9hbGxvY19tZW1vcnkoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHVuc2lnbmVkIGludCBsZW5ndGgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNzctXHRcdFx0IHN0cnVjdCBnZG1hX21lbV9pbmZvICpnbWkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Mzk3OnZvaWQgbWFuYV9nZF9mcmVlX21lbW9yeShzdHJ1Y3QgZ2RtYV9tZW1faW5mbyAqZ21pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzk4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0MDM6c3RhdGljIGludCBtYW5hX2dkX2NyZWF0ZV9od19lcShzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQwNC1cdFx0XHRcdHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0MTM6XHRtYW5hX2dkX2luaXRfcmVxX2hkcihcdTAwMjZyZXEuaGRyLCBHRE1BX0NSRUFURV9RVUVVRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQxNC1cdFx0XHQgICAgIHNpemVvZihyZXEpLCBzaXplb2YocmVzcCkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjQyNTpcdGVyciA9IG1hbmFfZ2Rfc2VuZF9yZXF1ZXN0KGdjLCBzaXplb2YocmVxKSwgXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIFx1MDAyNnJlc3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDI2LVx0aWYgKGVyciB8fCByZXNwLmhkci5zdGF0dXMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0Mzg6c3RhdGljIGludCBtYW5hX2dkX2Rpc2FibGVfcXVldWUoc3RydWN0IGdkbWFfcXVldWUgKnF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0NDc6XHRtYW5hX2dkX2luaXRfcmVxX2hkcihcdTAwMjZyZXEuaGRyLCBHRE1BX0RJU0FCTEVfUVVFVUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NDgtXHRcdFx0ICAgICBzaXplb2YocmVxKSwgc2l6ZW9mKHJlc3ApKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0NTU6XHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgc2l6ZW9mKHJlcSksIFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcdTAwMjZyZXNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQ1Ni1cdGlmIChlcnIgfHwgcmVzcC5oZHIuc3RhdHVzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0NTc6XHRcdGlmIChtYW5hX25lZWRfbG9nKGdjLCBlcnIpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDU4LVx0XHRcdGRldl9lcnIoZ2MtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gZGlzYWJsZSBxdWV1ZTogJWQsIDB4JXhcXG5cJiMzNDssIGVycixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0NzI6c3RhdGljIHZvaWQgbWFuYV9nZF9yaW5nX2Rvb3JiZWxsKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1MzIgZGJfaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NzMtXHRcdFx0XHQgIGVudW0gZ2RtYV9xdWV1ZV90eXBlIHFfdHlwZSwgdTMyIHFpZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01MzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1MzI6dm9pZCBtYW5hX2dkX3dxX3JpbmdfZG9vcmJlbGwoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTUzMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTM2LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1Mzc6XHRtYW5hX2dkX3JpbmdfZG9vcmJlbGwoZ2MsIHF1ZXVlLVx1MDAzZWdkbWFfZGV2LVx1MDAzZWRvb3JiZWxsLCBxdWV1ZS1cdTAwM2V0eXBlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTM4LVx0XHRcdCAgICAgIHF1ZXVlLVx1MDAzZWlkLCBxdWV1ZS1cdTAwM2VoZWFkICogR0RNQV9XUUVfQlVfU0laRSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01MzktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NTQwOkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF93cV9yaW5nX2Rvb3JiZWxsLCBcJiMzNDtORVRfTUFOQVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1NDI6dm9pZCBtYW5hX2dkX3JpbmdfY3Eoc3RydWN0IGdkbWFfcXVldWUgKmNxLCB1OCBhcm1fYml0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTQzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1NTA6XHRtYW5hX2dkX3JpbmdfZG9vcmJlbGwoZ2MsIGNxLVx1MDAzZWdkbWFfZGV2LVx1MDAzZWRvb3JiZWxsLCBjcS1cdTAwM2V0eXBlLCBjcS1cdTAwM2VpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU1MS1cdFx0XHQgICAgICBoZWFkLCBhcm1fYml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU1Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1NTM6RVhQT1JUX1NZTUJPTF9OUyhtYW5hX2dkX3JpbmdfY3EsIFwmIzM0O05FVF9NQU5BXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjU1NTp2b2lkIG1hbmFfZ2RfcmluZ19kaW0oc3RydWN0IGdkbWFfcXVldWUgKmNxLCB1MzIgbW9kX3VzZWMsIGJvb2wgbW9kX3VzZWNfdmxkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTU2LVx0XHQgICAgICB1MzIgbW9kX2NvbXBzLCBib29sIG1vZF9jb21wc192bGQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NTY3Olx0bWFuYV9nZF9yaW5nX2Rvb3JiZWxsKGdjLCBjcS1cdTAwM2VnZG1hX2Rldi1cdTAwM2Vkb29yYmVsbCwgR0RNQV9ESU0sIGNxLVx1MDAzZWlkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTY4LVx0XHRcdCAgICAgIGRpbV92YWwsIG1vZF9jb21wc192bGQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTY5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjU3MDpFWFBPUlRfU1lNQk9MX05TKG1hbmFfZ2RfcmluZ19kaW0sIFwmIzM0O05FVF9NQU5BXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU3MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1NzQ6c3RhdGljIHZvaWQgbWFuYV9zZXJ2X3Jlc2NhbihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU3NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NTkzOnN0YXRpYyB2b2lkIG1hbmFfc2Vydl9mcGdhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTk0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2MjE6c3RhdGljIHZvaWQgbWFuYV9zZXJ2X3Jlc2V0KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjIyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02MjktXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O01BTkEgc2VydmljZTogR0Mgbm90IHNldHVwLCByZXNjYW5uaW5nXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjYzMDpcdFx0bWFuYV9zZXJ2X3Jlc2NhbihwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTYzMS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjY0NTpcdG1hbmFfZ2Rfc3VzcGVuZChwZGV2LCBQTVNHX1NVU1BFTkQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjY0OTpcdHJldCA9IG1hbmFfZ2RfcmVzdW1lKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjUwLVx0aWYgKHJldCA9PSAtRVRJTUVET1VUIHx8IHJldCA9PSAtRVBST1RPKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjUyLVx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtNQU5BIHNlcnZpY2U6IHJlc3VtZSBmYWlsZWQsIHJlc2Nhbm5pbmdcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NjUzOlx0XHRtYW5hX3NlcnZfcmVzY2FuKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjU0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NjY2OnN0YXRpYyB2b2lkIG1hbmFfZG9fc2VydmljZShlbnVtIGdkbWFfZXFlX3R5cGUgdHlwZSwgc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02Njcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY2OS1cdGNhc2UgR0RNQV9FUUVfSFdDX0ZQR0FfUkVDT05GSUc6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2NzA6XHRcdG1hbmFfc2Vydl9mcGdhKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjcxLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02NzMtXHRjYXNlIEdETUFfRVFFX0hXQ19SRVNFVF9SRVFVRVNUOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Njc0Olx0XHRtYW5hX3NlcnZfcmVzZXQocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02NzUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjY4MzpzdGF0aWMgdm9pZCBtYW5hX3JlY292ZXJ5X2RlbGF5ZWRfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02ODQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Njg1Olx0c3RydWN0IG1hbmFfZGV2X3JlY292ZXJ5X3dvcmsgKndvcms7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2ODY6XHRzdHJ1Y3QgbWFuYV9kZXZfcmVjb3ZlcnkgKmRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY4Ny1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2ODk6XHR3b3JrID0gY29udGFpbmVyX29mKHcsIHN0cnVjdCBtYW5hX2Rldl9yZWNvdmVyeV93b3JrLCB3b3JrLndvcmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjkwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY5NC1cdFx0ZGV2ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZ3b3JrLVx1MDAzZWRldl9saXN0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Njk1Olx0XHRcdFx0ICAgICAgIHN0cnVjdCBtYW5hX2Rldl9yZWNvdmVyeSwgbGlzdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02OTYtXHRcdGxpc3RfZGVsKFx1MDAyNmRldi1cdTAwM2VsaXN0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2OTk6XHRcdG1hbmFfZG9fc2VydmljZShkZXYtXHUwMDNldHlwZSwgZGV2LVx1MDAzZXBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzAwLVx0XHRwY2lfZGV2X3B1dChkZXYtXHUwMDNlcGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NzA5OnN0YXRpYyB2b2lkIG1hbmFfc2Vydl9mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3MTE6XHRzdHJ1Y3QgbWFuYV9zZXJ2X3dvcmsgKm1uc193aztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxMi1cdHN0cnVjdCBwY2lfZGV2ICpwZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzEzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NzE0Olx0bW5zX3drID0gY29udGFpbmVyX29mKHcsIHN0cnVjdCBtYW5hX3NlcnZfd29yaywgc2Vydl93b3JrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxNS1cdHBkZXYgPSBtbnNfd2stXHUwMDNlcGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MTctXHRpZiAocGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjcxODpcdFx0bWFuYV9kb19zZXJ2aWNlKG1uc193ay1cdTAwM2V0eXBlLCBwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3MjU6aW50IG1hbmFfc2NoZWR1bGVfc2Vydl93b3JrKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCBlbnVtIGdkbWFfZXFlX3R5cGUgdHlwZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcyNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3Mjc6XHRzdHJ1Y3QgbWFuYV9zZXJ2X3dvcmsgKm1uc193aztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcyOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03NTAtXHRwY2lfZGV2X2dldChtbnNfd2stXHUwMDNlcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3NTE6XHRJTklUX1dPUksoXHUwMDI2bW5zX3drLVx1MDAzZXNlcnZfd29yaywgbWFuYV9zZXJ2X2Z1bmMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzUyLVx0c2NoZWR1bGVfd29yayhcdTAwMjZtbnNfd2stXHUwMDNlc2Vydl93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3NTY6c3RhdGljIHZvaWQgbWFuYV9nZF9wcm9jZXNzX2VxZShzdHJ1Y3QgZ2RtYV9xdWV1ZSAqZXEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03NTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTgxOS1cdFx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6ODIwOlx0XHRtYW5hX3NjaGVkdWxlX3NlcnZfd29yayhnYywgdHlwZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04MjEtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTgyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjgyODpzdGF0aWMgdm9pZCBtYW5hX2dkX3Byb2Nlc3NfZXFfZXZlbnRzKHZvaWQgKmFyZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTgyOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6ODcwOlx0XHRtYW5hX2dkX3Byb2Nlc3NfZXFlKGVxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTg3MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo4Nzc6XHRtYW5hX2dkX3JpbmdfZG9vcmJlbGwoZ2MsIGVxLVx1MDAzZWdkbWFfZGV2LVx1MDAzZWRvb3JiZWxsLCBlcS1cdTAwM2V0eXBlLCBlcS1cdTAwM2VpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTg3OC1cdFx0XHQgICAgICBoZWFkLCBTRVRfQVJNX0JJVCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6ODgxOnN0YXRpYyBpbnQgbWFuYV9nZF9yZWdpc3Rlcl9pcnEoc3RydWN0IGdkbWFfcXVldWUgKnF1ZXVlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODgyLVx0XHRcdFx0Y29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MDQtXHRxdWV1ZS1cdTAwM2VlcS5tc2l4X2luZGV4ID0gbXNpX2luZGV4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6OTA1Olx0LyogVGhlIGNhbGxlciBhY3F1aXJlZCBhIEdJQyByZWZlcmVuY2UgdmlhIG1hbmFfZ2RfZ2V0X2dpYygpLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6OTA2Olx0ICogVGhhdCByZWZjb3VudCBwcmV2ZW50cyBtYW5hX2dkX3B1dF9naWMoKSBmcm9tIGVyYXNpbmcgdGhpc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTA3LVx0ICogaXJxX2NvbnRleHRzIGVudHJ5IGNvbmN1cnJlbnRseS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5MjA6c3RhdGljIHZvaWQgbWFuYV9nZF9kZXJlZ2lzdGVyX2lycShzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcXVldWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTkzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjkzNjpcdC8qIFRoZSBjYWxsZXIgcmVsZWFzZXMgdGhlIEdJQyByZWZlcmVuY2UgdmlhIG1hbmFfZ2RfcHV0X2dpYygpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MzctXHQgKiBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMuIFRoZSByZWZjb3VudCBndWFyYW50ZWVzIHRoaXNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5NTY6aW50IG1hbmFfZ2RfdGVzdF9lcShzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgc3RydWN0IGdkbWFfcXVldWUgKmVxKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTU3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5Njg6XHRtYW5hX2dkX2luaXRfcmVxX2hkcihcdTAwMjZyZXEuaGRyLCBHRE1BX0dFTkVSQVRFX1RFU1RfRVFFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTY5LVx0XHRcdCAgICAgc2l6ZW9mKHJlcSksIHNpemVvZihyZXNwKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6OTc0Olx0ZXJyID0gbWFuYV9nZF9zZW5kX3JlcXVlc3QoZ2MsIHNpemVvZihyZXEpLCBcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgXHUwMDI2cmVzcCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05NzUtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5NzY6XHRcdGlmIChtYW5hX25lZWRfbG9nKGdjLCBlcnIpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTc3LVx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDt0ZXN0X2VxIGZhaWxlZDogJWRcXG5cJiMzNDssIGVycik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwMDU6c3RhdGljIHZvaWQgbWFuYV9nZF9kZXN0cm95X2VxKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCBib29sIGZsdXNoX2V2ZW5ldHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDA2LVx0XHRcdCAgICAgICBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAxMC1cdGlmIChmbHVzaF9ldmVuZXRzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDExOlx0XHRlcnIgPSBtYW5hX2dkX3Rlc3RfZXEoZ2MsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwMTI6XHRcdGlmIChlcnIgXHUwMDI2XHUwMDI2IG1hbmFfbmVlZF9sb2coZ2MsIGVycikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDEzLVx0XHRcdGRldl93YXJuKGdjLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGZsdXNoIEVROiAlZFxcblwmIzM0OywgZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTAxNjpcdG1hbmFfZ2RfZGVyZWdpc3Rlcl9pcnEocXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwMTgtXHRpZiAocXVldWUtXHUwMDNlZXEuZGlzYWJsZV9uZWVkZWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDE5Olx0XHRtYW5hX2dkX2Rpc2FibGVfcXVldWUocXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAyMC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTAyMjpzdGF0aWMgaW50IG1hbmFfZ2RfY3JlYXRlX2VxKHN0cnVjdCBnZG1hX2RldiAqZ2QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDIzLVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTA0MjpcdGVyciA9IG1hbmFfZ2RfcmVnaXN0ZXJfaXJxKHF1ZXVlLCBzcGVjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwNDMtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA1My1cdGlmIChjcmVhdGVfaHdxKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDU0Olx0XHRlcnIgPSBtYW5hX2dkX2NyZWF0ZV9od19lcShnYywgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA1NS1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTA1ODpcdFx0ZXJyID0gbWFuYV9nZF90ZXN0X2VxKGdjLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDU5LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwNjUtXHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBFUTogJWRcXG5cJiMzNDssIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDY2Olx0bWFuYV9nZF9kZXN0cm95X2VxKGdjLCBmYWxzZSwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA2Ny1cdHF1ZXVlLVx1MDAzZWVxLm1zaXhfaW5kZXggPSBJTlZBTElEX1BDSV9NU0lYX0lOREVYO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDcxOnN0YXRpYyB2b2lkIG1hbmFfZ2RfY3JlYXRlX2NxKGNvbnN0IHN0cnVjdCBnZG1hX3F1ZXVlX3NwZWMgKnNwZWMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDcyLVx0XHRcdCAgICAgIHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTA4MjpzdGF0aWMgdm9pZCBtYW5hX2dkX2Rlc3Ryb3lfY3Eoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDgzLVx0XHRcdCAgICAgICBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwOTY6aW50IG1hbmFfZ2RfY3JlYXRlX2h3Y19xdWV1ZShzdHJ1Y3QgZ2RtYV9kZXYgKmdkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA5Ny1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBnZG1hX3F1ZXVlX3NwZWMgKnNwZWMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTEwOS1cdGdtaSA9IFx1MDAyNnF1ZXVlLVx1MDAzZW1lbV9pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTExMDpcdGVyciA9IG1hbmFfZ2RfYWxsb2NfbWVtb3J5KGdjLCBzcGVjLVx1MDAzZXF1ZXVlX3NpemUsIGdtaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTExLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMjUtXHRpZiAoc3BlYy1cdTAwM2V0eXBlID09IEdETUFfRVEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTI2Olx0XHRlcnIgPSBtYW5hX2dkX2NyZWF0ZV9lcShnZCwgc3BlYywgZmFsc2UsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMjctXHRlbHNlIGlmIChzcGVjLVx1MDAzZXR5cGUgPT0gR0RNQV9DUSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExMjg6XHRcdG1hbmFfZ2RfY3JlYXRlX2NxKHNwZWMsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMjktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTEzNy1cdFx0c3BlYy1cdTAwM2V0eXBlLCBzcGVjLVx1MDAzZXF1ZXVlX3NpemUsIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTM4Olx0bWFuYV9nZF9mcmVlX21lbW9yeShnbWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTEzOS1mcmVlX3E6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTE0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExNDQ6aW50IG1hbmFfZ2RfZGVzdHJveV9kbWFfcmVnaW9uKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1NjQgZG1hX3JlZ2lvbl9oYW5kbGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTQ1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTE1MzpcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFx1MDAyNnJlcS5oZHIsIEdETUFfREVTVFJPWV9ETUFfUkVHSU9OLCBzaXplb2YocmVxKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNTQtXHRcdFx0ICAgICBzaXplb2YocmVzcCkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTU3Olx0ZXJyID0gbWFuYV9nZF9zZW5kX3JlcXVlc3QoZ2MsIHNpemVvZihyZXEpLCBcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgXHUwMDI2cmVzcCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTU4LVx0aWYgKGVyciB8fCByZXNwLmhkci5zdGF0dXMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExNTk6XHRcdGlmIChtYW5hX25lZWRfbG9nKGdjLCBlcnIpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTE2MC1cdFx0XHRkZXZfZXJyKGdjLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGRlc3Ryb3kgRE1BIHJlZ2lvbjogJWQsIDB4JXhcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTE2Ni19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTY3OkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF9kZXN0cm95X2RtYV9yZWdpb24sIFwmIzM0O05FVF9NQU5BXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTY5OnN0YXRpYyBpbnQgbWFuYV9nZF9jcmVhdGVfZG1hX3JlZ2lvbihzdHJ1Y3QgZ2RtYV9kZXYgKmdkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTE3MC1cdFx0XHRcdCAgICAgc3RydWN0IGdkbWFfbWVtX2luZm8gKmdtaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTE5NzpcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFx1MDAyNnJlcS1cdTAwM2VoZHIsIEdETUFfQ1JFQVRFX0RNQV9SRUdJT04sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTk4LVx0XHRcdCAgICAgcmVxX21zZ19zaXplLCBzaXplb2YocmVzcCkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjA4Olx0ZXJyID0gbWFuYV9nZF9zZW5kX3JlcXVlc3QoZ2MsIHJlcV9tc2dfc2l6ZSwgcmVxLCBzaXplb2YocmVzcCksIFx1MDAyNnJlc3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTIwOS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTIzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEyMzI6aW50IG1hbmFfZ2RfY3JlYXRlX21hbmFfZXEoc3RydWN0IGdkbWFfZGV2ICpnZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMzMtXHRcdFx0ICAgY29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMjQ4LVx0Z21pID0gXHUwMDI2cXVldWUtXHUwMDNlbWVtX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjQ5Olx0ZXJyID0gbWFuYV9nZF9hbGxvY19tZW1vcnkoZ2MsIHNwZWMtXHUwMDNlcXVldWVfc2l6ZSwgZ21pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyNTAtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEyNTY6XHRlcnIgPSBtYW5hX2dkX2NyZWF0ZV9kbWFfcmVnaW9uKGdkLCBnbWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI1Ny1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEyNjg6XHRlcnIgPSBtYW5hX2dkX2NyZWF0ZV9lcShnZCwgc3BlYywgdHJ1ZSwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI2OS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI3Ni1cdFx0c3BlYy1cdTAwM2V0eXBlLCBzcGVjLVx1MDAzZXF1ZXVlX3NpemUsIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjc3Olx0bWFuYV9nZF9mcmVlX21lbW9yeShnbWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI3OC1mcmVlX3E6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI4MS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjgyOkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF9jcmVhdGVfbWFuYV9lcSwgXCYjMzQ7TkVUX01BTkFcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEyODQ6aW50IG1hbmFfZ2RfY3JlYXRlX21hbmFfd3FfY3Eoc3RydWN0IGdkbWFfZGV2ICpnZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyODUtXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzAzLVx0Z21pID0gXHUwMDI2cXVldWUtXHUwMDNlbWVtX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzA0Olx0ZXJyID0gbWFuYV9nZF9hbGxvY19tZW1vcnkoZ2MsIHNwZWMtXHUwMDNlcXVldWVfc2l6ZSwgZ21pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzMDUtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEzMTE6XHRlcnIgPSBtYW5hX2dkX2NyZWF0ZV9kbWFfcmVnaW9uKGdkLCBnbWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMxMi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMyMy1cdGlmIChzcGVjLVx1MDAzZXR5cGUgPT0gR0RNQV9DUSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEzMjQ6XHRcdG1hbmFfZ2RfY3JlYXRlX2NxKHNwZWMsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzMjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzMC1cdFx0c3BlYy1cdTAwM2V0eXBlLCBzcGVjLVx1MDAzZXF1ZXVlX3NpemUsIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzMxOlx0bWFuYV9nZF9mcmVlX21lbW9yeShnbWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzMi1mcmVlX3E6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzNS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzM2OkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF9jcmVhdGVfbWFuYV93cV9jcSwgXCYjMzQ7TkVUX01BTkFcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEzMzg6dm9pZCBtYW5hX2dkX2Rlc3Ryb3lfcXVldWUoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzMzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzNDMtXHRjYXNlIEdETUFfRVE6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzQ0Olx0XHRtYW5hX2dkX2Rlc3Ryb3lfZXEoZ2MsIHF1ZXVlLVx1MDAzZWVxLmRpc2FibGVfbmVlZGVkLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzQ1LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzQ3LVx0Y2FzZSBHRE1BX0NROlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTM0ODpcdFx0bWFuYV9nZF9kZXN0cm95X2NxKGdjLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzQ5LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTM2MzpcdG1hbmFfZ2RfZGVzdHJveV9kbWFfcmVnaW9uKGdjLCBnbWktXHUwMDNlZG1hX3JlZ2lvbl9oYW5kbGUpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4MjcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTUFOQSBEcml2ZXIgQW5hbHlzaXMgZm9yIFdvcnRoRnV6emluZyBEZXRlcm1pbmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlzIE1BTkEgaGFyZHdhcmUgZW11bGF0ZWQgaW4gc29tZXRoaW5nIGxpa2UgUUVNVT8gTm8sIHRoYXQmIzM5O3Mgd3Jvbmc7IGl0JiMzOTtzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyLiBJdCYjMzk7cyBhIHBoeXNpY2FsL3ZpcnR1YWwgZGV2aWNlIHRoYXQmIzM5O3MgcGFydCBvZiB0aGUgQXp1cmUgaHlwZXJ2aXNvci4gU28sIGNhbiBpdCBldmVuIGJlIHRlc3RlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIG9yIFFFTVU/CgpXYWl0LCBob2xkIG9uLiBUaGUgcHJvbXB0IGZyb20gdGhlIGZ1enplciBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29uY2VybnMgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbGlrZSBTbWFydE5JQyBkcml2ZXJzIHRoYXQgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiAKClJpZ2h0LCBNQU5BIGlzIGRlZmluaXRlbHkgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgb3IgdmlydHVhbCBOSUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIE1pY3Jvc29mdCBBenVyZS4gU28sIGlzIGl0IHRlc3RhYmxlIGluIFFFTVU/IERlZmluaXRlbHkgbm90LiBBbmQgaG93IGFib3V0IHN5emthbGxlcj8gU3l6a2FsbGVyIGNhbiBydW4gb24gR0NFIG9yIFFFTVUsIGJ1dCBHQ0UgZG9lc24mIzM5O3QgaGF2ZSBNQU5BIGhhcmR3YXJlLiBBenVyZSBWTXMgKmRvKiBoYXZlIE1BTkEgaGFyZHdhcmUuIElmIHN5emthbGxlciB3ZXJlIHRvIHJ1biBvbiBBenVyZSwgaXQgKmNvdWxkKiB0ZXN0IGl0LiBCdXQgc3l6a2FsbGVyIHVzdWFsbHkgcnVucyBvbiBHQ0Ugb3IgUUVNVSwgZG9lc24mIzM5O3QgaXQ/CgpBY3R1YWxseSwgbm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGFuIEF6dXJlIGJhY2tlbmQsIGJ1dCB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIGluc3RhbmNlcyB0aGF0IHRoZSBzeXpib3QgcnVucyBvbiBhcmUgb24gR0NFLgoKT2theSwgYmFjayB0byB0aGUgcHJvbXB0OiAmIzM0Oy4uLnJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBNQU5BIGlzIGEgUENJZSBkZXZpY2UuIEl0JiMzOTtzIG5vdCBlbXVsYXRlZCBpbiAqc3RhbmRhcmQqIFFFTVUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSwgYnV0IG90aGVyd2lzZSwgYmFzZWQgb24gdGhhdCwgaXQgc2VlbXMgdG8gbm90IGJlIFdvcnRoRnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYW5hX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTE3OD1zdGF0aWMgaW50IG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNjM6XHQvKiBDYXAgdG8gdGhlIHNhbWUgbGltaXQgdXNlZCBieSBtYW5hX3Byb2JlKCkgZm9yIHBvcnQgaW5zdGFudGlhdGlvbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI2NC1cdCAqIHNvIE1TSS1YIGFuZCBxdWV1ZSBidWRnZXRpbmcgbWF0Y2hlcyB0aGUgYWN0dWFsIHBvcnQgY291bnQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjMzMT1zdGF0aWMgaW50IG1hbmFfZ2RfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIzODc6XHRlcnIgPSBtYW5hX3Byb2JlKFx1MDAyNmdjLVx1MDAzZW1hbmEsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzODgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0MjUtXHQgKiBIYXJkd2FyZSBjb3VsZCBiZSBpbiByZWNvdmVyeSBtb2RlIGFuZCB0aGUgSFdDIHJldHVybnMgVElNRURPVVQgb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI0MjY6XHQgKiBFUFJPVE8gZnJvbSBtYW5hX2dkX3NldHVwKCksIG1hbmFfcHJvYmUoKSBvciBtYW5hX3JkbWFfcHJvYmUoKSwgb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0MjctXHQgKiB3ZSByZWNlaXZlZCBhIGhhcmR3YXJlIHJlc2V0IGV2ZW50IG92ZXIgSFdDIGludGVycnVwdC4gSW4gdGhpcyBjYXNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI0OTE9aW50IG1hbmFfZ2RfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0OTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTAwOlx0ZXJyID0gbWFuYV9wcm9iZShcdTAwMjZnYy1cdTAwM2VtYW5hLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MDEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYz0zNzQ1PWludCBtYW5hX2RldGFjaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgYm9vbCBmcm9tX2Nsb3NlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNzgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jOjM3ODI6c3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNzgzLVx0XHRcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICoqbmRldl9zdG9yYWdlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYz00MDIzPXN0YXRpYyB2b2lkIG1hbmFfZ2Zfc3RhdHNfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtNDA0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzo0MDQ2OmludCBtYW5hX3Byb2JlKHN0cnVjdCBnZG1hX2RldiAqZ2QsIGJvb2wgcmVzdW1pbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtNDA0Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTQxMjAtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFjLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzo0MTIxOlx0XHRcdGVyciA9IG1hbmFfcHJvYmVfcG9ydChhYywgaSwgXHUwMDI2YWMtXHUwMDNlcG9ydHNbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTQxMjItXHRcdFx0LyogTG9nIHRoZSBwb3J0IGZvciB3aGljaCB0aGUgcHJvYmUgZmFpbGVkLCBzdG9wIHByb2JpbmdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTYwOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkgb2YgYSBQQ0llIERldmljZSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgUENJIGRldmljZSBkcml2ZXIuIFRoZSBxdWVzdGlvbiBpcywgY2FuIEkgZWZmZWN0aXZlbHkgdGVzdCB0aGlzIHRoaW5nIHdpdGhpbiBRRU1VPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgbm8sIGJlY2F1c2UgTUFOQSByZXF1aXJlcyBlaXRoZXIgYSBwaHlzaWNhbCBQQ0llIGRldmljZSBvciBhbiBBenVyZSBWTSBlbnZpcm9ubWVudCB0byBydW4gcHJvcGVybHkuIEJ1dCB3YWl0LCBJIGhhdmUgdG8gYmUgdGhvcm91Z2guIEkgd29uZGVyIGlmIGBzeXprYWxsZXJgIGhhcyBzb21lIHBzZXVkby1zeXNjYWxscyBmb3IgTUFOQT8gTm8sIHRoYXQmIzM5O3Mgbm90IHJpZ2h0LCBgc3l6a2FsbGVyYCBkb2VzbiYjMzk7dCBwcm92aWRlIHRoYXQga2luZCBvZiBhYnN0cmFjdGlvbiBmb3IgTUFOQS4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnPigJR0aGUga2luZCB0aGF0IG5lZWQgdGhvc2UgcmVhbCwgcGh5c2ljYWwgUENJZSBjYXJkcyB0aGF0IFFFTVUganVzdCBkb2VzbiYjMzk7dCBlbXVsYXRlIHZlcnkgd2VsbC4gVGhpcyBNQU5BIGRyaXZlciBkZWZpbml0ZWx5IGZpdHMgdGhlIGJpbGw7IGl0JiMzOTtzIGEgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgc28gaXQmIzM5O3MgYSBTbWFydE5JQyBkcml2ZXIsIHZlcnkgdmVuZG9yLXNwZWNpZmljLiBTbywgYnkgdGhlIHJ1bGVzIGxhaWQgb3V0LCB0aGlzIG9uZSBmYWxscyBpbnRvIHRoZSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGNhdGVnb3J5LCBtYWlubHkgYmVjYXVzZSBpdCYjMzk7cyB0aWVkIHRvIHRoYXQgcGh5c2ljYWwgaGFyZHdhcmUsIG9yIHRoYXQgQXp1cmUgaHlwZXJ2aXNvci4gQmVmb3JlIEkgZnVsbHkgY29tbWl0IHRvIHRoYXQgY29uY2x1c2lvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkga2VybmVsLWxldmVsIHNvZnR3YXJlIGVtdWxhdGlvbiBhdHRlbXB0cy4gTmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYW5hJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTg9Y29uZmlnIE1JQ1JPU09GVF9NQU5BXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMzEtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzozMjpcdCAgVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBtYW5hLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyMTUKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTUFOQSBEcml2ZXIgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBLY29uZmlnIGVudHJ5IGZvciB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgTUFOQS4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCDigJMgYSBkcml2ZXIsIHNwZWNpZmljIHRvIEF6dXJlIGhhcmR3YXJlLCByZXF1aXJpbmcgUENJLCBNU0ksIGFuZCB4ODYtNjQgYXJjaGl0ZWN0dXJlLiBUaGUgaGVscCB0ZXh0IGNvbmZpcm1zIGl0JiMzOTtzIGEgcmVhbCBwaWVjZSBvZiBoYXJkd2FyZSwgYSBkZWRpY2F0ZWQgbmV0d29yayBhZGFwdGVyIGZvciBBenVyZS4KCk5vdywgdGhlIGltcG9ydGFudCBwYXJ0IGZvciBteSBwdXJwb3NlcyBpcywgdGhpcyBpc24mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCBtZWFucyBzdGFuZGFyZCBzeXprYWxsZXIgaW5zdGFuY2VzLCB0aGUgb25lcyB3ZSB0eXBpY2FsbHkgdXNlIG9uIFFFTVUgb3IgR0NFLCB3b24mIzM5O3QgYmUgYWJsZSB0byByZWFjaCB0aGlzIGRyaXZlci4gSXQmIzM5O3MgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLCBhbmQgd2UgY2FuJiMzOTt0IGp1c3QgYm9vdCB1cCBhIGdlbmVyaWMgUUVNVSBpbnN0YW5jZSBhbmQgZXhwZWN0IHRvIGludGVyYWN0IHdpdGggaXQuCgpUaGVyZWZvcmUsIGFmdGVyIGNvbnNpZGVyaW5nIHRoZSBzZXR1cCwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IGl0JiMzOTtzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciB0aGF0IGlzbiYjMzk7dCBlbXVsYXRlZCB3aXRoaW4gdGhlIHN0YW5kYXJkIGVudmlyb25tZW50cyB3ZSBjYW4gYWNjZXNzIGZvciBmdXp6aW5nLiBObyBwcmFjdGljYWwgYXZlbnVlIGZvciB1cyB0byBhcHBseSBvdXIgdG9vbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCB1bnRlc3RhYmxlIGJ5IHN0YW5kYXJkIGZ1enplcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFNtYXJ0TklDIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgYW5kIHVudGVzdGFibGUgYnkgc3RhbmRhcmQgZnV6emVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjozNjo1MC42NjAxODcxNzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjg1NzUwMDMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCB1bnRlc3RhYmxlIGJ5IHN0YW5kYXJkIGZ1enplcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjozNjo1MC42NjAxOTM2OThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzUxMjA2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZkODZjNjIyYmQ2MDJhYjE3YzNmMTAzYTgwM2Q0YWNhM2Q5Y2NmNWFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDY6MzY6NDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXFxuaW5kZXggYThjMzI5YmRiYWNmOC4uNzIwZDIyZTZhZWE5NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcXG5AQCAtMTI0MSw2ICsxMjQxLDkgQEAgaW50IG1hbmFfZ2RfcXVlcnlfZGV2aWNlX2NmZyhzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTMyIHByb3RvX21ham9yX3ZlcixcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKHJlc3AucGZfY2FwX2ZsYWdzMSBcXHUwMDI2IE1BTkFfUEZfRkxBR18xX0NRRV84X0NPQUxFU0NJTkdfU1VQUE9SVEVEKVxcbitcXHRcXHRnYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX3N1cCA9IHRydWU7XFxuK1xcbiBcXHQqbWF4X251bV92cG9ydHMgPSByZXNwLm1heF9udW1fdnBvcnRzO1xcbiBcXG4gXFx0aWYgKHJlc3AuaGRyLnJlc3BvbnNlLm1zZ192ZXJzaW9uIFxcdTAwM2U9IEdETUFfTUVTU0FHRV9WMikge1xcbkBAIC0xNDI2LDcgKzE0MjksMTEgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyxcXG4gXFx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXFx1MDAyNnJlcS1cXHUwMDNlaGRyLCBNQU5BX0NPTkZJR19WUE9SVF9SWCwgcmVxX2J1Zl9zaXplLFxcbiBcXHRcXHRcXHQgICAgIHNpemVvZihyZXNwKSk7XFxuIFxcbi1cXHRyZXEtXFx1MDAzZWhkci5yZXEubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjI7XFxuK1xcdC8qIFJlcXVlc3QgXFx1MDAyNiByZXNwb25zZSB2ZXJzaW9ucyBjYW4gYmUgZGlmZmVyZW50LlxcbitcXHQgKiBIVyBjYW4gaGFuZGxlIG5ld2VyIG1zZyB2ZXJzaW9ucywgYnkgc2tpcHBpbmdcXG4rXFx0ICogbmV3IGZpZWxkcy5cXG4rXFx0ICovXFxuK1xcdHJlcS1cXHUwMDNlaGRyLnJlcS5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WNTtcXG4gXFx0cmVxLVxcdTAwM2VoZHIucmVzcC5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WMjtcXG4gXFxuIFxcdHJlcS1cXHUwMDNldnBvcnQgPSBhcGMtXFx1MDAzZXBvcnRfaGFuZGxlO1xcbkBAIC0xNDQwLDggKzE0NDcsMTMgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyxcXG4gXFx0cmVxLVxcdTAwM2V1cGRhdGVfaW5kaXJfdGFiID0gdXBkYXRlX3RhYjtcXG4gXFx0cmVxLVxcdTAwM2VkZWZhdWx0X3J4b2JqID0gYXBjLVxcdTAwM2VkZWZhdWx0X3J4b2JqO1xcbiBcXG4tXFx0aWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSlcXG4rXFx0LyogUmVxdWVzdC1tc2cgdjUgcmVxdWlyZXMgdGhpcyBmaWVsZCAqL1xcbitcXHRyZXEtXFx1MDAzZXJzc19oYXNoX3R5cGVzID0gTUFOQV9IQVNIX0VOQUJMRV9TVVBQT1JURUQ7XFxuK1xcbitcXHRpZiAocnggIT0gVFJJX1NUQVRFX0ZBTFNFKSB7XFxuIFxcdFxcdHJlcS1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGU7XFxuK1xcdFxcdHJlcS1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKHVwZGF0ZV9rZXkpXFxuIFxcdFxcdG1lbWNweShcXHUwMDI2cmVxLVxcdTAwM2VoYXNoa2V5LCBhcGMtXFx1MDAzZWhhc2hrZXksIE1BTkFfSEFTSF9LRVlfU0laRSk7XFxuQEAgLTIwNDYsMTYgKzIwNTgsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptYW5hX2J1aWxkX3NrYihzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgdm9pZCAqYnVmX3ZhLFxcbiBcXG4gc3RhdGljIHZvaWQgbWFuYV9yeF9za2Iodm9pZCAqYnVmX3ZhLCBib29sIGZyb21fcG9vbCxcXG4gXFx0XFx0XFx0c3RydWN0IG1hbmFfcnhjb21wX29vYiAqY3FlLCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcXG4tXFx0XFx0XFx0aW50IGkpXFxuK1xcdFxcdFxcdHUzMiBwa3RfbGVuLCB1MzIgcGt0X2hhc2gpXFxuIHtcXG4gXFx0c3RydWN0IG1hbmFfc3RhdHNfcnggKnJ4X3N0YXRzID0gXFx1MDAyNnJ4cS1cXHUwMDNlc3RhdHM7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLVxcdTAwM2VuZGV2O1xcbi1cXHR1aW50IHBrdF9sZW4gPSBjcWUtXFx1MDAzZXBwaVtpXS5wa3RfbGVuO1xcbiBcXHR1MTYgcnhxX2lkeCA9IHJ4cS1cXHUwMDNlcnhxX2lkeDtcXG4gXFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpO1xcbiBcXHRzdHJ1Y3QgeGRwX2J1ZmYgeGRwID0ge307XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLVxcdHUzMiBoYXNoX3ZhbHVlO1xcbiBcXHR1MzIgYWN0O1xcbiBcXG4gXFx0cnhxLVxcdTAwM2VyeF9jcS53b3JrX2RvbmUrKztcXG5AQCAtMjA5NCwxMiArMjEwNCwxMCBAQCBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLFxcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY3FlLVxcdTAwM2VyeF9oYXNodHlwZSAhPSAwIFxcdTAwMjZcXHUwMDI2IChuZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSkge1xcbi1cXHRcXHRoYXNoX3ZhbHVlID0gY3FlLVxcdTAwM2VwcGlbaV0ucGt0X2hhc2g7XFxuLVxcbiBcXHRcXHRpZiAoY3FlLVxcdTAwM2VyeF9oYXNodHlwZSBcXHUwMDI2IE1BTkFfSEFTSF9MNClcXG4tXFx0XFx0XFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaF92YWx1ZSwgUEtUX0hBU0hfVFlQRV9MNCk7XFxuK1xcdFxcdFxcdHNrYl9zZXRfaGFzaChza2IsIHBrdF9oYXNoLCBQS1RfSEFTSF9UWVBFX0w0KTtcXG4gXFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0wzKTtcXG4rXFx0XFx0XFx0c2tiX3NldF9oYXNoKHNrYiwgcGt0X2hhc2gsIFBLVF9IQVNIX1RZUEVfTDMpO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY3FlLVxcdTAwM2VyeF92bGFudGFnX3ByZXNlbnQpIHtcXG5AQCAtMjI0MCw2ICsyMjQ4LDQzIEBAIHN0YXRpYyB2b2lkIG1hbmFfcmVmaWxsX3J4X29vYihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLFxcbiBcXHRyeG9vYi1cXHUwMDNlZG1hX3N5bmNfb2Zmc2V0ID0gZG1hX3N5bmNfb2Zmc2V0O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1hbmFfcnhjb21wX29vYiAqb29iLFxcbitcXHRcXHRcXHRcXHQgICAgdTMyIHBrdGxlbiwgdTMyIHBrdF9oYXNoKVxcbit7XFxuK1xcdHN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iO1xcbitcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHJ4cS1cXHUwMDNlbmRldjtcXG4rXFx0dm9pZCAqb2xkX2J1ZiA9IE5VTEw7XFxuK1xcdGJvb2wgb2xkX2ZwO1xcbitcXG4rXFx0cnhidWZfb29iID0gXFx1MDAyNnJ4cS1cXHUwMDNlcnhfb29ic1tyeHEtXFx1MDAzZWJ1Zl9pbmRleF07XFxuK1xcdFdBUk5fT05fT05DRShyeGJ1Zl9vb2ItXFx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUgIT0gMSk7XFxuK1xcbitcXHRpZiAodW5saWtlbHkocGt0bGVuIFxcdTAwM2UgcnhxLVxcdTAwM2VkYXRhc2l6ZSkpIHtcXG4rXFx0XFx0LyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbid0IGNhbGxlZC4gKi9cXG4rXFx0XFx0cnhxLVxcdTAwM2VyeF9jcS53b3JrX2RvbmUrKztcXG4rXFxuK1xcdFxcdCsrbmRldi1cXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcXG4rXFx0XFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxcbitcXHRcXHRcXHRcXHQgXFxcIkRyb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IHBrdGxlbiwgcnhxLVxcdTAwM2VkYXRhc2l6ZSk7XFxuK1xcbitcXHRcXHQvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovXFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdG1hbmFfcmVmaWxsX3J4X29vYihkZXYsIHJ4cSwgcnhidWZfb29iLCBwa3RsZW4sXFxuK1xcdFxcdFxcdFxcdCAgIFxcdTAwMjZvbGRfYnVmLCBcXHUwMDI2b2xkX2ZwKTtcXG4rXFxuK1xcdFxcdC8qIFVuc3VjY2Vzc2Z1bCByZWZpbGwgd2lsbCBoYXZlIG9sZF9idWYgPT0gTlVMTC5cXG4rXFx0XFx0ICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0bWFuYV9yeF9za2Iob2xkX2J1Ziwgb2xkX2ZwLCBvb2IsIHJ4cSwgcGt0bGVuLCBwa3RfaGFzaCk7XFxuK1xcdH1cXG4rXFxuK1xcdG1hbmFfbW92ZV93cV90YWlsKHJ4cS1cXHUwMDNlZ2RtYV9ycSwgcnhidWZfb29iLVxcdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1KTtcXG4rXFxuK1xcdG1hbmFfcG9zdF9wa3RfcnhxKHJ4cSk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcXG4gXFx0XFx0XFx0XFx0c3RydWN0IGdkbWFfY29tcCAqY3FlKVxcbiB7XFxuQEAgLTIyNDksMTAgKzIyOTQsMTAgQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxcbiBcXHRzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjtcXG4gXFx0c3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGM7XFxuIFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGdjLVxcdTAwM2VkZXY7XFxuK1xcdGJvb2wgY29hbGVzY2VkXzggPSBmYWxzZTtcXG4gXFx0Ym9vbCBjb2FsZXNjZWQgPSBmYWxzZTtcXG4tXFx0dm9pZCAqb2xkX2J1ZiA9IE5VTEw7XFxuLVxcdHUzMiBjdXJyLCBwa3RsZW47XFxuLVxcdGJvb2wgb2xkX2ZwO1xcbitcXHR1MzIgcGt0bGVuO1xcbitcXHRpbnQgcGt0X2k7XFxuIFxcdGludCBpO1xcbiBcXG4gXFx0YXBjID0gbmV0ZGV2X3ByaXYobmRldik7XFxuQEAgLTIyNzUsNiArMjMyMCwxMSBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXFxuIFxcdFxcdGNvYWxlc2NlZCA9IHRydWU7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4rXFx0Y2FzZSBDUUVfUlhfQ09BTEVTQ0VEXzg6XFxuK1xcdFxcdGNvYWxlc2NlZCA9IHRydWU7XFxuK1xcdFxcdGNvYWxlc2NlZF84ID0gdHJ1ZTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcbiBcXHRjYXNlIENRRV9SWF9PQkpFQ1RfRkVOQ0U6XFxuIFxcdFxcdGNvbXBsZXRlKFxcdTAwMjZyeHEtXFx1MDAzZWZlbmNlX2V2ZW50KTtcXG4gXFx0XFx0cmV0dXJuO1xcbkBAIC0yMjg2LDU0ICsyMzM2LDQ4IEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcbitcXHRwa3RfaSA9IDA7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTsgaSsrKSB7XFxuLVxcdFxcdG9sZF9idWYgPSBOVUxMO1xcbi1cXHRcXHRwa3RsZW4gPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfbGVuO1xcbi1cXHRcXHRpZiAocGt0bGVuID09IDApXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXG4tXFx0XFx0Y3VyciA9IHJ4cS1cXHUwMDNlYnVmX2luZGV4O1xcbi1cXHRcXHRyeGJ1Zl9vb2IgPSBcXHUwMDI2cnhxLVxcdTAwM2VyeF9vb2JzW2N1cnJdO1xcbi1cXHRcXHRXQVJOX09OX09OQ0UocnhidWZfb29iLVxcdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1ICE9IDEpO1xcbi1cXG4tXFx0XFx0aWYgKHVubGlrZWx5KHBrdGxlbiBcXHUwMDNlIHJ4cS1cXHUwMDNlZGF0YXNpemUpKSB7XFxuLVxcdFxcdFxcdC8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24ndCBjYWxsZWQuICovXFxuLVxcdFxcdFxcdHJ4cS1cXHUwMDNlcnhfY3Eud29ya19kb25lKys7XFxuK1xcdFxcdHUzMiBwa3RfaGFzaDtcXG4gXFxuLVxcdFxcdFxcdCsrbmRldi1cXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcXG4tXFx0XFx0XFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxcbi1cXHRcXHRcXHRcXHRcXFwiRHJvcHBlZCBvdmVyc2l6ZWQgUlggcGFja2V0OiBsZW49JXUsIGRhdGFzaXplPSV1XFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRwa3RsZW4sIHJ4cS1cXHUwMDNlZGF0YXNpemUpO1xcbi1cXG4tXFx0XFx0XFx0LyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqL1xcbitcXHRcXHRpZiAoY29hbGVzY2VkXzgpIHtcXG4rXFx0XFx0XFx0LyogOC1wa3QgbW9kZTogMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi9cXG4rXFx0XFx0XFx0cGt0bGVuID0gb29iLVxcdTAwM2VwcGlbaV0ucGt0X2xlbjA7XFxuK1xcdFxcdFxcdHBrdF9oYXNoID0gb29iLVxcdTAwM2VwcGlbaV0ucGt0X2hhc2gwO1xcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXG4tXFx0XFx0XFx0bWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm9sZF9idWYsIFxcdTAwMjZvbGRfZnApO1xcbi1cXG4tXFx0XFx0XFx0LyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLlxcbi1cXHRcXHRcXHQgKiBJbiB0aGlzIGNhc2UsIG1hbmFfcnhfc2tiKCkgd2lsbCBkcm9wIHRoZSBwYWNrZXQuXFxuLVxcdFxcdFxcdCAqL1xcbi1cXHRcXHRcXHRtYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBpKTtcXG4rXFx0XFx0XFx0cGt0bGVuID0gb29iLVxcdTAwM2VwcGlbaV0ucGt0X2xlbjtcXG4rXFx0XFx0XFx0cGt0X2hhc2ggPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfaGFzaDtcXG4gXFx0XFx0fVxcbitcXHRcXHRpZiAocGt0bGVuID09IDApXFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXG4tXFx0XFx0bWFuYV9tb3ZlX3dxX3RhaWwocnhxLVxcdTAwM2VnZG1hX3JxLFxcbi1cXHRcXHRcXHRcXHQgIHJ4YnVmX29vYi1cXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSk7XFxuLVxcbi1cXHRcXHRtYW5hX3Bvc3RfcGt0X3J4cShyeHEpO1xcbitcXHRcXHRtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sIHBrdF9oYXNoKTtcXG4rXFx0XFx0cGt0X2krKztcXG4gXFxuIFxcdFxcdGlmICghY29hbGVzY2VkKVxcbiBcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdC8qIFByb2Nlc3MgMm5kIHBhY2tldCBmcm9tIHRoZSBzYW1lIFBQSSBpbiA4LXBrdCBtb2RlICovXFxuK1xcdFxcdGlmIChjb2FsZXNjZWRfOCkge1xcbitcXHRcXHRcXHRwa3RsZW4gPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfbGVuMTtcXG4rXFx0XFx0XFx0cGt0X2hhc2ggPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfaGFzaDE7XFxuK1xcdFxcdFxcdGlmIChwa3RsZW4gPT0gMClcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRcXHRtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHBrdF9oYXNoKTtcXG4rXFx0XFx0XFx0cGt0X2krKztcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHQvKiBDb2xsZWN0IGNvYWxlc2NlZCBDUUUgY291bnQgYmFzZWQgb24gcGFja2V0cyBwcm9jZXNzZWQuXFxuLVxcdCAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBpIC0gMi5cXG4rXFx0ICogQ29hbGVzY2VkIENRRXMgaGF2ZSBhdCBsZWFzdCAyIHBhY2tldHMsIHNvIGluZGV4IGlzIHBrdF9pIC0gMi5cXG4gXFx0ICovXFxuLVxcdGlmIChpIFxcdTAwM2UgMSkge1xcbitcXHRpZiAocGt0X2kgXFx1MDAzZSAxKSB7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNnJ4cS1cXHUwMDNlc3RhdHMuc3luY3ApO1xcbi1cXHRcXHRyeHEtXFx1MDAzZXN0YXRzLmNvYWxlc2NlZF9jcWVbaSAtIDJdKys7XFxuK1xcdFxcdHJ4cS1cXHUwMDNlc3RhdHMuY29hbGVzY2VkX2NxZVtwa3RfaSAtIDJdKys7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZyeHEtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG4tXFx0fSBlbHNlIGlmICghaSBcXHUwMDI2XFx1MDAyNiAhcGt0bGVuKSB7XFxuK1xcdH0gZWxzZSBpZiAoIXBrdF9pIFxcdTAwMjZcXHUwMDI2ICFwa3RsZW4pIHtcXG4gXFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2cnhxLVxcdTAwM2VzdGF0cy5zeW5jcCk7XFxuIFxcdFxcdHJ4cS1cXHUwMDNlc3RhdHMucGt0X2xlbjBfZXJyKys7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZyeHEtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG5AQCAtMzc2Myw2ICszODA3LDcgQEAgc3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCxcXG4gXFx0YXBjLVxcdTAwM2Vwb3J0X2lkeCA9IHBvcnRfaWR4O1xcbiBcXHRhcGMtXFx1MDAzZWxpbmtfY2ZnX2Vycm9yID0gMTtcXG4gXFx0YXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPSAwO1xcbitcXHRhcGMtXFx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPSAwO1xcbiBcXG4gXFx0LyogSW5pdGlhbGl6ZSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyBpZiBzdXBwb3J0ZWQgYnkgSFcgKi9cXG4gXFx0aWYgKGdjLVxcdTAwM2VwZl9jYXBfZmxhZ3MxIFxcdTAwMjYgR0RNQV9QRl9DQVBfRkxBR18xX0RZTl9JTlRFUlJVUFRfTU9ERVJBVElPTikge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXFxuaW5kZXggOWUzMWUyNTk1YWUzMi4uODc0M2Y3ZWRlY2JiOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXFxuQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgc3RyaW5nc2V0LCB1OCAqZGF0YSlcXG4gXFx0XFx0ZXRodG9vbF9zcHJpbnRmKFxcdTAwMjZkYXRhLCBcXFwicnhfJWRfeGRwX3R4XFxcIiwgaSk7XFxuIFxcdFxcdGV0aHRvb2xfc3ByaW50ZihcXHUwMDI2ZGF0YSwgXFxcInJ4XyVkX3hkcF9yZWRpcmVjdFxcXCIsIGkpO1xcbiBcXHRcXHRldGh0b29sX3NwcmludGYoXFx1MDAyNmRhdGEsIFxcXCJyeF8lZF9wa3RfbGVuMF9lcnJcXFwiLCBpKTtcXG4tXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXFxuIFxcdFxcdFxcdGV0aHRvb2xfc3ByaW50ZihcXHUwMDI2ZGF0YSwgXFxcInJ4XyVkX2NvYWxlc2NlZF9jcWVfJWRcXFwiLCBpLCBqICsgMik7XFxuIFxcdH1cXG4gXFxuQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHR1NjQgeGRwX2Ryb3A7XFxuIFxcdHU2NCB4ZHBfdHg7XFxuIFxcdHU2NCBwa3RfbGVuMF9lcnI7XFxuLVxcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XFxuK1xcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XFxuIFxcdHU2NCB0c29fcGFja2V0cztcXG4gXFx0dTY0IHRzb19ieXRlcztcXG4gXFx0dTY0IHRzb19pbm5lcl9wYWNrZXRzO1xcbkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0eGRwX3R4ID0gcnhfc3RhdHMtXFx1MDAzZXhkcF90eDtcXG4gXFx0XFx0XFx0eGRwX3JlZGlyZWN0ID0gcnhfc3RhdHMtXFx1MDAzZXhkcF9yZWRpcmVjdDtcXG4gXFx0XFx0XFx0cGt0X2xlbjBfZXJyID0gcnhfc3RhdHMtXFx1MDAzZXBrdF9sZW4wX2VycjtcXG4tXFx0XFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxcbitcXHRcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXFxuIFxcdFxcdFxcdFxcdGNvYWxlc2NlZF9jcWVbal0gPSByeF9zdGF0cy1cXHUwMDNlY29hbGVzY2VkX2NxZVtqXTtcXG4gXFx0XFx0fSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KFxcdTAwMjZyeF9zdGF0cy1cXHUwMDNlc3luY3AsIHN0YXJ0KSk7XFxuIFxcbkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0ZGF0YVtpKytdID0geGRwX3R4O1xcbiBcXHRcXHRkYXRhW2krK10gPSB4ZHBfcmVkaXJlY3Q7XFxuIFxcdFxcdGRhdGFbaSsrXSA9IHBrdF9sZW4wX2VycjtcXG4tXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXFxuIFxcdFxcdFxcdGRhdGFbaSsrXSA9IGNvYWxlc2NlZF9jcWVbal07XFxuIFxcdH1cXG4gXFxuQEAgLTQwOCw2ICs0MDgsNyBAQCBzdGF0aWMgaW50IG1hbmFfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiBcXG4gXFx0a2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMgPVxcbitcXHRcXHRhcGMtXFx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX0NRRV9DT0FMX1BLVFNfOCA6XFxuIFxcdFxcdGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgOiAxO1xcbiBcXG4gXFx0a2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9uc2VjcyA9IGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfdGltZW91dF9ucztcXG5AQCAtNDQzLDYgKzQ0NCw3IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdFxcdHUxNiBpbnRyX21vZHJfdHhfdXNlYztcXG4gXFx0XFx0dTE2IGludHJfbW9kcl90eF9jb21wO1xcbiBcXHRcXHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XFxuK1xcdFxcdHU4IGNxZThfY29hbGVzY2luZ19lbmFibGU7XFxuIFxcdFxcdGJvb2wgcnhfZGltX2VuYWJsZWQ7XFxuIFxcdFxcdGJvb2wgdHhfZGltX2VuYWJsZWQ7XFxuIFxcdH0gc2F2ZWQ7XFxuQEAgLTQ2NiwxMCArNDY4LDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdH1cXG4gXFxuIFxcdGlmIChrZXJuZWxfY29hbC1cXHUwMDNlcnhfY3FlX2ZyYW1lcyAhPSAxIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBrZXJuZWxfY29hbC1cXHUwMDNlcnhfY3FlX2ZyYW1lcyAhPSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSkge1xcbitcXHQgICAga2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGtlcm5lbF9jb2FsLVxcdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfQ1FFX0NPQUxfUEtUU184KSB7XFxuIFxcdFxcdE5MX1NFVF9FUlJfTVNHX0ZNVChleHRhY2ssXFxuLVxcdFxcdFxcdFxcdCAgIFxcXCJyeC1mcmFtZXMgbXVzdCBiZSAxIG9yICV1LCBnb3QgJXVcXFwiLFxcbitcXHRcXHRcXHRcXHQgICBcXFwicngtZnJhbWVzIG11c3QgYmUgMSwgJXUsIG9yICV1LCBnb3QgJXVcXFwiLFxcbiBcXHRcXHRcXHRcXHQgICBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSxcXG4rXFx0XFx0XFx0XFx0ICAgTUFOQV9DUUVfQ09BTF9QS1RTXzgsXFxuIFxcdFxcdFxcdFxcdCAgIGtlcm5lbF9jb2FsLVxcdTAwM2VyeF9jcWVfZnJhbWVzKTtcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG5AQCAtNTE0LDggKzUxOCwxNSBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRzYXZlZC50eF9kaW1fZW5hYmxlZCA9IGFwYy1cXHUwMDNldHhfZGltX2VuYWJsZWQ7XFxuIFxcbiBcXHRzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXFx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcXG4rXFx0c2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcXG4gXFx0YXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxcbi1cXHRcXHRrZXJuZWxfY29hbC1cXHUwMDNlcnhfY3FlX2ZyYW1lcyA9PSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTtcXG4rXFx0XFx0a2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMgXFx1MDAzZT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEk7XFxuK1xcbitcXHRpZiAoZ2MtXFx1MDAzZWNxZThfY29hbGVzY2luZ19zdXApXFxuK1xcdFxcdGFwYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9XFxuK1xcdFxcdFxcdGtlcm5lbF9jb2FsLVxcdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfQ1FFX0NPQUxfUEtUU184O1xcbitcXHRlbHNlIGlmIChrZXJuZWxfY29hbC1cXHUwMDNlcnhfY3FlX2ZyYW1lcyA9PSBNQU5BX0NRRV9DT0FMX1BLVFNfOClcXG4rXFx0XFx0bmV0ZGV2X2luZm8obmRldiwgXFxcIkZhbGwgYmFjayB0byBSWC1DUUUgeDQgY29hbGVzY2luZ1xcXFxuXFxcIik7XFxuIFxcbiBcXHRpZiAoIWFwYy1cXHUwMDNlcG9ydF9pc191cCkge1xcbiBcXHRcXHRXUklURV9PTkNFKGFwYy1cXHUwMDNlcnhfZGltX2VuYWJsZWQsICEhZWMtXFx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSk7XFxuQEAgLTUyMyw3ICs1MzQsOCBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSkge1xcbitcXHRpZiAoYXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlIHx8XFxuK1xcdCAgICBhcGMtXFx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSkge1xcbiBcXHRcXHQvKiBDUUUgY29hbGVzY2luZyBzZXR0aW5nIGlzIGFwcGxpZWQgdmlhIFJTUyBjb25maWd1cmF0aW9uLiAqL1xcbiBcXHRcXHRlcnIgPSBtYW5hX2NvbmZpZ19yc3MoYXBjLCBUUklfU1RBVEVfVFJVRSwgZmFsc2UsIGZhbHNlKTtcXG4gXFx0XFx0aWYgKGVycikge1xcbkBAIC01MzEsNiArNTQzLDggQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0XFx0ICAgZXJyKTtcXG4gXFx0XFx0XFx0YXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxcbiBcXHRcXHRcXHRcXHRzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGU7XFxuK1xcdFxcdFxcdGFwYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9XFxuK1xcdFxcdFxcdFxcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGU7XFxuIFxcdFxcdFxcdGFwYy1cXHUwMDNlaW50cl9tb2RyX3J4X3VzZWMgPSBzYXZlZC5pbnRyX21vZHJfcnhfdXNlYztcXG4gXFx0XFx0XFx0YXBjLVxcdTAwM2VpbnRyX21vZHJfcnhfY29tcCA9IHNhdmVkLmludHJfbW9kcl9yeF9jb21wO1xcbiBcXHRcXHRcXHRhcGMtXFx1MDAzZWludHJfbW9kcl90eF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3R4X3VzZWM7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oIGIvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmhcXG5pbmRleCA4NTI5Y2VmMGQ3YzQ1Li43MGE3ZjFmZWU1ZDNiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXFxuKysrIGIvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmhcXG5AQCAtMTgyLDYgKzE4Miw3IEBAIHN0cnVjdCBnZG1hX2dlbmVyYWxfcmVxIHtcXG4gI2RlZmluZSBHRE1BX01FU1NBR0VfVjIgMlxcbiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WMyAzXFxuICNkZWZpbmUgR0RNQV9NRVNTQUdFX1Y0IDRcXG4rI2RlZmluZSBHRE1BX01FU1NBR0VfVjUgNVxcbiBcXG4gc3RydWN0IGdkbWFfZ2VuZXJhbF9yZXNwIHtcXG4gXFx0c3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyO1xcbkBAIC00MjgsNiArNDI5LDkgQEAgc3RydWN0IGdkbWFfY29udGV4dCB7XFxuIFxcdC8qIEwyIE1UVSAqL1xcbiBcXHR1MTYgYWRhcHRlcl9tdHU7XFxuIFxcbitcXHQvKiBOSUMgc3VwcG9ydHMgQ1FFIHg4IGNvYWxlc2NpbmcgKi9cXG4rXFx0Ym9vbCBjcWU4X2NvYWxlc2Npbmdfc3VwO1xcbitcXG4gXFx0LyogVGhpcyBtYXBzIGEgQ1EgaW5kZXggdG8gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gKi9cXG4gXFx0dW5zaWduZWQgaW50XFx0XFx0bWF4X251bV9jcXM7XFxuIFxcdHN0cnVjdCBnZG1hX3F1ZXVlXFx0KipjcV90YWJsZTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmggYi9pbmNsdWRlL25ldC9tYW5hL21hbmEuaFxcbmluZGV4IDRkMDQxZmI4NDM3ZjUuLjNjYTEzOTlhMmZhZmEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcXG4rKysgYi9pbmNsdWRlL25ldC9tYW5hL21hbmEuaFxcbkBAIC02Miw5ICs2MiwxMiBAQCBlbnVtIFRSSV9TVEFURSB7XFxuIFxcbiAjZGVmaW5lIE1BWF9QT1JUU19JTl9NQU5BX0RFViAyNTZcXG4gXFxuLS8qIE1heGltdW0gbnVtYmVyIG9mIHBhY2tldHMgcGVyIGNvYWxlc2NlZCBDUUUgKi9cXG4rLyogTWF4aW11bSBudW1iZXIgb2YgUFBJcyBwZXIgY29hbGVzY2VkIENRRSAqL1xcbiAjZGVmaW5lIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIDRcXG4gXFxuKy8qIDgtcGt0IG1vZGUgcGFja3MgdXAgdG8gMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi9cXG4rI2RlZmluZSBNQU5BX0NRRV9DT0FMX1BLVFNfOCA4XFxuK1xcbiAvKiBEZWZhdWx0L21heCBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqL1xcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX1VTRUNfREVGIDBcXG4gI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9DT01QX0RFRiAwXFxuQEAgLTc5LDcgKzgyLDcgQEAgZW51bSBUUklfU1RBVEUge1xcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfTUFTSyAgIEdFTk1BU0soMjMsIDE2KVxcbiBcXG4gLyogVXBkYXRlIHRoaXMgY291bnQgd2hlbmV2ZXIgdGhlIHJlc3BlY3RpdmUgc3RydWN0dXJlcyBhcmUgY2hhbmdlZCAqL1xcbi0jZGVmaW5lIE1BTkFfU1RBVFNfUlhfQ09VTlQgKDYgKyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDEpXFxuKyNkZWZpbmUgTUFOQV9TVEFUU19SWF9DT1VOVCAoNiArIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMSlcXG4gI2RlZmluZSBNQU5BX1NUQVRTX1RYX0NPVU5UIDExXFxuIFxcbiAjZGVmaW5lIE1BTkFfUlhfRlJBR19BTElHTk1FTlQgNjRcXG5AQCAtOTEsNyArOTQsNyBAQCBzdHJ1Y3QgbWFuYV9zdGF0c19yeCB7XFxuIFxcdHU2NCB4ZHBfdHg7XFxuIFxcdHU2NCB4ZHBfcmVkaXJlY3Q7XFxuIFxcdHU2NCBwa3RfbGVuMF9lcnI7XFxuLVxcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XFxuK1xcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XFxuIFxcdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzeW5jcDtcXG4gfTtcXG4gXFxuQEAgLTIwMiw2ICsyMDUsNyBAQCBlbnVtIG1hbmFfY3FlX3R5cGUge1xcbiBcXHRDUUVfUlhfQ09BTEVTQ0VEXzRcXHRcXHQ9IDIsXFxuIFxcdENRRV9SWF9PQkpFQ1RfRkVOQ0VcXHRcXHQ9IDMsXFxuIFxcdENRRV9SWF9UUlVOQ0FURURcXHRcXHQ9IDQsXFxuK1xcdENRRV9SWF9DT0FMRVNDRURfOFxcdFxcdD0gNyxcXG4gXFxuIFxcdENRRV9UWF9PS0FZXFx0XFx0XFx0PSAzMixcXG4gXFx0Q1FFX1RYX1NBX0RST1BcXHRcXHRcXHQ9IDMzLFxcbkBAIC0yMzgsMTIgKzI0MiwyNSBAQCBzdHJ1Y3QgbWFuYV9jcWVfaGVhZGVyIHtcXG4gI2RlZmluZSBNQU5BX0hBU0hfTDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuIFxcdChORElTX0hBU0hfVENQX0lQVjQgfCBORElTX0hBU0hfVURQX0lQVjQgfCBORElTX0hBU0hfVENQX0lQVjYgfCAgICAgIFxcXFxcXG4gXFx0IE5ESVNfSEFTSF9VRFBfSVBWNiB8IE5ESVNfSEFTSF9UQ1BfSVBWNl9FWCB8IE5ESVNfSEFTSF9VRFBfSVBWNl9FWClcXG4rI2RlZmluZSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRCBcXFxcXFxuK1xcdChORElTX0hBU0hfSVBWNCB8IE5ESVNfSEFTSF9UQ1BfSVBWNCB8IE5ESVNfSEFTSF9VRFBfSVBWNCB8IFxcXFxcXG4rXFx0IE5ESVNfSEFTSF9JUFY2IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgTkRJU19IQVNIX1VEUF9JUFY2KVxcbitcXG4rdW5pb24gbWFuYV9yeGNvbXBfcGVycGt0X2luZm8ge1xcbitcXHRzdHJ1Y3Qge1xcbitcXHRcXHR1MzIgcGt0X2xlbiA6IDE2O1xcbitcXHRcXHR1MzIgcmVzZXJ2ZWQxIDogMTY7XFxuK1xcdFxcdHUzMiByZXNlcnZlZDI7XFxuK1xcdFxcdHUzMiBwa3RfaGFzaDtcXG4rXFx0fTtcXG4gXFxuLXN0cnVjdCBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyB7XFxuLVxcdHUzMiBwa3RfbGVuXFx0OiAxNjtcXG4tXFx0dTMyIHJlc2VydmVkMVxcdDogMTY7XFxuLVxcdHUzMiByZXNlcnZlZDI7XFxuLVxcdHUzMiBwa3RfaGFzaDtcXG4rXFx0LyogVXAgdG8gdHdvIHBrdHMgcGVyIFBQSSBlbnRyeSAqL1xcbitcXHRzdHJ1Y3Qge1xcbitcXHRcXHR1MzIgcGt0X2hhc2gwO1xcbitcXHRcXHR1MTYgcGt0X2xlbjA7XFxuK1xcdFxcdHUxNiBwa3RfbGVuMTtcXG4rXFx0XFx0dTMyIHBrdF9oYXNoMTtcXG4rXFx0fTtcXG4gfTsgLyogSFcgREFUQSAqL1xcbiBcXG4gLyogUmVjZWl2ZSBjb21wbGV0aW9uIE9PQiAqL1xcbkBAIC0yNjQsNyArMjgxLDcgQEAgc3RydWN0IG1hbmFfcnhjb21wX29vYiB7XFxuIFxcdHUzMiByeF91ZHBfY3N1bV9mYWlsXFx0XFx0OiAxO1xcbiBcXHR1MzIgcmVzZXJ2ZWQyXFx0XFx0XFx0OiAxO1xcbiBcXG4tXFx0c3RydWN0IG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHBwaVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSV07XFxuK1xcdHVuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHBwaVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSV07XFxuIFxcbiBcXHR1MzIgcnhfd3FlX29mZnNldDtcXG4gfTsgLyogSFcgREFUQSAqL1xcbkBAIC02MDcsNiArNjI0LDcgQEAgc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0IHtcXG4gXFx0Ym9vbCBwb3J0X3N0X3NhdmU7IC8qIFNhdmVkIHBvcnQgc3RhdGUgKi9cXG4gXFxuIFxcdHU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcXG4rXFx0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcXG4gXFx0dTMyIGNxZV9jb2FsZXNjaW5nX3RpbWVvdXRfbnM7XFxuIFxcbiBcXHQvKiBJbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqL1xcbkBAIC03NTEsNiArNzY5LDggQEAgc3RydWN0IG1hbmFfcXVlcnlfZGV2aWNlX2NmZ19yZXEge1xcbiBcXHR1MzIgcmVzZXJ2ZWQ7XFxuIH07IC8qIEhXIERBVEEgKi9cXG4gXFxuKyNkZWZpbmUgTUFOQV9QRl9GTEFHXzFfQ1FFXzhfQ09BTEVTQ0lOR19TVVBQT1JURUQgQklUKDUpXFxuK1xcbiBzdHJ1Y3QgbWFuYV9xdWVyeV9kZXZpY2VfY2ZnX3Jlc3Age1xcbiBcXHRzdHJ1Y3QgZ2RtYV9yZXNwX2hkciBoZHI7XFxuIFxcbkBAIC05ODYsNyArMTAwNiwxMCBAQCBzdHJ1Y3QgbWFuYV9jZmdfcnhfc3RlZXJfcmVxX3YyIHtcXG4gXFx0bWFuYV9oYW5kbGVfdCBkZWZhdWx0X3J4b2JqO1xcbiBcXHR1OCBoYXNoa2V5W01BTkFfSEFTSF9LRVlfU0laRV07XFxuIFxcdHU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcXG4tXFx0dTggcmVzZXJ2ZWQyWzddO1xcbitcXHR1OCByZXNlcnZlZDJbM107XFxuK1xcdHUxNiByc3NfaGFzaF90eXBlcztcXG4rXFx0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsgLyogdjUgbWVzc2FnZSAqL1xcbitcXHR1OCByZXNlcnZlZDM7XFxuIFxcdG1hbmFfaGFuZGxlX3QgaW5kaXJfdGFiW10gX19jb3VudGVkX2J5KG51bV9pbmRpcl9lbnRyaWVzKTtcXG4gfTsgLyogSFcgREFUQSAqL1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6MzY6NTEuMTM0NDI1MDE5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzIzODMyNTcyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgU21hcnROSUMgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBhbmQgdW50ZXN0YWJsZSBieSBzdGFuZGFyZCBmdXp6ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNmQ4NmM2MjJiZDYwMmFiMTdjM2YxMDNhODAzZDRhY2EzZDljY2Y1YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDA2OjM2OjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXG5pbmRleCBhOGMzMjliZGJhY2Y4Li43MjBkMjJlNmFlYTk0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcbkBAIC0xMjQxLDYgKzEyNDEsOSBAQCBpbnQgbWFuYV9nZF9xdWVyeV9kZXZpY2VfY2ZnKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1MzIgcHJvdG9fbWFqb3JfdmVyLFxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuK1x0aWYgKHJlc3AucGZfY2FwX2ZsYWdzMSBcdTAwMjYgTUFOQV9QRl9GTEFHXzFfQ1FFXzhfQ09BTEVTQ0lOR19TVVBQT1JURUQpXG4rXHRcdGdjLVx1MDAzZWNxZThfY29hbGVzY2luZ19zdXAgPSB0cnVlO1xuK1xuIFx0Km1heF9udW1fdnBvcnRzID0gcmVzcC5tYXhfbnVtX3Zwb3J0cztcbiBcbiBcdGlmIChyZXNwLmhkci5yZXNwb25zZS5tc2dfdmVyc2lvbiBcdTAwM2U9IEdETUFfTUVTU0FHRV9WMikge1xuQEAgLTE0MjYsNyArMTQyOSwxMSBAQCBzdGF0aWMgaW50IG1hbmFfY2ZnX3Zwb3J0X3N0ZWVyaW5nKHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjLFxuIFx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXHUwMDI2cmVxLVx1MDAzZWhkciwgTUFOQV9DT05GSUdfVlBPUlRfUlgsIHJlcV9idWZfc2l6ZSxcbiBcdFx0XHQgICAgIHNpemVvZihyZXNwKSk7XG4gXG4tXHRyZXEtXHUwMDNlaGRyLnJlcS5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WMjtcbitcdC8qIFJlcXVlc3QgXHUwMDI2IHJlc3BvbnNlIHZlcnNpb25zIGNhbiBiZSBkaWZmZXJlbnQuXG4rXHQgKiBIVyBjYW4gaGFuZGxlIG5ld2VyIG1zZyB2ZXJzaW9ucywgYnkgc2tpcHBpbmdcbitcdCAqIG5ldyBmaWVsZHMuXG4rXHQgKi9cbitcdHJlcS1cdTAwM2VoZHIucmVxLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1Y1O1xuIFx0cmVxLVx1MDAzZWhkci5yZXNwLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1YyO1xuIFxuIFx0cmVxLVx1MDAzZXZwb3J0ID0gYXBjLVx1MDAzZXBvcnRfaGFuZGxlO1xuQEAgLTE0NDAsOCArMTQ0NywxMyBAQCBzdGF0aWMgaW50IG1hbmFfY2ZnX3Zwb3J0X3N0ZWVyaW5nKHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjLFxuIFx0cmVxLVx1MDAzZXVwZGF0ZV9pbmRpcl90YWIgPSB1cGRhdGVfdGFiO1xuIFx0cmVxLVx1MDAzZWRlZmF1bHRfcnhvYmogPSBhcGMtXHUwMDNlZGVmYXVsdF9yeG9iajtcbiBcbi1cdGlmIChyeCAhPSBUUklfU1RBVEVfRkFMU0UpXG4rXHQvKiBSZXF1ZXN0LW1zZyB2NSByZXF1aXJlcyB0aGlzIGZpZWxkICovXG4rXHRyZXEtXHUwMDNlcnNzX2hhc2hfdHlwZXMgPSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRDtcbitcbitcdGlmIChyeCAhPSBUUklfU1RBVEVfRkFMU0UpIHtcbiBcdFx0cmVxLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGU7XG4rXHRcdHJlcS1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGU7XG4rXHR9XG4gXG4gXHRpZiAodXBkYXRlX2tleSlcbiBcdFx0bWVtY3B5KFx1MDAyNnJlcS1cdTAwM2VoYXNoa2V5LCBhcGMtXHUwMDNlaGFzaGtleSwgTUFOQV9IQVNIX0tFWV9TSVpFKTtcbkBAIC0yMDQ2LDE2ICsyMDU4LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWFuYV9idWlsZF9za2Ioc3RydWN0IG1hbmFfcnhxICpyeHEsIHZvaWQgKmJ1Zl92YSxcbiBcbiBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLFxuIFx0XHRcdHN0cnVjdCBtYW5hX3J4Y29tcF9vb2IgKmNxZSwgc3RydWN0IG1hbmFfcnhxICpyeHEsXG4tXHRcdFx0aW50IGkpXG4rXHRcdFx0dTMyIHBrdF9sZW4sIHUzMiBwa3RfaGFzaClcbiB7XG4gXHRzdHJ1Y3QgbWFuYV9zdGF0c19yeCAqcnhfc3RhdHMgPSBcdTAwMjZyeHEtXHUwMDNlc3RhdHM7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHJ4cS1cdTAwM2VuZGV2O1xuLVx0dWludCBwa3RfbGVuID0gY3FlLVx1MDAzZXBwaVtpXS5wa3RfbGVuO1xuIFx0dTE2IHJ4cV9pZHggPSByeHEtXHUwMDNlcnhxX2lkeDtcbiBcdHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaTtcbiBcdHN0cnVjdCB4ZHBfYnVmZiB4ZHAgPSB7fTtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4tXHR1MzIgaGFzaF92YWx1ZTtcbiBcdHUzMiBhY3Q7XG4gXG4gXHRyeHEtXHUwMDNlcnhfY3Eud29ya19kb25lKys7XG5AQCAtMjA5NCwxMiArMjEwNCwxMCBAQCBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLFxuIFx0fVxuIFxuIFx0aWYgKGNxZS1cdTAwM2VyeF9oYXNodHlwZSAhPSAwIFx1MDAyNlx1MDAyNiAobmRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9SWEhBU0gpKSB7XG4tXHRcdGhhc2hfdmFsdWUgPSBjcWUtXHUwMDNlcHBpW2ldLnBrdF9oYXNoO1xuLVxuIFx0XHRpZiAoY3FlLVx1MDAzZXJ4X2hhc2h0eXBlIFx1MDAyNiBNQU5BX0hBU0hfTDQpXG4tXHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaF92YWx1ZSwgUEtUX0hBU0hfVFlQRV9MNCk7XG4rXHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgcGt0X2hhc2gsIFBLVF9IQVNIX1RZUEVfTDQpO1xuIFx0XHRlbHNlXG4tXHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaF92YWx1ZSwgUEtUX0hBU0hfVFlQRV9MMyk7XG4rXHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgcGt0X2hhc2gsIFBLVF9IQVNIX1RZUEVfTDMpO1xuIFx0fVxuIFxuIFx0aWYgKGNxZS1cdTAwM2VyeF92bGFudGFnX3ByZXNlbnQpIHtcbkBAIC0yMjQwLDYgKzIyNDgsNDMgQEAgc3RhdGljIHZvaWQgbWFuYV9yZWZpbGxfcnhfb29iKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1hbmFfcnhxICpyeHEsXG4gXHRyeG9vYi1cdTAwM2VkbWFfc3luY19vZmZzZXQgPSBkbWFfc3luY19vZmZzZXQ7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19vbmVfcnhfcGt0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1hbmFfcnhxICpyeHEsXG4rXHRcdFx0XHQgICAgc3RydWN0IG1hbmFfcnhjb21wX29vYiAqb29iLFxuK1x0XHRcdFx0ICAgIHUzMiBwa3RsZW4sIHUzMiBwa3RfaGFzaClcbit7XG4rXHRzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjtcbitcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLVx1MDAzZW5kZXY7XG4rXHR2b2lkICpvbGRfYnVmID0gTlVMTDtcbitcdGJvb2wgb2xkX2ZwO1xuK1xuK1x0cnhidWZfb29iID0gXHUwMDI2cnhxLVx1MDAzZXJ4X29vYnNbcnhxLVx1MDAzZWJ1Zl9pbmRleF07XG4rXHRXQVJOX09OX09OQ0UocnhidWZfb29iLVx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUgIT0gMSk7XG4rXG4rXHRpZiAodW5saWtlbHkocGt0bGVuIFx1MDAzZSByeHEtXHUwMDNlZGF0YXNpemUpKSB7XG4rXHRcdC8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24ndCBjYWxsZWQuICovXG4rXHRcdHJ4cS1cdTAwM2VyeF9jcS53b3JrX2RvbmUrKztcbitcbitcdFx0KytuZGV2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQ7XG4rXHRcdG5ldGRldl93YXJuX29uY2UobmRldixcbitcdFx0XHRcdCBcIkRyb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxcblwiLFxuK1x0XHRcdFx0IHBrdGxlbiwgcnhxLVx1MDAzZWRhdGFzaXplKTtcbitcbitcdFx0LyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqL1xuK1x0fSBlbHNlIHtcbitcdFx0bWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbixcbitcdFx0XHRcdCAgIFx1MDAyNm9sZF9idWYsIFx1MDAyNm9sZF9mcCk7XG4rXG4rXHRcdC8qIFVuc3VjY2Vzc2Z1bCByZWZpbGwgd2lsbCBoYXZlIG9sZF9idWYgPT0gTlVMTC5cbitcdFx0ICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LlxuK1x0XHQgKi9cbitcdFx0bWFuYV9yeF9za2Iob2xkX2J1Ziwgb2xkX2ZwLCBvb2IsIHJ4cSwgcGt0bGVuLCBwa3RfaGFzaCk7XG4rXHR9XG4rXG4rXHRtYW5hX21vdmVfd3FfdGFpbChyeHEtXHUwMDNlZ2RtYV9ycSwgcnhidWZfb29iLVx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUpO1xuK1xuK1x0bWFuYV9wb3N0X3BrdF9yeHEocnhxKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxuIFx0XHRcdFx0c3RydWN0IGdkbWFfY29tcCAqY3FlKVxuIHtcbkBAIC0yMjQ5LDEwICsyMjk0LDEwIEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcbiBcdHN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iO1xuIFx0c3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGM7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBnYy1cdTAwM2VkZXY7XG4rXHRib29sIGNvYWxlc2NlZF84ID0gZmFsc2U7XG4gXHRib29sIGNvYWxlc2NlZCA9IGZhbHNlO1xuLVx0dm9pZCAqb2xkX2J1ZiA9IE5VTEw7XG4tXHR1MzIgY3VyciwgcGt0bGVuO1xuLVx0Ym9vbCBvbGRfZnA7XG4rXHR1MzIgcGt0bGVuO1xuK1x0aW50IHBrdF9pO1xuIFx0aW50IGk7XG4gXG4gXHRhcGMgPSBuZXRkZXZfcHJpdihuZGV2KTtcbkBAIC0yMjc1LDYgKzIzMjAsMTEgQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxuIFx0XHRjb2FsZXNjZWQgPSB0cnVlO1xuIFx0XHRicmVhaztcbiBcbitcdGNhc2UgQ1FFX1JYX0NPQUxFU0NFRF84OlxuK1x0XHRjb2FsZXNjZWQgPSB0cnVlO1xuK1x0XHRjb2FsZXNjZWRfOCA9IHRydWU7XG4rXHRcdGJyZWFrO1xuK1xuIFx0Y2FzZSBDUUVfUlhfT0JKRUNUX0ZFTkNFOlxuIFx0XHRjb21wbGV0ZShcdTAwMjZyeHEtXHUwMDNlZmVuY2VfZXZlbnQpO1xuIFx0XHRyZXR1cm47XG5AQCAtMjI4Niw1NCArMjMzNiw0OCBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbitcdHBrdF9pID0gMDtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJOyBpKyspIHtcbi1cdFx0b2xkX2J1ZiA9IE5VTEw7XG4tXHRcdHBrdGxlbiA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2xlbjtcbi1cdFx0aWYgKHBrdGxlbiA9PSAwKVxuLVx0XHRcdGJyZWFrO1xuLVxuLVx0XHRjdXJyID0gcnhxLVx1MDAzZWJ1Zl9pbmRleDtcbi1cdFx0cnhidWZfb29iID0gXHUwMDI2cnhxLVx1MDAzZXJ4X29vYnNbY3Vycl07XG4tXHRcdFdBUk5fT05fT05DRShyeGJ1Zl9vb2ItXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSAhPSAxKTtcbi1cbi1cdFx0aWYgKHVubGlrZWx5KHBrdGxlbiBcdTAwM2UgcnhxLVx1MDAzZWRhdGFzaXplKSkge1xuLVx0XHRcdC8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24ndCBjYWxsZWQuICovXG4tXHRcdFx0cnhxLVx1MDAzZXJ4X2NxLndvcmtfZG9uZSsrO1xuK1x0XHR1MzIgcGt0X2hhc2g7XG4gXG4tXHRcdFx0KytuZGV2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQ7XG4tXHRcdFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxuLVx0XHRcdFx0XCJEcm9wcGVkIG92ZXJzaXplZCBSWCBwYWNrZXQ6IGxlbj0ldSwgZGF0YXNpemU9JXVcXG5cIixcbi1cdFx0XHRcdHBrdGxlbiwgcnhxLVx1MDAzZWRhdGFzaXplKTtcbi1cbi1cdFx0XHQvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovXG4rXHRcdGlmIChjb2FsZXNjZWRfOCkge1xuK1x0XHRcdC8qIDgtcGt0IG1vZGU6IDIgcGFja2V0cyBwZXIgUFBJIGVudHJ5ICovXG4rXHRcdFx0cGt0bGVuID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfbGVuMDtcbitcdFx0XHRwa3RfaGFzaCA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2hhc2gwO1xuIFx0XHR9IGVsc2Uge1xuLVxuLVx0XHRcdG1hbmFfcmVmaWxsX3J4X29vYihkZXYsIHJ4cSwgcnhidWZfb29iLCBwa3RsZW4sXG4tXHRcdFx0XHRcdCAgIFx1MDAyNm9sZF9idWYsIFx1MDAyNm9sZF9mcCk7XG4tXG4tXHRcdFx0LyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLlxuLVx0XHRcdCAqIEluIHRoaXMgY2FzZSwgbWFuYV9yeF9za2IoKSB3aWxsIGRyb3AgdGhlIHBhY2tldC5cbi1cdFx0XHQgKi9cbi1cdFx0XHRtYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBpKTtcbitcdFx0XHRwa3RsZW4gPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9sZW47XG4rXHRcdFx0cGt0X2hhc2ggPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9oYXNoO1xuIFx0XHR9XG4rXHRcdGlmIChwa3RsZW4gPT0gMClcbitcdFx0XHRicmVhaztcbiBcbi1cdFx0bWFuYV9tb3ZlX3dxX3RhaWwocnhxLVx1MDAzZWdkbWFfcnEsXG4tXHRcdFx0XHQgIHJ4YnVmX29vYi1cdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1KTtcbi1cbi1cdFx0bWFuYV9wb3N0X3BrdF9yeHEocnhxKTtcbitcdFx0bWFuYV9wcm9jZXNzX29uZV9yeF9wa3QoZGV2LCByeHEsIG9vYiwgcGt0bGVuLCBwa3RfaGFzaCk7XG4rXHRcdHBrdF9pKys7XG4gXG4gXHRcdGlmICghY29hbGVzY2VkKVxuIFx0XHRcdGJyZWFrO1xuK1xuK1x0XHQvKiBQcm9jZXNzIDJuZCBwYWNrZXQgZnJvbSB0aGUgc2FtZSBQUEkgaW4gOC1wa3QgbW9kZSAqL1xuK1x0XHRpZiAoY29hbGVzY2VkXzgpIHtcbitcdFx0XHRwa3RsZW4gPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9sZW4xO1xuK1x0XHRcdHBrdF9oYXNoID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfaGFzaDE7XG4rXHRcdFx0aWYgKHBrdGxlbiA9PSAwKVxuK1x0XHRcdFx0YnJlYWs7XG4rXG4rXHRcdFx0bWFuYV9wcm9jZXNzX29uZV9yeF9wa3QoZGV2LCByeHEsIG9vYiwgcGt0bGVuLFxuK1x0XHRcdFx0XHRcdHBrdF9oYXNoKTtcbitcdFx0XHRwa3RfaSsrO1xuK1x0XHR9XG4gXHR9XG4gXG4gXHQvKiBDb2xsZWN0IGNvYWxlc2NlZCBDUUUgY291bnQgYmFzZWQgb24gcGFja2V0cyBwcm9jZXNzZWQuXG4tXHQgKiBDb2FsZXNjZWQgQ1FFcyBoYXZlIGF0IGxlYXN0IDIgcGFja2V0cywgc28gaW5kZXggaXMgaSAtIDIuXG4rXHQgKiBDb2FsZXNjZWQgQ1FFcyBoYXZlIGF0IGxlYXN0IDIgcGFja2V0cywgc28gaW5kZXggaXMgcGt0X2kgLSAyLlxuIFx0ICovXG4tXHRpZiAoaSBcdTAwM2UgMSkge1xuK1x0aWYgKHBrdF9pIFx1MDAzZSAxKSB7XG4gXHRcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2cnhxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbi1cdFx0cnhxLVx1MDAzZXN0YXRzLmNvYWxlc2NlZF9jcWVbaSAtIDJdKys7XG4rXHRcdHJ4cS1cdTAwM2VzdGF0cy5jb2FsZXNjZWRfY3FlW3BrdF9pIC0gMl0rKztcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2cnhxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbi1cdH0gZWxzZSBpZiAoIWkgXHUwMDI2XHUwMDI2ICFwa3RsZW4pIHtcbitcdH0gZWxzZSBpZiAoIXBrdF9pIFx1MDAyNlx1MDAyNiAhcGt0bGVuKSB7XG4gXHRcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2cnhxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbiBcdFx0cnhxLVx1MDAzZXN0YXRzLnBrdF9sZW4wX2VycisrO1xuIFx0XHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuQEAgLTM3NjMsNiArMzgwNyw3IEBAIHN0YXRpYyBpbnQgbWFuYV9wcm9iZV9wb3J0KHN0cnVjdCBtYW5hX2NvbnRleHQgKmFjLCBpbnQgcG9ydF9pZHgsXG4gXHRhcGMtXHUwMDNlcG9ydF9pZHggPSBwb3J0X2lkeDtcbiBcdGFwYy1cdTAwM2VsaW5rX2NmZ19lcnJvciA9IDE7XG4gXHRhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gMDtcbitcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID0gMDtcbiBcbiBcdC8qIEluaXRpYWxpemUgaW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgaWYgc3VwcG9ydGVkIGJ5IEhXICovXG4gXHRpZiAoZ2MtXHUwMDNlcGZfY2FwX2ZsYWdzMSBcdTAwMjYgR0RNQV9QRl9DQVBfRkxBR18xX0RZTl9JTlRFUlJVUFRfTU9ERVJBVElPTikge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcbmluZGV4IDllMzFlMjU5NWFlMzIuLjg3NDNmN2VkZWNiYjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcbkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIHN0cmluZ3NldCwgdTggKmRhdGEpXG4gXHRcdGV0aHRvb2xfc3ByaW50ZihcdTAwMjZkYXRhLCBcInJ4XyVkX3hkcF90eFwiLCBpKTtcbiBcdFx0ZXRodG9vbF9zcHJpbnRmKFx1MDAyNmRhdGEsIFwicnhfJWRfeGRwX3JlZGlyZWN0XCIsIGkpO1xuIFx0XHRldGh0b29sX3NwcmludGYoXHUwMDI2ZGF0YSwgXCJyeF8lZF9wa3RfbGVuMF9lcnJcIiwgaSk7XG4tXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxuK1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDE7IGorKylcbiBcdFx0XHRldGh0b29sX3NwcmludGYoXHUwMDI2ZGF0YSwgXCJyeF8lZF9jb2FsZXNjZWRfY3FlXyVkXCIsIGksIGogKyAyKTtcbiBcdH1cbiBcbkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHU2NCB4ZHBfZHJvcDtcbiBcdHU2NCB4ZHBfdHg7XG4gXHR1NjQgcGt0X2xlbjBfZXJyO1xuLVx0dTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxXTtcbitcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XG4gXHR1NjQgdHNvX3BhY2tldHM7XG4gXHR1NjQgdHNvX2J5dGVzO1xuIFx0dTY0IHRzb19pbm5lcl9wYWNrZXRzO1xuQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRcdHhkcF90eCA9IHJ4X3N0YXRzLVx1MDAzZXhkcF90eDtcbiBcdFx0XHR4ZHBfcmVkaXJlY3QgPSByeF9zdGF0cy1cdTAwM2V4ZHBfcmVkaXJlY3Q7XG4gXHRcdFx0cGt0X2xlbjBfZXJyID0gcnhfc3RhdHMtXHUwMDNlcGt0X2xlbjBfZXJyO1xuLVx0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxuK1x0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMTsgaisrKVxuIFx0XHRcdFx0Y29hbGVzY2VkX2NxZVtqXSA9IHJ4X3N0YXRzLVx1MDAzZWNvYWxlc2NlZF9jcWVbal07XG4gXHRcdH0gd2hpbGUgKHU2NF9zdGF0c19mZXRjaF9yZXRyeShcdTAwMjZyeF9zdGF0cy1cdTAwM2VzeW5jcCwgc3RhcnQpKTtcbiBcbkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0ZGF0YVtpKytdID0geGRwX3R4O1xuIFx0XHRkYXRhW2krK10gPSB4ZHBfcmVkaXJlY3Q7XG4gXHRcdGRhdGFbaSsrXSA9IHBrdF9sZW4wX2Vycjtcbi1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqKyspXG4rXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMTsgaisrKVxuIFx0XHRcdGRhdGFbaSsrXSA9IGNvYWxlc2NlZF9jcWVbal07XG4gXHR9XG4gXG5AQCAtNDA4LDYgKzQwOCw3IEBAIHN0YXRpYyBpbnQgbWFuYV9nZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyA9IG5ldGRldl9wcml2KG5kZXYpO1xuIFxuIFx0a2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyA9XG4rXHRcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9DUUVfQ09BTF9QS1RTXzggOlxuIFx0XHRhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgOiAxO1xuIFxuIFx0a2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX25zZWNzID0gYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX3RpbWVvdXRfbnM7XG5AQCAtNDQzLDYgKzQ0NCw3IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHUxNiBpbnRyX21vZHJfdHhfdXNlYztcbiBcdFx0dTE2IGludHJfbW9kcl90eF9jb21wO1xuIFx0XHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XG4rXHRcdHU4IGNxZThfY29hbGVzY2luZ19lbmFibGU7XG4gXHRcdGJvb2wgcnhfZGltX2VuYWJsZWQ7XG4gXHRcdGJvb2wgdHhfZGltX2VuYWJsZWQ7XG4gXHR9IHNhdmVkO1xuQEAgLTQ2NiwxMCArNDY4LDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHR9XG4gXG4gXHRpZiAoa2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyAhPSAxIFx1MDAyNlx1MDAyNlxuLVx0ICAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEkpIHtcbitcdCAgICBrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gTUFOQV9DUUVfQ09BTF9QS1RTXzgpIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfRk1UKGV4dGFjayxcbi1cdFx0XHRcdCAgIFwicngtZnJhbWVzIG11c3QgYmUgMSBvciAldSwgZ290ICV1XCIsXG4rXHRcdFx0XHQgICBcInJ4LWZyYW1lcyBtdXN0IGJlIDEsICV1LCBvciAldSwgZ290ICV1XCIsXG4gXHRcdFx0XHQgICBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSxcbitcdFx0XHRcdCAgIE1BTkFfQ1FFX0NPQUxfUEtUU184LFxuIFx0XHRcdFx0ICAga2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuQEAgLTUxNCw4ICs1MTgsMTUgQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHNhdmVkLnR4X2RpbV9lbmFibGVkID0gYXBjLVx1MDAzZXR4X2RpbV9lbmFibGVkO1xuIFxuIFx0c2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbitcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxuLVx0XHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xuK1x0XHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzIFx1MDAzZT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEk7XG4rXG4rXHRpZiAoZ2MtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX3N1cClcbitcdFx0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPVxuK1x0XHRcdGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgPT0gTUFOQV9DUUVfQ09BTF9QS1RTXzg7XG4rXHRlbHNlIGlmIChrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfQ1FFX0NPQUxfUEtUU184KVxuK1x0XHRuZXRkZXZfaW5mbyhuZGV2LCBcIkZhbGwgYmFjayB0byBSWC1DUUUgeDQgY29hbGVzY2luZ1xcblwiKTtcbiBcbiBcdGlmICghYXBjLVx1MDAzZXBvcnRfaXNfdXApIHtcbiBcdFx0V1JJVEVfT05DRShhcGMtXHUwMDNlcnhfZGltX2VuYWJsZWQsICEhZWMtXHUwMDNldXNlX2FkYXB0aXZlX3J4X2NvYWxlc2NlKTtcbkBAIC01MjMsNyArNTM0LDggQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRpZiAoYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSAhPSBzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUpIHtcbitcdGlmIChhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSB8fFxuK1x0ICAgIGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUpIHtcbiBcdFx0LyogQ1FFIGNvYWxlc2Npbmcgc2V0dGluZyBpcyBhcHBsaWVkIHZpYSBSU1MgY29uZmlndXJhdGlvbi4gKi9cbiBcdFx0ZXJyID0gbWFuYV9jb25maWdfcnNzKGFwYywgVFJJX1NUQVRFX1RSVUUsIGZhbHNlLCBmYWxzZSk7XG4gXHRcdGlmIChlcnIpIHtcbkBAIC01MzEsNiArNTQzLDggQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0XHRcdCAgIGVycik7XG4gXHRcdFx0YXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSA9XG4gXHRcdFx0XHRzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGU7XG4rXHRcdFx0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPVxuK1x0XHRcdFx0c2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdFx0XHRhcGMtXHUwMDNlaW50cl9tb2RyX3J4X3VzZWMgPSBzYXZlZC5pbnRyX21vZHJfcnhfdXNlYztcbiBcdFx0XHRhcGMtXHUwMDNlaW50cl9tb2RyX3J4X2NvbXAgPSBzYXZlZC5pbnRyX21vZHJfcnhfY29tcDtcbiBcdFx0XHRhcGMtXHUwMDNlaW50cl9tb2RyX3R4X3VzZWMgPSBzYXZlZC5pbnRyX21vZHJfdHhfdXNlYztcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaCBiL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXG5pbmRleCA4NTI5Y2VmMGQ3YzQ1Li43MGE3ZjFmZWU1ZDNiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmhcbisrKyBiL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXG5AQCAtMTgyLDYgKzE4Miw3IEBAIHN0cnVjdCBnZG1hX2dlbmVyYWxfcmVxIHtcbiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WMiAyXG4gI2RlZmluZSBHRE1BX01FU1NBR0VfVjMgM1xuICNkZWZpbmUgR0RNQV9NRVNTQUdFX1Y0IDRcbisjZGVmaW5lIEdETUFfTUVTU0FHRV9WNSA1XG4gXG4gc3RydWN0IGdkbWFfZ2VuZXJhbF9yZXNwIHtcbiBcdHN0cnVjdCBnZG1hX3Jlc3BfaGRyIGhkcjtcbkBAIC00MjgsNiArNDI5LDkgQEAgc3RydWN0IGdkbWFfY29udGV4dCB7XG4gXHQvKiBMMiBNVFUgKi9cbiBcdHUxNiBhZGFwdGVyX210dTtcbiBcbitcdC8qIE5JQyBzdXBwb3J0cyBDUUUgeDggY29hbGVzY2luZyAqL1xuK1x0Ym9vbCBjcWU4X2NvYWxlc2Npbmdfc3VwO1xuK1xuIFx0LyogVGhpcyBtYXBzIGEgQ1EgaW5kZXggdG8gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gKi9cbiBcdHVuc2lnbmVkIGludFx0XHRtYXhfbnVtX2NxcztcbiBcdHN0cnVjdCBnZG1hX3F1ZXVlXHQqKmNxX3RhYmxlO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oIGIvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcbmluZGV4IDRkMDQxZmI4NDM3ZjUuLjNjYTEzOTlhMmZhZmEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9tYW5hL21hbmEuaFxuKysrIGIvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcbkBAIC02Miw5ICs2MiwxMiBAQCBlbnVtIFRSSV9TVEFURSB7XG4gXG4gI2RlZmluZSBNQVhfUE9SVFNfSU5fTUFOQV9ERVYgMjU2XG4gXG4tLyogTWF4aW11bSBudW1iZXIgb2YgcGFja2V0cyBwZXIgY29hbGVzY2VkIENRRSAqL1xuKy8qIE1heGltdW0gbnVtYmVyIG9mIFBQSXMgcGVyIGNvYWxlc2NlZCBDUUUgKi9cbiAjZGVmaW5lIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIDRcbiBcbisvKiA4LXBrdCBtb2RlIHBhY2tzIHVwIHRvIDIgcGFja2V0cyBwZXIgUFBJIGVudHJ5ICovXG4rI2RlZmluZSBNQU5BX0NRRV9DT0FMX1BLVFNfOCA4XG4rXG4gLyogRGVmYXVsdC9tYXggaW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgKi9cbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX1VTRUNfREVGIDBcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfREVGIDBcbkBAIC03OSw3ICs4Miw3IEBAIGVudW0gVFJJX1NUQVRFIHtcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfTUFTSyAgIEdFTk1BU0soMjMsIDE2KVxuIFxuIC8qIFVwZGF0ZSB0aGlzIGNvdW50IHdoZW5ldmVyIHRoZSByZXNwZWN0aXZlIHN0cnVjdHVyZXMgYXJlIGNoYW5nZWQgKi9cbi0jZGVmaW5lIE1BTkFfU1RBVFNfUlhfQ09VTlQgKDYgKyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDEpXG4rI2RlZmluZSBNQU5BX1NUQVRTX1JYX0NPVU5UICg2ICsgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxKVxuICNkZWZpbmUgTUFOQV9TVEFUU19UWF9DT1VOVCAxMVxuIFxuICNkZWZpbmUgTUFOQV9SWF9GUkFHX0FMSUdOTUVOVCA2NFxuQEAgLTkxLDcgKzk0LDcgQEAgc3RydWN0IG1hbmFfc3RhdHNfcngge1xuIFx0dTY0IHhkcF90eDtcbiBcdHU2NCB4ZHBfcmVkaXJlY3Q7XG4gXHR1NjQgcGt0X2xlbjBfZXJyO1xuLVx0dTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxXTtcbitcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XG4gXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgc3luY3A7XG4gfTtcbiBcbkBAIC0yMDIsNiArMjA1LDcgQEAgZW51bSBtYW5hX2NxZV90eXBlIHtcbiBcdENRRV9SWF9DT0FMRVNDRURfNFx0XHQ9IDIsXG4gXHRDUUVfUlhfT0JKRUNUX0ZFTkNFXHRcdD0gMyxcbiBcdENRRV9SWF9UUlVOQ0FURURcdFx0PSA0LFxuK1x0Q1FFX1JYX0NPQUxFU0NFRF84XHRcdD0gNyxcbiBcbiBcdENRRV9UWF9PS0FZXHRcdFx0PSAzMixcbiBcdENRRV9UWF9TQV9EUk9QXHRcdFx0PSAzMyxcbkBAIC0yMzgsMTIgKzI0MiwyNSBAQCBzdHJ1Y3QgbWFuYV9jcWVfaGVhZGVyIHtcbiAjZGVmaW5lIE1BTkFfSEFTSF9MNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gXHQoTkRJU19IQVNIX1RDUF9JUFY0IHwgTkRJU19IQVNIX1VEUF9JUFY0IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgICAgICBcXFxuIFx0IE5ESVNfSEFTSF9VRFBfSVBWNiB8IE5ESVNfSEFTSF9UQ1BfSVBWNl9FWCB8IE5ESVNfSEFTSF9VRFBfSVBWNl9FWClcbisjZGVmaW5lIE1BTkFfSEFTSF9FTkFCTEVfU1VQUE9SVEVEIFxcXG4rXHQoTkRJU19IQVNIX0lQVjQgfCBORElTX0hBU0hfVENQX0lQVjQgfCBORElTX0hBU0hfVURQX0lQVjQgfCBcXFxuK1x0IE5ESVNfSEFTSF9JUFY2IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgTkRJU19IQVNIX1VEUF9JUFY2KVxuK1xuK3VuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHtcbitcdHN0cnVjdCB7XG4rXHRcdHUzMiBwa3RfbGVuIDogMTY7XG4rXHRcdHUzMiByZXNlcnZlZDEgOiAxNjtcbitcdFx0dTMyIHJlc2VydmVkMjtcbitcdFx0dTMyIHBrdF9oYXNoO1xuK1x0fTtcbiBcbi1zdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8ge1xuLVx0dTMyIHBrdF9sZW5cdDogMTY7XG4tXHR1MzIgcmVzZXJ2ZWQxXHQ6IDE2O1xuLVx0dTMyIHJlc2VydmVkMjtcbi1cdHUzMiBwa3RfaGFzaDtcbitcdC8qIFVwIHRvIHR3byBwa3RzIHBlciBQUEkgZW50cnkgKi9cbitcdHN0cnVjdCB7XG4rXHRcdHUzMiBwa3RfaGFzaDA7XG4rXHRcdHUxNiBwa3RfbGVuMDtcbitcdFx0dTE2IHBrdF9sZW4xO1xuK1x0XHR1MzIgcGt0X2hhc2gxO1xuK1x0fTtcbiB9OyAvKiBIVyBEQVRBICovXG4gXG4gLyogUmVjZWl2ZSBjb21wbGV0aW9uIE9PQiAqL1xuQEAgLTI2NCw3ICsyODEsNyBAQCBzdHJ1Y3QgbWFuYV9yeGNvbXBfb29iIHtcbiBcdHUzMiByeF91ZHBfY3N1bV9mYWlsXHRcdDogMTtcbiBcdHUzMiByZXNlcnZlZDJcdFx0XHQ6IDE7XG4gXG4tXHRzdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8gcHBpW01BTkFfUlhDT01QX09PQl9OVU1fUFBJXTtcbitcdHVuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHBwaVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSV07XG4gXG4gXHR1MzIgcnhfd3FlX29mZnNldDtcbiB9OyAvKiBIVyBEQVRBICovXG5AQCAtNjA3LDYgKzYyNCw3IEBAIHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCB7XG4gXHRib29sIHBvcnRfc3Rfc2F2ZTsgLyogU2F2ZWQgcG9ydCBzdGF0ZSAqL1xuIFxuIFx0dTggY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuK1x0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdHUzMiBjcWVfY29hbGVzY2luZ190aW1lb3V0X25zO1xuIFxuIFx0LyogSW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgKi9cbkBAIC03NTEsNiArNzY5LDggQEAgc3RydWN0IG1hbmFfcXVlcnlfZGV2aWNlX2NmZ19yZXEge1xuIFx0dTMyIHJlc2VydmVkO1xuIH07IC8qIEhXIERBVEEgKi9cbiBcbisjZGVmaW5lIE1BTkFfUEZfRkxBR18xX0NRRV84X0NPQUxFU0NJTkdfU1VQUE9SVEVEIEJJVCg1KVxuK1xuIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVzcCB7XG4gXHRzdHJ1Y3QgZ2RtYV9yZXNwX2hkciBoZHI7XG4gXG5AQCAtOTg2LDcgKzEwMDYsMTAgQEAgc3RydWN0IG1hbmFfY2ZnX3J4X3N0ZWVyX3JlcV92MiB7XG4gXHRtYW5hX2hhbmRsZV90IGRlZmF1bHRfcnhvYmo7XG4gXHR1OCBoYXNoa2V5W01BTkFfSEFTSF9LRVlfU0laRV07XG4gXHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XG4tXHR1OCByZXNlcnZlZDJbN107XG4rXHR1OCByZXNlcnZlZDJbM107XG4rXHR1MTYgcnNzX2hhc2hfdHlwZXM7XG4rXHR1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlOyAvKiB2NSBtZXNzYWdlICovXG4rXHR1OCByZXNlcnZlZDM7XG4gXHRtYW5hX2hhbmRsZV90IGluZGlyX3RhYltdIF9fY291bnRlZF9ieShudW1faW5kaXJfZW50cmllcyk7XG4gfTsgLyogSFcgREFUQSAqL1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6MzY6NTEuMTM0NDI3MDM5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI3NTg5NjkwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BTkEgRHJpdmVyIFBhdGNoIGZvciBUZXN0YWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBNaWNyb3NvZnQgTUFOQSBkcml2ZXIsIHNwZWNpZmljYWxseSBhZGRpbmcgc3VwcG9ydCBmb3IgQ1FFIHg4IGNvYWxlc2Npbmcg4oCTIDgtcGFja2V0IG1vZGUg4oCTIHdoaWNoIGlzIGEgcHJldHR5IGludGVyZXN0aW5nIG9wdGltaXphdGlvbi4gSXQgbG9va3MgbGlrZSBpdCB0b3VjaGVzIHNldmVyYWwgY29yZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBkcml2ZXI6IGBtYW5hX2dkX3F1ZXJ5X2RldmljZV9jZmdgLCBgbWFuYV9jZmdfdnBvcnRfc3RlZXJpbmdgLCB0aGUgUlggcGF0aCB3aXRoIGBtYW5hX3J4X3NrYmAgYW5kIGBtYW5hX3Byb2Nlc3NfcnhfY3FlYCwgcGx1cyBwcm9iZSBhbmQgZXRodG9vbCBmdW5jdGlvbmFsaXR5LiBUaGUgcGF0aCBwb2ludHMgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2AsIHdoaWNoIHNlZW1zIHN0YW5kYXJkIGVub3VnaC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFsd2F5cywgXCJDYW4gSSB0ZXN0IHRoaXMgd2l0aG91dCBuZWVkaW5nIGEgc3BlY2lhbGl6ZWQgc2V0dXA/XCIgSSBuZWVkIHRvIHZlcmlmeSBpZiB0aGlzIGRyaXZlciBpcyB0ZXN0YWJsZSBpbiBRRU1VLiBHaXZlbiB0aGF0IHRoZSBNQU5BIGlzIGEgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgYW5kIHRoZXJlZm9yZSBhIFBDSSBkZXZpY2UsIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBpcyB0aGUgTUFOQSBkZXZpY2UgYWN0dWFsbHkgKmVtdWxhdGVkKiBpbiBRRU1VPyBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIHRoZXJlJ3MgYW55IG1lbnRpb24gb2YgXCJtYW5hXCIgaW4gUUVNVSdzIGRvY3VtZW50YXRpb24gb3IgY29kZSwgb3IgaWYgdGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGNhcmRzIG9yIGFuIEF6dXJlIFZNIGVudmlyb25tZW50LlxuXG5SaWdodCwgTUFOQSBpcyBBenVyZSdzIGN1c3RvbSBTbWFydE5JQy9TUi1JT1YgZGV2aWNlLiBBcyBJIGV4cGVjdGVkLCBpdCdzIG5vdCB0aGUga2luZCBvZiB0aGluZyB0aGF0J3MgZ2VuZXJhbGx5IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZSBpbnN0cnVjdGlvbnMgZG8gbWVudGlvbiBhIHNwZWNpZmljIGNyaXRlcmlvbiBmb3Igd2hlbiBhIHBhdGNoICpzaG91bGRuJ3QqIGJlIGNvbnNpZGVyZWQgd29ydGggZnV6emluZy4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIFwiQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VXCIuXG5cblNvIGxldCdzIHNlZSBpZiBNQU5BIGZpdHMgdGhpcyBkZXNjcmlwdGlvbi4gTUFOQSBpcyBpbmRlZWQgYSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyLCBhbmQgaXQgaXMgYSBQQ0llIGRldmljZS4gVGh1cywgdGhlIGNydWNpYWwgcXVlc3Rpb24gcmVtYWluczogaXMgTUFOQSBlbXVsYXRlZCBpbiBRRU1VPyBBbmQgYXMgZmFyIGFzIEkgY2FuIHRlbGwsIHRoZSBhbnN3ZXIgaXMgbm8uIEkgbmVlZCB0byBleHBsaWNpdGx5IGNvbmZpcm0gdGhpcyDigJMgdGhhdCB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBlaXRoZXIgaW4gdGhlIGtlcm5lbCBvciBRRU1VIGl0c2VsZi4gSSdsbCBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoYXQgbm8gc3VwcG9ydGluZyBlbXVsYXRpb24gZXhpc3RzLiBJZiBpdCdzIHB1cmUgaGFyZHdhcmUsIHdlJ2xsIG5lZWQgYSBwaHlzaWNhbCBBenVyZSBlbnZpcm9ubWVudCB0byBkbyBtZWFuaW5nZnVsIHRlc3RpbmcsIHdoaWNoIGltcGFjdHMgb3VyIHRlc3RhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjAxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6MzY6NTkuNDEwMzI3NzE0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NTU2NTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hbmFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzYzOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvTWFrZWZpbGUtNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NSUNST1NPRlRfTUFOQSkgKz0gbWFuYS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvTWFrZWZpbGU6NjptYW5hLW9ianMgOj0gZ2RtYV9tYWluLm8gc2htX2NoYW5uZWwubyBod19jaGFubmVsLm8gbWFuYV9lbi5vIG1hbmFfZXRodG9vbC5vIG1hbmFfYnBmLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE1OiNpbmNsdWRlIFxcdTAwM2NuZXQvbWFuYS9tYW5hLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTY6I2luY2x1ZGUgXFx1MDAzY25ldC9tYW5hL2h3X2NoYW5uZWwuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxODpzdHJ1Y3QgZGVudHJ5ICptYW5hX2RlYnVnZnNfcm9vdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMDpzdHJ1Y3QgbWFuYV9kZXZfcmVjb3Zlcnkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxLVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI2OnN0YXRpYyBzdHJ1Y3QgbWFuYV9kZXZfcmVjb3Zlcnlfd29yayB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjctXFx0c3RydWN0IGxpc3RfaGVhZCBkZXZfbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMxLVxcdHNwaW5sb2NrX3QgbG9jaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozMjp9IG1hbmFfZGV2X3JlY292ZXJ5X3dvcms7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzQ6c3RhdGljIHUzMiBtYW5hX2dkX3IzMihzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnLCB1NjQgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM5OnN0YXRpYyB1NjQgbWFuYV9nZF9yNjQoc3RydWN0IGdkbWFfY29udGV4dCAqZywgdTY0IG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0NDpzdGF0aWMgaW50IG1hbmFfZ2RfaW5pdF9wZl9yZWdzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjUxOlxcdGdjLVxcdTAwM2VkYl9wYWdlX3NpemUgPSBtYW5hX2dkX3IzMihnYywgR0RNQV9QRl9SRUdfREJfUEFHRV9TSVpFKSBcXHUwMDI2IDB4RkZGRjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1MzpcXHQvKiBtYW5hX2dkX3JpbmdfZG9vcmJlbGwoKSBhY2Nlc3NlcyBvZmZzZXRzIHVwIHRvIERPT1JCRUxMX09GRlNFVF9FUVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU0LVxcdCAqICgweEZGOCkgKyA4IGJ5dGVzID0gNEtCIHdpdGhpbiBlYWNoIGRvb3JiZWxsIHBhZ2UsIHNvIHRoZSBwYWdlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2NDpcXHRnYy1cXHUwMDNlZGJfcGFnZV9vZmYgPSBtYW5hX2dkX3I2NChnYywgR0RNQV9QRl9SRUdfREJfUEFHRV9PRkYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Nzc6XFx0c3Jpb3ZfYmFzZV9vZmYgPSBtYW5hX2dkX3I2NChnYywgR0RNQV9TUklPVl9SRUdfQ0ZHX0JBU0VfT0ZGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03OC1cXHRpZiAoc3Jpb3ZfYmFzZV9vZmYgXFx1MDAzZT0gZ2MtXFx1MDAzZWJhcjBfc2l6ZSB8fFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODgtXFx0cmVtYWluaW5nX2JhcnNpemUgPSBnYy1cXHUwMDNlYmFyMF9zaXplIC0gc3Jpb3ZfYmFzZV9vZmY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6ODk6XFx0c3Jpb3Zfc2htX29mZiA9IG1hbmFfZ2RfcjY0KGdjLCBzcmlvdl9iYXNlX29mZiArIEdETUFfUEZfUkVHX1NITV9PRkYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTkwLVxcdGlmIChzcmlvdl9zaG1fb2ZmIFxcdTAwM2U9IHJlbWFpbmluZ19iYXJzaXplIHx8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTA0OnN0YXRpYyBpbnQgbWFuYV9nZF9pbml0X3ZmX3JlZ3Moc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDk6XFx0Z2MtXFx1MDAzZWRiX3BhZ2Vfc2l6ZSA9IG1hbmFfZ2RfcjMyKGdjLCBHRE1BX1JFR19EQl9QQUdFX1NJWkUpIFxcdTAwMjYgMHhGRkZGO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTE6XFx0LyogbWFuYV9nZF9yaW5nX2Rvb3JiZWxsKCkgYWNjZXNzZXMgb2Zmc2V0cyB1cCB0byBET09SQkVMTF9PRkZTRVRfRVFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTItXFx0ICogKDB4RkY4KSArIDggYnl0ZXMgPSA0S0Igd2l0aGluIGVhY2ggZG9vcmJlbGwgcGFnZSwgc28gdGhlIHBhZ2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjI6XFx0Z2MtXFx1MDAzZWRiX3BhZ2Vfb2ZmID0gbWFuYV9nZF9yNjQoZ2MsIEdETUFfUkVHX0RCX1BBR0VfT0ZGU0VUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTM1OlxcdHNobV9vZmYgPSBtYW5hX2dkX3I2NChnYywgR0RNQV9SRUdfU0hNX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTM2LVxcdGlmIChzaG1fb2ZmIFxcdTAwM2U9IGdjLVxcdTAwM2ViYXIwX3NpemUgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxNTA6c3RhdGljIGludCBtYW5hX2dkX2luaXRfcmVnaXN0ZXJzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNTQtXFx0aWYgKGdjLVxcdTAwM2Vpc19wZiBcXHUwMDI2XFx1MDAyNiAhZ2MtXFx1MDAzZWlzX3BmMilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxNTU6XFx0XFx0cmV0dXJuIG1hbmFfZ2RfaW5pdF9wZl9yZWdzKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE1Ni1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTU3OlxcdFxcdHJldHVybiBtYW5hX2dkX2luaXRfdmZfcmVncyhwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTYwLS8qIFN1cHByZXNzIGxvZ2dpbmcgd2hlbiB3ZSBzZXQgdGltZW91dCB0byB6ZXJvICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTYxOmJvb2wgbWFuYV9uZWVkX2xvZyhzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgaW50IGVycilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE3ODpzdGF0aWMgaW50IG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTkyLVxcdCAqIE1TSS1YIGFsbG9jYXRpb247IG9uIG5vbi1keW4gcGxhdGZvcm1zIG1zaV9zaGFyaW5nIGlzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTkzOlxcdCAqIHVuY29uZGl0aW9uYWxseSB0cnVlIChzZXQgaW4gbWFuYV9nZF9zZXR1cF9od2NfaXJxcykuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk0LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE5ODpcXHRtYW5hX2dkX2luaXRfcmVxX2hkcihcXHUwMDI2cmVxLmhkciwgR0RNQV9RVUVSWV9NQVhfUkVTT1VSQ0VTLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5OS1cXHRcXHRcXHQgICAgIHNpemVvZihyZXEpLCBzaXplb2YocmVzcCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMDE6XFx0ZXJyID0gbWFuYV9nZF9zZW5kX3JlcXVlc3QoZ2MsIHNpemVvZihyZXEpLCBcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIFxcdTAwMjZyZXNwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMDItXFx0aWYgKGVyciB8fCByZXNwLmhkci5zdGF0dXMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDY6XFx0ZGVidWdmc19jcmVhdGVfdTMyKFxcXCJudW1fbXNpeF91c2FibGVcXFwiLCAwNDAwLCBnYy1cXHUwMDNlbWFuYV9wY2lfZGVidWdmcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDctXFx0XFx0XFx0ICAgXFx1MDAyNmdjLVxcdTAwM2VudW1fbXNpeF91c2FibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI0ODpcXHRkZWJ1Z2ZzX2NyZWF0ZV91MzIoXFxcIm1heF9udW1fcXVldWVzXFxcIiwgMDQwMCwgZ2MtXFx1MDAzZW1hbmFfcGNpX2RlYnVnZnMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5LVxcdFxcdFxcdCAgIFxcdTAwMjZnYy1cXHUwMDNlbWF4X251bV9xdWV1ZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTE6XFx0ZXJyID0gbWFuYV9nZF9xdWVyeV9kZXZpY2VfY2ZnKGdjLCBNQU5BX01BSk9SX1ZFUlNJT04sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUyLVxcdFxcdFxcdFxcdCAgICAgICBNQU5BX01JTk9SX1ZFUlNJT04sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjYzOlxcdC8qIENhcCB0byB0aGUgc2FtZSBsaW1pdCB1c2VkIGJ5IG1hbmFfcHJvYmUoKSBmb3IgcG9ydCBpbnN0YW50aWF0aW9uLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI2NC1cXHQgKiBzbyBNU0ktWCBhbmQgcXVldWUgYnVkZ2V0aW5nIG1hdGNoZXMgdGhlIGFjdHVhbCBwb3J0IGNvdW50Llxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjMwMDpzdGF0aWMgaW50IG1hbmFfZ2RfcXVlcnlfaHdjX3RpbWVvdXQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUzMiAqdGltZW91dF92YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozMDc6XFx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXFx1MDAyNnJlcS5oZHIsIEdETUFfUVVFUllfSFdDX1RJTUVPVVQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzA4LVxcdFxcdFxcdCAgICAgc2l6ZW9mKHJlcSksIHNpemVvZihyZXNwKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzA5LVxcdHJlcS50aW1lb3V0X21zID0gKnRpbWVvdXRfdmFsO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjMxMDpcXHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgc2l6ZW9mKHJlcSksIFxcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgXFx1MDAyNnJlc3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMxMS1cXHRpZiAoZXJyIHx8IHJlc3AuaGRyLnN0YXR1cylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozMTk6c3RhdGljIGludCBtYW5hX2dkX2RldGVjdF9kZXZpY2VzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMyMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzMwOlxcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFxcdTAwMjZyZXEuaGRyLCBHRE1BX0xJU1RfREVWSUNFUywgc2l6ZW9mKHJlcSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzMxLVxcdFxcdFxcdCAgICAgc2l6ZW9mKHJlc3ApKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzMzOlxcdGVyciA9IG1hbmFfZ2Rfc2VuZF9yZXF1ZXN0KGdjLCBzaXplb2YocmVxKSwgXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcXHUwMDI2cmVzcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzM0LVxcdGlmIChlcnIgfHwgcmVzcC5oZHIuc3RhdHVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzUxOlxcdFxcdC8qIEhXQyBpcyBhbHJlYWR5IGRldGVjdGVkIGluIG1hbmFfaHdjX2NyZWF0ZV9jaGFubmVsKCkuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzUyLVxcdFxcdGlmIChkZXZfdHlwZSA9PSBHRE1BX0RFVklDRV9IV0MpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNTUtXFx0XFx0aWYgKGRldl90eXBlID09IEdETUFfREVWSUNFX01BTkEpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozNTY6XFx0XFx0XFx0Z2MtXFx1MDAzZW1hbmEuZ2RtYV9jb250ZXh0ID0gZ2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzU3OlxcdFxcdFxcdGdjLVxcdTAwM2VtYW5hLmRldl9pZCA9IGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNTgtXFx0XFx0fSBlbHNlIGlmIChkZXZfdHlwZSA9PSBHRE1BX0RFVklDRV9NQU5BX0lCKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzU5OlxcdFxcdFxcdGdjLVxcdTAwM2VtYW5hX2liLmRldl9pZCA9IGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozNjA6XFx0XFx0XFx0Z2MtXFx1MDAzZW1hbmFfaWIuZ2RtYV9jb250ZXh0ID0gZ2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzYxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozNjQ6XFx0cmV0dXJuIGdjLVxcdTAwM2VtYW5hLmRldl9pZC50eXBlID09IDAgPyAtRU5PREVWIDogMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNjUtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozNjc6aW50IG1hbmFfZ2Rfc2VuZF9yZXF1ZXN0KHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1MzIgcmVxX2xlbiwgY29uc3Qgdm9pZCAqcmVxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM2OC1cXHRcXHRcXHQgdTMyIHJlc3BfbGVuLCB2b2lkICpyZXNwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM3MjpcXHRyZXR1cm4gbWFuYV9od2Nfc2VuZF9yZXF1ZXN0KGh3YywgcmVxX2xlbiwgcmVxLCByZXNwX2xlbiwgcmVzcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzczLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozNzQ6RVhQT1JUX1NZTUJPTF9OUyhtYW5hX2dkX3NlbmRfcmVxdWVzdCwgXFxcIk5FVF9NQU5BXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM3NjppbnQgbWFuYV9nZF9hbGxvY19tZW1vcnkoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHVuc2lnbmVkIGludCBsZW5ndGgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzc3LVxcdFxcdFxcdCBzdHJ1Y3QgZ2RtYV9tZW1faW5mbyAqZ21pKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM5Nzp2b2lkIG1hbmFfZ2RfZnJlZV9tZW1vcnkoc3RydWN0IGdkbWFfbWVtX2luZm8gKmdtaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjQwMzpzdGF0aWMgaW50IG1hbmFfZ2RfY3JlYXRlX2h3X2VxKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQwNC1cXHRcXHRcXHRcXHRzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NDEzOlxcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFxcdTAwMjZyZXEuaGRyLCBHRE1BX0NSRUFURV9RVUVVRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MTQtXFx0XFx0XFx0ICAgICBzaXplb2YocmVxKSwgc2l6ZW9mKHJlc3ApKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0MjU6XFx0ZXJyID0gbWFuYV9nZF9zZW5kX3JlcXVlc3QoZ2MsIHNpemVvZihyZXEpLCBcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIFxcdTAwMjZyZXNwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MjYtXFx0aWYgKGVyciB8fCByZXNwLmhkci5zdGF0dXMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0Mzg6c3RhdGljIGludCBtYW5hX2dkX2Rpc2FibGVfcXVldWUoc3RydWN0IGdkbWFfcXVldWUgKnF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NDQ3OlxcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFxcdTAwMjZyZXEuaGRyLCBHRE1BX0RJU0FCTEVfUVVFVUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDQ4LVxcdFxcdFxcdCAgICAgc2l6ZW9mKHJlcSksIHNpemVvZihyZXNwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NDU1OlxcdGVyciA9IG1hbmFfZ2Rfc2VuZF9yZXF1ZXN0KGdjLCBzaXplb2YocmVxKSwgXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcXHUwMDI2cmVzcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDU2LVxcdGlmIChlcnIgfHwgcmVzcC5oZHIuc3RhdHVzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NDU3OlxcdFxcdGlmIChtYW5hX25lZWRfbG9nKGdjLCBlcnIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQ1OC1cXHRcXHRcXHRkZXZfZXJyKGdjLVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gZGlzYWJsZSBxdWV1ZTogJWQsIDB4JXhcXFxcblxcXCIsIGVycixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQ3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0NzI6c3RhdGljIHZvaWQgbWFuYV9nZF9yaW5nX2Rvb3JiZWxsKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1MzIgZGJfaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDczLVxcdFxcdFxcdFxcdCAgZW51bSBnZG1hX3F1ZXVlX3R5cGUgcV90eXBlLCB1MzIgcWlkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjUzMjp2b2lkIG1hbmFfZ2Rfd3FfcmluZ19kb29yYmVsbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgc3RydWN0IGdkbWFfcXVldWUgKnF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTUzMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01MzYtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NTM3OlxcdG1hbmFfZ2RfcmluZ19kb29yYmVsbChnYywgcXVldWUtXFx1MDAzZWdkbWFfZGV2LVxcdTAwM2Vkb29yYmVsbCwgcXVldWUtXFx1MDAzZXR5cGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTM4LVxcdFxcdFxcdCAgICAgIHF1ZXVlLVxcdTAwM2VpZCwgcXVldWUtXFx1MDAzZWhlYWQgKiBHRE1BX1dRRV9CVV9TSVpFLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01MzktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjU0MDpFWFBPUlRfU1lNQk9MX05TKG1hbmFfZ2Rfd3FfcmluZ19kb29yYmVsbCwgXFxcIk5FVF9NQU5BXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjU0Mjp2b2lkIG1hbmFfZ2RfcmluZ19jcShzdHJ1Y3QgZ2RtYV9xdWV1ZSAqY3EsIHU4IGFybV9iaXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1NTA6XFx0bWFuYV9nZF9yaW5nX2Rvb3JiZWxsKGdjLCBjcS1cXHUwMDNlZ2RtYV9kZXYtXFx1MDAzZWRvb3JiZWxsLCBjcS1cXHUwMDNldHlwZSwgY3EtXFx1MDAzZWlkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU1MS1cXHRcXHRcXHQgICAgICBoZWFkLCBhcm1fYml0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NTItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjU1MzpFWFBPUlRfU1lNQk9MX05TKG1hbmFfZ2RfcmluZ19jcSwgXFxcIk5FVF9NQU5BXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjU1NTp2b2lkIG1hbmFfZ2RfcmluZ19kaW0oc3RydWN0IGdkbWFfcXVldWUgKmNxLCB1MzIgbW9kX3VzZWMsIGJvb2wgbW9kX3VzZWNfdmxkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU1Ni1cXHRcXHQgICAgICB1MzIgbW9kX2NvbXBzLCBib29sIG1vZF9jb21wc192bGQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NTY3OlxcdG1hbmFfZ2RfcmluZ19kb29yYmVsbChnYywgY3EtXFx1MDAzZWdkbWFfZGV2LVxcdTAwM2Vkb29yYmVsbCwgR0RNQV9ESU0sIGNxLVxcdTAwM2VpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NjgtXFx0XFx0XFx0ICAgICAgZGltX3ZhbCwgbW9kX2NvbXBzX3ZsZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTY5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1NzA6RVhQT1JUX1NZTUJPTF9OUyhtYW5hX2dkX3JpbmdfZGltLCBcXFwiTkVUX01BTkFcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NTc0OnN0YXRpYyB2b2lkIG1hbmFfc2Vydl9yZXNjYW4oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1OTM6c3RhdGljIHZvaWQgbWFuYV9zZXJ2X2ZwZ2Eoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTYyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2MjE6c3RhdGljIHZvaWQgbWFuYV9zZXJ2X3Jlc2V0KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTYyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02MjktXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiTUFOQSBzZXJ2aWNlOiBHQyBub3Qgc2V0dXAsIHJlc2Nhbm5pbmdcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjYzMDpcXHRcXHRtYW5hX3NlcnZfcmVzY2FuKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTYzMS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NjQ1OlxcdG1hbmFfZ2Rfc3VzcGVuZChwZGV2LCBQTVNHX1NVU1BFTkQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2NDk6XFx0cmV0ID0gbWFuYV9nZF9yZXN1bWUocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjUwLVxcdGlmIChyZXQgPT0gLUVUSU1FRE9VVCB8fCByZXQgPT0gLUVQUk9UTykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjUyLVxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIk1BTkEgc2VydmljZTogcmVzdW1lIGZhaWxlZCwgcmVzY2FubmluZ1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NjUzOlxcdFxcdG1hbmFfc2Vydl9yZXNjYW4ocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjU0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2NjY6c3RhdGljIHZvaWQgbWFuYV9kb19zZXJ2aWNlKGVudW0gZ2RtYV9lcWVfdHlwZSB0eXBlLCBzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02Njcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjY5LVxcdGNhc2UgR0RNQV9FUUVfSFdDX0ZQR0FfUkVDT05GSUc6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NjcwOlxcdFxcdG1hbmFfc2Vydl9mcGdhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY3MS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY3My1cXHRjYXNlIEdETUFfRVFFX0hXQ19SRVNFVF9SRVFVRVNUOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjY3NDpcXHRcXHRtYW5hX3NlcnZfcmVzZXQocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjc1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjY4MzpzdGF0aWMgdm9pZCBtYW5hX3JlY292ZXJ5X2RlbGF5ZWRfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjg0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2ODU6XFx0c3RydWN0IG1hbmFfZGV2X3JlY292ZXJ5X3dvcmsgKndvcms7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Njg2OlxcdHN0cnVjdCBtYW5hX2Rldl9yZWNvdmVyeSAqZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY4Ny1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2ODk6XFx0d29yayA9IGNvbnRhaW5lcl9vZih3LCBzdHJ1Y3QgbWFuYV9kZXZfcmVjb3Zlcnlfd29yaywgd29yay53b3JrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02OTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02OTQtXFx0XFx0ZGV2ID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2d29yay1cXHUwMDNlZGV2X2xpc3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Njk1OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbWFuYV9kZXZfcmVjb3ZlcnksIGxpc3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY5Ni1cXHRcXHRsaXN0X2RlbChcXHUwMDI2ZGV2LVxcdTAwM2VsaXN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2OTk6XFx0XFx0bWFuYV9kb19zZXJ2aWNlKGRldi1cXHUwMDNldHlwZSwgZGV2LVxcdTAwM2VwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MDAtXFx0XFx0cGNpX2Rldl9wdXQoZGV2LVxcdTAwM2VwZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3MDk6c3RhdGljIHZvaWQgbWFuYV9zZXJ2X2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NzExOlxcdHN0cnVjdCBtYW5hX3NlcnZfd29yayAqbW5zX3drO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxMi1cXHRzdHJ1Y3QgcGNpX2RldiAqcGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NzE0OlxcdG1uc193ayA9IGNvbnRhaW5lcl9vZih3LCBzdHJ1Y3QgbWFuYV9zZXJ2X3dvcmssIHNlcnZfd29yayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzE1LVxcdHBkZXYgPSBtbnNfd2stXFx1MDAzZXBkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MTctXFx0aWYgKHBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NzE4OlxcdFxcdG1hbmFfZG9fc2VydmljZShtbnNfd2stXFx1MDAzZXR5cGUsIHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3MjU6aW50IG1hbmFfc2NoZWR1bGVfc2Vydl93b3JrKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCBlbnVtIGdkbWFfZXFlX3R5cGUgdHlwZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MjYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjcyNzpcXHRzdHJ1Y3QgbWFuYV9zZXJ2X3dvcmsgKm1uc193aztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03NTAtXFx0cGNpX2Rldl9nZXQobW5zX3drLVxcdTAwM2VwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3NTE6XFx0SU5JVF9XT1JLKFxcdTAwMjZtbnNfd2stXFx1MDAzZXNlcnZfd29yaywgbWFuYV9zZXJ2X2Z1bmMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTc1Mi1cXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZtbnNfd2stXFx1MDAzZXNlcnZfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NzU2OnN0YXRpYyB2b2lkIG1hbmFfZ2RfcHJvY2Vzc19lcWUoc3RydWN0IGdkbWFfcXVldWUgKmVxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTc1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04MTktXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjgyMDpcXHRcXHRtYW5hX3NjaGVkdWxlX3NlcnZfd29yayhnYywgdHlwZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODIxLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjgyODpzdGF0aWMgdm9pZCBtYW5hX2dkX3Byb2Nlc3NfZXFfZXZlbnRzKHZvaWQgKmFyZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04Mjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjg3MDpcXHRcXHRtYW5hX2dkX3Byb2Nlc3NfZXFlKGVxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04NzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6ODc3OlxcdG1hbmFfZ2RfcmluZ19kb29yYmVsbChnYywgZXEtXFx1MDAzZWdkbWFfZGV2LVxcdTAwM2Vkb29yYmVsbCwgZXEtXFx1MDAzZXR5cGUsIGVxLVxcdTAwM2VpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04NzgtXFx0XFx0XFx0ICAgICAgaGVhZCwgU0VUX0FSTV9CSVQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjg4MTpzdGF0aWMgaW50IG1hbmFfZ2RfcmVnaXN0ZXJfaXJxKHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04ODItXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTkwNC1cXHRxdWV1ZS1cXHUwMDNlZXEubXNpeF9pbmRleCA9IG1zaV9pbmRleDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5MDU6XFx0LyogVGhlIGNhbGxlciBhY3F1aXJlZCBhIEdJQyByZWZlcmVuY2UgdmlhIG1hbmFfZ2RfZ2V0X2dpYygpLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjkwNjpcXHQgKiBUaGF0IHJlZmNvdW50IHByZXZlbnRzIG1hbmFfZ2RfcHV0X2dpYygpIGZyb20gZXJhc2luZyB0aGlzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTA3LVxcdCAqIGlycV9jb250ZXh0cyBlbnRyeSBjb25jdXJyZW50bHkuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6OTIwOnN0YXRpYyB2b2lkIG1hbmFfZ2RfZGVyZWdpc3Rlcl9pcnEoc3RydWN0IGdkbWFfcXVldWUgKnF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTkyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6OTM2OlxcdC8qIFRoZSBjYWxsZXIgcmVsZWFzZXMgdGhlIEdJQyByZWZlcmVuY2UgdmlhIG1hbmFfZ2RfcHV0X2dpYygpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTM3LVxcdCAqIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4gVGhlIHJlZmNvdW50IGd1YXJhbnRlZXMgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjk1NjppbnQgbWFuYV9nZF90ZXN0X2VxKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqZXEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTk2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5Njg6XFx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXFx1MDAyNnJlcS5oZHIsIEdETUFfR0VORVJBVEVfVEVTVF9FUUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTY5LVxcdFxcdFxcdCAgICAgc2l6ZW9mKHJlcSksIHNpemVvZihyZXNwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6OTc0OlxcdGVyciA9IG1hbmFfZ2Rfc2VuZF9yZXF1ZXN0KGdjLCBzaXplb2YocmVxKSwgXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcXHUwMDI2cmVzcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTc1LVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5NzY6XFx0XFx0aWYgKG1hbmFfbmVlZF9sb2coZ2MsIGVycikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTc3LVxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwidGVzdF9lcSBmYWlsZWQ6ICVkXFxcXG5cXFwiLCBlcnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDA1OnN0YXRpYyB2b2lkIG1hbmFfZ2RfZGVzdHJveV9lcShzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgYm9vbCBmbHVzaF9ldmVuZXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwMDYtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwMTAtXFx0aWYgKGZsdXNoX2V2ZW5ldHMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDExOlxcdFxcdGVyciA9IG1hbmFfZ2RfdGVzdF9lcShnYywgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwMTI6XFx0XFx0aWYgKGVyciBcXHUwMDI2XFx1MDAyNiBtYW5hX25lZWRfbG9nKGdjLCBlcnIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwMTMtXFx0XFx0XFx0ZGV2X3dhcm4oZ2MtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBmbHVzaCBFUTogJWRcXFxcblxcXCIsIGVycik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwMTY6XFx0bWFuYV9nZF9kZXJlZ2lzdGVyX2lycShxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDE4LVxcdGlmIChxdWV1ZS1cXHUwMDNlZXEuZGlzYWJsZV9uZWVkZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTAxOTpcXHRcXHRtYW5hX2dkX2Rpc2FibGVfcXVldWUocXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwMjAtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTAyMjpzdGF0aWMgaW50IG1hbmFfZ2RfY3JlYXRlX2VxKHN0cnVjdCBnZG1hX2RldiAqZ2QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAyMy1cXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBnZG1hX3F1ZXVlX3NwZWMgKnNwZWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwNDI6XFx0ZXJyID0gbWFuYV9nZF9yZWdpc3Rlcl9pcnEocXVldWUsIHNwZWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwNDMtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA1My1cXHRpZiAoY3JlYXRlX2h3cSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwNTQ6XFx0XFx0ZXJyID0gbWFuYV9nZF9jcmVhdGVfaHdfZXEoZ2MsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDU1LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwNTg6XFx0XFx0ZXJyID0gbWFuYV9nZF90ZXN0X2VxKGdjLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA1OS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA2NS1cXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBjcmVhdGUgRVE6ICVkXFxcXG5cXFwiLCBlcnIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwNjY6XFx0bWFuYV9nZF9kZXN0cm95X2VxKGdjLCBmYWxzZSwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwNjctXFx0cXVldWUtXFx1MDAzZWVxLm1zaXhfaW5kZXggPSBJTlZBTElEX1BDSV9NU0lYX0lOREVYO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDcxOnN0YXRpYyB2b2lkIG1hbmFfZ2RfY3JlYXRlX2NxKGNvbnN0IHN0cnVjdCBnZG1hX3F1ZXVlX3NwZWMgKnNwZWMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA3Mi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwODI6c3RhdGljIHZvaWQgbWFuYV9nZF9kZXN0cm95X2NxKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwODMtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTA5NjppbnQgbWFuYV9nZF9jcmVhdGVfaHdjX3F1ZXVlKHN0cnVjdCBnZG1hX2RldiAqZ2QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA5Ny1cXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBnZG1hX3F1ZXVlX3NwZWMgKnNwZWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTA5LVxcdGdtaSA9IFxcdTAwMjZxdWV1ZS1cXHUwMDNlbWVtX2luZm87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTExMDpcXHRlcnIgPSBtYW5hX2dkX2FsbG9jX21lbW9yeShnYywgc3BlYy1cXHUwMDNlcXVldWVfc2l6ZSwgZ21pKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTExLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMjUtXFx0aWYgKHNwZWMtXFx1MDAzZXR5cGUgPT0gR0RNQV9FUSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTI2OlxcdFxcdGVyciA9IG1hbmFfZ2RfY3JlYXRlX2VxKGdkLCBzcGVjLCBmYWxzZSwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMjctXFx0ZWxzZSBpZiAoc3BlYy1cXHUwMDNldHlwZSA9PSBHRE1BX0NRKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExMjg6XFx0XFx0bWFuYV9nZF9jcmVhdGVfY3Eoc3BlYywgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTM3LVxcdFxcdHNwZWMtXFx1MDAzZXR5cGUsIHNwZWMtXFx1MDAzZXF1ZXVlX3NpemUsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTEzODpcXHRtYW5hX2dkX2ZyZWVfbWVtb3J5KGdtaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTEzOS1mcmVlX3E6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExNDQ6aW50IG1hbmFfZ2RfZGVzdHJveV9kbWFfcmVnaW9uKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1NjQgZG1hX3JlZ2lvbl9oYW5kbGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTE0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExNTM6XFx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXFx1MDAyNnJlcS5oZHIsIEdETUFfREVTVFJPWV9ETUFfUkVHSU9OLCBzaXplb2YocmVxKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTU0LVxcdFxcdFxcdCAgICAgc2l6ZW9mKHJlc3ApKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTE1NzpcXHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgc2l6ZW9mKHJlcSksIFxcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgXFx1MDAyNnJlc3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNTgtXFx0aWYgKGVyciB8fCByZXNwLmhkci5zdGF0dXMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTU5OlxcdFxcdGlmIChtYW5hX25lZWRfbG9nKGdjLCBlcnIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNjAtXFx0XFx0XFx0ZGV2X2VycihnYy1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGRlc3Ryb3kgRE1BIHJlZ2lvbjogJWQsIDB4JXhcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTY2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTY3OkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF9kZXN0cm95X2RtYV9yZWdpb24sIFxcXCJORVRfTUFOQVxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTE2OTpzdGF0aWMgaW50IG1hbmFfZ2RfY3JlYXRlX2RtYV9yZWdpb24oc3RydWN0IGdkbWFfZGV2ICpnZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTcwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGdkbWFfbWVtX2luZm8gKmdtaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTE5NzpcXHRtYW5hX2dkX2luaXRfcmVxX2hkcihcXHUwMDI2cmVxLVxcdTAwM2VoZHIsIEdETUFfQ1JFQVRFX0RNQV9SRUdJT04sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTE5OC1cXHRcXHRcXHQgICAgIHJlcV9tc2dfc2l6ZSwgc2l6ZW9mKHJlc3ApKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTIwODpcXHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgcmVxX21zZ19zaXplLCByZXEsIHNpemVvZihyZXNwKSwgXFx1MDAyNnJlc3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMDktXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTIzMjppbnQgbWFuYV9nZF9jcmVhdGVfbWFuYV9lcShzdHJ1Y3QgZ2RtYV9kZXYgKmdkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMzMtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyNDgtXFx0Z21pID0gXFx1MDAyNnF1ZXVlLVxcdTAwM2VtZW1faW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjQ5OlxcdGVyciA9IG1hbmFfZ2RfYWxsb2NfbWVtb3J5KGdjLCBzcGVjLVxcdTAwM2VxdWV1ZV9zaXplLCBnbWkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyNTAtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjU2OlxcdGVyciA9IG1hbmFfZ2RfY3JlYXRlX2RtYV9yZWdpb24oZ2QsIGdtaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI1Ny1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjY4OlxcdGVyciA9IG1hbmFfZ2RfY3JlYXRlX2VxKGdkLCBzcGVjLCB0cnVlLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI2OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI3Ni1cXHRcXHRzcGVjLVxcdTAwM2V0eXBlLCBzcGVjLVxcdTAwM2VxdWV1ZV9zaXplLCBlcnIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEyNzc6XFx0bWFuYV9nZF9mcmVlX21lbW9yeShnbWkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyNzgtZnJlZV9xOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI4MS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTI4MjpFWFBPUlRfU1lNQk9MX05TKG1hbmFfZ2RfY3JlYXRlX21hbmFfZXEsIFxcXCJORVRfTUFOQVxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTI4NDppbnQgbWFuYV9nZF9jcmVhdGVfbWFuYV93cV9jcShzdHJ1Y3QgZ2RtYV9kZXYgKmdkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyODUtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzMDMtXFx0Z21pID0gXFx1MDAyNnF1ZXVlLVxcdTAwM2VtZW1faW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzA0OlxcdGVyciA9IG1hbmFfZ2RfYWxsb2NfbWVtb3J5KGdjLCBzcGVjLVxcdTAwM2VxdWV1ZV9zaXplLCBnbWkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzMDUtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzExOlxcdGVyciA9IG1hbmFfZ2RfY3JlYXRlX2RtYV9yZWdpb24oZ2QsIGdtaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMxMi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMyMy1cXHRpZiAoc3BlYy1cXHUwMDNldHlwZSA9PSBHRE1BX0NRKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEzMjQ6XFx0XFx0bWFuYV9nZF9jcmVhdGVfY3Eoc3BlYywgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzMjUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzMwLVxcdFxcdHNwZWMtXFx1MDAzZXR5cGUsIHNwZWMtXFx1MDAzZXF1ZXVlX3NpemUsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTMzMTpcXHRtYW5hX2dkX2ZyZWVfbWVtb3J5KGdtaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzMi1mcmVlX3E6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzM1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzM2OkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF9jcmVhdGVfbWFuYV93cV9jcSwgXFxcIk5FVF9NQU5BXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzM4OnZvaWQgbWFuYV9nZF9kZXN0cm95X3F1ZXVlKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcXVldWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzQzLVxcdGNhc2UgR0RNQV9FUTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzQ0OlxcdFxcdG1hbmFfZ2RfZGVzdHJveV9lcShnYywgcXVldWUtXFx1MDAzZWVxLmRpc2FibGVfbmVlZGVkLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTM0NS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzNDctXFx0Y2FzZSBHRE1BX0NROlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEzNDg6XFx0XFx0bWFuYV9nZF9kZXN0cm95X2NxKGdjLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTM0OS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTM2MzpcXHRtYW5hX2dkX2Rlc3Ryb3lfZG1hX3JlZ2lvbihnYywgZ21pLVxcdTAwM2VkbWFfcmVnaW9uX2hhbmRsZSk7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjM2OjU5LjQ2NTg4OTYwMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1OTMyOTA3ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTUFOQSBEcml2ZXIgQW5hbHlzaXMgZm9yIFdvcnRoRnV6emluZyBEZXRlcm1pbmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29kZSBpbiBxdWVzdGlvbiBpcyB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyBNQU5BIGhhcmR3YXJlIGVtdWxhdGVkIGluIHNvbWV0aGluZyBsaWtlIFFFTVU/IE5vLCB0aGF0J3Mgd3Jvbmc7IGl0J3MgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIuIEl0J3MgYSBwaHlzaWNhbC92aXJ0dWFsIGRldmljZSB0aGF0J3MgcGFydCBvZiB0aGUgQXp1cmUgaHlwZXJ2aXNvci4gU28sIGNhbiBpdCBldmVuIGJlIHRlc3RlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIG9yIFFFTVU/XG5cbldhaXQsIGhvbGQgb24uIFRoZSBwcm9tcHQgZnJvbSB0aGUgZnV6emVyIHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb25jZXJucyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBsaWtlIFNtYXJ0TklDIGRyaXZlcnMgdGhhdCAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFxuXG5SaWdodCwgTUFOQSBpcyBkZWZpbml0ZWx5IGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIG9yIHZpcnR1YWwgTklDIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBNaWNyb3NvZnQgQXp1cmUuIFNvLCBpcyBpdCB0ZXN0YWJsZSBpbiBRRU1VPyBEZWZpbml0ZWx5IG5vdC4gQW5kIGhvdyBhYm91dCBzeXprYWxsZXI/IFN5emthbGxlciBjYW4gcnVuIG9uIEdDRSBvciBRRU1VLCBidXQgR0NFIGRvZXNuJ3QgaGF2ZSBNQU5BIGhhcmR3YXJlLiBBenVyZSBWTXMgKmRvKiBoYXZlIE1BTkEgaGFyZHdhcmUuIElmIHN5emthbGxlciB3ZXJlIHRvIHJ1biBvbiBBenVyZSwgaXQgKmNvdWxkKiB0ZXN0IGl0LiBCdXQgc3l6a2FsbGVyIHVzdWFsbHkgcnVucyBvbiBHQ0Ugb3IgUUVNVSwgZG9lc24ndCBpdD9cblxuQWN0dWFsbHksIG5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBhbiBBenVyZSBiYWNrZW5kLCBidXQgdGhlIHN0YW5kYXJkIHN5emthbGxlciBpbnN0YW5jZXMgdGhhdCB0aGUgc3l6Ym90IHJ1bnMgb24gYXJlIG9uIEdDRS5cblxuT2theSwgYmFjayB0byB0aGUgcHJvbXB0OiBcIi4uLnJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIiBNQU5BIGlzIGEgUENJZSBkZXZpY2UuIEl0J3Mgbm90IGVtdWxhdGVkIGluICpzdGFuZGFyZCogUUVNVS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUsIGJ1dCBvdGhlcndpc2UsIGJhc2VkIG9uIHRoYXQsIGl0IHNlZW1zIHRvIG5vdCBiZSBXb3J0aEZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzODI3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjM3OjA4LjA1OTE4MjI0NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMyODYwMjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFuYV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MTc4PXN0YXRpYyBpbnQgbWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI2MzpcXHQvKiBDYXAgdG8gdGhlIHNhbWUgbGltaXQgdXNlZCBieSBtYW5hX3Byb2JlKCkgZm9yIHBvcnQgaW5zdGFudGlhdGlvbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjQtXFx0ICogc28gTVNJLVggYW5kIHF1ZXVlIGJ1ZGdldGluZyBtYXRjaGVzIHRoZSBhY3R1YWwgcG9ydCBjb3VudC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTIzMzE9c3RhdGljIGludCBtYW5hX2dkX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMzg3OlxcdGVyciA9IG1hbmFfcHJvYmUoXFx1MDAyNmdjLVxcdTAwM2VtYW5hLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM4OC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQyNS1cXHQgKiBIYXJkd2FyZSBjb3VsZCBiZSBpbiByZWNvdmVyeSBtb2RlIGFuZCB0aGUgSFdDIHJldHVybnMgVElNRURPVVQgb3JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDI2OlxcdCAqIEVQUk9UTyBmcm9tIG1hbmFfZ2Rfc2V0dXAoKSwgbWFuYV9wcm9iZSgpIG9yIG1hbmFfcmRtYV9wcm9iZSgpLCBvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0MjctXFx0ICogd2UgcmVjZWl2ZWQgYSBoYXJkd2FyZSByZXNldCBldmVudCBvdmVyIEhXQyBpbnRlcnJ1cHQuIEluIHRoaXMgY2FzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI0OTE9aW50IG1hbmFfZ2RfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTAwOlxcdGVyciA9IG1hbmFfcHJvYmUoXFx1MDAyNmdjLVxcdTAwM2VtYW5hLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTAxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9Mzc0NT1pbnQgbWFuYV9kZXRhY2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZnJvbV9jbG9zZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNzgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzozNzgyOnN0YXRpYyBpbnQgbWFuYV9wcm9iZV9wb3J0KHN0cnVjdCBtYW5hX2NvbnRleHQgKmFjLCBpbnQgcG9ydF9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTM3ODMtXFx0XFx0XFx0ICAgc3RydWN0IG5ldF9kZXZpY2UgKipuZGV2X3N0b3JhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9NDAyMz1zdGF0aWMgdm9pZCBtYW5hX2dmX3N0YXRzX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtNDA0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6NDA0NjppbnQgbWFuYV9wcm9iZShzdHJ1Y3QgZ2RtYV9kZXYgKmdkLCBib29sIHJlc3VtaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy00MDQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy00MTIwLVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYy1cXHUwMDNlbnVtX3BvcnRzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6NDEyMTpcXHRcXHRcXHRlcnIgPSBtYW5hX3Byb2JlX3BvcnQoYWMsIGksIFxcdTAwMjZhYy1cXHUwMDNlcG9ydHNbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy00MTIyLVxcdFxcdFxcdC8qIExvZyB0aGUgcG9ydCBmb3Igd2hpY2ggdGhlIHByb2JlIGZhaWxlZCwgc3RvcCBwcm9iaW5nXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjM3OjA4LjE4MjQ3Nzg2N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4OTYwODAwOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFN1aXRhYmlsaXR5IG9mIGEgUENJZSBEZXZpY2UgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBQQ0kgZGV2aWNlIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSBlZmZlY3RpdmVseSB0ZXN0IHRoaXMgdGhpbmcgd2l0aGluIFFFTVU/IE15IGluaXRpYWwgdGhvdWdodCBpcyBubywgYmVjYXVzZSBNQU5BIHJlcXVpcmVzIGVpdGhlciBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlIG9yIGFuIEF6dXJlIFZNIGVudmlyb25tZW50IHRvIHJ1biBwcm9wZXJseS4gQnV0IHdhaXQsIEkgaGF2ZSB0byBiZSB0aG9yb3VnaC4gSSB3b25kZXIgaWYgYHN5emthbGxlcmAgaGFzIHNvbWUgcHNldWRvLXN5c2NhbGxzIGZvciBNQU5BPyBObywgdGhhdCdzIG5vdCByaWdodCwgYHN5emthbGxlcmAgZG9lc24ndCBwcm92aWRlIHRoYXQga2luZCBvZiBhYnN0cmFjdGlvbiBmb3IgTUFOQS5cblxuVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVyc+KAlHRoZSBraW5kIHRoYXQgbmVlZCB0aG9zZSByZWFsLCBwaHlzaWNhbCBQQ0llIGNhcmRzIHRoYXQgUUVNVSBqdXN0IGRvZXNuJ3QgZW11bGF0ZSB2ZXJ5IHdlbGwuIFRoaXMgTUFOQSBkcml2ZXIgZGVmaW5pdGVseSBmaXRzIHRoZSBiaWxsOyBpdCdzIGEgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgc28gaXQncyBhIFNtYXJ0TklDIGRyaXZlciwgdmVyeSB2ZW5kb3Itc3BlY2lmaWMuIFNvLCBieSB0aGUgcnVsZXMgbGFpZCBvdXQsIHRoaXMgb25lIGZhbGxzIGludG8gdGhlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgY2F0ZWdvcnksIG1haW5seSBiZWNhdXNlIGl0J3MgdGllZCB0byB0aGF0IHBoeXNpY2FsIGhhcmR3YXJlLCBvciB0aGF0IEF6dXJlIGh5cGVydmlzb3IuIEJlZm9yZSBJIGZ1bGx5IGNvbW1pdCB0byB0aGF0IGNvbmNsdXNpb24sIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkga2VybmVsLWxldmVsIHNvZnR3YXJlIGVtdWxhdGlvbiBhdHRlbXB0cy4gTmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU2MDgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6Mzc6MTYuMDc4NTYxNDI2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMDQzNTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hbmFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTg9Y29uZmlnIE1JQ1JPU09GVF9NQU5BXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0zMS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6MzI6XFx0ICBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG1hbmEuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMzMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjM3OjE2LjEzMDYwOTU5MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczODcwMzQ1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTUFOQSBEcml2ZXIgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgS2NvbmZpZyBlbnRyeSBmb3IgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIsIE1BTkEuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIGEgZHJpdmVyLCBzcGVjaWZpYyB0byBBenVyZSBoYXJkd2FyZSwgcmVxdWlyaW5nIFBDSSwgTVNJLCBhbmQgeDg2LTY0IGFyY2hpdGVjdHVyZS4gVGhlIGhlbHAgdGV4dCBjb25maXJtcyBpdCdzIGEgcmVhbCBwaWVjZSBvZiBoYXJkd2FyZSwgYSBkZWRpY2F0ZWQgbmV0d29yayBhZGFwdGVyIGZvciBBenVyZS5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQgZm9yIG15IHB1cnBvc2VzIGlzLCB0aGlzIGlzbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQgbWVhbnMgc3RhbmRhcmQgc3l6a2FsbGVyIGluc3RhbmNlcywgdGhlIG9uZXMgd2UgdHlwaWNhbGx5IHVzZSBvbiBRRU1VIG9yIEdDRSwgd29uJ3QgYmUgYWJsZSB0byByZWFjaCB0aGlzIGRyaXZlci4gSXQncyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUsIGFuZCB3ZSBjYW4ndCBqdXN0IGJvb3QgdXAgYSBnZW5lcmljIFFFTVUgaW5zdGFuY2UgYW5kIGV4cGVjdCB0byBpbnRlcmFjdCB3aXRoIGl0LlxuXG5UaGVyZWZvcmUsIGFmdGVyIGNvbnNpZGVyaW5nIHRoZSBzZXR1cCwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogaXQncyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgdGhhdCBpc24ndCBlbXVsYXRlZCB3aXRoaW4gdGhlIHN0YW5kYXJkIGVudmlyb25tZW50cyB3ZSBjYW4gYWNjZXNzIGZvciBmdXp6aW5nLiBObyBwcmFjdGljYWwgYXZlbnVlIGZvciB1cyB0byBhcHBseSBvdXIgdG9vbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjE1LCJPdXRwdXRUb2tlbnMiOjg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjM3OjIzLjUxNzY1MTUwMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgU21hcnROSUMgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBhbmQgdW50ZXN0YWJsZSBieSBzdGFuZGFyZCBmdXp6ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCB1bnRlc3RhYmxlIGJ5IHN0YW5kYXJkIGZ1enplcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowztf7l[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 06:22:23 +0000 UTC FinishedAt: 2026-07-31 06:37:24 +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+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgU21hcnROSUMgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBhbmQgdW50ZXN0YWJsZSBieSBzdGFuZGFyZCBmdXp6ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDZkODZjNjIyYmQ2MDJhYjE3YzNmMTAzYTgwM2Q0YWNhM2Q5Y2NmNWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwNjozNjo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcbmluZGV4IGE4YzMyOWJkYmFjZjguLjcyMGQyMmU2YWVhOTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uY1xuQEAgLTEyNDEsNiAmIzQzOzEyNDEsOSBAQCBpbnQgbWFuYV9nZF9xdWVyeV9kZXZpY2VfY2ZnKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1MzIgcHJvdG9fbWFqb3JfdmVyLFxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuJiM0MztcdGlmIChyZXNwLnBmX2NhcF9mbGFnczEgXHUwMDI2IE1BTkFfUEZfRkxBR18xX0NRRV84X0NPQUxFU0NJTkdfU1VQUE9SVEVEKVxuJiM0MztcdFx0Z2MtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX3N1cCA9IHRydWU7XG4mIzQzO1xuIFx0Km1heF9udW1fdnBvcnRzID0gcmVzcC5tYXhfbnVtX3Zwb3J0cztcbiBcbiBcdGlmIChyZXNwLmhkci5yZXNwb25zZS5tc2dfdmVyc2lvbiBcdTAwM2U9IEdETUFfTUVTU0FHRV9WMikge1xuQEAgLTE0MjYsNyAmIzQzOzE0MjksMTEgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyxcbiBcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFx1MDAyNnJlcS1cdTAwM2VoZHIsIE1BTkFfQ09ORklHX1ZQT1JUX1JYLCByZXFfYnVmX3NpemUsXG4gXHRcdFx0ICAgICBzaXplb2YocmVzcCkpO1xuIFxuLVx0cmVxLVx1MDAzZWhkci5yZXEubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjI7XG4mIzQzO1x0LyogUmVxdWVzdCBcdTAwMjYgcmVzcG9uc2UgdmVyc2lvbnMgY2FuIGJlIGRpZmZlcmVudC5cbiYjNDM7XHQgKiBIVyBjYW4gaGFuZGxlIG5ld2VyIG1zZyB2ZXJzaW9ucywgYnkgc2tpcHBpbmdcbiYjNDM7XHQgKiBuZXcgZmllbGRzLlxuJiM0MztcdCAqL1xuJiM0MztcdHJlcS1cdTAwM2VoZHIucmVxLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1Y1O1xuIFx0cmVxLVx1MDAzZWhkci5yZXNwLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1YyO1xuIFxuIFx0cmVxLVx1MDAzZXZwb3J0ID0gYXBjLVx1MDAzZXBvcnRfaGFuZGxlO1xuQEAgLTE0NDAsOCAmIzQzOzE0NDcsMTMgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyxcbiBcdHJlcS1cdTAwM2V1cGRhdGVfaW5kaXJfdGFiID0gdXBkYXRlX3RhYjtcbiBcdHJlcS1cdTAwM2VkZWZhdWx0X3J4b2JqID0gYXBjLVx1MDAzZWRlZmF1bHRfcnhvYmo7XG4gXG4tXHRpZiAocnggIT0gVFJJX1NUQVRFX0ZBTFNFKVxuJiM0MztcdC8qIFJlcXVlc3QtbXNnIHY1IHJlcXVpcmVzIHRoaXMgZmllbGQgKi9cbiYjNDM7XHRyZXEtXHUwMDNlcnNzX2hhc2hfdHlwZXMgPSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRDtcbiYjNDM7XG4mIzQzO1x0aWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSkge1xuIFx0XHRyZXEtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbiYjNDM7XHRcdHJlcS1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGU7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKHVwZGF0ZV9rZXkpXG4gXHRcdG1lbWNweShcdTAwMjZyZXEtXHUwMDNlaGFzaGtleSwgYXBjLVx1MDAzZWhhc2hrZXksIE1BTkFfSEFTSF9LRVlfU0laRSk7XG5AQCAtMjA0NiwxNiAmIzQzOzIwNTgsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptYW5hX2J1aWxkX3NrYihzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgdm9pZCAqYnVmX3ZhLFxuIFxuIHN0YXRpYyB2b2lkIG1hbmFfcnhfc2tiKHZvaWQgKmJ1Zl92YSwgYm9vbCBmcm9tX3Bvb2wsXG4gXHRcdFx0c3RydWN0IG1hbmFfcnhjb21wX29vYiAqY3FlLCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcbi1cdFx0XHRpbnQgaSlcbiYjNDM7XHRcdFx0dTMyIHBrdF9sZW4sIHUzMiBwa3RfaGFzaClcbiB7XG4gXHRzdHJ1Y3QgbWFuYV9zdGF0c19yeCAqcnhfc3RhdHMgPSBcdTAwMjZyeHEtXHUwMDNlc3RhdHM7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHJ4cS1cdTAwM2VuZGV2O1xuLVx0dWludCBwa3RfbGVuID0gY3FlLVx1MDAzZXBwaVtpXS5wa3RfbGVuO1xuIFx0dTE2IHJ4cV9pZHggPSByeHEtXHUwMDNlcnhxX2lkeDtcbiBcdHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaTtcbiBcdHN0cnVjdCB4ZHBfYnVmZiB4ZHAgPSB7fTtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4tXHR1MzIgaGFzaF92YWx1ZTtcbiBcdHUzMiBhY3Q7XG4gXG4gXHRyeHEtXHUwMDNlcnhfY3Eud29ya19kb25lJiM0MzsmIzQzOztcbkBAIC0yMDk0LDEyICYjNDM7MjEwNCwxMCBAQCBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLFxuIFx0fVxuIFxuIFx0aWYgKGNxZS1cdTAwM2VyeF9oYXNodHlwZSAhPSAwIFx1MDAyNlx1MDAyNiAobmRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9SWEhBU0gpKSB7XG4tXHRcdGhhc2hfdmFsdWUgPSBjcWUtXHUwMDNlcHBpW2ldLnBrdF9oYXNoO1xuLVxuIFx0XHRpZiAoY3FlLVx1MDAzZXJ4X2hhc2h0eXBlIFx1MDAyNiBNQU5BX0hBU0hfTDQpXG4tXHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaF92YWx1ZSwgUEtUX0hBU0hfVFlQRV9MNCk7XG4mIzQzO1x0XHRcdHNrYl9zZXRfaGFzaChza2IsIHBrdF9oYXNoLCBQS1RfSEFTSF9UWVBFX0w0KTtcbiBcdFx0ZWxzZVxuLVx0XHRcdHNrYl9zZXRfaGFzaChza2IsIGhhc2hfdmFsdWUsIFBLVF9IQVNIX1RZUEVfTDMpO1xuJiM0MztcdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBwa3RfaGFzaCwgUEtUX0hBU0hfVFlQRV9MMyk7XG4gXHR9XG4gXG4gXHRpZiAoY3FlLVx1MDAzZXJ4X3ZsYW50YWdfcHJlc2VudCkge1xuQEAgLTIyNDAsNiAmIzQzOzIyNDgsNDMgQEAgc3RhdGljIHZvaWQgbWFuYV9yZWZpbGxfcnhfb29iKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1hbmFfcnhxICpyeHEsXG4gXHRyeG9vYi1cdTAwM2VkbWFfc3luY19vZmZzZXQgPSBkbWFfc3luY19vZmZzZXQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLFxuJiM0MztcdFx0XHRcdCAgICBzdHJ1Y3QgbWFuYV9yeGNvbXBfb29iICpvb2IsXG4mIzQzO1x0XHRcdFx0ICAgIHUzMiBwa3RsZW4sIHUzMiBwa3RfaGFzaClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iO1xuJiM0MztcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLVx1MDAzZW5kZXY7XG4mIzQzO1x0dm9pZCAqb2xkX2J1ZiA9IE5VTEw7XG4mIzQzO1x0Ym9vbCBvbGRfZnA7XG4mIzQzO1xuJiM0MztcdHJ4YnVmX29vYiA9IFx1MDAyNnJ4cS1cdTAwM2VyeF9vb2JzW3J4cS1cdTAwM2VidWZfaW5kZXhdO1xuJiM0MztcdFdBUk5fT05fT05DRShyeGJ1Zl9vb2ItXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSAhPSAxKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHVubGlrZWx5KHBrdGxlbiBcdTAwM2UgcnhxLVx1MDAzZWRhdGFzaXplKSkge1xuJiM0MztcdFx0LyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbiYjMzk7dCBjYWxsZWQuICovXG4mIzQzO1x0XHRyeHEtXHUwMDNlcnhfY3Eud29ya19kb25lJiM0MzsmIzQzOztcbiYjNDM7XG4mIzQzO1x0XHQmIzQzOyYjNDM7bmRldi1cdTAwM2VzdGF0cy5yeF9kcm9wcGVkO1xuJiM0MztcdFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxuJiM0MztcdFx0XHRcdCBcJiMzNDtEcm9wcGVkIG92ZXJzaXplZCBSWCBwYWNrZXQ6IGxlbj0ldSwgZGF0YXNpemU9JXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0IHBrdGxlbiwgcnhxLVx1MDAzZWRhdGFzaXplKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovXG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdG1hbmFfcmVmaWxsX3J4X29vYihkZXYsIHJ4cSwgcnhidWZfb29iLCBwa3RsZW4sXG4mIzQzO1x0XHRcdFx0ICAgXHUwMDI2b2xkX2J1ZiwgXHUwMDI2b2xkX2ZwKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBVbnN1Y2Nlc3NmdWwgcmVmaWxsIHdpbGwgaGF2ZSBvbGRfYnVmID09IE5VTEwuXG4mIzQzO1x0XHQgKiBJbiB0aGlzIGNhc2UsIG1hbmFfcnhfc2tiKCkgd2lsbCBkcm9wIHRoZSBwYWNrZXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdG1hbmFfcnhfc2tiKG9sZF9idWYsIG9sZF9mcCwgb29iLCByeHEsIHBrdGxlbiwgcGt0X2hhc2gpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bWFuYV9tb3ZlX3dxX3RhaWwocnhxLVx1MDAzZWdkbWFfcnEsIHJ4YnVmX29vYi1cdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1KTtcbiYjNDM7XG4mIzQzO1x0bWFuYV9wb3N0X3BrdF9yeHEocnhxKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXG4gXHRcdFx0XHRzdHJ1Y3QgZ2RtYV9jb21wICpjcWUpXG4ge1xuQEAgLTIyNDksMTAgJiM0MzsyMjk0LDEwIEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcbiBcdHN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iO1xuIFx0c3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGM7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBnYy1cdTAwM2VkZXY7XG4mIzQzO1x0Ym9vbCBjb2FsZXNjZWRfOCA9IGZhbHNlO1xuIFx0Ym9vbCBjb2FsZXNjZWQgPSBmYWxzZTtcbi1cdHZvaWQgKm9sZF9idWYgPSBOVUxMO1xuLVx0dTMyIGN1cnIsIHBrdGxlbjtcbi1cdGJvb2wgb2xkX2ZwO1xuJiM0MztcdHUzMiBwa3RsZW47XG4mIzQzO1x0aW50IHBrdF9pO1xuIFx0aW50IGk7XG4gXG4gXHRhcGMgPSBuZXRkZXZfcHJpdihuZGV2KTtcbkBAIC0yMjc1LDYgJiM0MzsyMzIwLDExIEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcbiBcdFx0Y29hbGVzY2VkID0gdHJ1ZTtcbiBcdFx0YnJlYWs7XG4gXG4mIzQzO1x0Y2FzZSBDUUVfUlhfQ09BTEVTQ0VEXzg6XG4mIzQzO1x0XHRjb2FsZXNjZWQgPSB0cnVlO1xuJiM0MztcdFx0Y29hbGVzY2VkXzggPSB0cnVlO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1xuIFx0Y2FzZSBDUUVfUlhfT0JKRUNUX0ZFTkNFOlxuIFx0XHRjb21wbGV0ZShcdTAwMjZyeHEtXHUwMDNlZmVuY2VfZXZlbnQpO1xuIFx0XHRyZXR1cm47XG5AQCAtMjI4Niw1NCAmIzQzOzIzMzYsNDggQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4mIzQzO1x0cGt0X2kgPSAwO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEk7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdG9sZF9idWYgPSBOVUxMO1xuLVx0XHRwa3RsZW4gPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9sZW47XG4tXHRcdGlmIChwa3RsZW4gPT0gMClcbi1cdFx0XHRicmVhaztcbi1cbi1cdFx0Y3VyciA9IHJ4cS1cdTAwM2VidWZfaW5kZXg7XG4tXHRcdHJ4YnVmX29vYiA9IFx1MDAyNnJ4cS1cdTAwM2VyeF9vb2JzW2N1cnJdO1xuLVx0XHRXQVJOX09OX09OQ0UocnhidWZfb29iLVx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUgIT0gMSk7XG4tXG4tXHRcdGlmICh1bmxpa2VseShwa3RsZW4gXHUwMDNlIHJ4cS1cdTAwM2VkYXRhc2l6ZSkpIHtcbi1cdFx0XHQvKiBJbmNyZWFzZSBpdCBldmVuIGlmIG1hbmFfcnhfc2tiKCkgaXNuJiMzOTt0IGNhbGxlZC4gKi9cbi1cdFx0XHRyeHEtXHUwMDNlcnhfY3Eud29ya19kb25lJiM0MzsmIzQzOztcbiYjNDM7XHRcdHUzMiBwa3RfaGFzaDtcbiBcbi1cdFx0XHQmIzQzOyYjNDM7bmRldi1cdTAwM2VzdGF0cy5yeF9kcm9wcGVkO1xuLVx0XHRcdG5ldGRldl93YXJuX29uY2UobmRldixcbi1cdFx0XHRcdFwmIzM0O0Ryb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxcblwmIzM0Oyxcbi1cdFx0XHRcdHBrdGxlbiwgcnhxLVx1MDAzZWRhdGFzaXplKTtcbi1cbi1cdFx0XHQvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovXG4mIzQzO1x0XHRpZiAoY29hbGVzY2VkXzgpIHtcbiYjNDM7XHRcdFx0LyogOC1wa3QgbW9kZTogMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi9cbiYjNDM7XHRcdFx0cGt0bGVuID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfbGVuMDtcbiYjNDM7XHRcdFx0cGt0X2hhc2ggPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9oYXNoMDtcbiBcdFx0fSBlbHNlIHtcbi1cbi1cdFx0XHRtYW5hX3JlZmlsbF9yeF9vb2IoZGV2LCByeHEsIHJ4YnVmX29vYiwgcGt0bGVuLFxuLVx0XHRcdFx0XHQgICBcdTAwMjZvbGRfYnVmLCBcdTAwMjZvbGRfZnApO1xuLVxuLVx0XHRcdC8qIFVuc3VjY2Vzc2Z1bCByZWZpbGwgd2lsbCBoYXZlIG9sZF9idWYgPT0gTlVMTC5cbi1cdFx0XHQgKiBJbiB0aGlzIGNhc2UsIG1hbmFfcnhfc2tiKCkgd2lsbCBkcm9wIHRoZSBwYWNrZXQuXG4tXHRcdFx0ICovXG4tXHRcdFx0bWFuYV9yeF9za2Iob2xkX2J1Ziwgb2xkX2ZwLCBvb2IsIHJ4cSwgaSk7XG4mIzQzO1x0XHRcdHBrdGxlbiA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2xlbjtcbiYjNDM7XHRcdFx0cGt0X2hhc2ggPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9oYXNoO1xuIFx0XHR9XG4mIzQzO1x0XHRpZiAocGt0bGVuID09IDApXG4mIzQzO1x0XHRcdGJyZWFrO1xuIFxuLVx0XHRtYW5hX21vdmVfd3FfdGFpbChyeHEtXHUwMDNlZ2RtYV9ycSxcbi1cdFx0XHRcdCAgcnhidWZfb29iLVx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUpO1xuLVxuLVx0XHRtYW5hX3Bvc3RfcGt0X3J4cShyeHEpO1xuJiM0MztcdFx0bWFuYV9wcm9jZXNzX29uZV9yeF9wa3QoZGV2LCByeHEsIG9vYiwgcGt0bGVuLCBwa3RfaGFzaCk7XG4mIzQzO1x0XHRwa3RfaSYjNDM7JiM0Mzs7XG4gXG4gXHRcdGlmICghY29hbGVzY2VkKVxuIFx0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdC8qIFByb2Nlc3MgMm5kIHBhY2tldCBmcm9tIHRoZSBzYW1lIFBQSSBpbiA4LXBrdCBtb2RlICovXG4mIzQzO1x0XHRpZiAoY29hbGVzY2VkXzgpIHtcbiYjNDM7XHRcdFx0cGt0bGVuID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfbGVuMTtcbiYjNDM7XHRcdFx0cGt0X2hhc2ggPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9oYXNoMTtcbiYjNDM7XHRcdFx0aWYgKHBrdGxlbiA9PSAwKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdFx0bWFuYV9wcm9jZXNzX29uZV9yeF9wa3QoZGV2LCByeHEsIG9vYiwgcGt0bGVuLFxuJiM0MztcdFx0XHRcdFx0XHRwa3RfaGFzaCk7XG4mIzQzO1x0XHRcdHBrdF9pJiM0MzsmIzQzOztcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdC8qIENvbGxlY3QgY29hbGVzY2VkIENRRSBjb3VudCBiYXNlZCBvbiBwYWNrZXRzIHByb2Nlc3NlZC5cbi1cdCAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBpIC0gMi5cbiYjNDM7XHQgKiBDb2FsZXNjZWQgQ1FFcyBoYXZlIGF0IGxlYXN0IDIgcGFja2V0cywgc28gaW5kZXggaXMgcGt0X2kgLSAyLlxuIFx0ICovXG4tXHRpZiAoaSBcdTAwM2UgMSkge1xuJiM0MztcdGlmIChwa3RfaSBcdTAwM2UgMSkge1xuIFx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNnJ4cS1cdTAwM2VzdGF0cy5zeW5jcCk7XG4tXHRcdHJ4cS1cdTAwM2VzdGF0cy5jb2FsZXNjZWRfY3FlW2kgLSAyXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRyeHEtXHUwMDNlc3RhdHMuY29hbGVzY2VkX2NxZVtwa3RfaSAtIDJdJiM0MzsmIzQzOztcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2cnhxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbi1cdH0gZWxzZSBpZiAoIWkgXHUwMDI2XHUwMDI2ICFwa3RsZW4pIHtcbiYjNDM7XHR9IGVsc2UgaWYgKCFwa3RfaSBcdTAwMjZcdTAwMjYgIXBrdGxlbikge1xuIFx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNnJ4cS1cdTAwM2VzdGF0cy5zeW5jcCk7XG4gXHRcdHJ4cS1cdTAwM2VzdGF0cy5wa3RfbGVuMF9lcnImIzQzOyYjNDM7O1xuIFx0XHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuQEAgLTM3NjMsNiAmIzQzOzM4MDcsNyBAQCBzdGF0aWMgaW50IG1hbmFfcHJvYmVfcG9ydChzdHJ1Y3QgbWFuYV9jb250ZXh0ICphYywgaW50IHBvcnRfaWR4LFxuIFx0YXBjLVx1MDAzZXBvcnRfaWR4ID0gcG9ydF9pZHg7XG4gXHRhcGMtXHUwMDNlbGlua19jZmdfZXJyb3IgPSAxO1xuIFx0YXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSA9IDA7XG4mIzQzO1x0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPSAwO1xuIFxuIFx0LyogSW5pdGlhbGl6ZSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyBpZiBzdXBwb3J0ZWQgYnkgSFcgKi9cbiBcdGlmIChnYy1cdTAwM2VwZl9jYXBfZmxhZ3MxIFx1MDAyNiBHRE1BX1BGX0NBUF9GTEFHXzFfRFlOX0lOVEVSUlVQVF9NT0RFUkFUSU9OKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuaW5kZXggOWUzMWUyNTk1YWUzMi4uODc0M2Y3ZWRlY2JiOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuQEAgLTE2OSw3ICYjNDM7MTY5LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIHN0cmluZ3NldCwgdTggKmRhdGEpXG4gXHRcdGV0aHRvb2xfc3ByaW50ZihcdTAwMjZkYXRhLCBcJiMzNDtyeF8lZF94ZHBfdHhcJiMzNDssIGkpO1xuIFx0XHRldGh0b29sX3NwcmludGYoXHUwMDI2ZGF0YSwgXCYjMzQ7cnhfJWRfeGRwX3JlZGlyZWN0XCYjMzQ7LCBpKTtcbiBcdFx0ZXRodG9vbF9zcHJpbnRmKFx1MDAyNmRhdGEsIFwmIzM0O3J4XyVkX3BrdF9sZW4wX2VyclwmIzM0OywgaSk7XG4tXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaiYjNDM7JiM0MzspXG4mIzQzO1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDE7IGomIzQzOyYjNDM7KVxuIFx0XHRcdGV0aHRvb2xfc3ByaW50ZihcdTAwMjZkYXRhLCBcJiMzNDtyeF8lZF9jb2FsZXNjZWRfY3FlXyVkXCYjMzQ7LCBpLCBqICYjNDM7IDIpO1xuIFx0fVxuIFxuQEAgLTIwNSw3ICYjNDM7MjA1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHU2NCB4ZHBfZHJvcDtcbiBcdHU2NCB4ZHBfdHg7XG4gXHR1NjQgcGt0X2xlbjBfZXJyO1xuLVx0dTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxXTtcbiYjNDM7XHR1NjQgY29hbGVzY2VkX2NxZVtNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDFdO1xuIFx0dTY0IHRzb19wYWNrZXRzO1xuIFx0dTY0IHRzb19ieXRlcztcbiBcdHU2NCB0c29faW5uZXJfcGFja2V0cztcbkBAIC0yNDUsNyAmIzQzOzI0NSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdFx0eGRwX3R4ID0gcnhfc3RhdHMtXHUwMDNleGRwX3R4O1xuIFx0XHRcdHhkcF9yZWRpcmVjdCA9IHJ4X3N0YXRzLVx1MDAzZXhkcF9yZWRpcmVjdDtcbiBcdFx0XHRwa3RfbGVuMF9lcnIgPSByeF9zdGF0cy1cdTAwM2Vwa3RfbGVuMF9lcnI7XG4tXHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqJiM0MzsmIzQzOylcbiBcdFx0XHRcdGNvYWxlc2NlZF9jcWVbal0gPSByeF9zdGF0cy1cdTAwM2Vjb2FsZXNjZWRfY3FlW2pdO1xuIFx0XHR9IHdoaWxlICh1NjRfc3RhdHNfZmV0Y2hfcmV0cnkoXHUwMDI2cnhfc3RhdHMtXHUwMDNlc3luY3AsIHN0YXJ0KSk7XG4gXG5AQCAtMjU1LDcgJiM0MzsyNTUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRkYXRhW2kmIzQzOyYjNDM7XSA9IHhkcF90eDtcbiBcdFx0ZGF0YVtpJiM0MzsmIzQzO10gPSB4ZHBfcmVkaXJlY3Q7XG4gXHRcdGRhdGFbaSYjNDM7JiM0MztdID0gcGt0X2xlbjBfZXJyO1xuLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDE7IGomIzQzOyYjNDM7KVxuJiM0MztcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqJiM0MzsmIzQzOylcbiBcdFx0XHRkYXRhW2kmIzQzOyYjNDM7XSA9IGNvYWxlc2NlZF9jcWVbal07XG4gXHR9XG4gXG5AQCAtNDA4LDYgJiM0Mzs0MDgsNyBAQCBzdGF0aWMgaW50IG1hbmFfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0c3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGMgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcbiBcdGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgPVxuJiM0MztcdFx0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX0NRRV9DT0FMX1BLVFNfOCA6XG4gXHRcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSA6IDE7XG4gXG4gXHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfbnNlY3MgPSBhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfdGltZW91dF9ucztcbkBAIC00NDMsNiAmIzQzOzQ0NCw3IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHUxNiBpbnRyX21vZHJfdHhfdXNlYztcbiBcdFx0dTE2IGludHJfbW9kcl90eF9jb21wO1xuIFx0XHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XG4mIzQzO1x0XHR1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlO1xuIFx0XHRib29sIHJ4X2RpbV9lbmFibGVkO1xuIFx0XHRib29sIHR4X2RpbV9lbmFibGVkO1xuIFx0fSBzYXZlZDtcbkBAIC00NjYsMTAgJiM0Mzs0NjgsMTIgQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdH1cbiBcbiBcdGlmIChrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzICE9IDEgXHUwMDI2XHUwMDI2XG4tXHQgICAga2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyAhPSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSkge1xuJiM0MztcdCAgICBrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfQ1FFX0NPQUxfUEtUU184KSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHX0ZNVChleHRhY2ssXG4tXHRcdFx0XHQgICBcJiMzNDtyeC1mcmFtZXMgbXVzdCBiZSAxIG9yICV1LCBnb3QgJXVcJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgXCYjMzQ7cngtZnJhbWVzIG11c3QgYmUgMSwgJXUsIG9yICV1LCBnb3QgJXVcJiMzNDssXG4gXHRcdFx0XHQgICBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSxcbiYjNDM7XHRcdFx0XHQgICBNQU5BX0NRRV9DT0FMX1BLVFNfOCxcbiBcdFx0XHRcdCAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC01MTQsOCAmIzQzOzUxOCwxNSBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0c2F2ZWQudHhfZGltX2VuYWJsZWQgPSBhcGMtXHUwMDNldHhfZGltX2VuYWJsZWQ7XG4gXG4gXHRzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuJiM0MztcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxuLVx0XHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xuJiM0MztcdFx0a2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyBcdTAwM2U9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xuJiM0MztcbiYjNDM7XHRpZiAoZ2MtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX3N1cClcbiYjNDM7XHRcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID1cbiYjNDM7XHRcdFx0a2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyA9PSBNQU5BX0NRRV9DT0FMX1BLVFNfODtcbiYjNDM7XHRlbHNlIGlmIChrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfQ1FFX0NPQUxfUEtUU184KVxuJiM0MztcdFx0bmV0ZGV2X2luZm8obmRldiwgXCYjMzQ7RmFsbCBiYWNrIHRvIFJYLUNRRSB4NCBjb2FsZXNjaW5nXFxuXCYjMzQ7KTtcbiBcbiBcdGlmICghYXBjLVx1MDAzZXBvcnRfaXNfdXApIHtcbiBcdFx0V1JJVEVfT05DRShhcGMtXHUwMDNlcnhfZGltX2VuYWJsZWQsICEhZWMtXHUwMDNldXNlX2FkYXB0aXZlX3J4X2NvYWxlc2NlKTtcbkBAIC01MjMsNyAmIzQzOzUzNCw4IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuLVx0aWYgKGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlKSB7XG4mIzQzO1x0aWYgKGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlIHx8XG4mIzQzO1x0ICAgIGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUpIHtcbiBcdFx0LyogQ1FFIGNvYWxlc2Npbmcgc2V0dGluZyBpcyBhcHBsaWVkIHZpYSBSU1MgY29uZmlndXJhdGlvbi4gKi9cbiBcdFx0ZXJyID0gbWFuYV9jb25maWdfcnNzKGFwYywgVFJJX1NUQVRFX1RSVUUsIGZhbHNlLCBmYWxzZSk7XG4gXHRcdGlmIChlcnIpIHtcbkBAIC01MzEsNiAmIzQzOzU0Myw4IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdFx0XHQgICBlcnIpO1xuIFx0XHRcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxuIFx0XHRcdFx0c2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuJiM0MztcdFx0XHRhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9XG4mIzQzO1x0XHRcdFx0c2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdFx0XHRhcGMtXHUwMDNlaW50cl9tb2RyX3J4X3VzZWMgPSBzYXZlZC5pbnRyX21vZHJfcnhfdXNlYztcbiBcdFx0XHRhcGMtXHUwMDNlaW50cl9tb2RyX3J4X2NvbXAgPSBzYXZlZC5pbnRyX21vZHJfcnhfY29tcDtcbiBcdFx0XHRhcGMtXHUwMDNlaW50cl9tb2RyX3R4X3VzZWMgPSBzYXZlZC5pbnRyX21vZHJfdHhfdXNlYztcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaCBiL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXG5pbmRleCA4NTI5Y2VmMGQ3YzQ1Li43MGE3ZjFmZWU1ZDNiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXG5AQCAtMTgyLDYgJiM0MzsxODIsNyBAQCBzdHJ1Y3QgZ2RtYV9nZW5lcmFsX3JlcSB7XG4gI2RlZmluZSBHRE1BX01FU1NBR0VfVjIgMlxuICNkZWZpbmUgR0RNQV9NRVNTQUdFX1YzIDNcbiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WNCA0XG4mIzQzOyNkZWZpbmUgR0RNQV9NRVNTQUdFX1Y1IDVcbiBcbiBzdHJ1Y3QgZ2RtYV9nZW5lcmFsX3Jlc3Age1xuIFx0c3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyO1xuQEAgLTQyOCw2ICYjNDM7NDI5LDkgQEAgc3RydWN0IGdkbWFfY29udGV4dCB7XG4gXHQvKiBMMiBNVFUgKi9cbiBcdHUxNiBhZGFwdGVyX210dTtcbiBcbiYjNDM7XHQvKiBOSUMgc3VwcG9ydHMgQ1FFIHg4IGNvYWxlc2NpbmcgKi9cbiYjNDM7XHRib29sIGNxZThfY29hbGVzY2luZ19zdXA7XG4mIzQzO1xuIFx0LyogVGhpcyBtYXBzIGEgQ1EgaW5kZXggdG8gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gKi9cbiBcdHVuc2lnbmVkIGludFx0XHRtYXhfbnVtX2NxcztcbiBcdHN0cnVjdCBnZG1hX3F1ZXVlXHQqKmNxX3RhYmxlO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oIGIvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcbmluZGV4IDRkMDQxZmI4NDM3ZjUuLjNjYTEzOTlhMmZhZmEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9tYW5hL21hbmEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcbkBAIC02Miw5ICYjNDM7NjIsMTIgQEAgZW51bSBUUklfU1RBVEUge1xuIFxuICNkZWZpbmUgTUFYX1BPUlRTX0lOX01BTkFfREVWIDI1NlxuIFxuLS8qIE1heGltdW0gbnVtYmVyIG9mIHBhY2tldHMgcGVyIGNvYWxlc2NlZCBDUUUgKi9cbiYjNDM7LyogTWF4aW11bSBudW1iZXIgb2YgUFBJcyBwZXIgY29hbGVzY2VkIENRRSAqL1xuICNkZWZpbmUgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgNFxuIFxuJiM0MzsvKiA4LXBrdCBtb2RlIHBhY2tzIHVwIHRvIDIgcGFja2V0cyBwZXIgUFBJIGVudHJ5ICovXG4mIzQzOyNkZWZpbmUgTUFOQV9DUUVfQ09BTF9QS1RTXzggOFxuJiM0MztcbiAvKiBEZWZhdWx0L21heCBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqL1xuICNkZWZpbmUgTUFOQV9JTlRSX01PRFJfVVNFQ19ERUYgMFxuICNkZWZpbmUgTUFOQV9JTlRSX01PRFJfQ09NUF9ERUYgMFxuQEAgLTc5LDcgJiM0Mzs4Miw3IEBAIGVudW0gVFJJX1NUQVRFIHtcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfTUFTSyAgIEdFTk1BU0soMjMsIDE2KVxuIFxuIC8qIFVwZGF0ZSB0aGlzIGNvdW50IHdoZW5ldmVyIHRoZSByZXNwZWN0aXZlIHN0cnVjdHVyZXMgYXJlIGNoYW5nZWQgKi9cbi0jZGVmaW5lIE1BTkFfU1RBVFNfUlhfQ09VTlQgKDYgJiM0MzsgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxKVxuJiM0MzsjZGVmaW5lIE1BTkFfU1RBVFNfUlhfQ09VTlQgKDYgJiM0MzsgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxKVxuICNkZWZpbmUgTUFOQV9TVEFUU19UWF9DT1VOVCAxMVxuIFxuICNkZWZpbmUgTUFOQV9SWF9GUkFHX0FMSUdOTUVOVCA2NFxuQEAgLTkxLDcgJiM0Mzs5NCw3IEBAIHN0cnVjdCBtYW5hX3N0YXRzX3J4IHtcbiBcdHU2NCB4ZHBfdHg7XG4gXHR1NjQgeGRwX3JlZGlyZWN0O1xuIFx0dTY0IHBrdF9sZW4wX2Vycjtcbi1cdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XG4mIzQzO1x0dTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxXTtcbiBcdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzeW5jcDtcbiB9O1xuIFxuQEAgLTIwMiw2ICYjNDM7MjA1LDcgQEAgZW51bSBtYW5hX2NxZV90eXBlIHtcbiBcdENRRV9SWF9DT0FMRVNDRURfNFx0XHQ9IDIsXG4gXHRDUUVfUlhfT0JKRUNUX0ZFTkNFXHRcdD0gMyxcbiBcdENRRV9SWF9UUlVOQ0FURURcdFx0PSA0LFxuJiM0MztcdENRRV9SWF9DT0FMRVNDRURfOFx0XHQ9IDcsXG4gXG4gXHRDUUVfVFhfT0tBWVx0XHRcdD0gMzIsXG4gXHRDUUVfVFhfU0FfRFJPUFx0XHRcdD0gMzMsXG5AQCAtMjM4LDEyICYjNDM7MjQyLDI1IEBAIHN0cnVjdCBtYW5hX2NxZV9oZWFkZXIge1xuICNkZWZpbmUgTUFOQV9IQVNIX0w0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiBcdChORElTX0hBU0hfVENQX0lQVjQgfCBORElTX0hBU0hfVURQX0lQVjQgfCBORElTX0hBU0hfVENQX0lQVjYgfCAgICAgIFxcXG4gXHQgTkRJU19IQVNIX1VEUF9JUFY2IHwgTkRJU19IQVNIX1RDUF9JUFY2X0VYIHwgTkRJU19IQVNIX1VEUF9JUFY2X0VYKVxuJiM0MzsjZGVmaW5lIE1BTkFfSEFTSF9FTkFCTEVfU1VQUE9SVEVEIFxcXG4mIzQzO1x0KE5ESVNfSEFTSF9JUFY0IHwgTkRJU19IQVNIX1RDUF9JUFY0IHwgTkRJU19IQVNIX1VEUF9JUFY0IHwgXFxcbiYjNDM7XHQgTkRJU19IQVNIX0lQVjYgfCBORElTX0hBU0hfVENQX0lQVjYgfCBORElTX0hBU0hfVURQX0lQVjYpXG4mIzQzO1xuJiM0Mzt1bmlvbiBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyB7XG4mIzQzO1x0c3RydWN0IHtcbiYjNDM7XHRcdHUzMiBwa3RfbGVuIDogMTY7XG4mIzQzO1x0XHR1MzIgcmVzZXJ2ZWQxIDogMTY7XG4mIzQzO1x0XHR1MzIgcmVzZXJ2ZWQyO1xuJiM0MztcdFx0dTMyIHBrdF9oYXNoO1xuJiM0MztcdH07XG4gXG4tc3RydWN0IG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHtcbi1cdHUzMiBwa3RfbGVuXHQ6IDE2O1xuLVx0dTMyIHJlc2VydmVkMVx0OiAxNjtcbi1cdHUzMiByZXNlcnZlZDI7XG4tXHR1MzIgcGt0X2hhc2g7XG4mIzQzO1x0LyogVXAgdG8gdHdvIHBrdHMgcGVyIFBQSSBlbnRyeSAqL1xuJiM0MztcdHN0cnVjdCB7XG4mIzQzO1x0XHR1MzIgcGt0X2hhc2gwO1xuJiM0MztcdFx0dTE2IHBrdF9sZW4wO1xuJiM0MztcdFx0dTE2IHBrdF9sZW4xO1xuJiM0MztcdFx0dTMyIHBrdF9oYXNoMTtcbiYjNDM7XHR9O1xuIH07IC8qIEhXIERBVEEgKi9cbiBcbiAvKiBSZWNlaXZlIGNvbXBsZXRpb24gT09CICovXG5AQCAtMjY0LDcgJiM0MzsyODEsNyBAQCBzdHJ1Y3QgbWFuYV9yeGNvbXBfb29iIHtcbiBcdHUzMiByeF91ZHBfY3N1bV9mYWlsXHRcdDogMTtcbiBcdHUzMiByZXNlcnZlZDJcdFx0XHQ6IDE7XG4gXG4tXHRzdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8gcHBpW01BTkFfUlhDT01QX09PQl9OVU1fUFBJXTtcbiYjNDM7XHR1bmlvbiBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldO1xuIFxuIFx0dTMyIHJ4X3dxZV9vZmZzZXQ7XG4gfTsgLyogSFcgREFUQSAqL1xuQEAgLTYwNyw2ICYjNDM7NjI0LDcgQEAgc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0IHtcbiBcdGJvb2wgcG9ydF9zdF9zYXZlOyAvKiBTYXZlZCBwb3J0IHN0YXRlICovXG4gXG4gXHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XG4mIzQzO1x0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdHUzMiBjcWVfY29hbGVzY2luZ190aW1lb3V0X25zO1xuIFxuIFx0LyogSW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgKi9cbkBAIC03NTEsNiAmIzQzOzc2OSw4IEBAIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVxIHtcbiBcdHUzMiByZXNlcnZlZDtcbiB9OyAvKiBIVyBEQVRBICovXG4gXG4mIzQzOyNkZWZpbmUgTUFOQV9QRl9GTEFHXzFfQ1FFXzhfQ09BTEVTQ0lOR19TVVBQT1JURUQgQklUKDUpXG4mIzQzO1xuIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVzcCB7XG4gXHRzdHJ1Y3QgZ2RtYV9yZXNwX2hkciBoZHI7XG4gXG5AQCAtOTg2LDcgJiM0MzsxMDA2LDEwIEBAIHN0cnVjdCBtYW5hX2NmZ19yeF9zdGVlcl9yZXFfdjIge1xuIFx0bWFuYV9oYW5kbGVfdCBkZWZhdWx0X3J4b2JqO1xuIFx0dTggaGFzaGtleVtNQU5BX0hBU0hfS0VZX1NJWkVdO1xuIFx0dTggY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuLVx0dTggcmVzZXJ2ZWQyWzddO1xuJiM0MztcdHU4IHJlc2VydmVkMlszXTtcbiYjNDM7XHR1MTYgcnNzX2hhc2hfdHlwZXM7XG4mIzQzO1x0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsgLyogdjUgbWVzc2FnZSAqL1xuJiM0MztcdHU4IHJlc2VydmVkMztcbiBcdG1hbmFfaGFuZGxlX3QgaW5kaXJfdGFiW10gX19jb3VudGVkX2J5KG51bV9pbmRpcl9lbnRyaWVzKTtcbiB9OyAvKiBIVyBEQVRBICovXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6MzY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgU21hcnROSUMgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBhbmQgdW50ZXN0YWJsZSBieSBzdGFuZGFyZCBmdXp6ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZkODZjNjIyYmQ2MDJhYjE3YzNmMTAzYTgwM2Q0YWNhM2Q5Y2NmNWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAwNjozNjo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYwppbmRleCBhOGMzMjliZGJhY2Y4Li43MjBkMjJlNmFlYTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jCkBAIC0xMjQxLDYgJiM0MzsxMjQxLDkgQEAgaW50IG1hbmFfZ2RfcXVlcnlfZGV2aWNlX2NmZyhzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTMyIHByb3RvX21ham9yX3ZlciwKIAkJcmV0dXJuIGVycjsKIAl9CiAKJiM0MzsJaWYgKHJlc3AucGZfY2FwX2ZsYWdzMSAmYW1wOyBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCkKJiM0MzsJCWdjLSZndDtjcWU4X2NvYWxlc2Npbmdfc3VwID0gdHJ1ZTsKJiM0MzsKIAkqbWF4X251bV92cG9ydHMgPSByZXNwLm1heF9udW1fdnBvcnRzOwogCiAJaWYgKHJlc3AuaGRyLnJlc3BvbnNlLm1zZ192ZXJzaW9uICZndDs9IEdETUFfTUVTU0FHRV9WMikgewpAQCAtMTQyNiw3ICYjNDM7MTQyOSwxMSBAQCBzdGF0aWMgaW50IG1hbmFfY2ZnX3Zwb3J0X3N0ZWVyaW5nKHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjLAogCW1hbmFfZ2RfaW5pdF9yZXFfaGRyKCZhbXA7cmVxLSZndDtoZHIsIE1BTkFfQ09ORklHX1ZQT1JUX1JYLCByZXFfYnVmX3NpemUsCiAJCQkgICAgIHNpemVvZihyZXNwKSk7CiAKLQlyZXEtJmd0O2hkci5yZXEubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjI7CiYjNDM7CS8qIFJlcXVlc3QgJmFtcDsgcmVzcG9uc2UgdmVyc2lvbnMgY2FuIGJlIGRpZmZlcmVudC4KJiM0MzsJICogSFcgY2FuIGhhbmRsZSBuZXdlciBtc2cgdmVyc2lvbnMsIGJ5IHNraXBwaW5nCiYjNDM7CSAqIG5ldyBmaWVsZHMuCiYjNDM7CSAqLwomIzQzOwlyZXEtJmd0O2hkci5yZXEubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjU7CiAJcmVxLSZndDtoZHIucmVzcC5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WMjsKIAogCXJlcS0mZ3Q7dnBvcnQgPSBhcGMtJmd0O3BvcnRfaGFuZGxlOwpAQCAtMTQ0MCw4ICYjNDM7MTQ0NywxMyBAQCBzdGF0aWMgaW50IG1hbmFfY2ZnX3Zwb3J0X3N0ZWVyaW5nKHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjLAogCXJlcS0mZ3Q7dXBkYXRlX2luZGlyX3RhYiA9IHVwZGF0ZV90YWI7CiAJcmVxLSZndDtkZWZhdWx0X3J4b2JqID0gYXBjLSZndDtkZWZhdWx0X3J4b2JqOwogCi0JaWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSkKJiM0MzsJLyogUmVxdWVzdC1tc2cgdjUgcmVxdWlyZXMgdGhpcyBmaWVsZCAqLwomIzQzOwlyZXEtJmd0O3Jzc19oYXNoX3R5cGVzID0gTUFOQV9IQVNIX0VOQUJMRV9TVVBQT1JURUQ7CiYjNDM7CiYjNDM7CWlmIChyeCAhPSBUUklfU1RBVEVfRkFMU0UpIHsKIAkJcmVxLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtJmd0O2NxZV9jb2FsZXNjaW5nX2VuYWJsZTsKJiM0MzsJCXJlcS0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsKJiM0MzsJfQogCiAJaWYgKHVwZGF0ZV9rZXkpCiAJCW1lbWNweSgmYW1wO3JlcS0mZ3Q7aGFzaGtleSwgYXBjLSZndDtoYXNoa2V5LCBNQU5BX0hBU0hfS0VZX1NJWkUpOwpAQCAtMjA0NiwxNiAmIzQzOzIwNTgsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptYW5hX2J1aWxkX3NrYihzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgdm9pZCAqYnVmX3ZhLAogCiBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLAogCQkJc3RydWN0IG1hbmFfcnhjb21wX29vYiAqY3FlLCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwKLQkJCWludCBpKQomIzQzOwkJCXUzMiBwa3RfbGVuLCB1MzIgcGt0X2hhc2gpCiB7CiAJc3RydWN0IG1hbmFfc3RhdHNfcnggKnJ4X3N0YXRzID0gJmFtcDtyeHEtJmd0O3N0YXRzOwogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLSZndDtuZGV2OwotCXVpbnQgcGt0X2xlbiA9IGNxZS0mZ3Q7cHBpW2ldLnBrdF9sZW47CiAJdTE2IHJ4cV9pZHggPSByeHEtJmd0O3J4cV9pZHg7CiAJc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpOwogCXN0cnVjdCB4ZHBfYnVmZiB4ZHAgPSB7fTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwotCXUzMiBoYXNoX3ZhbHVlOwogCXUzMiBhY3Q7CiAKIAlyeHEtJmd0O3J4X2NxLndvcmtfZG9uZSYjNDM7JiM0Mzs7CkBAIC0yMDk0LDEyICYjNDM7MjEwNCwxMCBAQCBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLAogCX0KIAogCWlmIChjcWUtJmd0O3J4X2hhc2h0eXBlICE9IDAgJmFtcDsmYW1wOyAobmRldi0mZ3Q7ZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9SWEhBU0gpKSB7Ci0JCWhhc2hfdmFsdWUgPSBjcWUtJmd0O3BwaVtpXS5wa3RfaGFzaDsKLQogCQlpZiAoY3FlLSZndDtyeF9oYXNodHlwZSAmYW1wOyBNQU5BX0hBU0hfTDQpCi0JCQlza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0w0KTsKJiM0MzsJCQlza2Jfc2V0X2hhc2goc2tiLCBwa3RfaGFzaCwgUEtUX0hBU0hfVFlQRV9MNCk7CiAJCWVsc2UKLQkJCXNrYl9zZXRfaGFzaChza2IsIGhhc2hfdmFsdWUsIFBLVF9IQVNIX1RZUEVfTDMpOwomIzQzOwkJCXNrYl9zZXRfaGFzaChza2IsIHBrdF9oYXNoLCBQS1RfSEFTSF9UWVBFX0wzKTsKIAl9CiAKIAlpZiAoY3FlLSZndDtyeF92bGFudGFnX3ByZXNlbnQpIHsKQEAgLTIyNDAsNiAmIzQzOzIyNDgsNDMgQEAgc3RhdGljIHZvaWQgbWFuYV9yZWZpbGxfcnhfb29iKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1hbmFfcnhxICpyeHEsCiAJcnhvb2ItJmd0O2RtYV9zeW5jX29mZnNldCA9IGRtYV9zeW5jX29mZnNldDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19vbmVfcnhfcGt0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1hbmFfcnhxICpyeHEsCiYjNDM7CQkJCSAgICBzdHJ1Y3QgbWFuYV9yeGNvbXBfb29iICpvb2IsCiYjNDM7CQkJCSAgICB1MzIgcGt0bGVuLCB1MzIgcGt0X2hhc2gpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjsKJiM0MzsJc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSByeHEtJmd0O25kZXY7CiYjNDM7CXZvaWQgKm9sZF9idWYgPSBOVUxMOwomIzQzOwlib29sIG9sZF9mcDsKJiM0MzsKJiM0MzsJcnhidWZfb29iID0gJmFtcDtyeHEtJmd0O3J4X29vYnNbcnhxLSZndDtidWZfaW5kZXhdOwomIzQzOwlXQVJOX09OX09OQ0UocnhidWZfb29iLSZndDt3cWVfaW5mLndxZV9zaXplX2luX2J1ICE9IDEpOwomIzQzOwomIzQzOwlpZiAodW5saWtlbHkocGt0bGVuICZndDsgcnhxLSZndDtkYXRhc2l6ZSkpIHsKJiM0MzsJCS8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24mIzM5O3QgY2FsbGVkLiAqLwomIzQzOwkJcnhxLSZndDtyeF9jcS53b3JrX2RvbmUmIzQzOyYjNDM7OwomIzQzOwomIzQzOwkJJiM0MzsmIzQzO25kZXYtJmd0O3N0YXRzLnJ4X2Ryb3BwZWQ7CiYjNDM7CQluZXRkZXZfd2Fybl9vbmNlKG5kZXYsCiYjNDM7CQkJCSAmIzM0O0Ryb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxuJiMzNDssCiYjNDM7CQkJCSBwa3RsZW4sIHJ4cS0mZ3Q7ZGF0YXNpemUpOwomIzQzOwomIzQzOwkJLyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqLwomIzQzOwl9IGVsc2UgewomIzQzOwkJbWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbiwKJiM0MzsJCQkJICAgJmFtcDtvbGRfYnVmLCAmYW1wO29sZF9mcCk7CiYjNDM7CiYjNDM7CQkvKiBVbnN1Y2Nlc3NmdWwgcmVmaWxsIHdpbGwgaGF2ZSBvbGRfYnVmID09IE5VTEwuCiYjNDM7CQkgKiBJbiB0aGlzIGNhc2UsIG1hbmFfcnhfc2tiKCkgd2lsbCBkcm9wIHRoZSBwYWNrZXQuCiYjNDM7CQkgKi8KJiM0MzsJCW1hbmFfcnhfc2tiKG9sZF9idWYsIG9sZF9mcCwgb29iLCByeHEsIHBrdGxlbiwgcGt0X2hhc2gpOwomIzQzOwl9CiYjNDM7CiYjNDM7CW1hbmFfbW92ZV93cV90YWlsKHJ4cS0mZ3Q7Z2RtYV9ycSwgcnhidWZfb29iLSZndDt3cWVfaW5mLndxZV9zaXplX2luX2J1KTsKJiM0MzsKJiM0MzsJbWFuYV9wb3N0X3BrdF9yeHEocnhxKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsCiAJCQkJc3RydWN0IGdkbWFfY29tcCAqY3FlKQogewpAQCAtMjI0OSwxMCAmIzQzOzIyOTQsMTAgQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLAogCXN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iOwogCXN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9IGdjLSZndDtkZXY7CiYjNDM7CWJvb2wgY29hbGVzY2VkXzggPSBmYWxzZTsKIAlib29sIGNvYWxlc2NlZCA9IGZhbHNlOwotCXZvaWQgKm9sZF9idWYgPSBOVUxMOwotCXUzMiBjdXJyLCBwa3RsZW47Ci0JYm9vbCBvbGRfZnA7CiYjNDM7CXUzMiBwa3RsZW47CiYjNDM7CWludCBwa3RfaTsKIAlpbnQgaTsKIAogCWFwYyA9IG5ldGRldl9wcml2KG5kZXYpOwpAQCAtMjI3NSw2ICYjNDM7MjMyMCwxMSBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsCiAJCWNvYWxlc2NlZCA9IHRydWU7CiAJCWJyZWFrOwogCiYjNDM7CWNhc2UgQ1FFX1JYX0NPQUxFU0NFRF84OgomIzQzOwkJY29hbGVzY2VkID0gdHJ1ZTsKJiM0MzsJCWNvYWxlc2NlZF84ID0gdHJ1ZTsKJiM0MzsJCWJyZWFrOwomIzQzOwogCWNhc2UgQ1FFX1JYX09CSkVDVF9GRU5DRToKIAkJY29tcGxldGUoJmFtcDtyeHEtJmd0O2ZlbmNlX2V2ZW50KTsKIAkJcmV0dXJuOwpAQCAtMjI4Niw1NCAmIzQzOzIzMzYsNDggQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLAogCQlyZXR1cm47CiAJfQogCiYjNDM7CXBrdF9pID0gMDsKIAlmb3IgKGkgPSAwOyBpICZsdDsgTUFOQV9SWENPTVBfT09CX05VTV9QUEk7IGkmIzQzOyYjNDM7KSB7Ci0JCW9sZF9idWYgPSBOVUxMOwotCQlwa3RsZW4gPSBvb2ItJmd0O3BwaVtpXS5wa3RfbGVuOwotCQlpZiAocGt0bGVuID09IDApCi0JCQlicmVhazsKLQotCQljdXJyID0gcnhxLSZndDtidWZfaW5kZXg7Ci0JCXJ4YnVmX29vYiA9ICZhbXA7cnhxLSZndDtyeF9vb2JzW2N1cnJdOwotCQlXQVJOX09OX09OQ0UocnhidWZfb29iLSZndDt3cWVfaW5mLndxZV9zaXplX2luX2J1ICE9IDEpOwotCi0JCWlmICh1bmxpa2VseShwa3RsZW4gJmd0OyByeHEtJmd0O2RhdGFzaXplKSkgewotCQkJLyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbiYjMzk7dCBjYWxsZWQuICovCi0JCQlyeHEtJmd0O3J4X2NxLndvcmtfZG9uZSYjNDM7JiM0Mzs7CiYjNDM7CQl1MzIgcGt0X2hhc2g7CiAKLQkJCSYjNDM7JiM0MztuZGV2LSZndDtzdGF0cy5yeF9kcm9wcGVkOwotCQkJbmV0ZGV2X3dhcm5fb25jZShuZGV2LAotCQkJCSYjMzQ7RHJvcHBlZCBvdmVyc2l6ZWQgUlggcGFja2V0OiBsZW49JXUsIGRhdGFzaXplPSV1XG4mIzM0OywKLQkJCQlwa3RsZW4sIHJ4cS0mZ3Q7ZGF0YXNpemUpOwotCi0JCQkvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovCiYjNDM7CQlpZiAoY29hbGVzY2VkXzgpIHsKJiM0MzsJCQkvKiA4LXBrdCBtb2RlOiAyIHBhY2tldHMgcGVyIFBQSSBlbnRyeSAqLwomIzQzOwkJCXBrdGxlbiA9IG9vYi0mZ3Q7cHBpW2ldLnBrdF9sZW4wOwomIzQzOwkJCXBrdF9oYXNoID0gb29iLSZndDtwcGlbaV0ucGt0X2hhc2gwOwogCQl9IGVsc2UgewotCi0JCQltYW5hX3JlZmlsbF9yeF9vb2IoZGV2LCByeHEsIHJ4YnVmX29vYiwgcGt0bGVuLAotCQkJCQkgICAmYW1wO29sZF9idWYsICZhbXA7b2xkX2ZwKTsKLQotCQkJLyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLgotCQkJICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LgotCQkJICovCi0JCQltYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBpKTsKJiM0MzsJCQlwa3RsZW4gPSBvb2ItJmd0O3BwaVtpXS5wa3RfbGVuOwomIzQzOwkJCXBrdF9oYXNoID0gb29iLSZndDtwcGlbaV0ucGt0X2hhc2g7CiAJCX0KJiM0MzsJCWlmIChwa3RsZW4gPT0gMCkKJiM0MzsJCQlicmVhazsKIAotCQltYW5hX21vdmVfd3FfdGFpbChyeHEtJmd0O2dkbWFfcnEsCi0JCQkJICByeGJ1Zl9vb2ItJmd0O3dxZV9pbmYud3FlX3NpemVfaW5fYnUpOwotCi0JCW1hbmFfcG9zdF9wa3RfcnhxKHJ4cSk7CiYjNDM7CQltYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sIHBrdF9oYXNoKTsKJiM0MzsJCXBrdF9pJiM0MzsmIzQzOzsKIAogCQlpZiAoIWNvYWxlc2NlZCkKIAkJCWJyZWFrOwomIzQzOwomIzQzOwkJLyogUHJvY2VzcyAybmQgcGFja2V0IGZyb20gdGhlIHNhbWUgUFBJIGluIDgtcGt0IG1vZGUgKi8KJiM0MzsJCWlmIChjb2FsZXNjZWRfOCkgewomIzQzOwkJCXBrdGxlbiA9IG9vYi0mZ3Q7cHBpW2ldLnBrdF9sZW4xOwomIzQzOwkJCXBrdF9oYXNoID0gb29iLSZndDtwcGlbaV0ucGt0X2hhc2gxOwomIzQzOwkJCWlmIChwa3RsZW4gPT0gMCkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CiYjNDM7CQkJbWFuYV9wcm9jZXNzX29uZV9yeF9wa3QoZGV2LCByeHEsIG9vYiwgcGt0bGVuLAomIzQzOwkJCQkJCXBrdF9oYXNoKTsKJiM0MzsJCQlwa3RfaSYjNDM7JiM0Mzs7CiYjNDM7CQl9CiAJfQogCiAJLyogQ29sbGVjdCBjb2FsZXNjZWQgQ1FFIGNvdW50IGJhc2VkIG9uIHBhY2tldHMgcHJvY2Vzc2VkLgotCSAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBpIC0gMi4KJiM0MzsJICogQ29hbGVzY2VkIENRRXMgaGF2ZSBhdCBsZWFzdCAyIHBhY2tldHMsIHNvIGluZGV4IGlzIHBrdF9pIC0gMi4KIAkgKi8KLQlpZiAoaSAmZ3Q7IDEpIHsKJiM0MzsJaWYgKHBrdF9pICZndDsgMSkgewogCQl1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKCZhbXA7cnhxLSZndDtzdGF0cy5zeW5jcCk7Ci0JCXJ4cS0mZ3Q7c3RhdHMuY29hbGVzY2VkX2NxZVtpIC0gMl0mIzQzOyYjNDM7OwomIzQzOwkJcnhxLSZndDtzdGF0cy5jb2FsZXNjZWRfY3FlW3BrdF9pIC0gMl0mIzQzOyYjNDM7OwogCQl1NjRfc3RhdHNfdXBkYXRlX2VuZCgmYW1wO3J4cS0mZ3Q7c3RhdHMuc3luY3ApOwotCX0gZWxzZSBpZiAoIWkgJmFtcDsmYW1wOyAhcGt0bGVuKSB7CiYjNDM7CX0gZWxzZSBpZiAoIXBrdF9pICZhbXA7JmFtcDsgIXBrdGxlbikgewogCQl1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKCZhbXA7cnhxLSZndDtzdGF0cy5zeW5jcCk7CiAJCXJ4cS0mZ3Q7c3RhdHMucGt0X2xlbjBfZXJyJiM0MzsmIzQzOzsKIAkJdTY0X3N0YXRzX3VwZGF0ZV9lbmQoJmFtcDtyeHEtJmd0O3N0YXRzLnN5bmNwKTsKQEAgLTM3NjMsNiAmIzQzOzM4MDcsNyBAQCBzdGF0aWMgaW50IG1hbmFfcHJvYmVfcG9ydChzdHJ1Y3QgbWFuYV9jb250ZXh0ICphYywgaW50IHBvcnRfaWR4LAogCWFwYy0mZ3Q7cG9ydF9pZHggPSBwb3J0X2lkeDsKIAlhcGMtJmd0O2xpbmtfY2ZnX2Vycm9yID0gMTsKIAlhcGMtJmd0O2NxZV9jb2FsZXNjaW5nX2VuYWJsZSA9IDA7CiYjNDM7CWFwYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IDA7CiAKIAkvKiBJbml0aWFsaXplIGludGVycnVwdCBtb2RlcmF0aW9uIHNldHRpbmdzIGlmIHN1cHBvcnRlZCBieSBIVyAqLwogCWlmIChnYy0mZ3Q7cGZfY2FwX2ZsYWdzMSAmYW1wOyBHRE1BX1BGX0NBUF9GTEFHXzFfRFlOX0lOVEVSUlVQVF9NT0RFUkFUSU9OKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jCmluZGV4IDllMzFlMjU5NWFlMzIuLjg3NDNmN2VkZWNiYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jCkBAIC0xNjksNyAmIzQzOzE2OSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBzdHJpbmdzZXQsIHU4ICpkYXRhKQogCQlldGh0b29sX3NwcmludGYoJmFtcDtkYXRhLCAmIzM0O3J4XyVkX3hkcF90eCYjMzQ7LCBpKTsKIAkJZXRodG9vbF9zcHJpbnRmKCZhbXA7ZGF0YSwgJiMzNDtyeF8lZF94ZHBfcmVkaXJlY3QmIzM0OywgaSk7CiAJCWV0aHRvb2xfc3ByaW50ZigmYW1wO2RhdGEsICYjMzQ7cnhfJWRfcGt0X2xlbjBfZXJyJiMzNDssIGkpOwotCQlmb3IgKGogPSAwOyBqICZsdDsgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqJiM0MzsmIzQzOykKJiM0MzsJCWZvciAoaiA9IDA7IGogJmx0OyBNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDE7IGomIzQzOyYjNDM7KQogCQkJZXRodG9vbF9zcHJpbnRmKCZhbXA7ZGF0YSwgJiMzNDtyeF8lZF9jb2FsZXNjZWRfY3FlXyVkJiMzNDssIGksIGogJiM0MzsgMik7CiAJfQogCkBAIC0yMDUsNyAmIzQzOzIwNSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJdTY0IHhkcF9kcm9wOwogCXU2NCB4ZHBfdHg7CiAJdTY0IHBrdF9sZW4wX2VycjsKLQl1NjQgY29hbGVzY2VkX2NxZVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDFdOwomIzQzOwl1NjQgY29hbGVzY2VkX2NxZVtNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDFdOwogCXU2NCB0c29fcGFja2V0czsKIAl1NjQgdHNvX2J5dGVzOwogCXU2NCB0c29faW5uZXJfcGFja2V0czsKQEAgLTI0NSw3ICYjNDM7MjQ1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKIAkJCXhkcF90eCA9IHJ4X3N0YXRzLSZndDt4ZHBfdHg7CiAJCQl4ZHBfcmVkaXJlY3QgPSByeF9zdGF0cy0mZ3Q7eGRwX3JlZGlyZWN0OwogCQkJcGt0X2xlbjBfZXJyID0gcnhfc3RhdHMtJmd0O3BrdF9sZW4wX2VycjsKLQkJCWZvciAoaiA9IDA7IGogJmx0OyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDE7IGomIzQzOyYjNDM7KQomIzQzOwkJCWZvciAoaiA9IDA7IGogJmx0OyBNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDE7IGomIzQzOyYjNDM7KQogCQkJCWNvYWxlc2NlZF9jcWVbal0gPSByeF9zdGF0cy0mZ3Q7Y29hbGVzY2VkX2NxZVtqXTsKIAkJfSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KCZhbXA7cnhfc3RhdHMtJmd0O3N5bmNwLCBzdGFydCkpOwogCkBAIC0yNTUsNyAmIzQzOzI1NSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJCWRhdGFbaSYjNDM7JiM0MztdID0geGRwX3R4OwogCQlkYXRhW2kmIzQzOyYjNDM7XSA9IHhkcF9yZWRpcmVjdDsKIAkJZGF0YVtpJiM0MzsmIzQzO10gPSBwa3RfbGVuMF9lcnI7Ci0JCWZvciAoaiA9IDA7IGogJmx0OyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDE7IGomIzQzOyYjNDM7KQomIzQzOwkJZm9yIChqID0gMDsgaiAmbHQ7IE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMTsgaiYjNDM7JiM0MzspCiAJCQlkYXRhW2kmIzQzOyYjNDM7XSA9IGNvYWxlc2NlZF9jcWVbal07CiAJfQogCkBAIC00MDgsNiAmIzQzOzQwOCw3IEBAIHN0YXRpYyBpbnQgbWFuYV9nZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGMgPSBuZXRkZXZfcHJpdihuZGV2KTsKIAogCWtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzID0KJiM0MzsJCWFwYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA/IE1BTkFfQ1FFX0NPQUxfUEtUU184IDoKIAkJYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSA6IDE7CiAKIAlrZXJuZWxfY29hbC0mZ3Q7cnhfY3FlX25zZWNzID0gYXBjLSZndDtjcWVfY29hbGVzY2luZ190aW1lb3V0X25zOwpAQCAtNDQzLDYgJiM0Mzs0NDQsNyBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQl1MTYgaW50cl9tb2RyX3R4X3VzZWM7CiAJCXUxNiBpbnRyX21vZHJfdHhfY29tcDsKIAkJdTggY3FlX2NvYWxlc2NpbmdfZW5hYmxlOwomIzQzOwkJdTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsKIAkJYm9vbCByeF9kaW1fZW5hYmxlZDsKIAkJYm9vbCB0eF9kaW1fZW5hYmxlZDsKIAl9IHNhdmVkOwpAQCAtNDY2LDEwICYjNDM7NDY4LDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJfQogCiAJaWYgKGtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzICE9IDEgJmFtcDsmYW1wOwotCSAgICBrZXJuZWxfY29hbC0mZ3Q7cnhfY3FlX2ZyYW1lcyAhPSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSkgewomIzQzOwkgICAga2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgIT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgJmFtcDsmYW1wOwomIzQzOwkgICAga2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgIT0gTUFOQV9DUUVfQ09BTF9QS1RTXzgpIHsKIAkJTkxfU0VUX0VSUl9NU0dfRk1UKGV4dGFjaywKLQkJCQkgICAmIzM0O3J4LWZyYW1lcyBtdXN0IGJlIDEgb3IgJXUsIGdvdCAldSYjMzQ7LAomIzQzOwkJCQkgICAmIzM0O3J4LWZyYW1lcyBtdXN0IGJlIDEsICV1LCBvciAldSwgZ290ICV1JiMzNDssCiAJCQkJICAgTUFOQV9SWENPTVBfT09CX05VTV9QUEksCiYjNDM7CQkJCSAgIE1BTkFfQ1FFX0NPQUxfUEtUU184LAogCQkJCSAgIGtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtNTE0LDggJiM0Mzs1MTgsMTUgQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKIAlzYXZlZC50eF9kaW1fZW5hYmxlZCA9IGFwYy0mZ3Q7dHhfZGltX2VuYWJsZWQ7CiAKIAlzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtJmd0O2NxZV9jb2FsZXNjaW5nX2VuYWJsZTsKJiM0MzsJc2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsKIAlhcGMtJmd0O2NxZV9jb2FsZXNjaW5nX2VuYWJsZSA9Ci0JCWtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzID09IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJOwomIzQzOwkJa2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgJmd0Oz0gTUFOQV9SWENPTVBfT09CX05VTV9QUEk7CiYjNDM7CiYjNDM7CWlmIChnYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX3N1cCkKJiM0MzsJCWFwYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9CiYjNDM7CQkJa2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgPT0gTUFOQV9DUUVfQ09BTF9QS1RTXzg7CiYjNDM7CWVsc2UgaWYgKGtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzID09IE1BTkFfQ1FFX0NPQUxfUEtUU184KQomIzQzOwkJbmV0ZGV2X2luZm8obmRldiwgJiMzNDtGYWxsIGJhY2sgdG8gUlgtQ1FFIHg0IGNvYWxlc2NpbmdcbiYjMzQ7KTsKIAogCWlmICghYXBjLSZndDtwb3J0X2lzX3VwKSB7CiAJCVdSSVRFX09OQ0UoYXBjLSZndDtyeF9kaW1fZW5hYmxlZCwgISFlYy0mZ3Q7dXNlX2FkYXB0aXZlX3J4X2NvYWxlc2NlKTsKQEAgLTUyMyw3ICYjNDM7NTM0LDggQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKGFwYy0mZ3Q7Y3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSkgewomIzQzOwlpZiAoYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlIHx8CiYjNDM7CSAgICBhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSkgewogCQkvKiBDUUUgY29hbGVzY2luZyBzZXR0aW5nIGlzIGFwcGxpZWQgdmlhIFJTUyBjb25maWd1cmF0aW9uLiAqLwogCQllcnIgPSBtYW5hX2NvbmZpZ19yc3MoYXBjLCBUUklfU1RBVEVfVFJVRSwgZmFsc2UsIGZhbHNlKTsKIAkJaWYgKGVycikgewpAQCAtNTMxLDYgJiM0Mzs1NDMsOCBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQkJCSAgIGVycik7CiAJCQlhcGMtJmd0O2NxZV9jb2FsZXNjaW5nX2VuYWJsZSA9CiAJCQkJc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlOwomIzQzOwkJCWFwYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9CiYjNDM7CQkJCXNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGU7CiAJCQlhcGMtJmd0O2ludHJfbW9kcl9yeF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3J4X3VzZWM7CiAJCQlhcGMtJmd0O2ludHJfbW9kcl9yeF9jb21wID0gc2F2ZWQuaW50cl9tb2RyX3J4X2NvbXA7CiAJCQlhcGMtJmd0O2ludHJfbW9kcl90eF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3R4X3VzZWM7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaCBiL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oCmluZGV4IDg1MjljZWYwZDdjNDUuLjcwYTdmMWZlZTVkM2IgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oCkBAIC0xODIsNiAmIzQzOzE4Miw3IEBAIHN0cnVjdCBnZG1hX2dlbmVyYWxfcmVxIHsKICNkZWZpbmUgR0RNQV9NRVNTQUdFX1YyIDIKICNkZWZpbmUgR0RNQV9NRVNTQUdFX1YzIDMKICNkZWZpbmUgR0RNQV9NRVNTQUdFX1Y0IDQKJiM0MzsjZGVmaW5lIEdETUFfTUVTU0FHRV9WNSA1CiAKIHN0cnVjdCBnZG1hX2dlbmVyYWxfcmVzcCB7CiAJc3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyOwpAQCAtNDI4LDYgJiM0Mzs0MjksOSBAQCBzdHJ1Y3QgZ2RtYV9jb250ZXh0IHsKIAkvKiBMMiBNVFUgKi8KIAl1MTYgYWRhcHRlcl9tdHU7CiAKJiM0MzsJLyogTklDIHN1cHBvcnRzIENRRSB4OCBjb2FsZXNjaW5nICovCiYjNDM7CWJvb2wgY3FlOF9jb2FsZXNjaW5nX3N1cDsKJiM0MzsKIAkvKiBUaGlzIG1hcHMgYSBDUSBpbmRleCB0byB0aGUgcXVldWUgc3RydWN0dXJlLiAqLwogCXVuc2lnbmVkIGludAkJbWF4X251bV9jcXM7CiAJc3RydWN0IGdkbWFfcXVldWUJKipjcV90YWJsZTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oIGIvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmgKaW5kZXggNGQwNDFmYjg0MzdmNS4uM2NhMTM5OWEyZmFmYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmgKQEAgLTYyLDkgJiM0Mzs2MiwxMiBAQCBlbnVtIFRSSV9TVEFURSB7CiAKICNkZWZpbmUgTUFYX1BPUlRTX0lOX01BTkFfREVWIDI1NgogCi0vKiBNYXhpbXVtIG51bWJlciBvZiBwYWNrZXRzIHBlciBjb2FsZXNjZWQgQ1FFICovCiYjNDM7LyogTWF4aW11bSBudW1iZXIgb2YgUFBJcyBwZXIgY29hbGVzY2VkIENRRSAqLwogI2RlZmluZSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSA0CiAKJiM0MzsvKiA4LXBrdCBtb2RlIHBhY2tzIHVwIHRvIDIgcGFja2V0cyBwZXIgUFBJIGVudHJ5ICovCiYjNDM7I2RlZmluZSBNQU5BX0NRRV9DT0FMX1BLVFNfOCA4CiYjNDM7CiAvKiBEZWZhdWx0L21heCBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqLwogI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9VU0VDX0RFRiAwCiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfREVGIDAKQEAgLTc5LDcgJiM0Mzs4Miw3IEBAIGVudW0gVFJJX1NUQVRFIHsKICNkZWZpbmUgTUFOQV9JTlRSX01PRFJfQ09NUF9NQVNLICAgR0VOTUFTSygyMywgMTYpCiAKIC8qIFVwZGF0ZSB0aGlzIGNvdW50IHdoZW5ldmVyIHRoZSByZXNwZWN0aXZlIHN0cnVjdHVyZXMgYXJlIGNoYW5nZWQgKi8KLSNkZWZpbmUgTUFOQV9TVEFUU19SWF9DT1VOVCAoNiAmIzQzOyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDEpCiYjNDM7I2RlZmluZSBNQU5BX1NUQVRTX1JYX0NPVU5UICg2ICYjNDM7IE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMSkKICNkZWZpbmUgTUFOQV9TVEFUU19UWF9DT1VOVCAxMQogCiAjZGVmaW5lIE1BTkFfUlhfRlJBR19BTElHTk1FTlQgNjQKQEAgLTkxLDcgJiM0Mzs5NCw3IEBAIHN0cnVjdCBtYW5hX3N0YXRzX3J4IHsKIAl1NjQgeGRwX3R4OwogCXU2NCB4ZHBfcmVkaXJlY3Q7CiAJdTY0IHBrdF9sZW4wX2VycjsKLQl1NjQgY29hbGVzY2VkX2NxZVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDFdOwomIzQzOwl1NjQgY29hbGVzY2VkX2NxZVtNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDFdOwogCXN0cnVjdCB1NjRfc3RhdHNfc3luYyBzeW5jcDsKIH07CiAKQEAgLTIwMiw2ICYjNDM7MjA1LDcgQEAgZW51bSBtYW5hX2NxZV90eXBlIHsKIAlDUUVfUlhfQ09BTEVTQ0VEXzQJCT0gMiwKIAlDUUVfUlhfT0JKRUNUX0ZFTkNFCQk9IDMsCiAJQ1FFX1JYX1RSVU5DQVRFRAkJPSA0LAomIzQzOwlDUUVfUlhfQ09BTEVTQ0VEXzgJCT0gNywKIAogCUNRRV9UWF9PS0FZCQkJPSAzMiwKIAlDUUVfVFhfU0FfRFJPUAkJCT0gMzMsCkBAIC0yMzgsMTIgJiM0MzsyNDIsMjUgQEAgc3RydWN0IG1hbmFfY3FlX2hlYWRlciB7CiAjZGVmaW5lIE1BTkFfSEFTSF9MNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAkoTkRJU19IQVNIX1RDUF9JUFY0IHwgTkRJU19IQVNIX1VEUF9JUFY0IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgICAgICBcCiAJIE5ESVNfSEFTSF9VRFBfSVBWNiB8IE5ESVNfSEFTSF9UQ1BfSVBWNl9FWCB8IE5ESVNfSEFTSF9VRFBfSVBWNl9FWCkKJiM0MzsjZGVmaW5lIE1BTkFfSEFTSF9FTkFCTEVfU1VQUE9SVEVEIFwKJiM0MzsJKE5ESVNfSEFTSF9JUFY0IHwgTkRJU19IQVNIX1RDUF9JUFY0IHwgTkRJU19IQVNIX1VEUF9JUFY0IHwgXAomIzQzOwkgTkRJU19IQVNIX0lQVjYgfCBORElTX0hBU0hfVENQX0lQVjYgfCBORElTX0hBU0hfVURQX0lQVjYpCiYjNDM7CiYjNDM7dW5pb24gbWFuYV9yeGNvbXBfcGVycGt0X2luZm8gewomIzQzOwlzdHJ1Y3QgewomIzQzOwkJdTMyIHBrdF9sZW4gOiAxNjsKJiM0MzsJCXUzMiByZXNlcnZlZDEgOiAxNjsKJiM0MzsJCXUzMiByZXNlcnZlZDI7CiYjNDM7CQl1MzIgcGt0X2hhc2g7CiYjNDM7CX07CiAKLXN0cnVjdCBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyB7Ci0JdTMyIHBrdF9sZW4JOiAxNjsKLQl1MzIgcmVzZXJ2ZWQxCTogMTY7Ci0JdTMyIHJlc2VydmVkMjsKLQl1MzIgcGt0X2hhc2g7CiYjNDM7CS8qIFVwIHRvIHR3byBwa3RzIHBlciBQUEkgZW50cnkgKi8KJiM0MzsJc3RydWN0IHsKJiM0MzsJCXUzMiBwa3RfaGFzaDA7CiYjNDM7CQl1MTYgcGt0X2xlbjA7CiYjNDM7CQl1MTYgcGt0X2xlbjE7CiYjNDM7CQl1MzIgcGt0X2hhc2gxOwomIzQzOwl9OwogfTsgLyogSFcgREFUQSAqLwogCiAvKiBSZWNlaXZlIGNvbXBsZXRpb24gT09CICovCkBAIC0yNjQsNyAmIzQzOzI4MSw3IEBAIHN0cnVjdCBtYW5hX3J4Y29tcF9vb2IgewogCXUzMiByeF91ZHBfY3N1bV9mYWlsCQk6IDE7CiAJdTMyIHJlc2VydmVkMgkJCTogMTsKIAotCXN0cnVjdCBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldOwomIzQzOwl1bmlvbiBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldOwogCiAJdTMyIHJ4X3dxZV9vZmZzZXQ7CiB9OyAvKiBIVyBEQVRBICovCkBAIC02MDcsNiAmIzQzOzYyNCw3IEBAIHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCB7CiAJYm9vbCBwb3J0X3N0X3NhdmU7IC8qIFNhdmVkIHBvcnQgc3RhdGUgKi8KIAogCXU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTsKJiM0MzsJdTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsKIAl1MzIgY3FlX2NvYWxlc2NpbmdfdGltZW91dF9uczsKIAogCS8qIEludGVycnVwdCBtb2RlcmF0aW9uIHNldHRpbmdzICovCkBAIC03NTEsNiAmIzQzOzc2OSw4IEBAIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVxIHsKIAl1MzIgcmVzZXJ2ZWQ7CiB9OyAvKiBIVyBEQVRBICovCiAKJiM0MzsjZGVmaW5lIE1BTkFfUEZfRkxBR18xX0NRRV84X0NPQUxFU0NJTkdfU1VQUE9SVEVEIEJJVCg1KQomIzQzOwogc3RydWN0IG1hbmFfcXVlcnlfZGV2aWNlX2NmZ19yZXNwIHsKIAlzdHJ1Y3QgZ2RtYV9yZXNwX2hkciBoZHI7CiAKQEAgLTk4Niw3ICYjNDM7MTAwNiwxMCBAQCBzdHJ1Y3QgbWFuYV9jZmdfcnhfc3RlZXJfcmVxX3YyIHsKIAltYW5hX2hhbmRsZV90IGRlZmF1bHRfcnhvYmo7CiAJdTggaGFzaGtleVtNQU5BX0hBU0hfS0VZX1NJWkVdOwogCXU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTsKLQl1OCByZXNlcnZlZDJbN107CiYjNDM7CXU4IHJlc2VydmVkMlszXTsKJiM0MzsJdTE2IHJzc19oYXNoX3R5cGVzOwomIzQzOwl1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlOyAvKiB2NSBtZXNzYWdlICovCiYjNDM7CXU4IHJlc2VydmVkMzsKIAltYW5hX2hhbmRsZV90IGluZGlyX3RhYltdIF9fY291bnRlZF9ieShudW1faW5kaXJfZW50cmllcyk7CiB9OyAvKiBIVyBEQVRBICovCiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTIwMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1BTkEgRHJpdmVyIFBhdGNoIGZvciBUZXN0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIE1pY3Jvc29mdCBNQU5BIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFkZGluZyBzdXBwb3J0IGZvciBDUUUgeDggY29hbGVzY2luZyDigJMgOC1wYWNrZXQgbW9kZSDigJMgd2hpY2ggaXMgYSBwcmV0dHkgaW50ZXJlc3Rpbmcgb3B0aW1pemF0aW9uLiBJdCBsb29rcyBsaWtlIGl0IHRvdWNoZXMgc2V2ZXJhbCBjb3JlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGRyaXZlcjogYG1hbmFfZ2RfcXVlcnlfZGV2aWNlX2NmZ2AsIGBtYW5hX2NmZ192cG9ydF9zdGVlcmluZ2AsIHRoZSBSWCBwYXRoIHdpdGggYG1hbmFfcnhfc2tiYCBhbmQgYG1hbmFfcHJvY2Vzc19yeF9jcWVgLCBwbHVzIHByb2JlIGFuZCBldGh0b29sIGZ1bmN0aW9uYWxpdHkuIFRoZSBwYXRoIHBvaW50cyB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvYCwgd2hpY2ggc2VlbXMgc3RhbmRhcmQgZW5vdWdoLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFsd2F5cywgJiMzNDtDYW4gSSB0ZXN0IHRoaXMgd2l0aG91dCBuZWVkaW5nIGEgc3BlY2lhbGl6ZWQgc2V0dXA/JiMzNDsgSSBuZWVkIHRvIHZlcmlmeSBpZiB0aGlzIGRyaXZlciBpcyB0ZXN0YWJsZSBpbiBRRU1VLiBHaXZlbiB0aGF0IHRoZSBNQU5BIGlzIGEgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgYW5kIHRoZXJlZm9yZSBhIFBDSSBkZXZpY2UsIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBpcyB0aGUgTUFOQSBkZXZpY2UgYWN0dWFsbHkgKmVtdWxhdGVkKiBpbiBRRU1VPyBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgbWVudGlvbiBvZiAmIzM0O21hbmEmIzM0OyBpbiBRRU1VJiMzOTtzIGRvY3VtZW50YXRpb24gb3IgY29kZSwgb3IgaWYgdGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGNhcmRzIG9yIGFuIEF6dXJlIFZNIGVudmlyb25tZW50LgoKUmlnaHQsIE1BTkEgaXMgQXp1cmUmIzM5O3MgY3VzdG9tIFNtYXJ0TklDL1NSLUlPViBkZXZpY2UuIEFzIEkgZXhwZWN0ZWQsIGl0JiMzOTtzIG5vdCB0aGUga2luZCBvZiB0aGluZyB0aGF0JiMzOTtzIGdlbmVyYWxseSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGUgaW5zdHJ1Y3Rpb25zIGRvIG1lbnRpb24gYSBzcGVjaWZpYyBjcml0ZXJpb24gZm9yIHdoZW4gYSBwYXRjaCAqc2hvdWxkbiYjMzk7dCogYmUgY29uc2lkZXJlZCB3b3J0aCBmdXp6aW5nLiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgJiMzNDtDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4KClNvIGxldCYjMzk7cyBzZWUgaWYgTUFOQSBmaXRzIHRoaXMgZGVzY3JpcHRpb24uIE1BTkEgaXMgaW5kZWVkIGEgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgYW5kIGl0IGlzIGEgUENJZSBkZXZpY2UuIFRodXMsIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIHJlbWFpbnM6IGlzIE1BTkEgZW11bGF0ZWQgaW4gUUVNVT8gQW5kIGFzIGZhciBhcyBJIGNhbiB0ZWxsLCB0aGUgYW5zd2VyIGlzIG5vLiBJIG5lZWQgdG8gZXhwbGljaXRseSBjb25maXJtIHRoaXMg4oCTIHRoYXQgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGVpdGhlciBpbiB0aGUga2VybmVsIG9yIFFFTVUgaXRzZWxmLiBJJiMzOTtsbCBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoYXQgbm8gc3VwcG9ydGluZyBlbXVsYXRpb24gZXhpc3RzLiBJZiBpdCYjMzk7cyBwdXJlIGhhcmR3YXJlLCB3ZSYjMzk7bGwgbmVlZCBhIHBoeXNpY2FsIEF6dXJlIGVudmlyb25tZW50IHRvIGRvIG1lYW5pbmdmdWwgdGVzdGluZywgd2hpY2ggaW1wYWN0cyBvdXIgdGVzdGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFuYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzYzOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01JQ1JPU09GVF9NQU5BKSAmIzQzOz0gbWFuYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9NYWtlZmlsZTo2Om1hbmEtb2JqcyA6PSBnZG1hX21haW4ubyBzaG1fY2hhbm5lbC5vIGh3X2NoYW5uZWwubyBtYW5hX2VuLm8gbWFuYV9ldGh0b29sLm8gbWFuYV9icGYub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTU6I2luY2x1ZGUgXHUwMDNjbmV0L21hbmEvbWFuYS5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxNjojaW5jbHVkZSBcdTAwM2NuZXQvbWFuYS9od19jaGFubmVsLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTg6c3RydWN0IGRlbnRyeSAqbWFuYV9kZWJ1Z2ZzX3Jvb3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIwOnN0cnVjdCBtYW5hX2Rldl9yZWNvdmVyeSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMS1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI2OnN0YXRpYyBzdHJ1Y3QgbWFuYV9kZXZfcmVjb3Zlcnlfd29yayB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNy1cdHN0cnVjdCBsaXN0X2hlYWQgZGV2X2xpc3Q7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzEtXHRzcGlubG9ja190IGxvY2s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozMjp9IG1hbmFfZGV2X3JlY292ZXJ5X3dvcms7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM0OnN0YXRpYyB1MzIgbWFuYV9nZF9yMzIoc3RydWN0IGdkbWFfY29udGV4dCAqZywgdTY0IG9mZnNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM5OnN0YXRpYyB1NjQgbWFuYV9nZF9yNjQoc3RydWN0IGdkbWFfY29udGV4dCAqZywgdTY0IG9mZnNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjQ0OnN0YXRpYyBpbnQgbWFuYV9nZF9pbml0X3BmX3JlZ3Moc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1MTpcdGdjLVx1MDAzZWRiX3BhZ2Vfc2l6ZSA9IG1hbmFfZ2RfcjMyKGdjLCBHRE1BX1BGX1JFR19EQl9QQUdFX1NJWkUpIFx1MDAyNiAweEZGRkY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjUzOlx0LyogbWFuYV9nZF9yaW5nX2Rvb3JiZWxsKCkgYWNjZXNzZXMgb2Zmc2V0cyB1cCB0byBET09SQkVMTF9PRkZTRVRfRVFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU0LVx0ICogKDB4RkY4KSAmIzQzOyA4IGJ5dGVzID0gNEtCIHdpdGhpbiBlYWNoIGRvb3JiZWxsIHBhZ2UsIHNvIHRoZSBwYWdlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2NDpcdGdjLVx1MDAzZWRiX3BhZ2Vfb2ZmID0gbWFuYV9nZF9yNjQoZ2MsIEdETUFfUEZfUkVHX0RCX1BBR0VfT0ZGKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Nzc6XHRzcmlvdl9iYXNlX29mZiA9IG1hbmFfZ2RfcjY0KGdjLCBHRE1BX1NSSU9WX1JFR19DRkdfQkFTRV9PRkYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzgtXHRpZiAoc3Jpb3ZfYmFzZV9vZmYgXHUwMDNlPSBnYy1cdTAwM2ViYXIwX3NpemUgfHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04OC1cdHJlbWFpbmluZ19iYXJzaXplID0gZ2MtXHUwMDNlYmFyMF9zaXplIC0gc3Jpb3ZfYmFzZV9vZmY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo4OTpcdHNyaW92X3NobV9vZmYgPSBtYW5hX2dkX3I2NChnYywgc3Jpb3ZfYmFzZV9vZmYgJiM0MzsgR0RNQV9QRl9SRUdfU0hNX09GRik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MC1cdGlmIChzcmlvdl9zaG1fb2ZmIFx1MDAzZT0gcmVtYWluaW5nX2JhcnNpemUgfHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDQ6c3RhdGljIGludCBtYW5hX2dkX2luaXRfdmZfcmVncyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTA5Olx0Z2MtXHUwMDNlZGJfcGFnZV9zaXplID0gbWFuYV9nZF9yMzIoZ2MsIEdETUFfUkVHX0RCX1BBR0VfU0laRSkgXHUwMDI2IDB4RkZGRjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExMTpcdC8qIG1hbmFfZ2RfcmluZ19kb29yYmVsbCgpIGFjY2Vzc2VzIG9mZnNldHMgdXAgdG8gRE9PUkJFTExfT0ZGU0VUX0VRXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTItXHQgKiAoMHhGRjgpICYjNDM7IDggYnl0ZXMgPSA0S0Igd2l0aGluIGVhY2ggZG9vcmJlbGwgcGFnZSwgc28gdGhlIHBhZ2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjI6XHRnYy1cdTAwM2VkYl9wYWdlX29mZiA9IG1hbmFfZ2RfcjY0KGdjLCBHRE1BX1JFR19EQl9QQUdFX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTM1Olx0c2htX29mZiA9IG1hbmFfZ2RfcjY0KGdjLCBHRE1BX1JFR19TSE1fT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzNi1cdGlmIChzaG1fb2ZmIFx1MDAzZT0gZ2MtXHUwMDNlYmFyMF9zaXplIHx8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTUwOnN0YXRpYyBpbnQgbWFuYV9nZF9pbml0X3JlZ2lzdGVycyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE1MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTU0LVx0aWYgKGdjLVx1MDAzZWlzX3BmIFx1MDAyNlx1MDAyNiAhZ2MtXHUwMDNlaXNfcGYyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTU1Olx0XHRyZXR1cm4gbWFuYV9nZF9pbml0X3BmX3JlZ3MocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNTYtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxNTc6XHRcdHJldHVybiBtYW5hX2dkX2luaXRfdmZfcmVncyhwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE1OC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTYwLS8qIFN1cHByZXNzIGxvZ2dpbmcgd2hlbiB3ZSBzZXQgdGltZW91dCB0byB6ZXJvICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxNjE6Ym9vbCBtYW5hX25lZWRfbG9nKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCBpbnQgZXJyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTYyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxNzg6c3RhdGljIGludCBtYW5hX2dkX3F1ZXJ5X21heF9yZXNvdXJjZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5Mi1cdCAqIE1TSS1YIGFsbG9jYXRpb247IG9uIG5vbi1keW4gcGxhdGZvcm1zIG1zaV9zaGFyaW5nIGlzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxOTM6XHQgKiB1bmNvbmRpdGlvbmFsbHkgdHJ1ZSAoc2V0IGluIG1hbmFfZ2Rfc2V0dXBfaHdjX2lycXMpLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk0LVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTk4Olx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXHUwMDI2cmVxLmhkciwgR0RNQV9RVUVSWV9NQVhfUkVTT1VSQ0VTLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk5LVx0XHRcdCAgICAgc2l6ZW9mKHJlcSksIHNpemVvZihyZXNwKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMDE6XHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgc2l6ZW9mKHJlcSksIFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcdTAwMjZyZXNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIwMi1cdGlmIChlcnIgfHwgcmVzcC5oZHIuc3RhdHVzKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ2Olx0ZGVidWdmc19jcmVhdGVfdTMyKFwmIzM0O251bV9tc2l4X3VzYWJsZVwmIzM0OywgMDQwMCwgZ2MtXHUwMDNlbWFuYV9wY2lfZGVidWdmcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0Ny1cdFx0XHQgICBcdTAwMjZnYy1cdTAwM2VudW1fbXNpeF91c2FibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ4Olx0ZGVidWdmc19jcmVhdGVfdTMyKFwmIzM0O21heF9udW1fcXVldWVzXCYjMzQ7LCAwNDAwLCBnYy1cdTAwM2VtYW5hX3BjaV9kZWJ1Z2ZzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5LVx0XHRcdCAgIFx1MDAyNmdjLVx1MDAzZW1heF9udW1fcXVldWVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1MTpcdGVyciA9IG1hbmFfZ2RfcXVlcnlfZGV2aWNlX2NmZyhnYywgTUFOQV9NQUpPUl9WRVJTSU9OLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUyLVx0XHRcdFx0ICAgICAgIE1BTkFfTUlOT1JfVkVSU0lPTixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNjM6XHQvKiBDYXAgdG8gdGhlIHNhbWUgbGltaXQgdXNlZCBieSBtYW5hX3Byb2JlKCkgZm9yIHBvcnQgaW5zdGFudGlhdGlvbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI2NC1cdCAqIHNvIE1TSS1YIGFuZCBxdWV1ZSBidWRnZXRpbmcgbWF0Y2hlcyB0aGUgYWN0dWFsIHBvcnQgY291bnQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzAwOnN0YXRpYyBpbnQgbWFuYV9nZF9xdWVyeV9od2NfdGltZW91dChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTMyICp0aW1lb3V0X3ZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMwMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzA3Olx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXHUwMDI2cmVxLmhkciwgR0RNQV9RVUVSWV9IV0NfVElNRU9VVCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMwOC1cdFx0XHQgICAgIHNpemVvZihyZXEpLCBzaXplb2YocmVzcCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzA5LVx0cmVxLnRpbWVvdXRfbXMgPSAqdGltZW91dF92YWw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozMTA6XHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgc2l6ZW9mKHJlcSksIFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcdTAwMjZyZXNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMxMS1cdGlmIChlcnIgfHwgcmVzcC5oZHIuc3RhdHVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjMxOTpzdGF0aWMgaW50IG1hbmFfZ2RfZGV0ZWN0X2RldmljZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjMzMDpcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFx1MDAyNnJlcS5oZHIsIEdETUFfTElTVF9ERVZJQ0VTLCBzaXplb2YocmVxKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMzMS1cdFx0XHQgICAgIHNpemVvZihyZXNwKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozMzM6XHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgc2l6ZW9mKHJlcSksIFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcdTAwMjZyZXNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMzNC1cdGlmIChlcnIgfHwgcmVzcC5oZHIuc3RhdHVzKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzUxOlx0XHQvKiBIV0MgaXMgYWxyZWFkeSBkZXRlY3RlZCBpbiBtYW5hX2h3Y19jcmVhdGVfY2hhbm5lbCgpLiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzUyLVx0XHRpZiAoZGV2X3R5cGUgPT0gR0RNQV9ERVZJQ0VfSFdDKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM1NS1cdFx0aWYgKGRldl90eXBlID09IEdETUFfREVWSUNFX01BTkEpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM1NjpcdFx0XHRnYy1cdTAwM2VtYW5hLmdkbWFfY29udGV4dCA9IGdjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzU3Olx0XHRcdGdjLVx1MDAzZW1hbmEuZGV2X2lkID0gZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzU4LVx0XHR9IGVsc2UgaWYgKGRldl90eXBlID09IEdETUFfREVWSUNFX01BTkFfSUIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM1OTpcdFx0XHRnYy1cdTAwM2VtYW5hX2liLmRldl9pZCA9IGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM2MDpcdFx0XHRnYy1cdTAwM2VtYW5hX2liLmdkbWFfY29udGV4dCA9IGdjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzYxLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzY0Olx0cmV0dXJuIGdjLVx1MDAzZW1hbmEuZGV2X2lkLnR5cGUgPT0gMCA/IC1FTk9ERVYgOiAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzY1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM2NzppbnQgbWFuYV9nZF9zZW5kX3JlcXVlc3Qoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHUzMiByZXFfbGVuLCBjb25zdCB2b2lkICpyZXEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNjgtXHRcdFx0IHUzMiByZXNwX2xlbiwgdm9pZCAqcmVzcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozNzI6XHRyZXR1cm4gbWFuYV9od2Nfc2VuZF9yZXF1ZXN0KGh3YywgcmVxX2xlbiwgcmVxLCByZXNwX2xlbiwgcmVzcCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNzMtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Mzc0OkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF9zZW5kX3JlcXVlc3QsIFwmIzM0O05FVF9NQU5BXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM3NjppbnQgbWFuYV9nZF9hbGxvY19tZW1vcnkoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHVuc2lnbmVkIGludCBsZW5ndGgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNzctXHRcdFx0IHN0cnVjdCBnZG1hX21lbV9pbmZvICpnbWkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Mzk3OnZvaWQgbWFuYV9nZF9mcmVlX21lbW9yeShzdHJ1Y3QgZ2RtYV9tZW1faW5mbyAqZ21pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzk4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0MDM6c3RhdGljIGludCBtYW5hX2dkX2NyZWF0ZV9od19lcShzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQwNC1cdFx0XHRcdHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0MTM6XHRtYW5hX2dkX2luaXRfcmVxX2hkcihcdTAwMjZyZXEuaGRyLCBHRE1BX0NSRUFURV9RVUVVRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQxNC1cdFx0XHQgICAgIHNpemVvZihyZXEpLCBzaXplb2YocmVzcCkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjQyNTpcdGVyciA9IG1hbmFfZ2Rfc2VuZF9yZXF1ZXN0KGdjLCBzaXplb2YocmVxKSwgXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIFx1MDAyNnJlc3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDI2LVx0aWYgKGVyciB8fCByZXNwLmhkci5zdGF0dXMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0Mzg6c3RhdGljIGludCBtYW5hX2dkX2Rpc2FibGVfcXVldWUoc3RydWN0IGdkbWFfcXVldWUgKnF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0NDc6XHRtYW5hX2dkX2luaXRfcmVxX2hkcihcdTAwMjZyZXEuaGRyLCBHRE1BX0RJU0FCTEVfUVVFVUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NDgtXHRcdFx0ICAgICBzaXplb2YocmVxKSwgc2l6ZW9mKHJlc3ApKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0NTU6XHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgc2l6ZW9mKHJlcSksIFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcdTAwMjZyZXNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQ1Ni1cdGlmIChlcnIgfHwgcmVzcC5oZHIuc3RhdHVzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0NTc6XHRcdGlmIChtYW5hX25lZWRfbG9nKGdjLCBlcnIpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDU4LVx0XHRcdGRldl9lcnIoZ2MtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gZGlzYWJsZSBxdWV1ZTogJWQsIDB4JXhcXG5cJiMzNDssIGVycixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0NzI6c3RhdGljIHZvaWQgbWFuYV9nZF9yaW5nX2Rvb3JiZWxsKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1MzIgZGJfaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NzMtXHRcdFx0XHQgIGVudW0gZ2RtYV9xdWV1ZV90eXBlIHFfdHlwZSwgdTMyIHFpZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01MzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1MzI6dm9pZCBtYW5hX2dkX3dxX3JpbmdfZG9vcmJlbGwoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTUzMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTM2LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1Mzc6XHRtYW5hX2dkX3JpbmdfZG9vcmJlbGwoZ2MsIHF1ZXVlLVx1MDAzZWdkbWFfZGV2LVx1MDAzZWRvb3JiZWxsLCBxdWV1ZS1cdTAwM2V0eXBlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTM4LVx0XHRcdCAgICAgIHF1ZXVlLVx1MDAzZWlkLCBxdWV1ZS1cdTAwM2VoZWFkICogR0RNQV9XUUVfQlVfU0laRSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01MzktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NTQwOkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF93cV9yaW5nX2Rvb3JiZWxsLCBcJiMzNDtORVRfTUFOQVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1NDI6dm9pZCBtYW5hX2dkX3JpbmdfY3Eoc3RydWN0IGdkbWFfcXVldWUgKmNxLCB1OCBhcm1fYml0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTQzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1NTA6XHRtYW5hX2dkX3JpbmdfZG9vcmJlbGwoZ2MsIGNxLVx1MDAzZWdkbWFfZGV2LVx1MDAzZWRvb3JiZWxsLCBjcS1cdTAwM2V0eXBlLCBjcS1cdTAwM2VpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU1MS1cdFx0XHQgICAgICBoZWFkLCBhcm1fYml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU1Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1NTM6RVhQT1JUX1NZTUJPTF9OUyhtYW5hX2dkX3JpbmdfY3EsIFwmIzM0O05FVF9NQU5BXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjU1NTp2b2lkIG1hbmFfZ2RfcmluZ19kaW0oc3RydWN0IGdkbWFfcXVldWUgKmNxLCB1MzIgbW9kX3VzZWMsIGJvb2wgbW9kX3VzZWNfdmxkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTU2LVx0XHQgICAgICB1MzIgbW9kX2NvbXBzLCBib29sIG1vZF9jb21wc192bGQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NTY3Olx0bWFuYV9nZF9yaW5nX2Rvb3JiZWxsKGdjLCBjcS1cdTAwM2VnZG1hX2Rldi1cdTAwM2Vkb29yYmVsbCwgR0RNQV9ESU0sIGNxLVx1MDAzZWlkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTY4LVx0XHRcdCAgICAgIGRpbV92YWwsIG1vZF9jb21wc192bGQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTY5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjU3MDpFWFBPUlRfU1lNQk9MX05TKG1hbmFfZ2RfcmluZ19kaW0sIFwmIzM0O05FVF9NQU5BXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU3MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1NzQ6c3RhdGljIHZvaWQgbWFuYV9zZXJ2X3Jlc2NhbihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU3NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NTkzOnN0YXRpYyB2b2lkIG1hbmFfc2Vydl9mcGdhKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTk0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2MjE6c3RhdGljIHZvaWQgbWFuYV9zZXJ2X3Jlc2V0KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjIyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02MjktXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O01BTkEgc2VydmljZTogR0Mgbm90IHNldHVwLCByZXNjYW5uaW5nXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjYzMDpcdFx0bWFuYV9zZXJ2X3Jlc2NhbihwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTYzMS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjY0NTpcdG1hbmFfZ2Rfc3VzcGVuZChwZGV2LCBQTVNHX1NVU1BFTkQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjY0OTpcdHJldCA9IG1hbmFfZ2RfcmVzdW1lKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjUwLVx0aWYgKHJldCA9PSAtRVRJTUVET1VUIHx8IHJldCA9PSAtRVBST1RPKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjUyLVx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtNQU5BIHNlcnZpY2U6IHJlc3VtZSBmYWlsZWQsIHJlc2Nhbm5pbmdcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NjUzOlx0XHRtYW5hX3NlcnZfcmVzY2FuKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjU0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NjY2OnN0YXRpYyB2b2lkIG1hbmFfZG9fc2VydmljZShlbnVtIGdkbWFfZXFlX3R5cGUgdHlwZSwgc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02Njcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY2OS1cdGNhc2UgR0RNQV9FUUVfSFdDX0ZQR0FfUkVDT05GSUc6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2NzA6XHRcdG1hbmFfc2Vydl9mcGdhKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjcxLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02NzMtXHRjYXNlIEdETUFfRVFFX0hXQ19SRVNFVF9SRVFVRVNUOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Njc0Olx0XHRtYW5hX3NlcnZfcmVzZXQocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02NzUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjY4MzpzdGF0aWMgdm9pZCBtYW5hX3JlY292ZXJ5X2RlbGF5ZWRfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02ODQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Njg1Olx0c3RydWN0IG1hbmFfZGV2X3JlY292ZXJ5X3dvcmsgKndvcms7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2ODY6XHRzdHJ1Y3QgbWFuYV9kZXZfcmVjb3ZlcnkgKmRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY4Ny1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2ODk6XHR3b3JrID0gY29udGFpbmVyX29mKHcsIHN0cnVjdCBtYW5hX2Rldl9yZWNvdmVyeV93b3JrLCB3b3JrLndvcmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjkwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY5NC1cdFx0ZGV2ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZ3b3JrLVx1MDAzZWRldl9saXN0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Njk1Olx0XHRcdFx0ICAgICAgIHN0cnVjdCBtYW5hX2Rldl9yZWNvdmVyeSwgbGlzdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02OTYtXHRcdGxpc3RfZGVsKFx1MDAyNmRldi1cdTAwM2VsaXN0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2OTk6XHRcdG1hbmFfZG9fc2VydmljZShkZXYtXHUwMDNldHlwZSwgZGV2LVx1MDAzZXBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzAwLVx0XHRwY2lfZGV2X3B1dChkZXYtXHUwMDNlcGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NzA5OnN0YXRpYyB2b2lkIG1hbmFfc2Vydl9mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3MTE6XHRzdHJ1Y3QgbWFuYV9zZXJ2X3dvcmsgKm1uc193aztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxMi1cdHN0cnVjdCBwY2lfZGV2ICpwZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzEzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NzE0Olx0bW5zX3drID0gY29udGFpbmVyX29mKHcsIHN0cnVjdCBtYW5hX3NlcnZfd29yaywgc2Vydl93b3JrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxNS1cdHBkZXYgPSBtbnNfd2stXHUwMDNlcGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MTctXHRpZiAocGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjcxODpcdFx0bWFuYV9kb19zZXJ2aWNlKG1uc193ay1cdTAwM2V0eXBlLCBwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3MjU6aW50IG1hbmFfc2NoZWR1bGVfc2Vydl93b3JrKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCBlbnVtIGdkbWFfZXFlX3R5cGUgdHlwZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcyNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3Mjc6XHRzdHJ1Y3QgbWFuYV9zZXJ2X3dvcmsgKm1uc193aztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcyOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03NTAtXHRwY2lfZGV2X2dldChtbnNfd2stXHUwMDNlcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3NTE6XHRJTklUX1dPUksoXHUwMDI2bW5zX3drLVx1MDAzZXNlcnZfd29yaywgbWFuYV9zZXJ2X2Z1bmMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzUyLVx0c2NoZWR1bGVfd29yayhcdTAwMjZtbnNfd2stXHUwMDNlc2Vydl93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3NTY6c3RhdGljIHZvaWQgbWFuYV9nZF9wcm9jZXNzX2VxZShzdHJ1Y3QgZ2RtYV9xdWV1ZSAqZXEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03NTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTgxOS1cdFx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6ODIwOlx0XHRtYW5hX3NjaGVkdWxlX3NlcnZfd29yayhnYywgdHlwZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04MjEtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTgyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjgyODpzdGF0aWMgdm9pZCBtYW5hX2dkX3Byb2Nlc3NfZXFfZXZlbnRzKHZvaWQgKmFyZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTgyOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6ODcwOlx0XHRtYW5hX2dkX3Byb2Nlc3NfZXFlKGVxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTg3MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo4Nzc6XHRtYW5hX2dkX3JpbmdfZG9vcmJlbGwoZ2MsIGVxLVx1MDAzZWdkbWFfZGV2LVx1MDAzZWRvb3JiZWxsLCBlcS1cdTAwM2V0eXBlLCBlcS1cdTAwM2VpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTg3OC1cdFx0XHQgICAgICBoZWFkLCBTRVRfQVJNX0JJVCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6ODgxOnN0YXRpYyBpbnQgbWFuYV9nZF9yZWdpc3Rlcl9pcnEoc3RydWN0IGdkbWFfcXVldWUgKnF1ZXVlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODgyLVx0XHRcdFx0Y29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MDQtXHRxdWV1ZS1cdTAwM2VlcS5tc2l4X2luZGV4ID0gbXNpX2luZGV4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6OTA1Olx0LyogVGhlIGNhbGxlciBhY3F1aXJlZCBhIEdJQyByZWZlcmVuY2UgdmlhIG1hbmFfZ2RfZ2V0X2dpYygpLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6OTA2Olx0ICogVGhhdCByZWZjb3VudCBwcmV2ZW50cyBtYW5hX2dkX3B1dF9naWMoKSBmcm9tIGVyYXNpbmcgdGhpc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTA3LVx0ICogaXJxX2NvbnRleHRzIGVudHJ5IGNvbmN1cnJlbnRseS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5MjA6c3RhdGljIHZvaWQgbWFuYV9nZF9kZXJlZ2lzdGVyX2lycShzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcXVldWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTkzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjkzNjpcdC8qIFRoZSBjYWxsZXIgcmVsZWFzZXMgdGhlIEdJQyByZWZlcmVuY2UgdmlhIG1hbmFfZ2RfcHV0X2dpYygpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MzctXHQgKiBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMuIFRoZSByZWZjb3VudCBndWFyYW50ZWVzIHRoaXNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5NTY6aW50IG1hbmFfZ2RfdGVzdF9lcShzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgc3RydWN0IGdkbWFfcXVldWUgKmVxKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTU3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5Njg6XHRtYW5hX2dkX2luaXRfcmVxX2hkcihcdTAwMjZyZXEuaGRyLCBHRE1BX0dFTkVSQVRFX1RFU1RfRVFFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTY5LVx0XHRcdCAgICAgc2l6ZW9mKHJlcSksIHNpemVvZihyZXNwKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6OTc0Olx0ZXJyID0gbWFuYV9nZF9zZW5kX3JlcXVlc3QoZ2MsIHNpemVvZihyZXEpLCBcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgXHUwMDI2cmVzcCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05NzUtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5NzY6XHRcdGlmIChtYW5hX25lZWRfbG9nKGdjLCBlcnIpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTc3LVx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDt0ZXN0X2VxIGZhaWxlZDogJWRcXG5cJiMzNDssIGVycik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwMDU6c3RhdGljIHZvaWQgbWFuYV9nZF9kZXN0cm95X2VxKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCBib29sIGZsdXNoX2V2ZW5ldHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDA2LVx0XHRcdCAgICAgICBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAxMC1cdGlmIChmbHVzaF9ldmVuZXRzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDExOlx0XHRlcnIgPSBtYW5hX2dkX3Rlc3RfZXEoZ2MsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwMTI6XHRcdGlmIChlcnIgXHUwMDI2XHUwMDI2IG1hbmFfbmVlZF9sb2coZ2MsIGVycikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDEzLVx0XHRcdGRldl93YXJuKGdjLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGZsdXNoIEVROiAlZFxcblwmIzM0OywgZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTAxNjpcdG1hbmFfZ2RfZGVyZWdpc3Rlcl9pcnEocXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwMTgtXHRpZiAocXVldWUtXHUwMDNlZXEuZGlzYWJsZV9uZWVkZWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDE5Olx0XHRtYW5hX2dkX2Rpc2FibGVfcXVldWUocXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAyMC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTAyMjpzdGF0aWMgaW50IG1hbmFfZ2RfY3JlYXRlX2VxKHN0cnVjdCBnZG1hX2RldiAqZ2QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDIzLVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTA0MjpcdGVyciA9IG1hbmFfZ2RfcmVnaXN0ZXJfaXJxKHF1ZXVlLCBzcGVjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwNDMtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA1My1cdGlmIChjcmVhdGVfaHdxKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDU0Olx0XHRlcnIgPSBtYW5hX2dkX2NyZWF0ZV9od19lcShnYywgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA1NS1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTA1ODpcdFx0ZXJyID0gbWFuYV9nZF90ZXN0X2VxKGdjLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDU5LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwNjUtXHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBFUTogJWRcXG5cJiMzNDssIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDY2Olx0bWFuYV9nZF9kZXN0cm95X2VxKGdjLCBmYWxzZSwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA2Ny1cdHF1ZXVlLVx1MDAzZWVxLm1zaXhfaW5kZXggPSBJTlZBTElEX1BDSV9NU0lYX0lOREVYO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDcxOnN0YXRpYyB2b2lkIG1hbmFfZ2RfY3JlYXRlX2NxKGNvbnN0IHN0cnVjdCBnZG1hX3F1ZXVlX3NwZWMgKnNwZWMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDcyLVx0XHRcdCAgICAgIHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTA4MjpzdGF0aWMgdm9pZCBtYW5hX2dkX2Rlc3Ryb3lfY3Eoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDgzLVx0XHRcdCAgICAgICBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwOTY6aW50IG1hbmFfZ2RfY3JlYXRlX2h3Y19xdWV1ZShzdHJ1Y3QgZ2RtYV9kZXYgKmdkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA5Ny1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBnZG1hX3F1ZXVlX3NwZWMgKnNwZWMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTEwOS1cdGdtaSA9IFx1MDAyNnF1ZXVlLVx1MDAzZW1lbV9pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTExMDpcdGVyciA9IG1hbmFfZ2RfYWxsb2NfbWVtb3J5KGdjLCBzcGVjLVx1MDAzZXF1ZXVlX3NpemUsIGdtaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTExLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMjUtXHRpZiAoc3BlYy1cdTAwM2V0eXBlID09IEdETUFfRVEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTI2Olx0XHRlcnIgPSBtYW5hX2dkX2NyZWF0ZV9lcShnZCwgc3BlYywgZmFsc2UsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMjctXHRlbHNlIGlmIChzcGVjLVx1MDAzZXR5cGUgPT0gR0RNQV9DUSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExMjg6XHRcdG1hbmFfZ2RfY3JlYXRlX2NxKHNwZWMsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMjktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTEzNy1cdFx0c3BlYy1cdTAwM2V0eXBlLCBzcGVjLVx1MDAzZXF1ZXVlX3NpemUsIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTM4Olx0bWFuYV9nZF9mcmVlX21lbW9yeShnbWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTEzOS1mcmVlX3E6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTE0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExNDQ6aW50IG1hbmFfZ2RfZGVzdHJveV9kbWFfcmVnaW9uKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1NjQgZG1hX3JlZ2lvbl9oYW5kbGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTQ1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTE1MzpcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFx1MDAyNnJlcS5oZHIsIEdETUFfREVTVFJPWV9ETUFfUkVHSU9OLCBzaXplb2YocmVxKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNTQtXHRcdFx0ICAgICBzaXplb2YocmVzcCkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTU3Olx0ZXJyID0gbWFuYV9nZF9zZW5kX3JlcXVlc3QoZ2MsIHNpemVvZihyZXEpLCBcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgXHUwMDI2cmVzcCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTU4LVx0aWYgKGVyciB8fCByZXNwLmhkci5zdGF0dXMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExNTk6XHRcdGlmIChtYW5hX25lZWRfbG9nKGdjLCBlcnIpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTE2MC1cdFx0XHRkZXZfZXJyKGdjLVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGRlc3Ryb3kgRE1BIHJlZ2lvbjogJWQsIDB4JXhcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTE2Ni19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTY3OkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF9kZXN0cm95X2RtYV9yZWdpb24sIFwmIzM0O05FVF9NQU5BXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTY5OnN0YXRpYyBpbnQgbWFuYV9nZF9jcmVhdGVfZG1hX3JlZ2lvbihzdHJ1Y3QgZ2RtYV9kZXYgKmdkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTE3MC1cdFx0XHRcdCAgICAgc3RydWN0IGdkbWFfbWVtX2luZm8gKmdtaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTE5NzpcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFx1MDAyNnJlcS1cdTAwM2VoZHIsIEdETUFfQ1JFQVRFX0RNQV9SRUdJT04sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTk4LVx0XHRcdCAgICAgcmVxX21zZ19zaXplLCBzaXplb2YocmVzcCkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjA4Olx0ZXJyID0gbWFuYV9nZF9zZW5kX3JlcXVlc3QoZ2MsIHJlcV9tc2dfc2l6ZSwgcmVxLCBzaXplb2YocmVzcCksIFx1MDAyNnJlc3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTIwOS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTIzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEyMzI6aW50IG1hbmFfZ2RfY3JlYXRlX21hbmFfZXEoc3RydWN0IGdkbWFfZGV2ICpnZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMzMtXHRcdFx0ICAgY29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMjQ4LVx0Z21pID0gXHUwMDI2cXVldWUtXHUwMDNlbWVtX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjQ5Olx0ZXJyID0gbWFuYV9nZF9hbGxvY19tZW1vcnkoZ2MsIHNwZWMtXHUwMDNlcXVldWVfc2l6ZSwgZ21pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyNTAtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEyNTY6XHRlcnIgPSBtYW5hX2dkX2NyZWF0ZV9kbWFfcmVnaW9uKGdkLCBnbWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI1Ny1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEyNjg6XHRlcnIgPSBtYW5hX2dkX2NyZWF0ZV9lcShnZCwgc3BlYywgdHJ1ZSwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI2OS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI3Ni1cdFx0c3BlYy1cdTAwM2V0eXBlLCBzcGVjLVx1MDAzZXF1ZXVlX3NpemUsIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjc3Olx0bWFuYV9nZF9mcmVlX21lbW9yeShnbWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI3OC1mcmVlX3E6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI4MS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjgyOkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF9jcmVhdGVfbWFuYV9lcSwgXCYjMzQ7TkVUX01BTkFcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEyODQ6aW50IG1hbmFfZ2RfY3JlYXRlX21hbmFfd3FfY3Eoc3RydWN0IGdkbWFfZGV2ICpnZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyODUtXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzAzLVx0Z21pID0gXHUwMDI2cXVldWUtXHUwMDNlbWVtX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzA0Olx0ZXJyID0gbWFuYV9nZF9hbGxvY19tZW1vcnkoZ2MsIHNwZWMtXHUwMDNlcXVldWVfc2l6ZSwgZ21pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzMDUtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEzMTE6XHRlcnIgPSBtYW5hX2dkX2NyZWF0ZV9kbWFfcmVnaW9uKGdkLCBnbWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMxMi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMyMy1cdGlmIChzcGVjLVx1MDAzZXR5cGUgPT0gR0RNQV9DUSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEzMjQ6XHRcdG1hbmFfZ2RfY3JlYXRlX2NxKHNwZWMsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzMjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzMC1cdFx0c3BlYy1cdTAwM2V0eXBlLCBzcGVjLVx1MDAzZXF1ZXVlX3NpemUsIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzMxOlx0bWFuYV9nZF9mcmVlX21lbW9yeShnbWkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzMi1mcmVlX3E6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzNS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzM2OkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF9jcmVhdGVfbWFuYV93cV9jcSwgXCYjMzQ7TkVUX01BTkFcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEzMzg6dm9pZCBtYW5hX2dkX2Rlc3Ryb3lfcXVldWUoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzMzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzNDMtXHRjYXNlIEdETUFfRVE6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzQ0Olx0XHRtYW5hX2dkX2Rlc3Ryb3lfZXEoZ2MsIHF1ZXVlLVx1MDAzZWVxLmRpc2FibGVfbmVlZGVkLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzQ1LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzQ3LVx0Y2FzZSBHRE1BX0NROlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTM0ODpcdFx0bWFuYV9nZF9kZXN0cm95X2NxKGdjLCBxdWV1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzQ5LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTM2MzpcdG1hbmFfZ2RfZGVzdHJveV9kbWFfcmVnaW9uKGdjLCBnbWktXHUwMDNlZG1hX3JlZ2lvbl9oYW5kbGUpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4MjcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTUFOQSBEcml2ZXIgQW5hbHlzaXMgZm9yIFdvcnRoRnV6emluZyBEZXRlcm1pbmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlzIE1BTkEgaGFyZHdhcmUgZW11bGF0ZWQgaW4gc29tZXRoaW5nIGxpa2UgUUVNVT8gTm8sIHRoYXQmIzM5O3Mgd3Jvbmc7IGl0JiMzOTtzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyLiBJdCYjMzk7cyBhIHBoeXNpY2FsL3ZpcnR1YWwgZGV2aWNlIHRoYXQmIzM5O3MgcGFydCBvZiB0aGUgQXp1cmUgaHlwZXJ2aXNvci4gU28sIGNhbiBpdCBldmVuIGJlIHRlc3RlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIG9yIFFFTVU/CgpXYWl0LCBob2xkIG9uLiBUaGUgcHJvbXB0IGZyb20gdGhlIGZ1enplciBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29uY2VybnMgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbGlrZSBTbWFydE5JQyBkcml2ZXJzIHRoYXQgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiAKClJpZ2h0LCBNQU5BIGlzIGRlZmluaXRlbHkgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgb3IgdmlydHVhbCBOSUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIE1pY3Jvc29mdCBBenVyZS4gU28sIGlzIGl0IHRlc3RhYmxlIGluIFFFTVU/IERlZmluaXRlbHkgbm90LiBBbmQgaG93IGFib3V0IHN5emthbGxlcj8gU3l6a2FsbGVyIGNhbiBydW4gb24gR0NFIG9yIFFFTVUsIGJ1dCBHQ0UgZG9lc24mIzM5O3QgaGF2ZSBNQU5BIGhhcmR3YXJlLiBBenVyZSBWTXMgKmRvKiBoYXZlIE1BTkEgaGFyZHdhcmUuIElmIHN5emthbGxlciB3ZXJlIHRvIHJ1biBvbiBBenVyZSwgaXQgKmNvdWxkKiB0ZXN0IGl0LiBCdXQgc3l6a2FsbGVyIHVzdWFsbHkgcnVucyBvbiBHQ0Ugb3IgUUVNVSwgZG9lc24mIzM5O3QgaXQ/CgpBY3R1YWxseSwgbm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGFuIEF6dXJlIGJhY2tlbmQsIGJ1dCB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIGluc3RhbmNlcyB0aGF0IHRoZSBzeXpib3QgcnVucyBvbiBhcmUgb24gR0NFLgoKT2theSwgYmFjayB0byB0aGUgcHJvbXB0OiAmIzM0Oy4uLnJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBNQU5BIGlzIGEgUENJZSBkZXZpY2UuIEl0JiMzOTtzIG5vdCBlbXVsYXRlZCBpbiAqc3RhbmRhcmQqIFFFTVUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSwgYnV0IG90aGVyd2lzZSwgYmFzZWQgb24gdGhhdCwgaXQgc2VlbXMgdG8gbm90IGJlIFdvcnRoRnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYW5hX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTE3OD1zdGF0aWMgaW50IG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNjM6XHQvKiBDYXAgdG8gdGhlIHNhbWUgbGltaXQgdXNlZCBieSBtYW5hX3Byb2JlKCkgZm9yIHBvcnQgaW5zdGFudGlhdGlvbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI2NC1cdCAqIHNvIE1TSS1YIGFuZCBxdWV1ZSBidWRnZXRpbmcgbWF0Y2hlcyB0aGUgYWN0dWFsIHBvcnQgY291bnQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjMzMT1zdGF0aWMgaW50IG1hbmFfZ2RfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIzODc6XHRlcnIgPSBtYW5hX3Byb2JlKFx1MDAyNmdjLVx1MDAzZW1hbmEsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzODgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0MjUtXHQgKiBIYXJkd2FyZSBjb3VsZCBiZSBpbiByZWNvdmVyeSBtb2RlIGFuZCB0aGUgSFdDIHJldHVybnMgVElNRURPVVQgb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI0MjY6XHQgKiBFUFJPVE8gZnJvbSBtYW5hX2dkX3NldHVwKCksIG1hbmFfcHJvYmUoKSBvciBtYW5hX3JkbWFfcHJvYmUoKSwgb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0MjctXHQgKiB3ZSByZWNlaXZlZCBhIGhhcmR3YXJlIHJlc2V0IGV2ZW50IG92ZXIgSFdDIGludGVycnVwdC4gSW4gdGhpcyBjYXNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI0OTE9aW50IG1hbmFfZ2RfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0OTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTAwOlx0ZXJyID0gbWFuYV9wcm9iZShcdTAwMjZnYy1cdTAwM2VtYW5hLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MDEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYz0zNzQ1PWludCBtYW5hX2RldGFjaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgYm9vbCBmcm9tX2Nsb3NlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNzgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jOjM3ODI6c3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNzgzLVx0XHRcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICoqbmRldl9zdG9yYWdlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYz00MDIzPXN0YXRpYyB2b2lkIG1hbmFfZ2Zfc3RhdHNfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtNDA0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzo0MDQ2OmludCBtYW5hX3Byb2JlKHN0cnVjdCBnZG1hX2RldiAqZ2QsIGJvb2wgcmVzdW1pbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtNDA0Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTQxMjAtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFjLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzo0MTIxOlx0XHRcdGVyciA9IG1hbmFfcHJvYmVfcG9ydChhYywgaSwgXHUwMDI2YWMtXHUwMDNlcG9ydHNbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTQxMjItXHRcdFx0LyogTG9nIHRoZSBwb3J0IGZvciB3aGljaCB0aGUgcHJvYmUgZmFpbGVkLCBzdG9wIHByb2JpbmdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTYwOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkgb2YgYSBQQ0llIERldmljZSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgUENJIGRldmljZSBkcml2ZXIuIFRoZSBxdWVzdGlvbiBpcywgY2FuIEkgZWZmZWN0aXZlbHkgdGVzdCB0aGlzIHRoaW5nIHdpdGhpbiBRRU1VPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgbm8sIGJlY2F1c2UgTUFOQSByZXF1aXJlcyBlaXRoZXIgYSBwaHlzaWNhbCBQQ0llIGRldmljZSBvciBhbiBBenVyZSBWTSBlbnZpcm9ubWVudCB0byBydW4gcHJvcGVybHkuIEJ1dCB3YWl0LCBJIGhhdmUgdG8gYmUgdGhvcm91Z2guIEkgd29uZGVyIGlmIGBzeXprYWxsZXJgIGhhcyBzb21lIHBzZXVkby1zeXNjYWxscyBmb3IgTUFOQT8gTm8sIHRoYXQmIzM5O3Mgbm90IHJpZ2h0LCBgc3l6a2FsbGVyYCBkb2VzbiYjMzk7dCBwcm92aWRlIHRoYXQga2luZCBvZiBhYnN0cmFjdGlvbiBmb3IgTUFOQS4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnPigJR0aGUga2luZCB0aGF0IG5lZWQgdGhvc2UgcmVhbCwgcGh5c2ljYWwgUENJZSBjYXJkcyB0aGF0IFFFTVUganVzdCBkb2VzbiYjMzk7dCBlbXVsYXRlIHZlcnkgd2VsbC4gVGhpcyBNQU5BIGRyaXZlciBkZWZpbml0ZWx5IGZpdHMgdGhlIGJpbGw7IGl0JiMzOTtzIGEgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgc28gaXQmIzM5O3MgYSBTbWFydE5JQyBkcml2ZXIsIHZlcnkgdmVuZG9yLXNwZWNpZmljLiBTbywgYnkgdGhlIHJ1bGVzIGxhaWQgb3V0LCB0aGlzIG9uZSBmYWxscyBpbnRvIHRoZSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGNhdGVnb3J5LCBtYWlubHkgYmVjYXVzZSBpdCYjMzk7cyB0aWVkIHRvIHRoYXQgcGh5c2ljYWwgaGFyZHdhcmUsIG9yIHRoYXQgQXp1cmUgaHlwZXJ2aXNvci4gQmVmb3JlIEkgZnVsbHkgY29tbWl0IHRvIHRoYXQgY29uY2x1c2lvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkga2VybmVsLWxldmVsIHNvZnR3YXJlIGVtdWxhdGlvbiBhdHRlbXB0cy4gTmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYW5hJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTg9Y29uZmlnIE1JQ1JPU09GVF9NQU5BXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMzEtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzozMjpcdCAgVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBtYW5hLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyMTUKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTUFOQSBEcml2ZXIgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBLY29uZmlnIGVudHJ5IGZvciB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgTUFOQS4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCDigJMgYSBkcml2ZXIsIHNwZWNpZmljIHRvIEF6dXJlIGhhcmR3YXJlLCByZXF1aXJpbmcgUENJLCBNU0ksIGFuZCB4ODYtNjQgYXJjaGl0ZWN0dXJlLiBUaGUgaGVscCB0ZXh0IGNvbmZpcm1zIGl0JiMzOTtzIGEgcmVhbCBwaWVjZSBvZiBoYXJkd2FyZSwgYSBkZWRpY2F0ZWQgbmV0d29yayBhZGFwdGVyIGZvciBBenVyZS4KCk5vdywgdGhlIGltcG9ydGFudCBwYXJ0IGZvciBteSBwdXJwb3NlcyBpcywgdGhpcyBpc24mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCBtZWFucyBzdGFuZGFyZCBzeXprYWxsZXIgaW5zdGFuY2VzLCB0aGUgb25lcyB3ZSB0eXBpY2FsbHkgdXNlIG9uIFFFTVUgb3IgR0NFLCB3b24mIzM5O3QgYmUgYWJsZSB0byByZWFjaCB0aGlzIGRyaXZlci4gSXQmIzM5O3MgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLCBhbmQgd2UgY2FuJiMzOTt0IGp1c3QgYm9vdCB1cCBhIGdlbmVyaWMgUUVNVSBpbnN0YW5jZSBhbmQgZXhwZWN0IHRvIGludGVyYWN0IHdpdGggaXQuCgpUaGVyZWZvcmUsIGFmdGVyIGNvbnNpZGVyaW5nIHRoZSBzZXR1cCwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IGl0JiMzOTtzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciB0aGF0IGlzbiYjMzk7dCBlbXVsYXRlZCB3aXRoaW4gdGhlIHN0YW5kYXJkIGVudmlyb25tZW50cyB3ZSBjYW4gYWNjZXNzIGZvciBmdXp6aW5nLiBObyBwcmFjdGljYWwgYXZlbnVlIGZvciB1cyB0byBhcHBseSBvdXIgdG9vbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCB1bnRlc3RhYmxlIGJ5IHN0YW5kYXJkIGZ1enplcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFNtYXJ0TklDIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgYW5kIHVudGVzdGFibGUgYnkgc3RhbmRhcmQgZnV6emVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjozNjo1MC42NjAxODcxNzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjg1NzUwMDMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCB1bnRlc3RhYmxlIGJ5IHN0YW5kYXJkIGZ1enplcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNjozNjo1MC42NjAxOTM2OThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzUxMjA2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZkODZjNjIyYmQ2MDJhYjE3YzNmMTAzYTgwM2Q0YWNhM2Q5Y2NmNWFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDY6MzY6NDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXFxuaW5kZXggYThjMzI5YmRiYWNmOC4uNzIwZDIyZTZhZWE5NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcXG5AQCAtMTI0MSw2ICsxMjQxLDkgQEAgaW50IG1hbmFfZ2RfcXVlcnlfZGV2aWNlX2NmZyhzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTMyIHByb3RvX21ham9yX3ZlcixcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKHJlc3AucGZfY2FwX2ZsYWdzMSBcXHUwMDI2IE1BTkFfUEZfRkxBR18xX0NRRV84X0NPQUxFU0NJTkdfU1VQUE9SVEVEKVxcbitcXHRcXHRnYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX3N1cCA9IHRydWU7XFxuK1xcbiBcXHQqbWF4X251bV92cG9ydHMgPSByZXNwLm1heF9udW1fdnBvcnRzO1xcbiBcXG4gXFx0aWYgKHJlc3AuaGRyLnJlc3BvbnNlLm1zZ192ZXJzaW9uIFxcdTAwM2U9IEdETUFfTUVTU0FHRV9WMikge1xcbkBAIC0xNDI2LDcgKzE0MjksMTEgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyxcXG4gXFx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXFx1MDAyNnJlcS1cXHUwMDNlaGRyLCBNQU5BX0NPTkZJR19WUE9SVF9SWCwgcmVxX2J1Zl9zaXplLFxcbiBcXHRcXHRcXHQgICAgIHNpemVvZihyZXNwKSk7XFxuIFxcbi1cXHRyZXEtXFx1MDAzZWhkci5yZXEubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjI7XFxuK1xcdC8qIFJlcXVlc3QgXFx1MDAyNiByZXNwb25zZSB2ZXJzaW9ucyBjYW4gYmUgZGlmZmVyZW50LlxcbitcXHQgKiBIVyBjYW4gaGFuZGxlIG5ld2VyIG1zZyB2ZXJzaW9ucywgYnkgc2tpcHBpbmdcXG4rXFx0ICogbmV3IGZpZWxkcy5cXG4rXFx0ICovXFxuK1xcdHJlcS1cXHUwMDNlaGRyLnJlcS5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WNTtcXG4gXFx0cmVxLVxcdTAwM2VoZHIucmVzcC5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WMjtcXG4gXFxuIFxcdHJlcS1cXHUwMDNldnBvcnQgPSBhcGMtXFx1MDAzZXBvcnRfaGFuZGxlO1xcbkBAIC0xNDQwLDggKzE0NDcsMTMgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyxcXG4gXFx0cmVxLVxcdTAwM2V1cGRhdGVfaW5kaXJfdGFiID0gdXBkYXRlX3RhYjtcXG4gXFx0cmVxLVxcdTAwM2VkZWZhdWx0X3J4b2JqID0gYXBjLVxcdTAwM2VkZWZhdWx0X3J4b2JqO1xcbiBcXG4tXFx0aWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSlcXG4rXFx0LyogUmVxdWVzdC1tc2cgdjUgcmVxdWlyZXMgdGhpcyBmaWVsZCAqL1xcbitcXHRyZXEtXFx1MDAzZXJzc19oYXNoX3R5cGVzID0gTUFOQV9IQVNIX0VOQUJMRV9TVVBQT1JURUQ7XFxuK1xcbitcXHRpZiAocnggIT0gVFJJX1NUQVRFX0ZBTFNFKSB7XFxuIFxcdFxcdHJlcS1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGU7XFxuK1xcdFxcdHJlcS1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKHVwZGF0ZV9rZXkpXFxuIFxcdFxcdG1lbWNweShcXHUwMDI2cmVxLVxcdTAwM2VoYXNoa2V5LCBhcGMtXFx1MDAzZWhhc2hrZXksIE1BTkFfSEFTSF9LRVlfU0laRSk7XFxuQEAgLTIwNDYsMTYgKzIwNTgsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptYW5hX2J1aWxkX3NrYihzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgdm9pZCAqYnVmX3ZhLFxcbiBcXG4gc3RhdGljIHZvaWQgbWFuYV9yeF9za2Iodm9pZCAqYnVmX3ZhLCBib29sIGZyb21fcG9vbCxcXG4gXFx0XFx0XFx0c3RydWN0IG1hbmFfcnhjb21wX29vYiAqY3FlLCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcXG4tXFx0XFx0XFx0aW50IGkpXFxuK1xcdFxcdFxcdHUzMiBwa3RfbGVuLCB1MzIgcGt0X2hhc2gpXFxuIHtcXG4gXFx0c3RydWN0IG1hbmFfc3RhdHNfcnggKnJ4X3N0YXRzID0gXFx1MDAyNnJ4cS1cXHUwMDNlc3RhdHM7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLVxcdTAwM2VuZGV2O1xcbi1cXHR1aW50IHBrdF9sZW4gPSBjcWUtXFx1MDAzZXBwaVtpXS5wa3RfbGVuO1xcbiBcXHR1MTYgcnhxX2lkeCA9IHJ4cS1cXHUwMDNlcnhxX2lkeDtcXG4gXFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpO1xcbiBcXHRzdHJ1Y3QgeGRwX2J1ZmYgeGRwID0ge307XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLVxcdHUzMiBoYXNoX3ZhbHVlO1xcbiBcXHR1MzIgYWN0O1xcbiBcXG4gXFx0cnhxLVxcdTAwM2VyeF9jcS53b3JrX2RvbmUrKztcXG5AQCAtMjA5NCwxMiArMjEwNCwxMCBAQCBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLFxcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY3FlLVxcdTAwM2VyeF9oYXNodHlwZSAhPSAwIFxcdTAwMjZcXHUwMDI2IChuZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSkge1xcbi1cXHRcXHRoYXNoX3ZhbHVlID0gY3FlLVxcdTAwM2VwcGlbaV0ucGt0X2hhc2g7XFxuLVxcbiBcXHRcXHRpZiAoY3FlLVxcdTAwM2VyeF9oYXNodHlwZSBcXHUwMDI2IE1BTkFfSEFTSF9MNClcXG4tXFx0XFx0XFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaF92YWx1ZSwgUEtUX0hBU0hfVFlQRV9MNCk7XFxuK1xcdFxcdFxcdHNrYl9zZXRfaGFzaChza2IsIHBrdF9oYXNoLCBQS1RfSEFTSF9UWVBFX0w0KTtcXG4gXFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0wzKTtcXG4rXFx0XFx0XFx0c2tiX3NldF9oYXNoKHNrYiwgcGt0X2hhc2gsIFBLVF9IQVNIX1RZUEVfTDMpO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY3FlLVxcdTAwM2VyeF92bGFudGFnX3ByZXNlbnQpIHtcXG5AQCAtMjI0MCw2ICsyMjQ4LDQzIEBAIHN0YXRpYyB2b2lkIG1hbmFfcmVmaWxsX3J4X29vYihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLFxcbiBcXHRyeG9vYi1cXHUwMDNlZG1hX3N5bmNfb2Zmc2V0ID0gZG1hX3N5bmNfb2Zmc2V0O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1hbmFfcnhjb21wX29vYiAqb29iLFxcbitcXHRcXHRcXHRcXHQgICAgdTMyIHBrdGxlbiwgdTMyIHBrdF9oYXNoKVxcbit7XFxuK1xcdHN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iO1xcbitcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHJ4cS1cXHUwMDNlbmRldjtcXG4rXFx0dm9pZCAqb2xkX2J1ZiA9IE5VTEw7XFxuK1xcdGJvb2wgb2xkX2ZwO1xcbitcXG4rXFx0cnhidWZfb29iID0gXFx1MDAyNnJ4cS1cXHUwMDNlcnhfb29ic1tyeHEtXFx1MDAzZWJ1Zl9pbmRleF07XFxuK1xcdFdBUk5fT05fT05DRShyeGJ1Zl9vb2ItXFx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUgIT0gMSk7XFxuK1xcbitcXHRpZiAodW5saWtlbHkocGt0bGVuIFxcdTAwM2UgcnhxLVxcdTAwM2VkYXRhc2l6ZSkpIHtcXG4rXFx0XFx0LyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbid0IGNhbGxlZC4gKi9cXG4rXFx0XFx0cnhxLVxcdTAwM2VyeF9jcS53b3JrX2RvbmUrKztcXG4rXFxuK1xcdFxcdCsrbmRldi1cXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcXG4rXFx0XFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxcbitcXHRcXHRcXHRcXHQgXFxcIkRyb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IHBrdGxlbiwgcnhxLVxcdTAwM2VkYXRhc2l6ZSk7XFxuK1xcbitcXHRcXHQvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovXFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdG1hbmFfcmVmaWxsX3J4X29vYihkZXYsIHJ4cSwgcnhidWZfb29iLCBwa3RsZW4sXFxuK1xcdFxcdFxcdFxcdCAgIFxcdTAwMjZvbGRfYnVmLCBcXHUwMDI2b2xkX2ZwKTtcXG4rXFxuK1xcdFxcdC8qIFVuc3VjY2Vzc2Z1bCByZWZpbGwgd2lsbCBoYXZlIG9sZF9idWYgPT0gTlVMTC5cXG4rXFx0XFx0ICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0bWFuYV9yeF9za2Iob2xkX2J1Ziwgb2xkX2ZwLCBvb2IsIHJ4cSwgcGt0bGVuLCBwa3RfaGFzaCk7XFxuK1xcdH1cXG4rXFxuK1xcdG1hbmFfbW92ZV93cV90YWlsKHJ4cS1cXHUwMDNlZ2RtYV9ycSwgcnhidWZfb29iLVxcdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1KTtcXG4rXFxuK1xcdG1hbmFfcG9zdF9wa3RfcnhxKHJ4cSk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcXG4gXFx0XFx0XFx0XFx0c3RydWN0IGdkbWFfY29tcCAqY3FlKVxcbiB7XFxuQEAgLTIyNDksMTAgKzIyOTQsMTAgQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxcbiBcXHRzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjtcXG4gXFx0c3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGM7XFxuIFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGdjLVxcdTAwM2VkZXY7XFxuK1xcdGJvb2wgY29hbGVzY2VkXzggPSBmYWxzZTtcXG4gXFx0Ym9vbCBjb2FsZXNjZWQgPSBmYWxzZTtcXG4tXFx0dm9pZCAqb2xkX2J1ZiA9IE5VTEw7XFxuLVxcdHUzMiBjdXJyLCBwa3RsZW47XFxuLVxcdGJvb2wgb2xkX2ZwO1xcbitcXHR1MzIgcGt0bGVuO1xcbitcXHRpbnQgcGt0X2k7XFxuIFxcdGludCBpO1xcbiBcXG4gXFx0YXBjID0gbmV0ZGV2X3ByaXYobmRldik7XFxuQEAgLTIyNzUsNiArMjMyMCwxMSBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXFxuIFxcdFxcdGNvYWxlc2NlZCA9IHRydWU7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4rXFx0Y2FzZSBDUUVfUlhfQ09BTEVTQ0VEXzg6XFxuK1xcdFxcdGNvYWxlc2NlZCA9IHRydWU7XFxuK1xcdFxcdGNvYWxlc2NlZF84ID0gdHJ1ZTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcbiBcXHRjYXNlIENRRV9SWF9PQkpFQ1RfRkVOQ0U6XFxuIFxcdFxcdGNvbXBsZXRlKFxcdTAwMjZyeHEtXFx1MDAzZWZlbmNlX2V2ZW50KTtcXG4gXFx0XFx0cmV0dXJuO1xcbkBAIC0yMjg2LDU0ICsyMzM2LDQ4IEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcbitcXHRwa3RfaSA9IDA7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTsgaSsrKSB7XFxuLVxcdFxcdG9sZF9idWYgPSBOVUxMO1xcbi1cXHRcXHRwa3RsZW4gPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfbGVuO1xcbi1cXHRcXHRpZiAocGt0bGVuID09IDApXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXG4tXFx0XFx0Y3VyciA9IHJ4cS1cXHUwMDNlYnVmX2luZGV4O1xcbi1cXHRcXHRyeGJ1Zl9vb2IgPSBcXHUwMDI2cnhxLVxcdTAwM2VyeF9vb2JzW2N1cnJdO1xcbi1cXHRcXHRXQVJOX09OX09OQ0UocnhidWZfb29iLVxcdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1ICE9IDEpO1xcbi1cXG4tXFx0XFx0aWYgKHVubGlrZWx5KHBrdGxlbiBcXHUwMDNlIHJ4cS1cXHUwMDNlZGF0YXNpemUpKSB7XFxuLVxcdFxcdFxcdC8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24ndCBjYWxsZWQuICovXFxuLVxcdFxcdFxcdHJ4cS1cXHUwMDNlcnhfY3Eud29ya19kb25lKys7XFxuK1xcdFxcdHUzMiBwa3RfaGFzaDtcXG4gXFxuLVxcdFxcdFxcdCsrbmRldi1cXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcXG4tXFx0XFx0XFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxcbi1cXHRcXHRcXHRcXHRcXFwiRHJvcHBlZCBvdmVyc2l6ZWQgUlggcGFja2V0OiBsZW49JXUsIGRhdGFzaXplPSV1XFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRwa3RsZW4sIHJ4cS1cXHUwMDNlZGF0YXNpemUpO1xcbi1cXG4tXFx0XFx0XFx0LyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqL1xcbitcXHRcXHRpZiAoY29hbGVzY2VkXzgpIHtcXG4rXFx0XFx0XFx0LyogOC1wa3QgbW9kZTogMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi9cXG4rXFx0XFx0XFx0cGt0bGVuID0gb29iLVxcdTAwM2VwcGlbaV0ucGt0X2xlbjA7XFxuK1xcdFxcdFxcdHBrdF9oYXNoID0gb29iLVxcdTAwM2VwcGlbaV0ucGt0X2hhc2gwO1xcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXG4tXFx0XFx0XFx0bWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm9sZF9idWYsIFxcdTAwMjZvbGRfZnApO1xcbi1cXG4tXFx0XFx0XFx0LyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLlxcbi1cXHRcXHRcXHQgKiBJbiB0aGlzIGNhc2UsIG1hbmFfcnhfc2tiKCkgd2lsbCBkcm9wIHRoZSBwYWNrZXQuXFxuLVxcdFxcdFxcdCAqL1xcbi1cXHRcXHRcXHRtYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBpKTtcXG4rXFx0XFx0XFx0cGt0bGVuID0gb29iLVxcdTAwM2VwcGlbaV0ucGt0X2xlbjtcXG4rXFx0XFx0XFx0cGt0X2hhc2ggPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfaGFzaDtcXG4gXFx0XFx0fVxcbitcXHRcXHRpZiAocGt0bGVuID09IDApXFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXG4tXFx0XFx0bWFuYV9tb3ZlX3dxX3RhaWwocnhxLVxcdTAwM2VnZG1hX3JxLFxcbi1cXHRcXHRcXHRcXHQgIHJ4YnVmX29vYi1cXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSk7XFxuLVxcbi1cXHRcXHRtYW5hX3Bvc3RfcGt0X3J4cShyeHEpO1xcbitcXHRcXHRtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sIHBrdF9oYXNoKTtcXG4rXFx0XFx0cGt0X2krKztcXG4gXFxuIFxcdFxcdGlmICghY29hbGVzY2VkKVxcbiBcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdC8qIFByb2Nlc3MgMm5kIHBhY2tldCBmcm9tIHRoZSBzYW1lIFBQSSBpbiA4LXBrdCBtb2RlICovXFxuK1xcdFxcdGlmIChjb2FsZXNjZWRfOCkge1xcbitcXHRcXHRcXHRwa3RsZW4gPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfbGVuMTtcXG4rXFx0XFx0XFx0cGt0X2hhc2ggPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfaGFzaDE7XFxuK1xcdFxcdFxcdGlmIChwa3RsZW4gPT0gMClcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRcXHRtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHBrdF9oYXNoKTtcXG4rXFx0XFx0XFx0cGt0X2krKztcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHQvKiBDb2xsZWN0IGNvYWxlc2NlZCBDUUUgY291bnQgYmFzZWQgb24gcGFja2V0cyBwcm9jZXNzZWQuXFxuLVxcdCAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBpIC0gMi5cXG4rXFx0ICogQ29hbGVzY2VkIENRRXMgaGF2ZSBhdCBsZWFzdCAyIHBhY2tldHMsIHNvIGluZGV4IGlzIHBrdF9pIC0gMi5cXG4gXFx0ICovXFxuLVxcdGlmIChpIFxcdTAwM2UgMSkge1xcbitcXHRpZiAocGt0X2kgXFx1MDAzZSAxKSB7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNnJ4cS1cXHUwMDNlc3RhdHMuc3luY3ApO1xcbi1cXHRcXHRyeHEtXFx1MDAzZXN0YXRzLmNvYWxlc2NlZF9jcWVbaSAtIDJdKys7XFxuK1xcdFxcdHJ4cS1cXHUwMDNlc3RhdHMuY29hbGVzY2VkX2NxZVtwa3RfaSAtIDJdKys7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZyeHEtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG4tXFx0fSBlbHNlIGlmICghaSBcXHUwMDI2XFx1MDAyNiAhcGt0bGVuKSB7XFxuK1xcdH0gZWxzZSBpZiAoIXBrdF9pIFxcdTAwMjZcXHUwMDI2ICFwa3RsZW4pIHtcXG4gXFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2cnhxLVxcdTAwM2VzdGF0cy5zeW5jcCk7XFxuIFxcdFxcdHJ4cS1cXHUwMDNlc3RhdHMucGt0X2xlbjBfZXJyKys7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZyeHEtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG5AQCAtMzc2Myw2ICszODA3LDcgQEAgc3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCxcXG4gXFx0YXBjLVxcdTAwM2Vwb3J0X2lkeCA9IHBvcnRfaWR4O1xcbiBcXHRhcGMtXFx1MDAzZWxpbmtfY2ZnX2Vycm9yID0gMTtcXG4gXFx0YXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPSAwO1xcbitcXHRhcGMtXFx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPSAwO1xcbiBcXG4gXFx0LyogSW5pdGlhbGl6ZSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyBpZiBzdXBwb3J0ZWQgYnkgSFcgKi9cXG4gXFx0aWYgKGdjLVxcdTAwM2VwZl9jYXBfZmxhZ3MxIFxcdTAwMjYgR0RNQV9QRl9DQVBfRkxBR18xX0RZTl9JTlRFUlJVUFRfTU9ERVJBVElPTikge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXFxuaW5kZXggOWUzMWUyNTk1YWUzMi4uODc0M2Y3ZWRlY2JiOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXFxuQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgc3RyaW5nc2V0LCB1OCAqZGF0YSlcXG4gXFx0XFx0ZXRodG9vbF9zcHJpbnRmKFxcdTAwMjZkYXRhLCBcXFwicnhfJWRfeGRwX3R4XFxcIiwgaSk7XFxuIFxcdFxcdGV0aHRvb2xfc3ByaW50ZihcXHUwMDI2ZGF0YSwgXFxcInJ4XyVkX3hkcF9yZWRpcmVjdFxcXCIsIGkpO1xcbiBcXHRcXHRldGh0b29sX3NwcmludGYoXFx1MDAyNmRhdGEsIFxcXCJyeF8lZF9wa3RfbGVuMF9lcnJcXFwiLCBpKTtcXG4tXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXFxuIFxcdFxcdFxcdGV0aHRvb2xfc3ByaW50ZihcXHUwMDI2ZGF0YSwgXFxcInJ4XyVkX2NvYWxlc2NlZF9jcWVfJWRcXFwiLCBpLCBqICsgMik7XFxuIFxcdH1cXG4gXFxuQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHR1NjQgeGRwX2Ryb3A7XFxuIFxcdHU2NCB4ZHBfdHg7XFxuIFxcdHU2NCBwa3RfbGVuMF9lcnI7XFxuLVxcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XFxuK1xcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XFxuIFxcdHU2NCB0c29fcGFja2V0cztcXG4gXFx0dTY0IHRzb19ieXRlcztcXG4gXFx0dTY0IHRzb19pbm5lcl9wYWNrZXRzO1xcbkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0eGRwX3R4ID0gcnhfc3RhdHMtXFx1MDAzZXhkcF90eDtcXG4gXFx0XFx0XFx0eGRwX3JlZGlyZWN0ID0gcnhfc3RhdHMtXFx1MDAzZXhkcF9yZWRpcmVjdDtcXG4gXFx0XFx0XFx0cGt0X2xlbjBfZXJyID0gcnhfc3RhdHMtXFx1MDAzZXBrdF9sZW4wX2VycjtcXG4tXFx0XFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxcbitcXHRcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXFxuIFxcdFxcdFxcdFxcdGNvYWxlc2NlZF9jcWVbal0gPSByeF9zdGF0cy1cXHUwMDNlY29hbGVzY2VkX2NxZVtqXTtcXG4gXFx0XFx0fSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KFxcdTAwMjZyeF9zdGF0cy1cXHUwMDNlc3luY3AsIHN0YXJ0KSk7XFxuIFxcbkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0ZGF0YVtpKytdID0geGRwX3R4O1xcbiBcXHRcXHRkYXRhW2krK10gPSB4ZHBfcmVkaXJlY3Q7XFxuIFxcdFxcdGRhdGFbaSsrXSA9IHBrdF9sZW4wX2VycjtcXG4tXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXFxuIFxcdFxcdFxcdGRhdGFbaSsrXSA9IGNvYWxlc2NlZF9jcWVbal07XFxuIFxcdH1cXG4gXFxuQEAgLTQwOCw2ICs0MDgsNyBAQCBzdGF0aWMgaW50IG1hbmFfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiBcXG4gXFx0a2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMgPVxcbitcXHRcXHRhcGMtXFx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX0NRRV9DT0FMX1BLVFNfOCA6XFxuIFxcdFxcdGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgOiAxO1xcbiBcXG4gXFx0a2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9uc2VjcyA9IGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfdGltZW91dF9ucztcXG5AQCAtNDQzLDYgKzQ0NCw3IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdFxcdHUxNiBpbnRyX21vZHJfdHhfdXNlYztcXG4gXFx0XFx0dTE2IGludHJfbW9kcl90eF9jb21wO1xcbiBcXHRcXHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XFxuK1xcdFxcdHU4IGNxZThfY29hbGVzY2luZ19lbmFibGU7XFxuIFxcdFxcdGJvb2wgcnhfZGltX2VuYWJsZWQ7XFxuIFxcdFxcdGJvb2wgdHhfZGltX2VuYWJsZWQ7XFxuIFxcdH0gc2F2ZWQ7XFxuQEAgLTQ2NiwxMCArNDY4LDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdH1cXG4gXFxuIFxcdGlmIChrZXJuZWxfY29hbC1cXHUwMDNlcnhfY3FlX2ZyYW1lcyAhPSAxIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBrZXJuZWxfY29hbC1cXHUwMDNlcnhfY3FlX2ZyYW1lcyAhPSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSkge1xcbitcXHQgICAga2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGtlcm5lbF9jb2FsLVxcdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfQ1FFX0NPQUxfUEtUU184KSB7XFxuIFxcdFxcdE5MX1NFVF9FUlJfTVNHX0ZNVChleHRhY2ssXFxuLVxcdFxcdFxcdFxcdCAgIFxcXCJyeC1mcmFtZXMgbXVzdCBiZSAxIG9yICV1LCBnb3QgJXVcXFwiLFxcbitcXHRcXHRcXHRcXHQgICBcXFwicngtZnJhbWVzIG11c3QgYmUgMSwgJXUsIG9yICV1LCBnb3QgJXVcXFwiLFxcbiBcXHRcXHRcXHRcXHQgICBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSxcXG4rXFx0XFx0XFx0XFx0ICAgTUFOQV9DUUVfQ09BTF9QS1RTXzgsXFxuIFxcdFxcdFxcdFxcdCAgIGtlcm5lbF9jb2FsLVxcdTAwM2VyeF9jcWVfZnJhbWVzKTtcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG5AQCAtNTE0LDggKzUxOCwxNSBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRzYXZlZC50eF9kaW1fZW5hYmxlZCA9IGFwYy1cXHUwMDNldHhfZGltX2VuYWJsZWQ7XFxuIFxcbiBcXHRzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXFx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcXG4rXFx0c2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcXG4gXFx0YXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxcbi1cXHRcXHRrZXJuZWxfY29hbC1cXHUwMDNlcnhfY3FlX2ZyYW1lcyA9PSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTtcXG4rXFx0XFx0a2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMgXFx1MDAzZT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEk7XFxuK1xcbitcXHRpZiAoZ2MtXFx1MDAzZWNxZThfY29hbGVzY2luZ19zdXApXFxuK1xcdFxcdGFwYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9XFxuK1xcdFxcdFxcdGtlcm5lbF9jb2FsLVxcdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfQ1FFX0NPQUxfUEtUU184O1xcbitcXHRlbHNlIGlmIChrZXJuZWxfY29hbC1cXHUwMDNlcnhfY3FlX2ZyYW1lcyA9PSBNQU5BX0NRRV9DT0FMX1BLVFNfOClcXG4rXFx0XFx0bmV0ZGV2X2luZm8obmRldiwgXFxcIkZhbGwgYmFjayB0byBSWC1DUUUgeDQgY29hbGVzY2luZ1xcXFxuXFxcIik7XFxuIFxcbiBcXHRpZiAoIWFwYy1cXHUwMDNlcG9ydF9pc191cCkge1xcbiBcXHRcXHRXUklURV9PTkNFKGFwYy1cXHUwMDNlcnhfZGltX2VuYWJsZWQsICEhZWMtXFx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSk7XFxuQEAgLTUyMyw3ICs1MzQsOCBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSkge1xcbitcXHRpZiAoYXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlIHx8XFxuK1xcdCAgICBhcGMtXFx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSkge1xcbiBcXHRcXHQvKiBDUUUgY29hbGVzY2luZyBzZXR0aW5nIGlzIGFwcGxpZWQgdmlhIFJTUyBjb25maWd1cmF0aW9uLiAqL1xcbiBcXHRcXHRlcnIgPSBtYW5hX2NvbmZpZ19yc3MoYXBjLCBUUklfU1RBVEVfVFJVRSwgZmFsc2UsIGZhbHNlKTtcXG4gXFx0XFx0aWYgKGVycikge1xcbkBAIC01MzEsNiArNTQzLDggQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0XFx0ICAgZXJyKTtcXG4gXFx0XFx0XFx0YXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxcbiBcXHRcXHRcXHRcXHRzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGU7XFxuK1xcdFxcdFxcdGFwYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9XFxuK1xcdFxcdFxcdFxcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGU7XFxuIFxcdFxcdFxcdGFwYy1cXHUwMDNlaW50cl9tb2RyX3J4X3VzZWMgPSBzYXZlZC5pbnRyX21vZHJfcnhfdXNlYztcXG4gXFx0XFx0XFx0YXBjLVxcdTAwM2VpbnRyX21vZHJfcnhfY29tcCA9IHNhdmVkLmludHJfbW9kcl9yeF9jb21wO1xcbiBcXHRcXHRcXHRhcGMtXFx1MDAzZWludHJfbW9kcl90eF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3R4X3VzZWM7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oIGIvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmhcXG5pbmRleCA4NTI5Y2VmMGQ3YzQ1Li43MGE3ZjFmZWU1ZDNiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXFxuKysrIGIvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmhcXG5AQCAtMTgyLDYgKzE4Miw3IEBAIHN0cnVjdCBnZG1hX2dlbmVyYWxfcmVxIHtcXG4gI2RlZmluZSBHRE1BX01FU1NBR0VfVjIgMlxcbiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WMyAzXFxuICNkZWZpbmUgR0RNQV9NRVNTQUdFX1Y0IDRcXG4rI2RlZmluZSBHRE1BX01FU1NBR0VfVjUgNVxcbiBcXG4gc3RydWN0IGdkbWFfZ2VuZXJhbF9yZXNwIHtcXG4gXFx0c3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyO1xcbkBAIC00MjgsNiArNDI5LDkgQEAgc3RydWN0IGdkbWFfY29udGV4dCB7XFxuIFxcdC8qIEwyIE1UVSAqL1xcbiBcXHR1MTYgYWRhcHRlcl9tdHU7XFxuIFxcbitcXHQvKiBOSUMgc3VwcG9ydHMgQ1FFIHg4IGNvYWxlc2NpbmcgKi9cXG4rXFx0Ym9vbCBjcWU4X2NvYWxlc2Npbmdfc3VwO1xcbitcXG4gXFx0LyogVGhpcyBtYXBzIGEgQ1EgaW5kZXggdG8gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gKi9cXG4gXFx0dW5zaWduZWQgaW50XFx0XFx0bWF4X251bV9jcXM7XFxuIFxcdHN0cnVjdCBnZG1hX3F1ZXVlXFx0KipjcV90YWJsZTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmggYi9pbmNsdWRlL25ldC9tYW5hL21hbmEuaFxcbmluZGV4IDRkMDQxZmI4NDM3ZjUuLjNjYTEzOTlhMmZhZmEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcXG4rKysgYi9pbmNsdWRlL25ldC9tYW5hL21hbmEuaFxcbkBAIC02Miw5ICs2MiwxMiBAQCBlbnVtIFRSSV9TVEFURSB7XFxuIFxcbiAjZGVmaW5lIE1BWF9QT1JUU19JTl9NQU5BX0RFViAyNTZcXG4gXFxuLS8qIE1heGltdW0gbnVtYmVyIG9mIHBhY2tldHMgcGVyIGNvYWxlc2NlZCBDUUUgKi9cXG4rLyogTWF4aW11bSBudW1iZXIgb2YgUFBJcyBwZXIgY29hbGVzY2VkIENRRSAqL1xcbiAjZGVmaW5lIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIDRcXG4gXFxuKy8qIDgtcGt0IG1vZGUgcGFja3MgdXAgdG8gMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi9cXG4rI2RlZmluZSBNQU5BX0NRRV9DT0FMX1BLVFNfOCA4XFxuK1xcbiAvKiBEZWZhdWx0L21heCBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqL1xcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX1VTRUNfREVGIDBcXG4gI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9DT01QX0RFRiAwXFxuQEAgLTc5LDcgKzgyLDcgQEAgZW51bSBUUklfU1RBVEUge1xcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfTUFTSyAgIEdFTk1BU0soMjMsIDE2KVxcbiBcXG4gLyogVXBkYXRlIHRoaXMgY291bnQgd2hlbmV2ZXIgdGhlIHJlc3BlY3RpdmUgc3RydWN0dXJlcyBhcmUgY2hhbmdlZCAqL1xcbi0jZGVmaW5lIE1BTkFfU1RBVFNfUlhfQ09VTlQgKDYgKyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDEpXFxuKyNkZWZpbmUgTUFOQV9TVEFUU19SWF9DT1VOVCAoNiArIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMSlcXG4gI2RlZmluZSBNQU5BX1NUQVRTX1RYX0NPVU5UIDExXFxuIFxcbiAjZGVmaW5lIE1BTkFfUlhfRlJBR19BTElHTk1FTlQgNjRcXG5AQCAtOTEsNyArOTQsNyBAQCBzdHJ1Y3QgbWFuYV9zdGF0c19yeCB7XFxuIFxcdHU2NCB4ZHBfdHg7XFxuIFxcdHU2NCB4ZHBfcmVkaXJlY3Q7XFxuIFxcdHU2NCBwa3RfbGVuMF9lcnI7XFxuLVxcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XFxuK1xcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XFxuIFxcdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzeW5jcDtcXG4gfTtcXG4gXFxuQEAgLTIwMiw2ICsyMDUsNyBAQCBlbnVtIG1hbmFfY3FlX3R5cGUge1xcbiBcXHRDUUVfUlhfQ09BTEVTQ0VEXzRcXHRcXHQ9IDIsXFxuIFxcdENRRV9SWF9PQkpFQ1RfRkVOQ0VcXHRcXHQ9IDMsXFxuIFxcdENRRV9SWF9UUlVOQ0FURURcXHRcXHQ9IDQsXFxuK1xcdENRRV9SWF9DT0FMRVNDRURfOFxcdFxcdD0gNyxcXG4gXFxuIFxcdENRRV9UWF9PS0FZXFx0XFx0XFx0PSAzMixcXG4gXFx0Q1FFX1RYX1NBX0RST1BcXHRcXHRcXHQ9IDMzLFxcbkBAIC0yMzgsMTIgKzI0MiwyNSBAQCBzdHJ1Y3QgbWFuYV9jcWVfaGVhZGVyIHtcXG4gI2RlZmluZSBNQU5BX0hBU0hfTDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuIFxcdChORElTX0hBU0hfVENQX0lQVjQgfCBORElTX0hBU0hfVURQX0lQVjQgfCBORElTX0hBU0hfVENQX0lQVjYgfCAgICAgIFxcXFxcXG4gXFx0IE5ESVNfSEFTSF9VRFBfSVBWNiB8IE5ESVNfSEFTSF9UQ1BfSVBWNl9FWCB8IE5ESVNfSEFTSF9VRFBfSVBWNl9FWClcXG4rI2RlZmluZSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRCBcXFxcXFxuK1xcdChORElTX0hBU0hfSVBWNCB8IE5ESVNfSEFTSF9UQ1BfSVBWNCB8IE5ESVNfSEFTSF9VRFBfSVBWNCB8IFxcXFxcXG4rXFx0IE5ESVNfSEFTSF9JUFY2IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgTkRJU19IQVNIX1VEUF9JUFY2KVxcbitcXG4rdW5pb24gbWFuYV9yeGNvbXBfcGVycGt0X2luZm8ge1xcbitcXHRzdHJ1Y3Qge1xcbitcXHRcXHR1MzIgcGt0X2xlbiA6IDE2O1xcbitcXHRcXHR1MzIgcmVzZXJ2ZWQxIDogMTY7XFxuK1xcdFxcdHUzMiByZXNlcnZlZDI7XFxuK1xcdFxcdHUzMiBwa3RfaGFzaDtcXG4rXFx0fTtcXG4gXFxuLXN0cnVjdCBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyB7XFxuLVxcdHUzMiBwa3RfbGVuXFx0OiAxNjtcXG4tXFx0dTMyIHJlc2VydmVkMVxcdDogMTY7XFxuLVxcdHUzMiByZXNlcnZlZDI7XFxuLVxcdHUzMiBwa3RfaGFzaDtcXG4rXFx0LyogVXAgdG8gdHdvIHBrdHMgcGVyIFBQSSBlbnRyeSAqL1xcbitcXHRzdHJ1Y3Qge1xcbitcXHRcXHR1MzIgcGt0X2hhc2gwO1xcbitcXHRcXHR1MTYgcGt0X2xlbjA7XFxuK1xcdFxcdHUxNiBwa3RfbGVuMTtcXG4rXFx0XFx0dTMyIHBrdF9oYXNoMTtcXG4rXFx0fTtcXG4gfTsgLyogSFcgREFUQSAqL1xcbiBcXG4gLyogUmVjZWl2ZSBjb21wbGV0aW9uIE9PQiAqL1xcbkBAIC0yNjQsNyArMjgxLDcgQEAgc3RydWN0IG1hbmFfcnhjb21wX29vYiB7XFxuIFxcdHUzMiByeF91ZHBfY3N1bV9mYWlsXFx0XFx0OiAxO1xcbiBcXHR1MzIgcmVzZXJ2ZWQyXFx0XFx0XFx0OiAxO1xcbiBcXG4tXFx0c3RydWN0IG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHBwaVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSV07XFxuK1xcdHVuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHBwaVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSV07XFxuIFxcbiBcXHR1MzIgcnhfd3FlX29mZnNldDtcXG4gfTsgLyogSFcgREFUQSAqL1xcbkBAIC02MDcsNiArNjI0LDcgQEAgc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0IHtcXG4gXFx0Ym9vbCBwb3J0X3N0X3NhdmU7IC8qIFNhdmVkIHBvcnQgc3RhdGUgKi9cXG4gXFxuIFxcdHU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcXG4rXFx0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcXG4gXFx0dTMyIGNxZV9jb2FsZXNjaW5nX3RpbWVvdXRfbnM7XFxuIFxcbiBcXHQvKiBJbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqL1xcbkBAIC03NTEsNiArNzY5LDggQEAgc3RydWN0IG1hbmFfcXVlcnlfZGV2aWNlX2NmZ19yZXEge1xcbiBcXHR1MzIgcmVzZXJ2ZWQ7XFxuIH07IC8qIEhXIERBVEEgKi9cXG4gXFxuKyNkZWZpbmUgTUFOQV9QRl9GTEFHXzFfQ1FFXzhfQ09BTEVTQ0lOR19TVVBQT1JURUQgQklUKDUpXFxuK1xcbiBzdHJ1Y3QgbWFuYV9xdWVyeV9kZXZpY2VfY2ZnX3Jlc3Age1xcbiBcXHRzdHJ1Y3QgZ2RtYV9yZXNwX2hkciBoZHI7XFxuIFxcbkBAIC05ODYsNyArMTAwNiwxMCBAQCBzdHJ1Y3QgbWFuYV9jZmdfcnhfc3RlZXJfcmVxX3YyIHtcXG4gXFx0bWFuYV9oYW5kbGVfdCBkZWZhdWx0X3J4b2JqO1xcbiBcXHR1OCBoYXNoa2V5W01BTkFfSEFTSF9LRVlfU0laRV07XFxuIFxcdHU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcXG4tXFx0dTggcmVzZXJ2ZWQyWzddO1xcbitcXHR1OCByZXNlcnZlZDJbM107XFxuK1xcdHUxNiByc3NfaGFzaF90eXBlcztcXG4rXFx0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsgLyogdjUgbWVzc2FnZSAqL1xcbitcXHR1OCByZXNlcnZlZDM7XFxuIFxcdG1hbmFfaGFuZGxlX3QgaW5kaXJfdGFiW10gX19jb3VudGVkX2J5KG51bV9pbmRpcl9lbnRyaWVzKTtcXG4gfTsgLyogSFcgREFUQSAqL1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6MzY6NTEuMTM0NDI1MDE5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzIzODMyNTcyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgU21hcnROSUMgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBhbmQgdW50ZXN0YWJsZSBieSBzdGFuZGFyZCBmdXp6ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNmQ4NmM2MjJiZDYwMmFiMTdjM2YxMDNhODAzZDRhY2EzZDljY2Y1YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDA2OjM2OjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXG5pbmRleCBhOGMzMjliZGJhY2Y4Li43MjBkMjJlNmFlYTk0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcbkBAIC0xMjQxLDYgKzEyNDEsOSBAQCBpbnQgbWFuYV9nZF9xdWVyeV9kZXZpY2VfY2ZnKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1MzIgcHJvdG9fbWFqb3JfdmVyLFxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuK1x0aWYgKHJlc3AucGZfY2FwX2ZsYWdzMSBcdTAwMjYgTUFOQV9QRl9GTEFHXzFfQ1FFXzhfQ09BTEVTQ0lOR19TVVBQT1JURUQpXG4rXHRcdGdjLVx1MDAzZWNxZThfY29hbGVzY2luZ19zdXAgPSB0cnVlO1xuK1xuIFx0Km1heF9udW1fdnBvcnRzID0gcmVzcC5tYXhfbnVtX3Zwb3J0cztcbiBcbiBcdGlmIChyZXNwLmhkci5yZXNwb25zZS5tc2dfdmVyc2lvbiBcdTAwM2U9IEdETUFfTUVTU0FHRV9WMikge1xuQEAgLTE0MjYsNyArMTQyOSwxMSBAQCBzdGF0aWMgaW50IG1hbmFfY2ZnX3Zwb3J0X3N0ZWVyaW5nKHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjLFxuIFx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXHUwMDI2cmVxLVx1MDAzZWhkciwgTUFOQV9DT05GSUdfVlBPUlRfUlgsIHJlcV9idWZfc2l6ZSxcbiBcdFx0XHQgICAgIHNpemVvZihyZXNwKSk7XG4gXG4tXHRyZXEtXHUwMDNlaGRyLnJlcS5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WMjtcbitcdC8qIFJlcXVlc3QgXHUwMDI2IHJlc3BvbnNlIHZlcnNpb25zIGNhbiBiZSBkaWZmZXJlbnQuXG4rXHQgKiBIVyBjYW4gaGFuZGxlIG5ld2VyIG1zZyB2ZXJzaW9ucywgYnkgc2tpcHBpbmdcbitcdCAqIG5ldyBmaWVsZHMuXG4rXHQgKi9cbitcdHJlcS1cdTAwM2VoZHIucmVxLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1Y1O1xuIFx0cmVxLVx1MDAzZWhkci5yZXNwLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1YyO1xuIFxuIFx0cmVxLVx1MDAzZXZwb3J0ID0gYXBjLVx1MDAzZXBvcnRfaGFuZGxlO1xuQEAgLTE0NDAsOCArMTQ0NywxMyBAQCBzdGF0aWMgaW50IG1hbmFfY2ZnX3Zwb3J0X3N0ZWVyaW5nKHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjLFxuIFx0cmVxLVx1MDAzZXVwZGF0ZV9pbmRpcl90YWIgPSB1cGRhdGVfdGFiO1xuIFx0cmVxLVx1MDAzZWRlZmF1bHRfcnhvYmogPSBhcGMtXHUwMDNlZGVmYXVsdF9yeG9iajtcbiBcbi1cdGlmIChyeCAhPSBUUklfU1RBVEVfRkFMU0UpXG4rXHQvKiBSZXF1ZXN0LW1zZyB2NSByZXF1aXJlcyB0aGlzIGZpZWxkICovXG4rXHRyZXEtXHUwMDNlcnNzX2hhc2hfdHlwZXMgPSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRDtcbitcbitcdGlmIChyeCAhPSBUUklfU1RBVEVfRkFMU0UpIHtcbiBcdFx0cmVxLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGU7XG4rXHRcdHJlcS1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGU7XG4rXHR9XG4gXG4gXHRpZiAodXBkYXRlX2tleSlcbiBcdFx0bWVtY3B5KFx1MDAyNnJlcS1cdTAwM2VoYXNoa2V5LCBhcGMtXHUwMDNlaGFzaGtleSwgTUFOQV9IQVNIX0tFWV9TSVpFKTtcbkBAIC0yMDQ2LDE2ICsyMDU4LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWFuYV9idWlsZF9za2Ioc3RydWN0IG1hbmFfcnhxICpyeHEsIHZvaWQgKmJ1Zl92YSxcbiBcbiBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLFxuIFx0XHRcdHN0cnVjdCBtYW5hX3J4Y29tcF9vb2IgKmNxZSwgc3RydWN0IG1hbmFfcnhxICpyeHEsXG4tXHRcdFx0aW50IGkpXG4rXHRcdFx0dTMyIHBrdF9sZW4sIHUzMiBwa3RfaGFzaClcbiB7XG4gXHRzdHJ1Y3QgbWFuYV9zdGF0c19yeCAqcnhfc3RhdHMgPSBcdTAwMjZyeHEtXHUwMDNlc3RhdHM7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHJ4cS1cdTAwM2VuZGV2O1xuLVx0dWludCBwa3RfbGVuID0gY3FlLVx1MDAzZXBwaVtpXS5wa3RfbGVuO1xuIFx0dTE2IHJ4cV9pZHggPSByeHEtXHUwMDNlcnhxX2lkeDtcbiBcdHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaTtcbiBcdHN0cnVjdCB4ZHBfYnVmZiB4ZHAgPSB7fTtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4tXHR1MzIgaGFzaF92YWx1ZTtcbiBcdHUzMiBhY3Q7XG4gXG4gXHRyeHEtXHUwMDNlcnhfY3Eud29ya19kb25lKys7XG5AQCAtMjA5NCwxMiArMjEwNCwxMCBAQCBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLFxuIFx0fVxuIFxuIFx0aWYgKGNxZS1cdTAwM2VyeF9oYXNodHlwZSAhPSAwIFx1MDAyNlx1MDAyNiAobmRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9SWEhBU0gpKSB7XG4tXHRcdGhhc2hfdmFsdWUgPSBjcWUtXHUwMDNlcHBpW2ldLnBrdF9oYXNoO1xuLVxuIFx0XHRpZiAoY3FlLVx1MDAzZXJ4X2hhc2h0eXBlIFx1MDAyNiBNQU5BX0hBU0hfTDQpXG4tXHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaF92YWx1ZSwgUEtUX0hBU0hfVFlQRV9MNCk7XG4rXHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgcGt0X2hhc2gsIFBLVF9IQVNIX1RZUEVfTDQpO1xuIFx0XHRlbHNlXG4tXHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaF92YWx1ZSwgUEtUX0hBU0hfVFlQRV9MMyk7XG4rXHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgcGt0X2hhc2gsIFBLVF9IQVNIX1RZUEVfTDMpO1xuIFx0fVxuIFxuIFx0aWYgKGNxZS1cdTAwM2VyeF92bGFudGFnX3ByZXNlbnQpIHtcbkBAIC0yMjQwLDYgKzIyNDgsNDMgQEAgc3RhdGljIHZvaWQgbWFuYV9yZWZpbGxfcnhfb29iKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1hbmFfcnhxICpyeHEsXG4gXHRyeG9vYi1cdTAwM2VkbWFfc3luY19vZmZzZXQgPSBkbWFfc3luY19vZmZzZXQ7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19vbmVfcnhfcGt0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1hbmFfcnhxICpyeHEsXG4rXHRcdFx0XHQgICAgc3RydWN0IG1hbmFfcnhjb21wX29vYiAqb29iLFxuK1x0XHRcdFx0ICAgIHUzMiBwa3RsZW4sIHUzMiBwa3RfaGFzaClcbit7XG4rXHRzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjtcbitcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLVx1MDAzZW5kZXY7XG4rXHR2b2lkICpvbGRfYnVmID0gTlVMTDtcbitcdGJvb2wgb2xkX2ZwO1xuK1xuK1x0cnhidWZfb29iID0gXHUwMDI2cnhxLVx1MDAzZXJ4X29vYnNbcnhxLVx1MDAzZWJ1Zl9pbmRleF07XG4rXHRXQVJOX09OX09OQ0UocnhidWZfb29iLVx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUgIT0gMSk7XG4rXG4rXHRpZiAodW5saWtlbHkocGt0bGVuIFx1MDAzZSByeHEtXHUwMDNlZGF0YXNpemUpKSB7XG4rXHRcdC8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24ndCBjYWxsZWQuICovXG4rXHRcdHJ4cS1cdTAwM2VyeF9jcS53b3JrX2RvbmUrKztcbitcbitcdFx0KytuZGV2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQ7XG4rXHRcdG5ldGRldl93YXJuX29uY2UobmRldixcbitcdFx0XHRcdCBcIkRyb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxcblwiLFxuK1x0XHRcdFx0IHBrdGxlbiwgcnhxLVx1MDAzZWRhdGFzaXplKTtcbitcbitcdFx0LyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqL1xuK1x0fSBlbHNlIHtcbitcdFx0bWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbixcbitcdFx0XHRcdCAgIFx1MDAyNm9sZF9idWYsIFx1MDAyNm9sZF9mcCk7XG4rXG4rXHRcdC8qIFVuc3VjY2Vzc2Z1bCByZWZpbGwgd2lsbCBoYXZlIG9sZF9idWYgPT0gTlVMTC5cbitcdFx0ICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LlxuK1x0XHQgKi9cbitcdFx0bWFuYV9yeF9za2Iob2xkX2J1Ziwgb2xkX2ZwLCBvb2IsIHJ4cSwgcGt0bGVuLCBwa3RfaGFzaCk7XG4rXHR9XG4rXG4rXHRtYW5hX21vdmVfd3FfdGFpbChyeHEtXHUwMDNlZ2RtYV9ycSwgcnhidWZfb29iLVx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUpO1xuK1xuK1x0bWFuYV9wb3N0X3BrdF9yeHEocnhxKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxuIFx0XHRcdFx0c3RydWN0IGdkbWFfY29tcCAqY3FlKVxuIHtcbkBAIC0yMjQ5LDEwICsyMjk0LDEwIEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcbiBcdHN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iO1xuIFx0c3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGM7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBnYy1cdTAwM2VkZXY7XG4rXHRib29sIGNvYWxlc2NlZF84ID0gZmFsc2U7XG4gXHRib29sIGNvYWxlc2NlZCA9IGZhbHNlO1xuLVx0dm9pZCAqb2xkX2J1ZiA9IE5VTEw7XG4tXHR1MzIgY3VyciwgcGt0bGVuO1xuLVx0Ym9vbCBvbGRfZnA7XG4rXHR1MzIgcGt0bGVuO1xuK1x0aW50IHBrdF9pO1xuIFx0aW50IGk7XG4gXG4gXHRhcGMgPSBuZXRkZXZfcHJpdihuZGV2KTtcbkBAIC0yMjc1LDYgKzIzMjAsMTEgQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxuIFx0XHRjb2FsZXNjZWQgPSB0cnVlO1xuIFx0XHRicmVhaztcbiBcbitcdGNhc2UgQ1FFX1JYX0NPQUxFU0NFRF84OlxuK1x0XHRjb2FsZXNjZWQgPSB0cnVlO1xuK1x0XHRjb2FsZXNjZWRfOCA9IHRydWU7XG4rXHRcdGJyZWFrO1xuK1xuIFx0Y2FzZSBDUUVfUlhfT0JKRUNUX0ZFTkNFOlxuIFx0XHRjb21wbGV0ZShcdTAwMjZyeHEtXHUwMDNlZmVuY2VfZXZlbnQpO1xuIFx0XHRyZXR1cm47XG5AQCAtMjI4Niw1NCArMjMzNiw0OCBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbitcdHBrdF9pID0gMDtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJOyBpKyspIHtcbi1cdFx0b2xkX2J1ZiA9IE5VTEw7XG4tXHRcdHBrdGxlbiA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2xlbjtcbi1cdFx0aWYgKHBrdGxlbiA9PSAwKVxuLVx0XHRcdGJyZWFrO1xuLVxuLVx0XHRjdXJyID0gcnhxLVx1MDAzZWJ1Zl9pbmRleDtcbi1cdFx0cnhidWZfb29iID0gXHUwMDI2cnhxLVx1MDAzZXJ4X29vYnNbY3Vycl07XG4tXHRcdFdBUk5fT05fT05DRShyeGJ1Zl9vb2ItXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSAhPSAxKTtcbi1cbi1cdFx0aWYgKHVubGlrZWx5KHBrdGxlbiBcdTAwM2UgcnhxLVx1MDAzZWRhdGFzaXplKSkge1xuLVx0XHRcdC8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24ndCBjYWxsZWQuICovXG4tXHRcdFx0cnhxLVx1MDAzZXJ4X2NxLndvcmtfZG9uZSsrO1xuK1x0XHR1MzIgcGt0X2hhc2g7XG4gXG4tXHRcdFx0KytuZGV2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQ7XG4tXHRcdFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxuLVx0XHRcdFx0XCJEcm9wcGVkIG92ZXJzaXplZCBSWCBwYWNrZXQ6IGxlbj0ldSwgZGF0YXNpemU9JXVcXG5cIixcbi1cdFx0XHRcdHBrdGxlbiwgcnhxLVx1MDAzZWRhdGFzaXplKTtcbi1cbi1cdFx0XHQvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovXG4rXHRcdGlmIChjb2FsZXNjZWRfOCkge1xuK1x0XHRcdC8qIDgtcGt0IG1vZGU6IDIgcGFja2V0cyBwZXIgUFBJIGVudHJ5ICovXG4rXHRcdFx0cGt0bGVuID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfbGVuMDtcbitcdFx0XHRwa3RfaGFzaCA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2hhc2gwO1xuIFx0XHR9IGVsc2Uge1xuLVxuLVx0XHRcdG1hbmFfcmVmaWxsX3J4X29vYihkZXYsIHJ4cSwgcnhidWZfb29iLCBwa3RsZW4sXG4tXHRcdFx0XHRcdCAgIFx1MDAyNm9sZF9idWYsIFx1MDAyNm9sZF9mcCk7XG4tXG4tXHRcdFx0LyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLlxuLVx0XHRcdCAqIEluIHRoaXMgY2FzZSwgbWFuYV9yeF9za2IoKSB3aWxsIGRyb3AgdGhlIHBhY2tldC5cbi1cdFx0XHQgKi9cbi1cdFx0XHRtYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBpKTtcbitcdFx0XHRwa3RsZW4gPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9sZW47XG4rXHRcdFx0cGt0X2hhc2ggPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9oYXNoO1xuIFx0XHR9XG4rXHRcdGlmIChwa3RsZW4gPT0gMClcbitcdFx0XHRicmVhaztcbiBcbi1cdFx0bWFuYV9tb3ZlX3dxX3RhaWwocnhxLVx1MDAzZWdkbWFfcnEsXG4tXHRcdFx0XHQgIHJ4YnVmX29vYi1cdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1KTtcbi1cbi1cdFx0bWFuYV9wb3N0X3BrdF9yeHEocnhxKTtcbitcdFx0bWFuYV9wcm9jZXNzX29uZV9yeF9wa3QoZGV2LCByeHEsIG9vYiwgcGt0bGVuLCBwa3RfaGFzaCk7XG4rXHRcdHBrdF9pKys7XG4gXG4gXHRcdGlmICghY29hbGVzY2VkKVxuIFx0XHRcdGJyZWFrO1xuK1xuK1x0XHQvKiBQcm9jZXNzIDJuZCBwYWNrZXQgZnJvbSB0aGUgc2FtZSBQUEkgaW4gOC1wa3QgbW9kZSAqL1xuK1x0XHRpZiAoY29hbGVzY2VkXzgpIHtcbitcdFx0XHRwa3RsZW4gPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9sZW4xO1xuK1x0XHRcdHBrdF9oYXNoID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfaGFzaDE7XG4rXHRcdFx0aWYgKHBrdGxlbiA9PSAwKVxuK1x0XHRcdFx0YnJlYWs7XG4rXG4rXHRcdFx0bWFuYV9wcm9jZXNzX29uZV9yeF9wa3QoZGV2LCByeHEsIG9vYiwgcGt0bGVuLFxuK1x0XHRcdFx0XHRcdHBrdF9oYXNoKTtcbitcdFx0XHRwa3RfaSsrO1xuK1x0XHR9XG4gXHR9XG4gXG4gXHQvKiBDb2xsZWN0IGNvYWxlc2NlZCBDUUUgY291bnQgYmFzZWQgb24gcGFja2V0cyBwcm9jZXNzZWQuXG4tXHQgKiBDb2FsZXNjZWQgQ1FFcyBoYXZlIGF0IGxlYXN0IDIgcGFja2V0cywgc28gaW5kZXggaXMgaSAtIDIuXG4rXHQgKiBDb2FsZXNjZWQgQ1FFcyBoYXZlIGF0IGxlYXN0IDIgcGFja2V0cywgc28gaW5kZXggaXMgcGt0X2kgLSAyLlxuIFx0ICovXG4tXHRpZiAoaSBcdTAwM2UgMSkge1xuK1x0aWYgKHBrdF9pIFx1MDAzZSAxKSB7XG4gXHRcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2cnhxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbi1cdFx0cnhxLVx1MDAzZXN0YXRzLmNvYWxlc2NlZF9jcWVbaSAtIDJdKys7XG4rXHRcdHJ4cS1cdTAwM2VzdGF0cy5jb2FsZXNjZWRfY3FlW3BrdF9pIC0gMl0rKztcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2cnhxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbi1cdH0gZWxzZSBpZiAoIWkgXHUwMDI2XHUwMDI2ICFwa3RsZW4pIHtcbitcdH0gZWxzZSBpZiAoIXBrdF9pIFx1MDAyNlx1MDAyNiAhcGt0bGVuKSB7XG4gXHRcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2cnhxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbiBcdFx0cnhxLVx1MDAzZXN0YXRzLnBrdF9sZW4wX2VycisrO1xuIFx0XHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuQEAgLTM3NjMsNiArMzgwNyw3IEBAIHN0YXRpYyBpbnQgbWFuYV9wcm9iZV9wb3J0KHN0cnVjdCBtYW5hX2NvbnRleHQgKmFjLCBpbnQgcG9ydF9pZHgsXG4gXHRhcGMtXHUwMDNlcG9ydF9pZHggPSBwb3J0X2lkeDtcbiBcdGFwYy1cdTAwM2VsaW5rX2NmZ19lcnJvciA9IDE7XG4gXHRhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gMDtcbitcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID0gMDtcbiBcbiBcdC8qIEluaXRpYWxpemUgaW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgaWYgc3VwcG9ydGVkIGJ5IEhXICovXG4gXHRpZiAoZ2MtXHUwMDNlcGZfY2FwX2ZsYWdzMSBcdTAwMjYgR0RNQV9QRl9DQVBfRkxBR18xX0RZTl9JTlRFUlJVUFRfTU9ERVJBVElPTikge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcbmluZGV4IDllMzFlMjU5NWFlMzIuLjg3NDNmN2VkZWNiYjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcbkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIHN0cmluZ3NldCwgdTggKmRhdGEpXG4gXHRcdGV0aHRvb2xfc3ByaW50ZihcdTAwMjZkYXRhLCBcInJ4XyVkX3hkcF90eFwiLCBpKTtcbiBcdFx0ZXRodG9vbF9zcHJpbnRmKFx1MDAyNmRhdGEsIFwicnhfJWRfeGRwX3JlZGlyZWN0XCIsIGkpO1xuIFx0XHRldGh0b29sX3NwcmludGYoXHUwMDI2ZGF0YSwgXCJyeF8lZF9wa3RfbGVuMF9lcnJcIiwgaSk7XG4tXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxuK1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDE7IGorKylcbiBcdFx0XHRldGh0b29sX3NwcmludGYoXHUwMDI2ZGF0YSwgXCJyeF8lZF9jb2FsZXNjZWRfY3FlXyVkXCIsIGksIGogKyAyKTtcbiBcdH1cbiBcbkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHU2NCB4ZHBfZHJvcDtcbiBcdHU2NCB4ZHBfdHg7XG4gXHR1NjQgcGt0X2xlbjBfZXJyO1xuLVx0dTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxXTtcbitcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XG4gXHR1NjQgdHNvX3BhY2tldHM7XG4gXHR1NjQgdHNvX2J5dGVzO1xuIFx0dTY0IHRzb19pbm5lcl9wYWNrZXRzO1xuQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRcdHhkcF90eCA9IHJ4X3N0YXRzLVx1MDAzZXhkcF90eDtcbiBcdFx0XHR4ZHBfcmVkaXJlY3QgPSByeF9zdGF0cy1cdTAwM2V4ZHBfcmVkaXJlY3Q7XG4gXHRcdFx0cGt0X2xlbjBfZXJyID0gcnhfc3RhdHMtXHUwMDNlcGt0X2xlbjBfZXJyO1xuLVx0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxuK1x0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMTsgaisrKVxuIFx0XHRcdFx0Y29hbGVzY2VkX2NxZVtqXSA9IHJ4X3N0YXRzLVx1MDAzZWNvYWxlc2NlZF9jcWVbal07XG4gXHRcdH0gd2hpbGUgKHU2NF9zdGF0c19mZXRjaF9yZXRyeShcdTAwMjZyeF9zdGF0cy1cdTAwM2VzeW5jcCwgc3RhcnQpKTtcbiBcbkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0ZGF0YVtpKytdID0geGRwX3R4O1xuIFx0XHRkYXRhW2krK10gPSB4ZHBfcmVkaXJlY3Q7XG4gXHRcdGRhdGFbaSsrXSA9IHBrdF9sZW4wX2Vycjtcbi1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqKyspXG4rXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMTsgaisrKVxuIFx0XHRcdGRhdGFbaSsrXSA9IGNvYWxlc2NlZF9jcWVbal07XG4gXHR9XG4gXG5AQCAtNDA4LDYgKzQwOCw3IEBAIHN0YXRpYyBpbnQgbWFuYV9nZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyA9IG5ldGRldl9wcml2KG5kZXYpO1xuIFxuIFx0a2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyA9XG4rXHRcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9DUUVfQ09BTF9QS1RTXzggOlxuIFx0XHRhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgOiAxO1xuIFxuIFx0a2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX25zZWNzID0gYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX3RpbWVvdXRfbnM7XG5AQCAtNDQzLDYgKzQ0NCw3IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHUxNiBpbnRyX21vZHJfdHhfdXNlYztcbiBcdFx0dTE2IGludHJfbW9kcl90eF9jb21wO1xuIFx0XHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XG4rXHRcdHU4IGNxZThfY29hbGVzY2luZ19lbmFibGU7XG4gXHRcdGJvb2wgcnhfZGltX2VuYWJsZWQ7XG4gXHRcdGJvb2wgdHhfZGltX2VuYWJsZWQ7XG4gXHR9IHNhdmVkO1xuQEAgLTQ2NiwxMCArNDY4LDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHR9XG4gXG4gXHRpZiAoa2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyAhPSAxIFx1MDAyNlx1MDAyNlxuLVx0ICAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEkpIHtcbitcdCAgICBrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gTUFOQV9DUUVfQ09BTF9QS1RTXzgpIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfRk1UKGV4dGFjayxcbi1cdFx0XHRcdCAgIFwicngtZnJhbWVzIG11c3QgYmUgMSBvciAldSwgZ290ICV1XCIsXG4rXHRcdFx0XHQgICBcInJ4LWZyYW1lcyBtdXN0IGJlIDEsICV1LCBvciAldSwgZ290ICV1XCIsXG4gXHRcdFx0XHQgICBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSxcbitcdFx0XHRcdCAgIE1BTkFfQ1FFX0NPQUxfUEtUU184LFxuIFx0XHRcdFx0ICAga2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuQEAgLTUxNCw4ICs1MTgsMTUgQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHNhdmVkLnR4X2RpbV9lbmFibGVkID0gYXBjLVx1MDAzZXR4X2RpbV9lbmFibGVkO1xuIFxuIFx0c2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbitcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxuLVx0XHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xuK1x0XHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzIFx1MDAzZT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEk7XG4rXG4rXHRpZiAoZ2MtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX3N1cClcbitcdFx0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPVxuK1x0XHRcdGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgPT0gTUFOQV9DUUVfQ09BTF9QS1RTXzg7XG4rXHRlbHNlIGlmIChrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfQ1FFX0NPQUxfUEtUU184KVxuK1x0XHRuZXRkZXZfaW5mbyhuZGV2LCBcIkZhbGwgYmFjayB0byBSWC1DUUUgeDQgY29hbGVzY2luZ1xcblwiKTtcbiBcbiBcdGlmICghYXBjLVx1MDAzZXBvcnRfaXNfdXApIHtcbiBcdFx0V1JJVEVfT05DRShhcGMtXHUwMDNlcnhfZGltX2VuYWJsZWQsICEhZWMtXHUwMDNldXNlX2FkYXB0aXZlX3J4X2NvYWxlc2NlKTtcbkBAIC01MjMsNyArNTM0LDggQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRpZiAoYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSAhPSBzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUpIHtcbitcdGlmIChhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSB8fFxuK1x0ICAgIGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUpIHtcbiBcdFx0LyogQ1FFIGNvYWxlc2Npbmcgc2V0dGluZyBpcyBhcHBsaWVkIHZpYSBSU1MgY29uZmlndXJhdGlvbi4gKi9cbiBcdFx0ZXJyID0gbWFuYV9jb25maWdfcnNzKGFwYywgVFJJX1NUQVRFX1RSVUUsIGZhbHNlLCBmYWxzZSk7XG4gXHRcdGlmIChlcnIpIHtcbkBAIC01MzEsNiArNTQzLDggQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0XHRcdCAgIGVycik7XG4gXHRcdFx0YXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSA9XG4gXHRcdFx0XHRzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGU7XG4rXHRcdFx0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPVxuK1x0XHRcdFx0c2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdFx0XHRhcGMtXHUwMDNlaW50cl9tb2RyX3J4X3VzZWMgPSBzYXZlZC5pbnRyX21vZHJfcnhfdXNlYztcbiBcdFx0XHRhcGMtXHUwMDNlaW50cl9tb2RyX3J4X2NvbXAgPSBzYXZlZC5pbnRyX21vZHJfcnhfY29tcDtcbiBcdFx0XHRhcGMtXHUwMDNlaW50cl9tb2RyX3R4X3VzZWMgPSBzYXZlZC5pbnRyX21vZHJfdHhfdXNlYztcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaCBiL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXG5pbmRleCA4NTI5Y2VmMGQ3YzQ1Li43MGE3ZjFmZWU1ZDNiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmhcbisrKyBiL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXG5AQCAtMTgyLDYgKzE4Miw3IEBAIHN0cnVjdCBnZG1hX2dlbmVyYWxfcmVxIHtcbiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WMiAyXG4gI2RlZmluZSBHRE1BX01FU1NBR0VfVjMgM1xuICNkZWZpbmUgR0RNQV9NRVNTQUdFX1Y0IDRcbisjZGVmaW5lIEdETUFfTUVTU0FHRV9WNSA1XG4gXG4gc3RydWN0IGdkbWFfZ2VuZXJhbF9yZXNwIHtcbiBcdHN0cnVjdCBnZG1hX3Jlc3BfaGRyIGhkcjtcbkBAIC00MjgsNiArNDI5LDkgQEAgc3RydWN0IGdkbWFfY29udGV4dCB7XG4gXHQvKiBMMiBNVFUgKi9cbiBcdHUxNiBhZGFwdGVyX210dTtcbiBcbitcdC8qIE5JQyBzdXBwb3J0cyBDUUUgeDggY29hbGVzY2luZyAqL1xuK1x0Ym9vbCBjcWU4X2NvYWxlc2Npbmdfc3VwO1xuK1xuIFx0LyogVGhpcyBtYXBzIGEgQ1EgaW5kZXggdG8gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gKi9cbiBcdHVuc2lnbmVkIGludFx0XHRtYXhfbnVtX2NxcztcbiBcdHN0cnVjdCBnZG1hX3F1ZXVlXHQqKmNxX3RhYmxlO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oIGIvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcbmluZGV4IDRkMDQxZmI4NDM3ZjUuLjNjYTEzOTlhMmZhZmEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9tYW5hL21hbmEuaFxuKysrIGIvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcbkBAIC02Miw5ICs2MiwxMiBAQCBlbnVtIFRSSV9TVEFURSB7XG4gXG4gI2RlZmluZSBNQVhfUE9SVFNfSU5fTUFOQV9ERVYgMjU2XG4gXG4tLyogTWF4aW11bSBudW1iZXIgb2YgcGFja2V0cyBwZXIgY29hbGVzY2VkIENRRSAqL1xuKy8qIE1heGltdW0gbnVtYmVyIG9mIFBQSXMgcGVyIGNvYWxlc2NlZCBDUUUgKi9cbiAjZGVmaW5lIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIDRcbiBcbisvKiA4LXBrdCBtb2RlIHBhY2tzIHVwIHRvIDIgcGFja2V0cyBwZXIgUFBJIGVudHJ5ICovXG4rI2RlZmluZSBNQU5BX0NRRV9DT0FMX1BLVFNfOCA4XG4rXG4gLyogRGVmYXVsdC9tYXggaW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgKi9cbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX1VTRUNfREVGIDBcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfREVGIDBcbkBAIC03OSw3ICs4Miw3IEBAIGVudW0gVFJJX1NUQVRFIHtcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfTUFTSyAgIEdFTk1BU0soMjMsIDE2KVxuIFxuIC8qIFVwZGF0ZSB0aGlzIGNvdW50IHdoZW5ldmVyIHRoZSByZXNwZWN0aXZlIHN0cnVjdHVyZXMgYXJlIGNoYW5nZWQgKi9cbi0jZGVmaW5lIE1BTkFfU1RBVFNfUlhfQ09VTlQgKDYgKyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDEpXG4rI2RlZmluZSBNQU5BX1NUQVRTX1JYX0NPVU5UICg2ICsgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxKVxuICNkZWZpbmUgTUFOQV9TVEFUU19UWF9DT1VOVCAxMVxuIFxuICNkZWZpbmUgTUFOQV9SWF9GUkFHX0FMSUdOTUVOVCA2NFxuQEAgLTkxLDcgKzk0LDcgQEAgc3RydWN0IG1hbmFfc3RhdHNfcngge1xuIFx0dTY0IHhkcF90eDtcbiBcdHU2NCB4ZHBfcmVkaXJlY3Q7XG4gXHR1NjQgcGt0X2xlbjBfZXJyO1xuLVx0dTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxXTtcbitcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XG4gXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgc3luY3A7XG4gfTtcbiBcbkBAIC0yMDIsNiArMjA1LDcgQEAgZW51bSBtYW5hX2NxZV90eXBlIHtcbiBcdENRRV9SWF9DT0FMRVNDRURfNFx0XHQ9IDIsXG4gXHRDUUVfUlhfT0JKRUNUX0ZFTkNFXHRcdD0gMyxcbiBcdENRRV9SWF9UUlVOQ0FURURcdFx0PSA0LFxuK1x0Q1FFX1JYX0NPQUxFU0NFRF84XHRcdD0gNyxcbiBcbiBcdENRRV9UWF9PS0FZXHRcdFx0PSAzMixcbiBcdENRRV9UWF9TQV9EUk9QXHRcdFx0PSAzMyxcbkBAIC0yMzgsMTIgKzI0MiwyNSBAQCBzdHJ1Y3QgbWFuYV9jcWVfaGVhZGVyIHtcbiAjZGVmaW5lIE1BTkFfSEFTSF9MNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gXHQoTkRJU19IQVNIX1RDUF9JUFY0IHwgTkRJU19IQVNIX1VEUF9JUFY0IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgICAgICBcXFxuIFx0IE5ESVNfSEFTSF9VRFBfSVBWNiB8IE5ESVNfSEFTSF9UQ1BfSVBWNl9FWCB8IE5ESVNfSEFTSF9VRFBfSVBWNl9FWClcbisjZGVmaW5lIE1BTkFfSEFTSF9FTkFCTEVfU1VQUE9SVEVEIFxcXG4rXHQoTkRJU19IQVNIX0lQVjQgfCBORElTX0hBU0hfVENQX0lQVjQgfCBORElTX0hBU0hfVURQX0lQVjQgfCBcXFxuK1x0IE5ESVNfSEFTSF9JUFY2IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgTkRJU19IQVNIX1VEUF9JUFY2KVxuK1xuK3VuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHtcbitcdHN0cnVjdCB7XG4rXHRcdHUzMiBwa3RfbGVuIDogMTY7XG4rXHRcdHUzMiByZXNlcnZlZDEgOiAxNjtcbitcdFx0dTMyIHJlc2VydmVkMjtcbitcdFx0dTMyIHBrdF9oYXNoO1xuK1x0fTtcbiBcbi1zdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8ge1xuLVx0dTMyIHBrdF9sZW5cdDogMTY7XG4tXHR1MzIgcmVzZXJ2ZWQxXHQ6IDE2O1xuLVx0dTMyIHJlc2VydmVkMjtcbi1cdHUzMiBwa3RfaGFzaDtcbitcdC8qIFVwIHRvIHR3byBwa3RzIHBlciBQUEkgZW50cnkgKi9cbitcdHN0cnVjdCB7XG4rXHRcdHUzMiBwa3RfaGFzaDA7XG4rXHRcdHUxNiBwa3RfbGVuMDtcbitcdFx0dTE2IHBrdF9sZW4xO1xuK1x0XHR1MzIgcGt0X2hhc2gxO1xuK1x0fTtcbiB9OyAvKiBIVyBEQVRBICovXG4gXG4gLyogUmVjZWl2ZSBjb21wbGV0aW9uIE9PQiAqL1xuQEAgLTI2NCw3ICsyODEsNyBAQCBzdHJ1Y3QgbWFuYV9yeGNvbXBfb29iIHtcbiBcdHUzMiByeF91ZHBfY3N1bV9mYWlsXHRcdDogMTtcbiBcdHUzMiByZXNlcnZlZDJcdFx0XHQ6IDE7XG4gXG4tXHRzdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8gcHBpW01BTkFfUlhDT01QX09PQl9OVU1fUFBJXTtcbitcdHVuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHBwaVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSV07XG4gXG4gXHR1MzIgcnhfd3FlX29mZnNldDtcbiB9OyAvKiBIVyBEQVRBICovXG5AQCAtNjA3LDYgKzYyNCw3IEBAIHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCB7XG4gXHRib29sIHBvcnRfc3Rfc2F2ZTsgLyogU2F2ZWQgcG9ydCBzdGF0ZSAqL1xuIFxuIFx0dTggY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuK1x0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdHUzMiBjcWVfY29hbGVzY2luZ190aW1lb3V0X25zO1xuIFxuIFx0LyogSW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgKi9cbkBAIC03NTEsNiArNzY5LDggQEAgc3RydWN0IG1hbmFfcXVlcnlfZGV2aWNlX2NmZ19yZXEge1xuIFx0dTMyIHJlc2VydmVkO1xuIH07IC8qIEhXIERBVEEgKi9cbiBcbisjZGVmaW5lIE1BTkFfUEZfRkxBR18xX0NRRV84X0NPQUxFU0NJTkdfU1VQUE9SVEVEIEJJVCg1KVxuK1xuIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVzcCB7XG4gXHRzdHJ1Y3QgZ2RtYV9yZXNwX2hkciBoZHI7XG4gXG5AQCAtOTg2LDcgKzEwMDYsMTAgQEAgc3RydWN0IG1hbmFfY2ZnX3J4X3N0ZWVyX3JlcV92MiB7XG4gXHRtYW5hX2hhbmRsZV90IGRlZmF1bHRfcnhvYmo7XG4gXHR1OCBoYXNoa2V5W01BTkFfSEFTSF9LRVlfU0laRV07XG4gXHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XG4tXHR1OCByZXNlcnZlZDJbN107XG4rXHR1OCByZXNlcnZlZDJbM107XG4rXHR1MTYgcnNzX2hhc2hfdHlwZXM7XG4rXHR1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlOyAvKiB2NSBtZXNzYWdlICovXG4rXHR1OCByZXNlcnZlZDM7XG4gXHRtYW5hX2hhbmRsZV90IGluZGlyX3RhYltdIF9fY291bnRlZF9ieShudW1faW5kaXJfZW50cmllcyk7XG4gfTsgLyogSFcgREFUQSAqL1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6MzY6NTEuMTM0NDI3MDM5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI3NTg5NjkwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BTkEgRHJpdmVyIFBhdGNoIGZvciBUZXN0YWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBNaWNyb3NvZnQgTUFOQSBkcml2ZXIsIHNwZWNpZmljYWxseSBhZGRpbmcgc3VwcG9ydCBmb3IgQ1FFIHg4IGNvYWxlc2Npbmcg4oCTIDgtcGFja2V0IG1vZGUg4oCTIHdoaWNoIGlzIGEgcHJldHR5IGludGVyZXN0aW5nIG9wdGltaXphdGlvbi4gSXQgbG9va3MgbGlrZSBpdCB0b3VjaGVzIHNldmVyYWwgY29yZSBmdW5jdGlvbnMgd2l0aGluIHRoZSBkcml2ZXI6IGBtYW5hX2dkX3F1ZXJ5X2RldmljZV9jZmdgLCBgbWFuYV9jZmdfdnBvcnRfc3RlZXJpbmdgLCB0aGUgUlggcGF0aCB3aXRoIGBtYW5hX3J4X3NrYmAgYW5kIGBtYW5hX3Byb2Nlc3NfcnhfY3FlYCwgcGx1cyBwcm9iZSBhbmQgZXRodG9vbCBmdW5jdGlvbmFsaXR5LiBUaGUgcGF0aCBwb2ludHMgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2AsIHdoaWNoIHNlZW1zIHN0YW5kYXJkIGVub3VnaC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFsd2F5cywgXCJDYW4gSSB0ZXN0IHRoaXMgd2l0aG91dCBuZWVkaW5nIGEgc3BlY2lhbGl6ZWQgc2V0dXA/XCIgSSBuZWVkIHRvIHZlcmlmeSBpZiB0aGlzIGRyaXZlciBpcyB0ZXN0YWJsZSBpbiBRRU1VLiBHaXZlbiB0aGF0IHRoZSBNQU5BIGlzIGEgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgYW5kIHRoZXJlZm9yZSBhIFBDSSBkZXZpY2UsIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBpcyB0aGUgTUFOQSBkZXZpY2UgYWN0dWFsbHkgKmVtdWxhdGVkKiBpbiBRRU1VPyBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIHRoZXJlJ3MgYW55IG1lbnRpb24gb2YgXCJtYW5hXCIgaW4gUUVNVSdzIGRvY3VtZW50YXRpb24gb3IgY29kZSwgb3IgaWYgdGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGNhcmRzIG9yIGFuIEF6dXJlIFZNIGVudmlyb25tZW50LlxuXG5SaWdodCwgTUFOQSBpcyBBenVyZSdzIGN1c3RvbSBTbWFydE5JQy9TUi1JT1YgZGV2aWNlLiBBcyBJIGV4cGVjdGVkLCBpdCdzIG5vdCB0aGUga2luZCBvZiB0aGluZyB0aGF0J3MgZ2VuZXJhbGx5IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZSBpbnN0cnVjdGlvbnMgZG8gbWVudGlvbiBhIHNwZWNpZmljIGNyaXRlcmlvbiBmb3Igd2hlbiBhIHBhdGNoICpzaG91bGRuJ3QqIGJlIGNvbnNpZGVyZWQgd29ydGggZnV6emluZy4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIFwiQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VXCIuXG5cblNvIGxldCdzIHNlZSBpZiBNQU5BIGZpdHMgdGhpcyBkZXNjcmlwdGlvbi4gTUFOQSBpcyBpbmRlZWQgYSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyLCBhbmQgaXQgaXMgYSBQQ0llIGRldmljZS4gVGh1cywgdGhlIGNydWNpYWwgcXVlc3Rpb24gcmVtYWluczogaXMgTUFOQSBlbXVsYXRlZCBpbiBRRU1VPyBBbmQgYXMgZmFyIGFzIEkgY2FuIHRlbGwsIHRoZSBhbnN3ZXIgaXMgbm8uIEkgbmVlZCB0byBleHBsaWNpdGx5IGNvbmZpcm0gdGhpcyDigJMgdGhhdCB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBlaXRoZXIgaW4gdGhlIGtlcm5lbCBvciBRRU1VIGl0c2VsZi4gSSdsbCBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoYXQgbm8gc3VwcG9ydGluZyBlbXVsYXRpb24gZXhpc3RzLiBJZiBpdCdzIHB1cmUgaGFyZHdhcmUsIHdlJ2xsIG5lZWQgYSBwaHlzaWNhbCBBenVyZSBlbnZpcm9ubWVudCB0byBkbyBtZWFuaW5nZnVsIHRlc3RpbmcsIHdoaWNoIGltcGFjdHMgb3VyIHRlc3RhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjAxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6MzY6NTkuNDEwMzI3NzE0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NTU2NTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hbmFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzYzOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvTWFrZWZpbGUtNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NSUNST1NPRlRfTUFOQSkgKz0gbWFuYS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvTWFrZWZpbGU6NjptYW5hLW9ianMgOj0gZ2RtYV9tYWluLm8gc2htX2NoYW5uZWwubyBod19jaGFubmVsLm8gbWFuYV9lbi5vIG1hbmFfZXRodG9vbC5vIG1hbmFfYnBmLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE1OiNpbmNsdWRlIFxcdTAwM2NuZXQvbWFuYS9tYW5hLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTY6I2luY2x1ZGUgXFx1MDAzY25ldC9tYW5hL2h3X2NoYW5uZWwuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxODpzdHJ1Y3QgZGVudHJ5ICptYW5hX2RlYnVnZnNfcm9vdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMDpzdHJ1Y3QgbWFuYV9kZXZfcmVjb3Zlcnkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIxLVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI2OnN0YXRpYyBzdHJ1Y3QgbWFuYV9kZXZfcmVjb3Zlcnlfd29yayB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjctXFx0c3RydWN0IGxpc3RfaGVhZCBkZXZfbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMxLVxcdHNwaW5sb2NrX3QgbG9jaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozMjp9IG1hbmFfZGV2X3JlY292ZXJ5X3dvcms7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzQ6c3RhdGljIHUzMiBtYW5hX2dkX3IzMihzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnLCB1NjQgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM5OnN0YXRpYyB1NjQgbWFuYV9nZF9yNjQoc3RydWN0IGdkbWFfY29udGV4dCAqZywgdTY0IG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0NDpzdGF0aWMgaW50IG1hbmFfZ2RfaW5pdF9wZl9yZWdzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjUxOlxcdGdjLVxcdTAwM2VkYl9wYWdlX3NpemUgPSBtYW5hX2dkX3IzMihnYywgR0RNQV9QRl9SRUdfREJfUEFHRV9TSVpFKSBcXHUwMDI2IDB4RkZGRjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1MzpcXHQvKiBtYW5hX2dkX3JpbmdfZG9vcmJlbGwoKSBhY2Nlc3NlcyBvZmZzZXRzIHVwIHRvIERPT1JCRUxMX09GRlNFVF9FUVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU0LVxcdCAqICgweEZGOCkgKyA4IGJ5dGVzID0gNEtCIHdpdGhpbiBlYWNoIGRvb3JiZWxsIHBhZ2UsIHNvIHRoZSBwYWdlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2NDpcXHRnYy1cXHUwMDNlZGJfcGFnZV9vZmYgPSBtYW5hX2dkX3I2NChnYywgR0RNQV9QRl9SRUdfREJfUEFHRV9PRkYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Nzc6XFx0c3Jpb3ZfYmFzZV9vZmYgPSBtYW5hX2dkX3I2NChnYywgR0RNQV9TUklPVl9SRUdfQ0ZHX0JBU0VfT0ZGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03OC1cXHRpZiAoc3Jpb3ZfYmFzZV9vZmYgXFx1MDAzZT0gZ2MtXFx1MDAzZWJhcjBfc2l6ZSB8fFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODgtXFx0cmVtYWluaW5nX2JhcnNpemUgPSBnYy1cXHUwMDNlYmFyMF9zaXplIC0gc3Jpb3ZfYmFzZV9vZmY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6ODk6XFx0c3Jpb3Zfc2htX29mZiA9IG1hbmFfZ2RfcjY0KGdjLCBzcmlvdl9iYXNlX29mZiArIEdETUFfUEZfUkVHX1NITV9PRkYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTkwLVxcdGlmIChzcmlvdl9zaG1fb2ZmIFxcdTAwM2U9IHJlbWFpbmluZ19iYXJzaXplIHx8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTA0OnN0YXRpYyBpbnQgbWFuYV9nZF9pbml0X3ZmX3JlZ3Moc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDk6XFx0Z2MtXFx1MDAzZWRiX3BhZ2Vfc2l6ZSA9IG1hbmFfZ2RfcjMyKGdjLCBHRE1BX1JFR19EQl9QQUdFX1NJWkUpIFxcdTAwMjYgMHhGRkZGO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTE6XFx0LyogbWFuYV9nZF9yaW5nX2Rvb3JiZWxsKCkgYWNjZXNzZXMgb2Zmc2V0cyB1cCB0byBET09SQkVMTF9PRkZTRVRfRVFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTItXFx0ICogKDB4RkY4KSArIDggYnl0ZXMgPSA0S0Igd2l0aGluIGVhY2ggZG9vcmJlbGwgcGFnZSwgc28gdGhlIHBhZ2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjI6XFx0Z2MtXFx1MDAzZWRiX3BhZ2Vfb2ZmID0gbWFuYV9nZF9yNjQoZ2MsIEdETUFfUkVHX0RCX1BBR0VfT0ZGU0VUKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTM1OlxcdHNobV9vZmYgPSBtYW5hX2dkX3I2NChnYywgR0RNQV9SRUdfU0hNX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTM2LVxcdGlmIChzaG1fb2ZmIFxcdTAwM2U9IGdjLVxcdTAwM2ViYXIwX3NpemUgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxNTA6c3RhdGljIGludCBtYW5hX2dkX2luaXRfcmVnaXN0ZXJzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNTQtXFx0aWYgKGdjLVxcdTAwM2Vpc19wZiBcXHUwMDI2XFx1MDAyNiAhZ2MtXFx1MDAzZWlzX3BmMilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxNTU6XFx0XFx0cmV0dXJuIG1hbmFfZ2RfaW5pdF9wZl9yZWdzKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE1Ni1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTU3OlxcdFxcdHJldHVybiBtYW5hX2dkX2luaXRfdmZfcmVncyhwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTYwLS8qIFN1cHByZXNzIGxvZ2dpbmcgd2hlbiB3ZSBzZXQgdGltZW91dCB0byB6ZXJvICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTYxOmJvb2wgbWFuYV9uZWVkX2xvZyhzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgaW50IGVycilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE3ODpzdGF0aWMgaW50IG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xNzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTkyLVxcdCAqIE1TSS1YIGFsbG9jYXRpb247IG9uIG5vbi1keW4gcGxhdGZvcm1zIG1zaV9zaGFyaW5nIGlzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTkzOlxcdCAqIHVuY29uZGl0aW9uYWxseSB0cnVlIChzZXQgaW4gbWFuYV9nZF9zZXR1cF9od2NfaXJxcykuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk0LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE5ODpcXHRtYW5hX2dkX2luaXRfcmVxX2hkcihcXHUwMDI2cmVxLmhkciwgR0RNQV9RVUVSWV9NQVhfUkVTT1VSQ0VTLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5OS1cXHRcXHRcXHQgICAgIHNpemVvZihyZXEpLCBzaXplb2YocmVzcCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMDE6XFx0ZXJyID0gbWFuYV9nZF9zZW5kX3JlcXVlc3QoZ2MsIHNpemVvZihyZXEpLCBcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIFxcdTAwMjZyZXNwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMDItXFx0aWYgKGVyciB8fCByZXNwLmhkci5zdGF0dXMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDY6XFx0ZGVidWdmc19jcmVhdGVfdTMyKFxcXCJudW1fbXNpeF91c2FibGVcXFwiLCAwNDAwLCBnYy1cXHUwMDNlbWFuYV9wY2lfZGVidWdmcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDctXFx0XFx0XFx0ICAgXFx1MDAyNmdjLVxcdTAwM2VudW1fbXNpeF91c2FibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI0ODpcXHRkZWJ1Z2ZzX2NyZWF0ZV91MzIoXFxcIm1heF9udW1fcXVldWVzXFxcIiwgMDQwMCwgZ2MtXFx1MDAzZW1hbmFfcGNpX2RlYnVnZnMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5LVxcdFxcdFxcdCAgIFxcdTAwMjZnYy1cXHUwMDNlbWF4X251bV9xdWV1ZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTE6XFx0ZXJyID0gbWFuYV9nZF9xdWVyeV9kZXZpY2VfY2ZnKGdjLCBNQU5BX01BSk9SX1ZFUlNJT04sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUyLVxcdFxcdFxcdFxcdCAgICAgICBNQU5BX01JTk9SX1ZFUlNJT04sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjYzOlxcdC8qIENhcCB0byB0aGUgc2FtZSBsaW1pdCB1c2VkIGJ5IG1hbmFfcHJvYmUoKSBmb3IgcG9ydCBpbnN0YW50aWF0aW9uLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI2NC1cXHQgKiBzbyBNU0ktWCBhbmQgcXVldWUgYnVkZ2V0aW5nIG1hdGNoZXMgdGhlIGFjdHVhbCBwb3J0IGNvdW50Llxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjMwMDpzdGF0aWMgaW50IG1hbmFfZ2RfcXVlcnlfaHdjX3RpbWVvdXQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUzMiAqdGltZW91dF92YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozMDc6XFx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXFx1MDAyNnJlcS5oZHIsIEdETUFfUVVFUllfSFdDX1RJTUVPVVQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzA4LVxcdFxcdFxcdCAgICAgc2l6ZW9mKHJlcSksIHNpemVvZihyZXNwKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzA5LVxcdHJlcS50aW1lb3V0X21zID0gKnRpbWVvdXRfdmFsO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjMxMDpcXHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgc2l6ZW9mKHJlcSksIFxcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgXFx1MDAyNnJlc3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMxMS1cXHRpZiAoZXJyIHx8IHJlc3AuaGRyLnN0YXR1cylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozMTk6c3RhdGljIGludCBtYW5hX2dkX2RldGVjdF9kZXZpY2VzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTMyMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzMwOlxcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFxcdTAwMjZyZXEuaGRyLCBHRE1BX0xJU1RfREVWSUNFUywgc2l6ZW9mKHJlcSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzMxLVxcdFxcdFxcdCAgICAgc2l6ZW9mKHJlc3ApKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzMzOlxcdGVyciA9IG1hbmFfZ2Rfc2VuZF9yZXF1ZXN0KGdjLCBzaXplb2YocmVxKSwgXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcXHUwMDI2cmVzcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzM0LVxcdGlmIChlcnIgfHwgcmVzcC5oZHIuc3RhdHVzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzUxOlxcdFxcdC8qIEhXQyBpcyBhbHJlYWR5IGRldGVjdGVkIGluIG1hbmFfaHdjX2NyZWF0ZV9jaGFubmVsKCkuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzUyLVxcdFxcdGlmIChkZXZfdHlwZSA9PSBHRE1BX0RFVklDRV9IV0MpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNTUtXFx0XFx0aWYgKGRldl90eXBlID09IEdETUFfREVWSUNFX01BTkEpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozNTY6XFx0XFx0XFx0Z2MtXFx1MDAzZW1hbmEuZ2RtYV9jb250ZXh0ID0gZ2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzU3OlxcdFxcdFxcdGdjLVxcdTAwM2VtYW5hLmRldl9pZCA9IGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNTgtXFx0XFx0fSBlbHNlIGlmIChkZXZfdHlwZSA9PSBHRE1BX0RFVklDRV9NQU5BX0lCKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MzU5OlxcdFxcdFxcdGdjLVxcdTAwM2VtYW5hX2liLmRldl9pZCA9IGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozNjA6XFx0XFx0XFx0Z2MtXFx1MDAzZW1hbmFfaWIuZ2RtYV9jb250ZXh0ID0gZ2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzYxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozNjQ6XFx0cmV0dXJuIGdjLVxcdTAwM2VtYW5hLmRldl9pZC50eXBlID09IDAgPyAtRU5PREVWIDogMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zNjUtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozNjc6aW50IG1hbmFfZ2Rfc2VuZF9yZXF1ZXN0KHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1MzIgcmVxX2xlbiwgY29uc3Qgdm9pZCAqcmVxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTM2OC1cXHRcXHRcXHQgdTMyIHJlc3BfbGVuLCB2b2lkICpyZXNwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM3MjpcXHRyZXR1cm4gbWFuYV9od2Nfc2VuZF9yZXF1ZXN0KGh3YywgcmVxX2xlbiwgcmVxLCByZXNwX2xlbiwgcmVzcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzczLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzozNzQ6RVhQT1JUX1NZTUJPTF9OUyhtYW5hX2dkX3NlbmRfcmVxdWVzdCwgXFxcIk5FVF9NQU5BXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM3NjppbnQgbWFuYV9nZF9hbGxvY19tZW1vcnkoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHVuc2lnbmVkIGludCBsZW5ndGgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzc3LVxcdFxcdFxcdCBzdHJ1Y3QgZ2RtYV9tZW1faW5mbyAqZ21pKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMzk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjM5Nzp2b2lkIG1hbmFfZ2RfZnJlZV9tZW1vcnkoc3RydWN0IGdkbWFfbWVtX2luZm8gKmdtaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0zOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjQwMzpzdGF0aWMgaW50IG1hbmFfZ2RfY3JlYXRlX2h3X2VxKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQwNC1cXHRcXHRcXHRcXHRzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NDEzOlxcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFxcdTAwMjZyZXEuaGRyLCBHRE1BX0NSRUFURV9RVUVVRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MTQtXFx0XFx0XFx0ICAgICBzaXplb2YocmVxKSwgc2l6ZW9mKHJlc3ApKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0MjU6XFx0ZXJyID0gbWFuYV9nZF9zZW5kX3JlcXVlc3QoZ2MsIHNpemVvZihyZXEpLCBcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIFxcdTAwMjZyZXNwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00MjYtXFx0aWYgKGVyciB8fCByZXNwLmhkci5zdGF0dXMpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0Mzg6c3RhdGljIGludCBtYW5hX2dkX2Rpc2FibGVfcXVldWUoc3RydWN0IGdkbWFfcXVldWUgKnF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NDQ3OlxcdG1hbmFfZ2RfaW5pdF9yZXFfaGRyKFxcdTAwMjZyZXEuaGRyLCBHRE1BX0RJU0FCTEVfUVVFVUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDQ4LVxcdFxcdFxcdCAgICAgc2l6ZW9mKHJlcSksIHNpemVvZihyZXNwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy00NTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NDU1OlxcdGVyciA9IG1hbmFfZ2Rfc2VuZF9yZXF1ZXN0KGdjLCBzaXplb2YocmVxKSwgXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcXHUwMDI2cmVzcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDU2LVxcdGlmIChlcnIgfHwgcmVzcC5oZHIuc3RhdHVzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NDU3OlxcdFxcdGlmIChtYW5hX25lZWRfbG9nKGdjLCBlcnIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQ1OC1cXHRcXHRcXHRkZXZfZXJyKGdjLVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gZGlzYWJsZSBxdWV1ZTogJWQsIDB4JXhcXFxcblxcXCIsIGVycixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTQ3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo0NzI6c3RhdGljIHZvaWQgbWFuYV9nZF9yaW5nX2Rvb3JiZWxsKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1MzIgZGJfaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNDczLVxcdFxcdFxcdFxcdCAgZW51bSBnZG1hX3F1ZXVlX3R5cGUgcV90eXBlLCB1MzIgcWlkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjUzMjp2b2lkIG1hbmFfZ2Rfd3FfcmluZ19kb29yYmVsbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgc3RydWN0IGdkbWFfcXVldWUgKnF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTUzMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01MzYtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NTM3OlxcdG1hbmFfZ2RfcmluZ19kb29yYmVsbChnYywgcXVldWUtXFx1MDAzZWdkbWFfZGV2LVxcdTAwM2Vkb29yYmVsbCwgcXVldWUtXFx1MDAzZXR5cGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTM4LVxcdFxcdFxcdCAgICAgIHF1ZXVlLVxcdTAwM2VpZCwgcXVldWUtXFx1MDAzZWhlYWQgKiBHRE1BX1dRRV9CVV9TSVpFLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01MzktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjU0MDpFWFBPUlRfU1lNQk9MX05TKG1hbmFfZ2Rfd3FfcmluZ19kb29yYmVsbCwgXFxcIk5FVF9NQU5BXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjU0Mjp2b2lkIG1hbmFfZ2RfcmluZ19jcShzdHJ1Y3QgZ2RtYV9xdWV1ZSAqY3EsIHU4IGFybV9iaXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1NTA6XFx0bWFuYV9nZF9yaW5nX2Rvb3JiZWxsKGdjLCBjcS1cXHUwMDNlZ2RtYV9kZXYtXFx1MDAzZWRvb3JiZWxsLCBjcS1cXHUwMDNldHlwZSwgY3EtXFx1MDAzZWlkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU1MS1cXHRcXHRcXHQgICAgICBoZWFkLCBhcm1fYml0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NTItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjU1MzpFWFBPUlRfU1lNQk9MX05TKG1hbmFfZ2RfcmluZ19jcSwgXFxcIk5FVF9NQU5BXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjU1NTp2b2lkIG1hbmFfZ2RfcmluZ19kaW0oc3RydWN0IGdkbWFfcXVldWUgKmNxLCB1MzIgbW9kX3VzZWMsIGJvb2wgbW9kX3VzZWNfdmxkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU1Ni1cXHRcXHQgICAgICB1MzIgbW9kX2NvbXBzLCBib29sIG1vZF9jb21wc192bGQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NTY3OlxcdG1hbmFfZ2RfcmluZ19kb29yYmVsbChnYywgY3EtXFx1MDAzZWdkbWFfZGV2LVxcdTAwM2Vkb29yYmVsbCwgR0RNQV9ESU0sIGNxLVxcdTAwM2VpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NjgtXFx0XFx0XFx0ICAgICAgZGltX3ZhbCwgbW9kX2NvbXBzX3ZsZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTY5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1NzA6RVhQT1JUX1NZTUJPTF9OUyhtYW5hX2dkX3JpbmdfZGltLCBcXFwiTkVUX01BTkFcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy01NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NTc0OnN0YXRpYyB2b2lkIG1hbmFfc2Vydl9yZXNjYW4oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTU5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo1OTM6c3RhdGljIHZvaWQgbWFuYV9zZXJ2X2ZwZ2Eoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNTk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTYyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2MjE6c3RhdGljIHZvaWQgbWFuYV9zZXJ2X3Jlc2V0KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTYyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02MjktXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiTUFOQSBzZXJ2aWNlOiBHQyBub3Qgc2V0dXAsIHJlc2Nhbm5pbmdcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjYzMDpcXHRcXHRtYW5hX3NlcnZfcmVzY2FuKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTYzMS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NjQ1OlxcdG1hbmFfZ2Rfc3VzcGVuZChwZGV2LCBQTVNHX1NVU1BFTkQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2NDk6XFx0cmV0ID0gbWFuYV9nZF9yZXN1bWUocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjUwLVxcdGlmIChyZXQgPT0gLUVUSU1FRE9VVCB8fCByZXQgPT0gLUVQUk9UTykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjUyLVxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIk1BTkEgc2VydmljZTogcmVzdW1lIGZhaWxlZCwgcmVzY2FubmluZ1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NjUzOlxcdFxcdG1hbmFfc2Vydl9yZXNjYW4ocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjU0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2NjY6c3RhdGljIHZvaWQgbWFuYV9kb19zZXJ2aWNlKGVudW0gZ2RtYV9lcWVfdHlwZSB0eXBlLCBzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02Njcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjY5LVxcdGNhc2UgR0RNQV9FUUVfSFdDX0ZQR0FfUkVDT05GSUc6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NjcwOlxcdFxcdG1hbmFfc2Vydl9mcGdhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY3MS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY3My1cXHRjYXNlIEdETUFfRVFFX0hXQ19SRVNFVF9SRVFVRVNUOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjY3NDpcXHRcXHRtYW5hX3NlcnZfcmVzZXQocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjc1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjY4MzpzdGF0aWMgdm9pZCBtYW5hX3JlY292ZXJ5X2RlbGF5ZWRfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNjg0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2ODU6XFx0c3RydWN0IG1hbmFfZGV2X3JlY292ZXJ5X3dvcmsgKndvcms7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Njg2OlxcdHN0cnVjdCBtYW5hX2Rldl9yZWNvdmVyeSAqZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY4Ny1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2ODk6XFx0d29yayA9IGNvbnRhaW5lcl9vZih3LCBzdHJ1Y3QgbWFuYV9kZXZfcmVjb3Zlcnlfd29yaywgd29yay53b3JrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02OTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy02OTQtXFx0XFx0ZGV2ID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2d29yay1cXHUwMDNlZGV2X2xpc3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6Njk1OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbWFuYV9kZXZfcmVjb3ZlcnksIGxpc3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY5Ni1cXHRcXHRsaXN0X2RlbChcXHUwMDI2ZGV2LVxcdTAwM2VsaXN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTY5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo2OTk6XFx0XFx0bWFuYV9kb19zZXJ2aWNlKGRldi1cXHUwMDNldHlwZSwgZGV2LVxcdTAwM2VwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MDAtXFx0XFx0cGNpX2Rldl9wdXQoZGV2LVxcdTAwM2VwZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3MDk6c3RhdGljIHZvaWQgbWFuYV9zZXJ2X2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NzExOlxcdHN0cnVjdCBtYW5hX3NlcnZfd29yayAqbW5zX3drO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxMi1cXHRzdHJ1Y3QgcGNpX2RldiAqcGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NzE0OlxcdG1uc193ayA9IGNvbnRhaW5lcl9vZih3LCBzdHJ1Y3QgbWFuYV9zZXJ2X3dvcmssIHNlcnZfd29yayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtNzE1LVxcdHBkZXYgPSBtbnNfd2stXFx1MDAzZXBkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MTctXFx0aWYgKHBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NzE4OlxcdFxcdG1hbmFfZG9fc2VydmljZShtbnNfd2stXFx1MDAzZXR5cGUsIHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTcyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3MjU6aW50IG1hbmFfc2NoZWR1bGVfc2Vydl93b3JrKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCBlbnVtIGdkbWFfZXFlX3R5cGUgdHlwZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MjYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjcyNzpcXHRzdHJ1Y3QgbWFuYV9zZXJ2X3dvcmsgKm1uc193aztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03MjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03NTAtXFx0cGNpX2Rldl9nZXQobW5zX3drLVxcdTAwM2VwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo3NTE6XFx0SU5JVF9XT1JLKFxcdTAwMjZtbnNfd2stXFx1MDAzZXNlcnZfd29yaywgbWFuYV9zZXJ2X2Z1bmMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTc1Mi1cXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZtbnNfd2stXFx1MDAzZXNlcnZfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy03NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6NzU2OnN0YXRpYyB2b2lkIG1hbmFfZ2RfcHJvY2Vzc19lcWUoc3RydWN0IGdkbWFfcXVldWUgKmVxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTc1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04MTktXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjgyMDpcXHRcXHRtYW5hX3NjaGVkdWxlX3NlcnZfd29yayhnYywgdHlwZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODIxLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjgyODpzdGF0aWMgdm9pZCBtYW5hX2dkX3Byb2Nlc3NfZXFfZXZlbnRzKHZvaWQgKmFyZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04Mjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjg3MDpcXHRcXHRtYW5hX2dkX3Byb2Nlc3NfZXFlKGVxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04NzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6ODc3OlxcdG1hbmFfZ2RfcmluZ19kb29yYmVsbChnYywgZXEtXFx1MDAzZWdkbWFfZGV2LVxcdTAwM2Vkb29yYmVsbCwgZXEtXFx1MDAzZXR5cGUsIGVxLVxcdTAwM2VpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04NzgtXFx0XFx0XFx0ICAgICAgaGVhZCwgU0VUX0FSTV9CSVQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtODgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjg4MTpzdGF0aWMgaW50IG1hbmFfZ2RfcmVnaXN0ZXJfaXJxKHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy04ODItXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTkwNC1cXHRxdWV1ZS1cXHUwMDNlZXEubXNpeF9pbmRleCA9IG1zaV9pbmRleDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5MDU6XFx0LyogVGhlIGNhbGxlciBhY3F1aXJlZCBhIEdJQyByZWZlcmVuY2UgdmlhIG1hbmFfZ2RfZ2V0X2dpYygpLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjkwNjpcXHQgKiBUaGF0IHJlZmNvdW50IHByZXZlbnRzIG1hbmFfZ2RfcHV0X2dpYygpIGZyb20gZXJhc2luZyB0aGlzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTA3LVxcdCAqIGlycV9jb250ZXh0cyBlbnRyeSBjb25jdXJyZW50bHkuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6OTIwOnN0YXRpYyB2b2lkIG1hbmFfZ2RfZGVyZWdpc3Rlcl9pcnEoc3RydWN0IGdkbWFfcXVldWUgKnF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTkyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05MzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6OTM2OlxcdC8qIFRoZSBjYWxsZXIgcmVsZWFzZXMgdGhlIEdJQyByZWZlcmVuY2UgdmlhIG1hbmFfZ2RfcHV0X2dpYygpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTM3LVxcdCAqIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4gVGhlIHJlZmNvdW50IGd1YXJhbnRlZXMgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjk1NjppbnQgbWFuYV9nZF90ZXN0X2VxKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqZXEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTk2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5Njg6XFx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXFx1MDAyNnJlcS5oZHIsIEdETUFfR0VORVJBVEVfVEVTVF9FUUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTY5LVxcdFxcdFxcdCAgICAgc2l6ZW9mKHJlcSksIHNpemVvZihyZXNwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy05NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6OTc0OlxcdGVyciA9IG1hbmFfZ2Rfc2VuZF9yZXF1ZXN0KGdjLCBzaXplb2YocmVxKSwgXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCBcXHUwMDI2cmVzcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTc1LVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzo5NzY6XFx0XFx0aWYgKG1hbmFfbmVlZF9sb2coZ2MsIGVycikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtOTc3LVxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwidGVzdF9lcSBmYWlsZWQ6ICVkXFxcXG5cXFwiLCBlcnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDA1OnN0YXRpYyB2b2lkIG1hbmFfZ2RfZGVzdHJveV9lcShzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgYm9vbCBmbHVzaF9ldmVuZXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwMDYtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwMTAtXFx0aWYgKGZsdXNoX2V2ZW5ldHMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDExOlxcdFxcdGVyciA9IG1hbmFfZ2RfdGVzdF9lcShnYywgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwMTI6XFx0XFx0aWYgKGVyciBcXHUwMDI2XFx1MDAyNiBtYW5hX25lZWRfbG9nKGdjLCBlcnIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwMTMtXFx0XFx0XFx0ZGV2X3dhcm4oZ2MtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBmbHVzaCBFUTogJWRcXFxcblxcXCIsIGVycik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwMTY6XFx0bWFuYV9nZF9kZXJlZ2lzdGVyX2lycShxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDE4LVxcdGlmIChxdWV1ZS1cXHUwMDNlZXEuZGlzYWJsZV9uZWVkZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTAxOTpcXHRcXHRtYW5hX2dkX2Rpc2FibGVfcXVldWUocXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwMjAtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTAyMjpzdGF0aWMgaW50IG1hbmFfZ2RfY3JlYXRlX2VxKHN0cnVjdCBnZG1hX2RldiAqZ2QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTAyMy1cXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBnZG1hX3F1ZXVlX3NwZWMgKnNwZWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwNDI6XFx0ZXJyID0gbWFuYV9nZF9yZWdpc3Rlcl9pcnEocXVldWUsIHNwZWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwNDMtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA1My1cXHRpZiAoY3JlYXRlX2h3cSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwNTQ6XFx0XFx0ZXJyID0gbWFuYV9nZF9jcmVhdGVfaHdfZXEoZ2MsIHF1ZXVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDU1LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwNTg6XFx0XFx0ZXJyID0gbWFuYV9nZF90ZXN0X2VxKGdjLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA1OS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA2NS1cXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBjcmVhdGUgRVE6ICVkXFxcXG5cXFwiLCBlcnIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwNjY6XFx0bWFuYV9nZF9kZXN0cm95X2VxKGdjLCBmYWxzZSwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwNjctXFx0cXVldWUtXFx1MDAzZWVxLm1zaXhfaW5kZXggPSBJTlZBTElEX1BDSV9NU0lYX0lOREVYO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMDcxOnN0YXRpYyB2b2lkIG1hbmFfZ2RfY3JlYXRlX2NxKGNvbnN0IHN0cnVjdCBnZG1hX3F1ZXVlX3NwZWMgKnNwZWMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA3Mi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMDgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEwODI6c3RhdGljIHZvaWQgbWFuYV9nZF9kZXN0cm95X2NxKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwODMtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBnZG1hX3F1ZXVlICpxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEwOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTA5NjppbnQgbWFuYV9nZF9jcmVhdGVfaHdjX3F1ZXVlKHN0cnVjdCBnZG1hX2RldiAqZ2QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTA5Ny1cXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBnZG1hX3F1ZXVlX3NwZWMgKnNwZWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTA5LVxcdGdtaSA9IFxcdTAwMjZxdWV1ZS1cXHUwMDNlbWVtX2luZm87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTExMDpcXHRlcnIgPSBtYW5hX2dkX2FsbG9jX21lbW9yeShnYywgc3BlYy1cXHUwMDNlcXVldWVfc2l6ZSwgZ21pKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTExLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMjUtXFx0aWYgKHNwZWMtXFx1MDAzZXR5cGUgPT0gR0RNQV9FUSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTI2OlxcdFxcdGVyciA9IG1hbmFfZ2RfY3JlYXRlX2VxKGdkLCBzcGVjLCBmYWxzZSwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMjctXFx0ZWxzZSBpZiAoc3BlYy1cXHUwMDNldHlwZSA9PSBHRE1BX0NRKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExMjg6XFx0XFx0bWFuYV9nZF9jcmVhdGVfY3Eoc3BlYywgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExMjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTM3LVxcdFxcdHNwZWMtXFx1MDAzZXR5cGUsIHNwZWMtXFx1MDAzZXF1ZXVlX3NpemUsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTEzODpcXHRtYW5hX2dkX2ZyZWVfbWVtb3J5KGdtaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTEzOS1mcmVlX3E6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExNDQ6aW50IG1hbmFfZ2RfZGVzdHJveV9kbWFfcmVnaW9uKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCB1NjQgZG1hX3JlZ2lvbl9oYW5kbGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTE0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjExNTM6XFx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXFx1MDAyNnJlcS5oZHIsIEdETUFfREVTVFJPWV9ETUFfUkVHSU9OLCBzaXplb2YocmVxKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTU0LVxcdFxcdFxcdCAgICAgc2l6ZW9mKHJlc3ApKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTE1NzpcXHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgc2l6ZW9mKHJlcSksIFxcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgXFx1MDAyNnJlc3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNTgtXFx0aWYgKGVyciB8fCByZXNwLmhkci5zdGF0dXMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTU5OlxcdFxcdGlmIChtYW5hX25lZWRfbG9nKGdjLCBlcnIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNjAtXFx0XFx0XFx0ZGV2X2VycihnYy1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGRlc3Ryb3kgRE1BIHJlZ2lvbjogJWQsIDB4JXhcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTY2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMTY3OkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF9kZXN0cm95X2RtYV9yZWdpb24sIFxcXCJORVRfTUFOQVxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTE2OTpzdGF0aWMgaW50IG1hbmFfZ2RfY3JlYXRlX2RtYV9yZWdpb24oc3RydWN0IGdkbWFfZGV2ICpnZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMTcwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGdkbWFfbWVtX2luZm8gKmdtaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTExOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTE5NzpcXHRtYW5hX2dkX2luaXRfcmVxX2hkcihcXHUwMDI2cmVxLVxcdTAwM2VoZHIsIEdETUFfQ1JFQVRFX0RNQV9SRUdJT04sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTE5OC1cXHRcXHRcXHQgICAgIHJlcV9tc2dfc2l6ZSwgc2l6ZW9mKHJlc3ApKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTIwODpcXHRlcnIgPSBtYW5hX2dkX3NlbmRfcmVxdWVzdChnYywgcmVxX21zZ19zaXplLCByZXEsIHNpemVvZihyZXNwKSwgXFx1MDAyNnJlc3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMDktXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTIzMjppbnQgbWFuYV9nZF9jcmVhdGVfbWFuYV9lcShzdHJ1Y3QgZ2RtYV9kZXYgKmdkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyMzMtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyNDgtXFx0Z21pID0gXFx1MDAyNnF1ZXVlLVxcdTAwM2VtZW1faW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjQ5OlxcdGVyciA9IG1hbmFfZ2RfYWxsb2NfbWVtb3J5KGdjLCBzcGVjLVxcdTAwM2VxdWV1ZV9zaXplLCBnbWkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyNTAtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjU2OlxcdGVyciA9IG1hbmFfZ2RfY3JlYXRlX2RtYV9yZWdpb24oZ2QsIGdtaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI1Ny1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMjY4OlxcdGVyciA9IG1hbmFfZ2RfY3JlYXRlX2VxKGdkLCBzcGVjLCB0cnVlLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI2OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI3Ni1cXHRcXHRzcGVjLVxcdTAwM2V0eXBlLCBzcGVjLVxcdTAwM2VxdWV1ZV9zaXplLCBlcnIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEyNzc6XFx0bWFuYV9nZF9mcmVlX21lbW9yeShnbWkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyNzgtZnJlZV9xOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTI4MS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTI4MjpFWFBPUlRfU1lNQk9MX05TKG1hbmFfZ2RfY3JlYXRlX21hbmFfZXEsIFxcXCJORVRfTUFOQVxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTI4NDppbnQgbWFuYV9nZF9jcmVhdGVfbWFuYV93cV9jcShzdHJ1Y3QgZ2RtYV9kZXYgKmdkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEyODUtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGdkbWFfcXVldWVfc3BlYyAqc3BlYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzMDMtXFx0Z21pID0gXFx1MDAyNnF1ZXVlLVxcdTAwM2VtZW1faW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzA0OlxcdGVyciA9IG1hbmFfZ2RfYWxsb2NfbWVtb3J5KGdjLCBzcGVjLVxcdTAwM2VxdWV1ZV9zaXplLCBnbWkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzMDUtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzExOlxcdGVyciA9IG1hbmFfZ2RfY3JlYXRlX2RtYV9yZWdpb24oZ2QsIGdtaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMxMi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMyMy1cXHRpZiAoc3BlYy1cXHUwMDNldHlwZSA9PSBHRE1BX0NRKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEzMjQ6XFx0XFx0bWFuYV9nZF9jcmVhdGVfY3Eoc3BlYywgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzMjUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzMwLVxcdFxcdHNwZWMtXFx1MDAzZXR5cGUsIHNwZWMtXFx1MDAzZXF1ZXVlX3NpemUsIGVycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTMzMTpcXHRtYW5hX2dkX2ZyZWVfbWVtb3J5KGdtaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzMi1mcmVlX3E6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzM1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzM2OkVYUE9SVF9TWU1CT0xfTlMobWFuYV9nZF9jcmVhdGVfbWFuYV93cV9jcSwgXFxcIk5FVF9NQU5BXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzM4OnZvaWQgbWFuYV9nZF9kZXN0cm95X3F1ZXVlKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjLCBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcXVldWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTMzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xMzQzLVxcdGNhc2UgR0RNQV9FUTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxMzQ0OlxcdFxcdG1hbmFfZ2RfZGVzdHJveV9lcShnYywgcXVldWUtXFx1MDAzZWVxLmRpc2FibGVfbmVlZGVkLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTM0NS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzNDctXFx0Y2FzZSBHRE1BX0NROlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjEzNDg6XFx0XFx0bWFuYV9nZF9kZXN0cm95X2NxKGdjLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTM0OS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTEzNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTM2MzpcXHRtYW5hX2dkX2Rlc3Ryb3lfZG1hX3JlZ2lvbihnYywgZ21pLVxcdTAwM2VkbWFfcmVnaW9uX2hhbmRsZSk7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjM2OjU5LjQ2NTg4OTYwMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1OTMyOTA3ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTUFOQSBEcml2ZXIgQW5hbHlzaXMgZm9yIFdvcnRoRnV6emluZyBEZXRlcm1pbmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29kZSBpbiBxdWVzdGlvbiBpcyB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyBNQU5BIGhhcmR3YXJlIGVtdWxhdGVkIGluIHNvbWV0aGluZyBsaWtlIFFFTVU/IE5vLCB0aGF0J3Mgd3Jvbmc7IGl0J3MgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIuIEl0J3MgYSBwaHlzaWNhbC92aXJ0dWFsIGRldmljZSB0aGF0J3MgcGFydCBvZiB0aGUgQXp1cmUgaHlwZXJ2aXNvci4gU28sIGNhbiBpdCBldmVuIGJlIHRlc3RlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIG9yIFFFTVU/XG5cbldhaXQsIGhvbGQgb24uIFRoZSBwcm9tcHQgZnJvbSB0aGUgZnV6emVyIHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb25jZXJucyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBsaWtlIFNtYXJ0TklDIGRyaXZlcnMgdGhhdCAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFxuXG5SaWdodCwgTUFOQSBpcyBkZWZpbml0ZWx5IGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIG9yIHZpcnR1YWwgTklDIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBNaWNyb3NvZnQgQXp1cmUuIFNvLCBpcyBpdCB0ZXN0YWJsZSBpbiBRRU1VPyBEZWZpbml0ZWx5IG5vdC4gQW5kIGhvdyBhYm91dCBzeXprYWxsZXI/IFN5emthbGxlciBjYW4gcnVuIG9uIEdDRSBvciBRRU1VLCBidXQgR0NFIGRvZXNuJ3QgaGF2ZSBNQU5BIGhhcmR3YXJlLiBBenVyZSBWTXMgKmRvKiBoYXZlIE1BTkEgaGFyZHdhcmUuIElmIHN5emthbGxlciB3ZXJlIHRvIHJ1biBvbiBBenVyZSwgaXQgKmNvdWxkKiB0ZXN0IGl0LiBCdXQgc3l6a2FsbGVyIHVzdWFsbHkgcnVucyBvbiBHQ0Ugb3IgUUVNVSwgZG9lc24ndCBpdD9cblxuQWN0dWFsbHksIG5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBhbiBBenVyZSBiYWNrZW5kLCBidXQgdGhlIHN0YW5kYXJkIHN5emthbGxlciBpbnN0YW5jZXMgdGhhdCB0aGUgc3l6Ym90IHJ1bnMgb24gYXJlIG9uIEdDRS5cblxuT2theSwgYmFjayB0byB0aGUgcHJvbXB0OiBcIi4uLnJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIiBNQU5BIGlzIGEgUENJZSBkZXZpY2UuIEl0J3Mgbm90IGVtdWxhdGVkIGluICpzdGFuZGFyZCogUUVNVS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUsIGJ1dCBvdGhlcndpc2UsIGJhc2VkIG9uIHRoYXQsIGl0IHNlZW1zIHRvIG5vdCBiZSBXb3J0aEZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzODI3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjM3OjA4LjA1OTE4MjI0NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMyODYwMjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFuYV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MTc4PXN0YXRpYyBpbnQgbWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI2MzpcXHQvKiBDYXAgdG8gdGhlIHNhbWUgbGltaXQgdXNlZCBieSBtYW5hX3Byb2JlKCkgZm9yIHBvcnQgaW5zdGFudGlhdGlvbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjQtXFx0ICogc28gTVNJLVggYW5kIHF1ZXVlIGJ1ZGdldGluZyBtYXRjaGVzIHRoZSBhY3R1YWwgcG9ydCBjb3VudC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTIzMzE9c3RhdGljIGludCBtYW5hX2dkX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMzg3OlxcdGVyciA9IG1hbmFfcHJvYmUoXFx1MDAyNmdjLVxcdTAwM2VtYW5hLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM4OC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQyNS1cXHQgKiBIYXJkd2FyZSBjb3VsZCBiZSBpbiByZWNvdmVyeSBtb2RlIGFuZCB0aGUgSFdDIHJldHVybnMgVElNRURPVVQgb3JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDI2OlxcdCAqIEVQUk9UTyBmcm9tIG1hbmFfZ2Rfc2V0dXAoKSwgbWFuYV9wcm9iZSgpIG9yIG1hbmFfcmRtYV9wcm9iZSgpLCBvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0MjctXFx0ICogd2UgcmVjZWl2ZWQgYSBoYXJkd2FyZSByZXNldCBldmVudCBvdmVyIEhXQyBpbnRlcnJ1cHQuIEluIHRoaXMgY2FzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI0OTE9aW50IG1hbmFfZ2RfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTAwOlxcdGVyciA9IG1hbmFfcHJvYmUoXFx1MDAyNmdjLVxcdTAwM2VtYW5hLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTAxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9Mzc0NT1pbnQgbWFuYV9kZXRhY2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZnJvbV9jbG9zZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNzgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzozNzgyOnN0YXRpYyBpbnQgbWFuYV9wcm9iZV9wb3J0KHN0cnVjdCBtYW5hX2NvbnRleHQgKmFjLCBpbnQgcG9ydF9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTM3ODMtXFx0XFx0XFx0ICAgc3RydWN0IG5ldF9kZXZpY2UgKipuZGV2X3N0b3JhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9NDAyMz1zdGF0aWMgdm9pZCBtYW5hX2dmX3N0YXRzX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtNDA0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6NDA0NjppbnQgbWFuYV9wcm9iZShzdHJ1Y3QgZ2RtYV9kZXYgKmdkLCBib29sIHJlc3VtaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy00MDQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy00MTIwLVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYy1cXHUwMDNlbnVtX3BvcnRzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6NDEyMTpcXHRcXHRcXHRlcnIgPSBtYW5hX3Byb2JlX3BvcnQoYWMsIGksIFxcdTAwMjZhYy1cXHUwMDNlcG9ydHNbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy00MTIyLVxcdFxcdFxcdC8qIExvZyB0aGUgcG9ydCBmb3Igd2hpY2ggdGhlIHByb2JlIGZhaWxlZCwgc3RvcCBwcm9iaW5nXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjM3OjA4LjE4MjQ3Nzg2N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4OTYwODAwOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFN1aXRhYmlsaXR5IG9mIGEgUENJZSBEZXZpY2UgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBQQ0kgZGV2aWNlIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSBlZmZlY3RpdmVseSB0ZXN0IHRoaXMgdGhpbmcgd2l0aGluIFFFTVU/IE15IGluaXRpYWwgdGhvdWdodCBpcyBubywgYmVjYXVzZSBNQU5BIHJlcXVpcmVzIGVpdGhlciBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlIG9yIGFuIEF6dXJlIFZNIGVudmlyb25tZW50IHRvIHJ1biBwcm9wZXJseS4gQnV0IHdhaXQsIEkgaGF2ZSB0byBiZSB0aG9yb3VnaC4gSSB3b25kZXIgaWYgYHN5emthbGxlcmAgaGFzIHNvbWUgcHNldWRvLXN5c2NhbGxzIGZvciBNQU5BPyBObywgdGhhdCdzIG5vdCByaWdodCwgYHN5emthbGxlcmAgZG9lc24ndCBwcm92aWRlIHRoYXQga2luZCBvZiBhYnN0cmFjdGlvbiBmb3IgTUFOQS5cblxuVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVyc+KAlHRoZSBraW5kIHRoYXQgbmVlZCB0aG9zZSByZWFsLCBwaHlzaWNhbCBQQ0llIGNhcmRzIHRoYXQgUUVNVSBqdXN0IGRvZXNuJ3QgZW11bGF0ZSB2ZXJ5IHdlbGwuIFRoaXMgTUFOQSBkcml2ZXIgZGVmaW5pdGVseSBmaXRzIHRoZSBiaWxsOyBpdCdzIGEgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgc28gaXQncyBhIFNtYXJ0TklDIGRyaXZlciwgdmVyeSB2ZW5kb3Itc3BlY2lmaWMuIFNvLCBieSB0aGUgcnVsZXMgbGFpZCBvdXQsIHRoaXMgb25lIGZhbGxzIGludG8gdGhlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgY2F0ZWdvcnksIG1haW5seSBiZWNhdXNlIGl0J3MgdGllZCB0byB0aGF0IHBoeXNpY2FsIGhhcmR3YXJlLCBvciB0aGF0IEF6dXJlIGh5cGVydmlzb3IuIEJlZm9yZSBJIGZ1bGx5IGNvbW1pdCB0byB0aGF0IGNvbmNsdXNpb24sIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkga2VybmVsLWxldmVsIHNvZnR3YXJlIGVtdWxhdGlvbiBhdHRlbXB0cy4gTmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU2MDgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDY6Mzc6MTYuMDc4NTYxNDI2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMDQzNTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hbmFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTg9Y29uZmlnIE1JQ1JPU09GVF9NQU5BXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0zMS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6MzI6XFx0ICBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG1hbmEuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMzMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjM3OjE2LjEzMDYwOTU5MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczODcwMzQ1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTUFOQSBEcml2ZXIgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgS2NvbmZpZyBlbnRyeSBmb3IgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIsIE1BTkEuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIGEgZHJpdmVyLCBzcGVjaWZpYyB0byBBenVyZSBoYXJkd2FyZSwgcmVxdWlyaW5nIFBDSSwgTVNJLCBhbmQgeDg2LTY0IGFyY2hpdGVjdHVyZS4gVGhlIGhlbHAgdGV4dCBjb25maXJtcyBpdCdzIGEgcmVhbCBwaWVjZSBvZiBoYXJkd2FyZSwgYSBkZWRpY2F0ZWQgbmV0d29yayBhZGFwdGVyIGZvciBBenVyZS5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQgZm9yIG15IHB1cnBvc2VzIGlzLCB0aGlzIGlzbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQgbWVhbnMgc3RhbmRhcmQgc3l6a2FsbGVyIGluc3RhbmNlcywgdGhlIG9uZXMgd2UgdHlwaWNhbGx5IHVzZSBvbiBRRU1VIG9yIEdDRSwgd29uJ3QgYmUgYWJsZSB0byByZWFjaCB0aGlzIGRyaXZlci4gSXQncyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUsIGFuZCB3ZSBjYW4ndCBqdXN0IGJvb3QgdXAgYSBnZW5lcmljIFFFTVUgaW5zdGFuY2UgYW5kIGV4cGVjdCB0byBpbnRlcmFjdCB3aXRoIGl0LlxuXG5UaGVyZWZvcmUsIGFmdGVyIGNvbnNpZGVyaW5nIHRoZSBzZXR1cCwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogaXQncyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgdGhhdCBpc24ndCBlbXVsYXRlZCB3aXRoaW4gdGhlIHN0YW5kYXJkIGVudmlyb25tZW50cyB3ZSBjYW4gYWNjZXNzIGZvciBmdXp6aW5nLiBObyBwcmFjdGljYWwgYXZlbnVlIGZvciB1cyB0byBhcHBseSBvdXIgdG9vbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjE1LCJPdXRwdXRUb2tlbnMiOjg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA2OjM3OjIzLjUxNzY1MTUwMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgU21hcnROSUMgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBhbmQgdW50ZXN0YWJsZSBieSBzdGFuZGFyZCBmdXp6ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCB1bnRlc3RhYmxlIGJ5IHN0YW5kYXJkIGZ1enplcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowztf7l[1] Phase: Running StartedAt: 2026-07-31 06:37:34 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztf7l[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-31 06:37:34 +0000 UTC FinishedAt: 2026-07-31 06:37:38 +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,}