Name: series-workflowxjtbn Phase: Succeeded StartedAt: 2026-07-09 22:17:41 +0000 UTC FinishedAt: 2026-07-10 03:32:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[0] Phase: Succeeded StartedAt: 2026-07-09 22:17:41 +0000 UTC FinishedAt: 2026-07-09 22:50:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 22:17:41 +0000 UTC FinishedAt: 2026-07-09 22:50:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b9810cd75b9fb56a3425d391cba3f608502bd474", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b9810cd75b9fb56a3425d391cba3f608502bd474", "config_name": "upstream-apparmor-kasan.config", "series_id": "bac9bcc9-4413-4391-bcf8-2a61361a0928" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "blk_mq_quiesce_queue_nowait", "blk_mq_unquiesce_queue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0JiMzNDssCiAgICAmIzM0O2Jsa19tcV91bnF1aWVzY2VfcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgc3BpbmxvY2stYmFzZWQgcXVldWUgcXVpZXNjZSB0cmFja2luZyB3aXRoIGFuIGF0b21pYyBjb3VudGVyIGFuZCBtZW1vcnkgYmFycmllcnMgaW4gdGhlIGNvcmUgYmxvY2sgbGF5ZXIgKGJsay1tcS5jKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBxdWV1ZSBxdWllc2NpbmcvdW5xdWllc2NpbmcgYW5kIGhhcmR3YXJlIHF1ZXVlIHJ1bnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBibG9jayBkZXZpY2Ugb3BlcmF0aW9ucyAoZS5nLiwgZGV2aWNlIHN1c3BlbmQvcmVzdW1lLCBlcnJvciBoYW5kbGluZykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjI6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyZDI3NGYyMGUzMzkxOTQwY2UyMzFiNTBkYzQyM2ZjMDU4YzM0OWIxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAyMjo0NjoyNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9ibG9jay9ibGstY29yZS5jIGIvYmxvY2svYmxrLWNvcmUuY1xuaW5kZXggMzY1NjQxMjY2YzllODIuLjc5NjY5OTU3ZjQ3ZTQ3IDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLWNvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWNvcmUuY1xuQEAgLTQ3Nyw2ICYjNDM7NDc3LDcgQEAgc3RydWN0IHJlcXVlc3RfcXVldWUgKmJsa19hbGxvY19xdWV1ZShzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW0sIGludCBub2RlX2lkKVxuIFx0bXV0ZXhfaW5pdChcdTAwMjZxLVx1MDAzZWxpbWl0c19sb2NrKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2cS1cdTAwM2VycV9xb3NfbXV0ZXgpO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2cS1cdTAwM2VxdWV1ZV9sb2NrKTtcbiYjNDM7XHRhdG9taWNfc2V0KFx1MDAyNnEtXHUwMDNlcXVpZXNjZV9kZXB0aCwgMCk7XG4gXG4gXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNnEtXHUwMDNlbXFfZnJlZXplX3dxKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2cS1cdTAwM2VtcV9mcmVlemVfbG9jayk7XG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLWRlYnVnZnMuYyBiL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmNcbmluZGV4IDY3NTRkOGY5NDQ5YzEwLi41NjdlZWRiYmY1MGZjOCAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmNcbkBAIC05Myw3ICYjNDM7OTMsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgYmxrX3F1ZXVlX2ZsYWdfbmFtZVtdID0ge1xuIFx0UVVFVUVfRkxBR19OQU1FKElOSVRfRE9ORSksXG4gXHRRVUVVRV9GTEFHX05BTUUoU1RBVFMpLFxuIFx0UVVFVUVfRkxBR19OQU1FKFJFR0lTVEVSRUQpLFxuLVx0UVVFVUVfRkxBR19OQU1FKFFVSUVTQ0VEKSxcbiBcdFFVRVVFX0ZMQUdfTkFNRShSUV9BTExPQ19USU1FKSxcbiBcdFFVRVVFX0ZMQUdfTkFNRShIQ1RYX0FDVElWRSksXG4gXHRRVUVVRV9GTEFHX05BTUUoU1FfU0NIRUQpLFxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1tcS5jIGIvYmxvY2svYmxrLW1xLmNcbmluZGV4IDJjODUwMzMwYTMyYmM2Li4xODZiYmNjOGI5Mjc1OSAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1tcS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGstbXEuY1xuQEAgLTI2MCwxMiAmIzQzOzI2MCwxNiBAQCBFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfdW5mcmVlemVfcXVldWVfbm9uX293bmVyKTtcbiAgKi9cbiB2b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbiB7XG4tXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLVxuLVx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2cS1cdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XG4tXHRpZiAoIXEtXHUwMDNlcXVpZXNjZV9kZXB0aCYjNDM7JiM0MzspXG4tXHRcdGJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX1FVSUVTQ0VELCBxKTtcbi1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2cS1cdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XG4mIzQzO1x0YXRvbWljX2luYyhcdTAwMjZxLVx1MDAzZXF1aWVzY2VfZGVwdGgpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUHVibGlzaCB0aGUgcXVpZXNjZV9kZXB0aCBpbmNyZW1lbnQuICBDYWxsZXJzIG11c3QgZm9sbG93IHRoaXNcbiYjNDM7XHQgKiB3aXRoIGJsa19tcV93YWl0X3F1aWVzY2VfZG9uZSgpIChzeW5jaHJvbml6ZV9zcmN1KCkvXG4mIzQzO1x0ICogc3luY2hyb25pemVfcmN1KCkpLCB3aGljaCBpcyB3aGF0IGFjdHVhbGx5IGd1YXJhbnRlZXMgdGhhdCBhbnlcbiYjNDM7XHQgKiBpbi1mbGlnaHQgZGlzcGF0Y2hlciBoYXMgZmluaXNoZWQgYW5kIHRoYXQgbGF0ZXIgZGlzcGF0Y2hlcnMgc2VlXG4mIzQzO1x0ICogdGhlIHF1ZXVlIGFzIHF1aWVzY2VkOyB0aGUgYmFycmllciBoZXJlIG9ubHkga2VlcHMgdGhpcyBoZWxwZXJcbiYjNDM7XHQgKiBzZWxmLWNvbnRhaW5lZCBmb3IgdGhlIGZldyBjYWxsZXJzIHRoYXQgZGVmZXIgdGhlIHdhaXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0c21wX21iX19hZnRlcl9hdG9taWMoKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KTtcbiBcbkBAIC0zMTQsMjEgJiM0MzszMTgsMzAgQEAgRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWUpO1xuICAqL1xuIHZvaWQgYmxrX21xX3VucXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbiB7XG4tXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLVx0Ym9vbCBydW5fcXVldWUgPSBmYWxzZTtcbiYjNDM7XHRpbnQgZGVwdGg7XG4gXG4tXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZxLVx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcbi1cdGlmIChXQVJOX09OX09OQ0UocS1cdTAwM2VxdWllc2NlX2RlcHRoIFx1MDAzYz0gMCkpIHtcbi1cdFx0O1xuLVx0fSBlbHNlIGlmICghLS1xLVx1MDAzZXF1aWVzY2VfZGVwdGgpIHtcbi1cdFx0YmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19RVUlFU0NFRCwgcSk7XG4tXHRcdHJ1bl9xdWV1ZSA9IHRydWU7XG4tXHR9XG4tXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnEtXHUwMDNlcXVldWVfbG9jaywgZmxhZ3MpO1xuJiM0MztcdGRlcHRoID0gYXRvbWljX2RlY19pZl9wb3NpdGl2ZShcdTAwMjZxLVx1MDAzZXF1aWVzY2VfZGVwdGgpO1xuJiM0MztcdGlmIChXQVJOX09OX09OQ0UoZGVwdGggXHUwMDNjIDApKVxuJiM0MztcdFx0cmV0dXJuO1xuIFxuLVx0LyogZGlzcGF0Y2ggcmVxdWVzdHMgd2hpY2ggYXJlIGluc2VydGVkIGR1cmluZyBxdWllc2NpbmcgKi9cbi1cdGlmIChydW5fcXVldWUpXG4mIzQzO1x0aWYgKGRlcHRoID09IDApIHtcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBGdWxsIGJhcnJpZXIgYmV0d2VlbiB0aGUgcXVpZXNjZV9kZXB0aCBzdG9yZSBhYm92ZSBhbmQgdGhlXG4mIzQzO1x0XHQgKiBibGtfbXFfaGN0eF9oYXNfcGVuZGluZygpIGxvYWQgZG9uZSBmcm9tIGJsa19tcV9ydW5faHdfcXVldWVzKClcbiYjNDM7XHRcdCAqIGJlbG93LiAgVGhpcyBwYWlycyB3aXRoIHRoZSBzbXBfbWIoKSBiZWZvcmUgdGhlIHJlcXVpZXNjZVxuJiM0MztcdFx0ICogcmUtY2hlY2sgaW4gYmxrX21xX3J1bl9od19xdWV1ZSgpOiBvZiB0aGUgdHdvIHJhY2luZyBDUFVzXG4mIzQzO1x0XHQgKiAob25lIGluc2VydGluZyBhIHJlcXVlc3QgYW5kIHRoZW4gcmUtY2hlY2tpbmcgcXVpZXNjZSBzdGF0ZSxcbiYjNDM7XHRcdCAqIHRoZSBvdGhlciB1bnF1aWVzY2luZyBoZXJlIGFuZCB0aGVuIGNoZWNraW5nIGZvciBwZW5kaW5nXG4mIzQzO1x0XHQgKiB3b3JrKSBhdCBsZWFzdCBvbmUgc2VlcyB0aGUgb3RoZXImIzM5O3Mgc3RvcmUsIHNvIHRoZSBodyBxdWV1ZVxuJiM0MztcdFx0ICogaXMgbm90IGxlZnQgd2l0aCBhIHJlcXVlc3Qgc3RyYW5kZWQgb24gYSBub3ctcnVubmluZyBxdWV1ZS5cbiYjNDM7XHRcdCAqXG4mIzQzO1x0XHQgKiBhdG9taWNfZGVjX2lmX3Bvc2l0aXZlKCkgYWxyZWFkeSBvcmRlcnMgdGhlIGRlY3JlbWVudCBvblxuJiM0MztcdFx0ICogc3VjY2VzcywgYnV0IHNwZWxsIHRoZSBiYXJyaWVyIG91dCBzbyB0aGUgcGFpcmluZyBpcyBvYnZpb3VzLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRzbXBfbWJfX2FmdGVyX2F0b21pYygpO1xuJiM0MztcdFx0LyogZGlzcGF0Y2ggcmVxdWVzdHMgd2hpY2ggYXJlIGluc2VydGVkIGR1cmluZyBxdWllc2NpbmcgKi9cbiBcdFx0YmxrX21xX3J1bl9od19xdWV1ZXMocSwgdHJ1ZSk7XG4mIzQzO1x0fVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfdW5xdWllc2NlX3F1ZXVlKTtcbiBcbkBAIC0yMzMxLDE3ICYjNDM7MjM0NCwyMSBAQCB2b2lkIGJsa19tcV9ydW5faHdfcXVldWUoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIGJvb2wgYXN5bmMpXG4gXG4gXHRuZWVkX3J1biA9IGJsa19tcV9od19xdWV1ZV9uZWVkX3J1bihoY3R4KTtcbiBcdGlmICghbmVlZF9ydW4pIHtcbi1cdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbi1cbiBcdFx0Lypcbi1cdFx0ICogU3luY2hyb25pemUgd2l0aCBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCksIGJlY2F1c2Ugd2UgY2hlY2tcbi1cdFx0ICogaWYgaHcgcXVldWUgaXMgcXVpZXNjZWQgbG9ja2xlc3NseSBhYm92ZSwgd2UgbmVlZCB0aGUgdXNlXG4tXHRcdCAqIC1cdTAwM2VxdWV1ZV9sb2NrIHRvIG1ha2Ugc3VyZSB3ZSBzZWUgdGhlIHVwLXRvLWRhdGUgc3RhdHVzIHRvXG4tXHRcdCAqIG5vdCBtaXNzIHJlcnVubmluZyB0aGUgaHcgcXVldWUuXG4mIzQzO1x0XHQgKiBSZS1jaGVjayBhZnRlciBhIGZ1bGwgYmFycmllci4gIEEgcmVxdWVzdCBtYXkgaGF2ZSBiZWVuXG4mIzQzO1x0XHQgKiBpbnNlcnRlZCBiZWZvcmUgdGhpcyBjYWxsLCB3aGlsZSBhIGNvbmN1cnJlbnRcbiYjNDM7XHRcdCAqIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKSBkcm9wcyBxdWllc2NlX2RlcHRoIHRvIHplcm8gYW5kXG4mIzQzO1x0XHQgKiB0aGVuIHJ1bnMgdGhlIGh3IHF1ZXVlcy4gIFRoaXMgc21wX21iKCkgb3JkZXJzIHRoZSByZXF1ZXN0XG4mIzQzO1x0XHQgKiBpbnNlcnQgKHRoZSBzdG9yZSB0aGF0IG1ha2VzIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgdHJ1ZSlcbiYjNDM7XHRcdCAqIGJlZm9yZSB0aGUgcmVxdWllc2NlLXN0YXRlIGxvYWQgYmVsb3csIGFuZCBwYWlycyB3aXRoIHRoZVxuJiM0MztcdFx0ICogc21wX21iX19hZnRlcl9hdG9taWMoKSBiZXR3ZWVuIHRoZSBxdWllc2NlX2RlcHRoIHN0b3JlIGFuZFxuJiM0MztcdFx0ICogdGhlIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgbG9hZCBpbiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKClcbiYjNDM7XHRcdCAqIChhbmQgaW4gYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkpLiAgV2l0aCBhIGZ1bGwgYmFycmllclxuJiM0MztcdFx0ICogb24gYm90aCBzaWRlcywgYXQgbGVhc3Qgb25lIENQVSBvYnNlcnZlcyB0aGUgb3RoZXImIzM5O3Mgc3RvcmUsXG4mIzQzO1x0XHQgKiBzbyB0aGUgcXVldWUgaXMgbm90IGxlZnQgYm90aCB1bi1xdWllc2NlZCBhbmQgbm90IHJlcnVuLlxuIFx0XHQgKi9cbi1cdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGN0eC1cdTAwM2VxdWV1ZS1cdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XG4mIzQzO1x0XHRzbXBfbWIoKTtcbiBcdFx0bmVlZF9ydW4gPSBibGtfbXFfaHdfcXVldWVfbmVlZF9ydW4oaGN0eCk7XG4tXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aGN0eC1cdTAwM2VxdWV1ZS1cdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XG4gXG4gXHRcdGlmICghbmVlZF9ydW4pXG4gXHRcdFx0cmV0dXJuO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmggYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oXG5pbmRleCBkYmI1NDljZGZiNzc4Yi4uOWU0OWFiOWM3OGFlMGMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oXG5AQCAtNTI1LDcgJiM0Mzs1MjUsOCBAQCBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSB7XG4gXG4gXHRzcGlubG9ja190XHRcdHF1ZXVlX2xvY2s7XG4gXG4tXHRpbnRcdFx0XHRxdWllc2NlX2RlcHRoO1xuJiM0MztcdC8qIEF0b21pYyBxdWllc2NlIGRlcHRoIC0gYWxzbyBzZXJ2ZXMgYXMgcXVpZXNjZWQgaW5kaWNhdG9yIChkZXB0aCBcdTAwM2UgMCkgKi9cbiYjNDM7XHRhdG9taWNfdFx0XHRxdWllc2NlX2RlcHRoO1xuIFxuIFx0c3RydWN0IGdlbmRpc2tcdFx0KmRpc2s7XG4gXG5AQCAtNjcwLDcgJiM0Mzs2NzEsNiBAQCBlbnVtIHtcbiBcdFFVRVVFX0ZMQUdfSU5JVF9ET05FLFx0XHQvKiBxdWV1ZSBpcyBpbml0aWFsaXplZCAqL1xuIFx0UVVFVUVfRkxBR19TVEFUUyxcdFx0LyogdHJhY2sgSU8gc3RhcnQgYW5kIGNvbXBsZXRpb24gdGltZXMgKi9cbiBcdFFVRVVFX0ZMQUdfUkVHSVNURVJFRCxcdFx0LyogcXVldWUgaGFzIGJlZW4gcmVnaXN0ZXJlZCB0byBhIGRpc2sgKi9cbi1cdFFVRVVFX0ZMQUdfUVVJRVNDRUQsXHRcdC8qIHF1ZXVlIGhhcyBiZWVuIHF1aWVzY2VkICovXG4gXHRRVUVVRV9GTEFHX1JRX0FMTE9DX1RJTUUsXHQvKiByZWNvcmQgcnEtXHUwMDNlYWxsb2NfdGltZV9ucyAqL1xuIFx0UVVFVUVfRkxBR19IQ1RYX0FDVElWRSxcdFx0LyogYXQgbGVhc3Qgb25lIGJsay1tcSBoY3R4IGlzIGFjdGl2ZSAqL1xuIFx0UVVFVUVfRkxBR19TUV9TQ0hFRCxcdFx0Lyogc2luZ2xlIHF1ZXVlIHN0eWxlIGlvIGRpc3BhdGNoICovXG5AQCAtNzA4LDcgJiM0Mzs3MDgsMTAgQEAgdm9pZCBibGtfcXVldWVfZmxhZ19jbGVhcih1bnNpZ25lZCBpbnQgZmxhZywgc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpO1xuICNkZWZpbmUgYmxrX25vcmV0cnlfcmVxdWVzdChycSkgXFxcbiBcdCgocnEpLVx1MDAzZWNtZF9mbGFncyBcdTAwMjYgKFJFUV9GQUlMRkFTVF9ERVZ8UkVRX0ZBSUxGQVNUX1RSQU5TUE9SVHwgXFxcbiBcdFx0XHQgICAgIFJFUV9GQUlMRkFTVF9EUklWRVIpKVxuLSNkZWZpbmUgYmxrX3F1ZXVlX3F1aWVzY2VkKHEpXHR0ZXN0X2JpdChRVUVVRV9GTEFHX1FVSUVTQ0VELCBcdTAwMjYocSktXHUwMDNlcXVldWVfZmxhZ3MpXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBibGtfcXVldWVfcXVpZXNjZWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2cS1cdTAwM2VxdWllc2NlX2RlcHRoKSBcdTAwM2UgMDtcbiYjNDM7fVxuICNkZWZpbmUgYmxrX3F1ZXVlX3BtX29ubHkocSlcdGF0b21pY19yZWFkKFx1MDAyNihxKS1cdTAwM2VwbV9vbmx5KVxuICNkZWZpbmUgYmxrX3F1ZXVlX3JlZ2lzdGVyZWQocSlcdHRlc3RfYml0KFFVRVVFX0ZMQUdfUkVHSVNURVJFRCwgXHUwMDI2KHEpLVx1MDAzZXF1ZXVlX2ZsYWdzKVxuICNkZWZpbmUgYmxrX3F1ZXVlX3NxX3NjaGVkKHEpXHR0ZXN0X2JpdChRVUVVRV9GTEFHX1NRX1NDSEVELCBcdTAwMjYocSktXHUwMDNlcXVldWVfZmxhZ3MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjI6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQmIzM0OywKICAgICYjMzQ7YmxrX21xX3VucXVpZXNjZV9xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBzcGlubG9jay1iYXNlZCBxdWV1ZSBxdWllc2NlIHRyYWNraW5nIHdpdGggYW4gYXRvbWljIGNvdW50ZXIgYW5kIG1lbW9yeSBiYXJyaWVycyBpbiB0aGUgY29yZSBibG9jayBsYXllciAoYmxrLW1xLmMpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHF1ZXVlIHF1aWVzY2luZy91bnF1aWVzY2luZyBhbmQgaGFyZHdhcmUgcXVldWUgcnVucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIChlLmcuLCBkZXZpY2Ugc3VzcGVuZC9yZXN1bWUsIGVycm9yIGhhbmRsaW5nKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmQyNzRmMjBlMzM5MTk0MGNlMjMxYjUwZGM0MjNmYzA1OGMzNDliMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDkgMjI6NDY6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9ibG9jay9ibGstY29yZS5jIGIvYmxvY2svYmxrLWNvcmUuYwppbmRleCAzNjU2NDEyNjZjOWU4Mi4uNzk2Njk5NTdmNDdlNDcgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWNvcmUuYwpAQCAtNDc3LDYgJiM0Mzs0NzcsNyBAQCBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqYmxrX2FsbG9jX3F1ZXVlKHN0cnVjdCBxdWV1ZV9saW1pdHMgKmxpbSwgaW50IG5vZGVfaWQpCiAJbXV0ZXhfaW5pdCgmYW1wO3EtJmd0O2xpbWl0c19sb2NrKTsKIAltdXRleF9pbml0KCZhbXA7cS0mZ3Q7cnFfcW9zX211dGV4KTsKIAlzcGluX2xvY2tfaW5pdCgmYW1wO3EtJmd0O3F1ZXVlX2xvY2spOwomIzQzOwlhdG9taWNfc2V0KCZhbXA7cS0mZ3Q7cXVpZXNjZV9kZXB0aCwgMCk7CiAKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZhbXA7cS0mZ3Q7bXFfZnJlZXplX3dxKTsKIAltdXRleF9pbml0KCZhbXA7cS0mZ3Q7bXFfZnJlZXplX2xvY2spOwpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLWRlYnVnZnMuYyBiL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmMKaW5kZXggNjc1NGQ4Zjk0NDljMTAuLjU2N2VlZGJiZjUwZmM4IDEwMDY0NAotLS0gYS9ibG9jay9ibGstbXEtZGVidWdmcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmMKQEAgLTkzLDcgJiM0Mzs5Myw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBibGtfcXVldWVfZmxhZ19uYW1lW10gPSB7CiAJUVVFVUVfRkxBR19OQU1FKElOSVRfRE9ORSksCiAJUVVFVUVfRkxBR19OQU1FKFNUQVRTKSwKIAlRVUVVRV9GTEFHX05BTUUoUkVHSVNURVJFRCksCi0JUVVFVUVfRkxBR19OQU1FKFFVSUVTQ0VEKSwKIAlRVUVVRV9GTEFHX05BTUUoUlFfQUxMT0NfVElNRSksCiAJUVVFVUVfRkxBR19OQU1FKEhDVFhfQUNUSVZFKSwKIAlRVUVVRV9GTEFHX05BTUUoU1FfU0NIRUQpLApkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLmMgYi9ibG9jay9ibGstbXEuYwppbmRleCAyYzg1MDMzMGEzMmJjNi4uMTg2YmJjYzhiOTI3NTkgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1tcS5jCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jsay1tcS5jCkBAIC0yNjAsMTIgJiM0MzsyNjAsMTYgQEAgRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3VuZnJlZXplX3F1ZXVlX25vbl9vd25lcik7CiAgKi8KIHZvaWQgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKQogewotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO3EtJmd0O3F1ZXVlX2xvY2ssIGZsYWdzKTsKLQlpZiAoIXEtJmd0O3F1aWVzY2VfZGVwdGgmIzQzOyYjNDM7KQotCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19RVUlFU0NFRCwgcSk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO3EtJmd0O3F1ZXVlX2xvY2ssIGZsYWdzKTsKJiM0MzsJYXRvbWljX2luYygmYW1wO3EtJmd0O3F1aWVzY2VfZGVwdGgpOwomIzQzOwkvKgomIzQzOwkgKiBQdWJsaXNoIHRoZSBxdWllc2NlX2RlcHRoIGluY3JlbWVudC4gIENhbGxlcnMgbXVzdCBmb2xsb3cgdGhpcwomIzQzOwkgKiB3aXRoIGJsa19tcV93YWl0X3F1aWVzY2VfZG9uZSgpIChzeW5jaHJvbml6ZV9zcmN1KCkvCiYjNDM7CSAqIHN5bmNocm9uaXplX3JjdSgpKSwgd2hpY2ggaXMgd2hhdCBhY3R1YWxseSBndWFyYW50ZWVzIHRoYXQgYW55CiYjNDM7CSAqIGluLWZsaWdodCBkaXNwYXRjaGVyIGhhcyBmaW5pc2hlZCBhbmQgdGhhdCBsYXRlciBkaXNwYXRjaGVycyBzZWUKJiM0MzsJICogdGhlIHF1ZXVlIGFzIHF1aWVzY2VkOyB0aGUgYmFycmllciBoZXJlIG9ubHkga2VlcHMgdGhpcyBoZWxwZXIKJiM0MzsJICogc2VsZi1jb250YWluZWQgZm9yIHRoZSBmZXcgY2FsbGVycyB0aGF0IGRlZmVyIHRoZSB3YWl0LgomIzQzOwkgKi8KJiM0MzsJc21wX21iX19hZnRlcl9hdG9taWMoKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCk7CiAKQEAgLTMxNCwyMSAmIzQzOzMxOCwzMCBAQCBFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfcXVpZXNjZV9xdWV1ZSk7CiAgKi8KIHZvaWQgYmxrX21xX3VucXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSkKIHsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCWJvb2wgcnVuX3F1ZXVlID0gZmFsc2U7CiYjNDM7CWludCBkZXB0aDsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7cS0mZ3Q7cXVldWVfbG9jaywgZmxhZ3MpOwotCWlmIChXQVJOX09OX09OQ0UocS0mZ3Q7cXVpZXNjZV9kZXB0aCAmbHQ7PSAwKSkgewotCQk7Ci0JfSBlbHNlIGlmICghLS1xLSZndDtxdWllc2NlX2RlcHRoKSB7Ci0JCWJsa19xdWV1ZV9mbGFnX2NsZWFyKFFVRVVFX0ZMQUdfUVVJRVNDRUQsIHEpOwotCQlydW5fcXVldWUgPSB0cnVlOwotCX0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7cS0mZ3Q7cXVldWVfbG9jaywgZmxhZ3MpOwomIzQzOwlkZXB0aCA9IGF0b21pY19kZWNfaWZfcG9zaXRpdmUoJmFtcDtxLSZndDtxdWllc2NlX2RlcHRoKTsKJiM0MzsJaWYgKFdBUk5fT05fT05DRShkZXB0aCAmbHQ7IDApKQomIzQzOwkJcmV0dXJuOwogCi0JLyogZGlzcGF0Y2ggcmVxdWVzdHMgd2hpY2ggYXJlIGluc2VydGVkIGR1cmluZyBxdWllc2NpbmcgKi8KLQlpZiAocnVuX3F1ZXVlKQomIzQzOwlpZiAoZGVwdGggPT0gMCkgewomIzQzOwkJLyoKJiM0MzsJCSAqIEZ1bGwgYmFycmllciBiZXR3ZWVuIHRoZSBxdWllc2NlX2RlcHRoIHN0b3JlIGFib3ZlIGFuZCB0aGUKJiM0MzsJCSAqIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgbG9hZCBkb25lIGZyb20gYmxrX21xX3J1bl9od19xdWV1ZXMoKQomIzQzOwkJICogYmVsb3cuICBUaGlzIHBhaXJzIHdpdGggdGhlIHNtcF9tYigpIGJlZm9yZSB0aGUgcmVxdWllc2NlCiYjNDM7CQkgKiByZS1jaGVjayBpbiBibGtfbXFfcnVuX2h3X3F1ZXVlKCk6IG9mIHRoZSB0d28gcmFjaW5nIENQVXMKJiM0MzsJCSAqIChvbmUgaW5zZXJ0aW5nIGEgcmVxdWVzdCBhbmQgdGhlbiByZS1jaGVja2luZyBxdWllc2NlIHN0YXRlLAomIzQzOwkJICogdGhlIG90aGVyIHVucXVpZXNjaW5nIGhlcmUgYW5kIHRoZW4gY2hlY2tpbmcgZm9yIHBlbmRpbmcKJiM0MzsJCSAqIHdvcmspIGF0IGxlYXN0IG9uZSBzZWVzIHRoZSBvdGhlciYjMzk7cyBzdG9yZSwgc28gdGhlIGh3IHF1ZXVlCiYjNDM7CQkgKiBpcyBub3QgbGVmdCB3aXRoIGEgcmVxdWVzdCBzdHJhbmRlZCBvbiBhIG5vdy1ydW5uaW5nIHF1ZXVlLgomIzQzOwkJICoKJiM0MzsJCSAqIGF0b21pY19kZWNfaWZfcG9zaXRpdmUoKSBhbHJlYWR5IG9yZGVycyB0aGUgZGVjcmVtZW50IG9uCiYjNDM7CQkgKiBzdWNjZXNzLCBidXQgc3BlbGwgdGhlIGJhcnJpZXIgb3V0IHNvIHRoZSBwYWlyaW5nIGlzIG9idmlvdXMuCiYjNDM7CQkgKi8KJiM0MzsJCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7CiYjNDM7CQkvKiBkaXNwYXRjaCByZXF1ZXN0cyB3aGljaCBhcmUgaW5zZXJ0ZWQgZHVyaW5nIHF1aWVzY2luZyAqLwogCQlibGtfbXFfcnVuX2h3X3F1ZXVlcyhxLCB0cnVlKTsKJiM0MzsJfQogfQogRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3VucXVpZXNjZV9xdWV1ZSk7CiAKQEAgLTIzMzEsMTcgJiM0MzsyMzQ0LDIxIEBAIHZvaWQgYmxrX21xX3J1bl9od19xdWV1ZShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgYm9vbCBhc3luYykKIAogCW5lZWRfcnVuID0gYmxrX21xX2h3X3F1ZXVlX25lZWRfcnVuKGhjdHgpOwogCWlmICghbmVlZF9ydW4pIHsKLQkJdW5zaWduZWQgbG9uZyBmbGFnczsKLQogCQkvKgotCQkgKiBTeW5jaHJvbml6ZSB3aXRoIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKSwgYmVjYXVzZSB3ZSBjaGVjawotCQkgKiBpZiBodyBxdWV1ZSBpcyBxdWllc2NlZCBsb2NrbGVzc2x5IGFib3ZlLCB3ZSBuZWVkIHRoZSB1c2UKLQkJICogLSZndDtxdWV1ZV9sb2NrIHRvIG1ha2Ugc3VyZSB3ZSBzZWUgdGhlIHVwLXRvLWRhdGUgc3RhdHVzIHRvCi0JCSAqIG5vdCBtaXNzIHJlcnVubmluZyB0aGUgaHcgcXVldWUuCiYjNDM7CQkgKiBSZS1jaGVjayBhZnRlciBhIGZ1bGwgYmFycmllci4gIEEgcmVxdWVzdCBtYXkgaGF2ZSBiZWVuCiYjNDM7CQkgKiBpbnNlcnRlZCBiZWZvcmUgdGhpcyBjYWxsLCB3aGlsZSBhIGNvbmN1cnJlbnQKJiM0MzsJCSAqIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKSBkcm9wcyBxdWllc2NlX2RlcHRoIHRvIHplcm8gYW5kCiYjNDM7CQkgKiB0aGVuIHJ1bnMgdGhlIGh3IHF1ZXVlcy4gIFRoaXMgc21wX21iKCkgb3JkZXJzIHRoZSByZXF1ZXN0CiYjNDM7CQkgKiBpbnNlcnQgKHRoZSBzdG9yZSB0aGF0IG1ha2VzIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgdHJ1ZSkKJiM0MzsJCSAqIGJlZm9yZSB0aGUgcmVxdWllc2NlLXN0YXRlIGxvYWQgYmVsb3csIGFuZCBwYWlycyB3aXRoIHRoZQomIzQzOwkJICogc21wX21iX19hZnRlcl9hdG9taWMoKSBiZXR3ZWVuIHRoZSBxdWllc2NlX2RlcHRoIHN0b3JlIGFuZAomIzQzOwkJICogdGhlIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgbG9hZCBpbiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkKJiM0MzsJCSAqIChhbmQgaW4gYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkpLiAgV2l0aCBhIGZ1bGwgYmFycmllcgomIzQzOwkJICogb24gYm90aCBzaWRlcywgYXQgbGVhc3Qgb25lIENQVSBvYnNlcnZlcyB0aGUgb3RoZXImIzM5O3Mgc3RvcmUsCiYjNDM7CQkgKiBzbyB0aGUgcXVldWUgaXMgbm90IGxlZnQgYm90aCB1bi1xdWllc2NlZCBhbmQgbm90IHJlcnVuLgogCQkgKi8KLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtoY3R4LSZndDtxdWV1ZS0mZ3Q7cXVldWVfbG9jaywgZmxhZ3MpOwomIzQzOwkJc21wX21iKCk7CiAJCW5lZWRfcnVuID0gYmxrX21xX2h3X3F1ZXVlX25lZWRfcnVuKGhjdHgpOwotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7aGN0eC0mZ3Q7cXVldWUtJmd0O3F1ZXVlX2xvY2ssIGZsYWdzKTsKIAogCQlpZiAoIW5lZWRfcnVuKQogCQkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGtkZXYuaCBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKaW5kZXggZGJiNTQ5Y2RmYjc3OGIuLjllNDlhYjljNzhhZTBjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKQEAgLTUyNSw3ICYjNDM7NTI1LDggQEAgc3RydWN0IHJlcXVlc3RfcXVldWUgewogCiAJc3BpbmxvY2tfdAkJcXVldWVfbG9jazsKIAotCWludAkJCXF1aWVzY2VfZGVwdGg7CiYjNDM7CS8qIEF0b21pYyBxdWllc2NlIGRlcHRoIC0gYWxzbyBzZXJ2ZXMgYXMgcXVpZXNjZWQgaW5kaWNhdG9yIChkZXB0aCAmZ3Q7IDApICovCiYjNDM7CWF0b21pY190CQlxdWllc2NlX2RlcHRoOwogCiAJc3RydWN0IGdlbmRpc2sJCSpkaXNrOwogCkBAIC02NzAsNyAmIzQzOzY3MSw2IEBAIGVudW0gewogCVFVRVVFX0ZMQUdfSU5JVF9ET05FLAkJLyogcXVldWUgaXMgaW5pdGlhbGl6ZWQgKi8KIAlRVUVVRV9GTEFHX1NUQVRTLAkJLyogdHJhY2sgSU8gc3RhcnQgYW5kIGNvbXBsZXRpb24gdGltZXMgKi8KIAlRVUVVRV9GTEFHX1JFR0lTVEVSRUQsCQkvKiBxdWV1ZSBoYXMgYmVlbiByZWdpc3RlcmVkIHRvIGEgZGlzayAqLwotCVFVRVVFX0ZMQUdfUVVJRVNDRUQsCQkvKiBxdWV1ZSBoYXMgYmVlbiBxdWllc2NlZCAqLwogCVFVRVVFX0ZMQUdfUlFfQUxMT0NfVElNRSwJLyogcmVjb3JkIHJxLSZndDthbGxvY190aW1lX25zICovCiAJUVVFVUVfRkxBR19IQ1RYX0FDVElWRSwJCS8qIGF0IGxlYXN0IG9uZSBibGstbXEgaGN0eCBpcyBhY3RpdmUgKi8KIAlRVUVVRV9GTEFHX1NRX1NDSEVELAkJLyogc2luZ2xlIHF1ZXVlIHN0eWxlIGlvIGRpc3BhdGNoICovCkBAIC03MDgsNyAmIzQzOzcwOCwxMCBAQCB2b2lkIGJsa19xdWV1ZV9mbGFnX2NsZWFyKHVuc2lnbmVkIGludCBmbGFnLCBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSk7CiAjZGVmaW5lIGJsa19ub3JldHJ5X3JlcXVlc3QocnEpIFwKIAkoKHJxKS0mZ3Q7Y21kX2ZsYWdzICZhbXA7IChSRVFfRkFJTEZBU1RfREVWfFJFUV9GQUlMRkFTVF9UUkFOU1BPUlR8IFwKIAkJCSAgICAgUkVRX0ZBSUxGQVNUX0RSSVZFUikpCi0jZGVmaW5lIGJsa19xdWV1ZV9xdWllc2NlZChxKQl0ZXN0X2JpdChRVUVVRV9GTEFHX1FVSUVTQ0VELCAmYW1wOyhxKS0mZ3Q7cXVldWVfZmxhZ3MpCiYjNDM7c3RhdGljIGlubGluZSBib29sIGJsa19xdWV1ZV9xdWllc2NlZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSkKJiM0Mzt7CiYjNDM7CXJldHVybiBhdG9taWNfcmVhZCgmYW1wO3EtJmd0O3F1aWVzY2VfZGVwdGgpICZndDsgMDsKJiM0Mzt9CiAjZGVmaW5lIGJsa19xdWV1ZV9wbV9vbmx5KHEpCWF0b21pY19yZWFkKCZhbXA7KHEpLSZndDtwbV9vbmx5KQogI2RlZmluZSBibGtfcXVldWVfcmVnaXN0ZXJlZChxKQl0ZXN0X2JpdChRVUVVRV9GTEFHX1JFR0lTVEVSRUQsICZhbXA7KHEpLSZndDtxdWV1ZV9mbGFncykKICNkZWZpbmUgYmxrX3F1ZXVlX3NxX3NjaGVkKHEpCXRlc3RfYml0KFFVRVVFX0ZMQUdfU1FfU0NIRUQsICZhbXA7KHEpLSZndDtxdWV1ZV9mbGFncykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEwMgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgQmxvY2sgTGF5ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHBva2luZyBhcm91bmQgaW4gdGhlIGJsb2NrIGxheWVyLCBzcGVjaWZpY2FsbHkgaW4gYGJsay1tcS5jYCwgYGJsay1jb3JlLmNgLCBgYmxrLW1xLWRlYnVnZnMuY2AsIGFuZCB0aGUgYGJsa2Rldi5oYCBpbmNsdWRlIGZpbGUuIFRoaXMgbG9va3MgbGlrZSBhIGZhaXJseSBzaWduaWZpY2FudCBjaGFuZ2Ug4oCTIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhvdyB0aGUga2VybmVsIHRyYWNrcyBxdWV1ZSBxdWllc2NpbmcuIEluc3RlYWQgb2YgdGhhdCBzcGlubG9jay1wcm90ZWN0ZWQgYHF1aWVzY2VfZGVwdGhgIGFuZCB0aGUgYFFVRVVFX0ZMQUdfUVVJRVNDRURgIGZsYWcsIHRoZXkmIzM5O3JlIHN3YXBwaW5nIGluIGFuIGBhdG9taWNfdCBxdWllc2NlX2RlcHRoYC4gSW50ZXJlc3RpbmcuCgpUaGV5JiMzOTtyZSBjbGVhcmx5IG1vZGlmeWluZyBzb21lIGtleSBmdW5jdGlvbnM6IGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgLCBgYmxrX21xX3VucXVpZXNjZV9xdWV1ZWAsIGFuZCBgYmxrX21xX3J1bl9od19xdWV1ZWAuIFllcCwgdGhpcyBpcyBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgYmxvY2sgbGF5ZXIsIG5vIGRvdWJ0IGFib3V0IGl0LiBEZWZpbml0ZWx5IGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb2RlLiBHb29kLCBnb29kLiBUaGV5JiMzOTtyZSByZW1vdmluZyB0aGUgYFFVRVVFX0ZMQUdfUVVJRVNDRURgIGNvbXBsZXRlbHkgYW5kIHVzaW5nIGFuIGF0b21pYyByZWFkLCBgYXRvbWljX3JlYWQoJmFtcDtxLSZndDtxdWllc2NlX2RlcHRoKSAmZ3Q7IDBgLCBpbnN0ZWFkLiBBbmQgdGhleSYjMzk7cmUgYWxzbyBjaGFuZ2luZyB0aGUgc3luY2hyb25pemF0aW9uIGluIGBibGtfbXFfcnVuX2h3X3F1ZXVlYCwgbW92aW5nIHRvIGFuIGBzbXBfbWIoKWAgaW5zdGVhZCBvZiB1c2luZyB0aGUgYHF1ZXVlX2xvY2tgLgoKR2l2ZW4gdGhhdCB0aGlzIGlzIHRvdWNoaW5nIGNvcmUgYmxvY2sgbGF5ZXIgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgc3ltYm9scyB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgdGhvc2UgdGhyZWUgZnVuY3Rpb25zOiBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YCwgYGJsa19tcV91bnF1aWVzY2VfcXVldWVgLCBhbmQgYGJsa19tcV9ydW5faHdfcXVldWVgLgoKTm93LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIG5lZWRlZCB0byBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5LiBUaGUgYmxvY2sgbGF5ZXIsIGFzIGFsd2F5cywgaXMgZW5hYmxlZCBieSBgQ09ORklHX0JMT0NLYC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIGtlcm5lbCwgc28gaXQmIzM5O3MgcHJvYmFibHkgZW5hYmxlZCBieSBkZWZhdWx0LiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIGl0c2VsZiBpcyBndWFyZGVkIGJ5IGFueXRoaW5nIHNwZWNpZmljLiBPa2F5LCBgYmxrLW1xLmNgIGFuZCB0aHVzIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfQkxPQ0tgIGlzIGVuYWJsZWQuIEdvb2QuIFdlJiMzOTt2ZSB2ZXJpZmllZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLW1xLmM9MjU1PUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV91bmZyZWV6ZV9xdWV1ZV9ub25fb3duZXIpO1xuLS1cbmJsb2NrL2Jsay1tcS5jLTI2MC0gKi9cbmJsb2NrL2Jsay1tcS5jOjI2MTp2b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbmJsb2NrL2Jsay1tcS5jLTI2Mi17XG4tLVxuYmxvY2svYmxrLW1xLmMtMjczLX1cbmJsb2NrL2Jsay1tcS5jOjI3NDpFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQpO1xuYmxvY2svYmxrLW1xLmMtMjc1LVxuLS1cbmJsb2NrL2Jsay1tcS5jLTI4Mi0gKiBmdW5jdGlvbiBvbmx5IHdhaXRzIGZvciB0aGUgcXVpZXNjZSBvbiB0aG9zZSByZXF1ZXN0X3F1ZXVlcyB0aGF0IGhhZFxuYmxvY2svYmxrLW1xLmM6MjgzOiAqIHRoZSBxdWllc2NlIGZsYWcgc2V0IHVzaW5nIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdC5cbmJsb2NrL2Jsay1tcS5jLTI4NC0gKi9cbi0tXG5ibG9jay9ibGstbXEuYz0zMDM9dm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbmJsb2NrL2Jsay1tcS5jLTMwNC17XG5ibG9jay9ibGstbXEuYzozMDU6XHRibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSk7XG5ibG9jay9ibGstbXEuYy0zMDYtXHQvKiBub3RoaW5nIHRvIHdhaXQgZm9yIG5vbi1tcSBxdWV1ZXMgKi9cbi0tXG5ibG9jay9ibGstbXEuYz0zNDg9dm9pZCBibGtfbXFfcXVpZXNjZV90YWdzZXQoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpXG4tLVxuYmxvY2svYmxrLW1xLmMtMzU0LVx0XHRpZiAoIWJsa19xdWV1ZV9za2lwX3RhZ3NldF9xdWllc2NlKHEpKVxuYmxvY2svYmxrLW1xLmM6MzU1Olx0XHRcdGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTtcbmJsb2NrL2Jsay1tcS5jLTM1Ni1cdH1cbi0tXG5ibG9jay9ibGstbXEuYz0yMzM0PXZvaWQgYmxrX21xX3J1bl9od19xdWV1ZShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgYm9vbCBhc3luYylcbi0tXG5ibG9jay9ibGstbXEuYy0yMzU1LVx0XHQgKiB0aGUgYmxrX21xX2hjdHhfaGFzX3BlbmRpbmcoKSBsb2FkIGluIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKVxuYmxvY2svYmxrLW1xLmM6MjM1NjpcdFx0ICogKGFuZCBpbiBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoKSkuICBXaXRoIGEgZnVsbCBiYXJyaWVyXG5ibG9jay9ibGstbXEuYy0yMzU3LVx0XHQgKiBvbiBib3RoIHNpZGVzLCBhdCBsZWFzdCBvbmUgQ1BVIG9ic2VydmVzIHRoZSBvdGhlciYjMzk7cyBzdG9yZSxcbi0tXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYz0xNTkwPXN0YXRpYyBpbnQgdmlydGJsa19mcmVlemVfcHJpdihzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYy0xNTk3LVx0bWVtZmxhZ3MgPSBibGtfbXFfZnJlZXplX3F1ZXVlKHEpO1xuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTU5ODpcdGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTtcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jLTE1OTktXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jPTI5Mzg9c3RhdGljIHZvaWQgc2NzaV9zdG9wX3F1ZXVlKHN0cnVjdCBzY3NpX2RldmljZSAqc2Rldilcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYy0yOTQ2LVx0aWYgKCFjbXB4Y2hnKFx1MDAyNnNkZXYtXHUwMDNlcXVldWVfc3RvcHBlZCwgMCwgMSkpXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYzoyOTQ3Olx0XHRibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoc2Rldi1cdTAwM2VyZXF1ZXN0X3F1ZXVlKTtcbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jLTI5NDgtfVxuLS1cbmluY2x1ZGUvbGludXgvYmxrLW1xLmg9OTc3PXZvaWQgYmxrX21xX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQsIGludCBucl9od19xdWV1ZXMpO1xuaW5jbHVkZS9saW51eC9ibGstbXEuaC05NzgtXG5pbmNsdWRlL2xpbnV4L2Jsay1tcS5oOjk3OTp2b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSk7XG5pbmNsdWRlL2xpbnV4L2Jsay1tcS5oLTk4MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTkyCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQmxvY2sgTGF5ZXIgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKUmlnaHQsIHRoZSBibG9jayBsYXllci4gVGhhdCYjMzk7cyBmdW5kYW1lbnRhbCwgYSAqY3JpdGljYWwqIHBpZWNlIG9mIHRoZSBrZXJuZWwgYXJjaGl0ZWN0dXJlLiBZb3UgY2FuIGJldCB0aGF0IGBDT05GSUdfQkxPQ0tgIGlzIGFsbW9zdCBhbHdheXMgZW5hYmxlZC4gSXQmIzM5O3MgdGhlIHBsdW1iaW5nLCB0aGUgY29yZS4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmbGFncywgc29tZXRoaW5nIG1vcmUgZ3JhbnVsYXIsIGZvciBhIHBhcnRpY3VsYXIgY29tcG9uZW50LCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgYGJsay1tcS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0JiMzOTtzIGJlaW5nIGNvbmZpZ3VyZWQuIEFyZSB0aGVyZSBhbnkgcGVjdWxpYXJpdGllcyBvciBvcHRpbWl6YXRpb24gZmxhZ3MgSSBzaG91bGQgYmUgYXdhcmUgb2YgZm9yIGBibGstbXFgIHRvIGJldHRlciB1bmRlcnN0YW5kIHRoaXMgbGF5ZXI/IExldCYjMzk7cyBkaWcgaW50byB0aGUgZGV0YWlscyBhbmQgc2VlIHdoYXQgdGhlIGtlcm5lbCBjb25maWcgc2F5cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibGstbXEubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9NYWtlZmlsZT04PW9iai15XHRcdDo9IGJkZXYubyBmb3BzLm8gYmlvLm8gZWxldmF0b3IubyBibGstY29yZS5vIGJsay1zeXNmcy5vIFxcXG5ibG9jay9NYWtlZmlsZS05LVx0XHRcdGJsay1mbHVzaC5vIGJsay1zZXR0aW5ncy5vIGJsay1pb2MubyBibGstbWFwLm8gXFxcbmJsb2NrL01ha2VmaWxlOjEwOlx0XHRcdGJsay1tZXJnZS5vIGJsay10aW1lb3V0Lm8gYmxrLWxpYi5vIGJsay1tcS5vIFxcXG5ibG9jay9NYWtlZmlsZS0xMS1cdFx0XHRibGstbXEtdGFnLm8gYmxrLW1xLWRtYS5vIGJsay1zdGF0Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzU2CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSB1bmRlcnN0YW5kIHRoaXM6CgoqKkFuYWx5emluZyBCbG9jayBMYXllciBDb21waWxhdGlvbiBhbmQgQ29uY3VycmVuY3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHNvbWV0aGluZyB0aGF0JiMzOTtzIGRpcmVjdGx5IGxpbmtlZCBpbnRvIHRoZSBibG9jayBsYXllciwgd2hpY2ggaXMgY29uZmlybWVkIGJ5IGl0cyBpbmNsdXNpb24gaW4gdGhlIGBvYmoteWAgbGlzdCB3aXRoaW4gYGJsb2NrL01ha2VmaWxlYC4gVGhpcyBtZWFucywgYXMgYW4gZXhwZXJ0LCBJIGtub3cgdGhpcyBjb2RlIGlzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgYmxvY2sgZGV2aWNlIGRyaXZlciBpbmZyYXN0cnVjdHVyZS4gQ3J1Y2lhbGx5LCBpdCYjMzk7cyBhbHdheXMgY29tcGlsZWQgYXMgbG9uZyBhcyBgQ09ORklHX0JMT0NLYCBpcyBzZXQuIEdpdmVuIHRoYXQgYENPTkZJR19CTE9DS2AgaXMgYSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBpdCBmdXJ0aGVyIHVuZGVyc2NvcmVzIHRoZSBpbXBvcnRhbmNlIG9mIHRoaXMgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQgd29ya3Mgd2l0aCBhbnkgYmxvY2sgZGV2aWNlLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBkZWVwZXIgYW5kIGFuYWx5emUgd2hhdCBpcyBoYXBwZW5pbmcgd2l0aCBgYmxrX21xX3VucXVpZXNjZV9xdWV1ZWAgYW5kIGBibGtfbXFfcnVuX2h3X3F1ZXVlYC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgd2lsbCBiZSByZWxldmFudCB0byBjb25jdXJyZW5jeSwgYW5kIEkgaGF2ZSBhIGZlZWxpbmcgdGhpcyByZWxhdGVzIHRvIGJyaW5naW5nIGEgcXVldWUgYmFjayBvbmxpbmUgYWZ0ZXIgYmVpbmcgcXVpZXNjZWQsIGFuZCB0aGVuIGdldHRpbmcgaXQgcnVubmluZyBvbiBhIGhhcmR3YXJlIHF1ZXVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jsa19tcV91bnF1aWVzY2VfcXVldWUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWlvY29zdC5jPTMyNjY9c3RhdGljIHNzaXplX3QgaW9jX3Fvc193cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmlucHV0LFxuLS1cbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNDA3LVxuYmxvY2svYmxrLWlvY29zdC5jOjM0MDg6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXHUwMDNlcXVldWUpO1xuYmxvY2svYmxrLWlvY29zdC5jLTM0MDktXG4tLVxuYmxvY2svYmxrLWlvY29zdC5jLTM0MTctXHRzcGluX3VubG9ja19pcnEoXHUwMDI2aW9jLVx1MDAzZWxvY2spO1xuYmxvY2svYmxrLWlvY29zdC5jOjM0MTg6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXHUwMDNlcXVldWUpO1xuYmxvY2svYmxrLWlvY29zdC5jLTM0MTktXHRyZXQgPSAtRUlOVkFMO1xuLS1cbmJsb2NrL2Jsay1pb2Nvc3QuYz0zNDY5PXN0YXRpYyBzc2l6ZV90IGlvY19jb3N0X21vZGVsX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqaW5wdXQsXG4tLVxuYmxvY2svYmxrLWlvY29zdC5jLTM1NTgtXG5ibG9jay9ibGstaW9jb3N0LmM6MzU1OTpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XG5ibG9jay9ibGstaW9jb3N0LmMtMzU2MC1cdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShxLCBtZW1mbGFncyk7XG4tLVxuYmxvY2svYmxrLW1xLmM9MjkyPUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV93YWl0X3F1aWVzY2VfZG9uZSk7XG4tLVxuYmxvY2svYmxrLW1xLmMtMzAwLSAqIHN1cmUgbm8gZGlzcGF0Y2ggY2FuIGhhcHBlbiB1bnRpbCB0aGUgcXVldWUgaXMgdW5xdWllc2NlZCB2aWFcbmJsb2NrL2Jsay1tcS5jOjMwMTogKiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkuXG5ibG9jay9ibGstbXEuYy0zMDItICovXG4tLVxuYmxvY2svYmxrLW1xLmM9MzEwPUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV9xdWllc2NlX3F1ZXVlKTtcbi0tXG5ibG9jay9ibGstbXEuYy0zMTItLypcbmJsb2NrL2Jsay1tcS5jOjMxMzogKiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkgLSBjb3VudGVycGFydCBvZiBibGtfbXFfcXVpZXNjZV9xdWV1ZSgpXG5ibG9jay9ibGstbXEuYy0zMTQtICogQHE6IHJlcXVlc3QgcXVldWUuXG4tLVxuYmxvY2svYmxrLW1xLmMtMzE4LSAqL1xuYmxvY2svYmxrLW1xLmM6MzE5OnZvaWQgYmxrX21xX3VucXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbmJsb2NrL2Jsay1tcS5jLTMyMC17XG4tLVxuYmxvY2svYmxrLW1xLmMtMzQ1LX1cbmJsb2NrL2Jsay1tcS5jOjM0NjpFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfdW5xdWllc2NlX3F1ZXVlKTtcbmJsb2NrL2Jsay1tcS5jLTM0Ny1cbi0tXG5ibG9jay9ibGstbXEuYz0zNjM9dm9pZCBibGtfbXFfdW5xdWllc2NlX3RhZ3NldChzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgKnNldClcbi0tXG5ibG9jay9ibGstbXEuYy0zNjktXHRcdGlmICghYmxrX3F1ZXVlX3NraXBfdGFnc2V0X3F1aWVzY2UocSkpXG5ibG9jay9ibGstbXEuYzozNzA6XHRcdFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcbmJsb2NrL2Jsay1tcS5jLTM3MS1cdH1cbi0tXG5ibG9jay9ibGstbXEuYz0yMzA3PXN0YXRpYyBpbmxpbmUgYm9vbCBibGtfbXFfaHdfcXVldWVfbmVlZF9ydW4oc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgpXG4tLVxuYmxvY2svYmxrLW1xLmMtMjMxNS1cdCAqXG5ibG9jay9ibGstbXEuYzoyMzE2Olx0ICogQW5kIHF1ZXVlIHdpbGwgYmUgcmVydW4gaW4gYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpIGlmIGl0IGlzXG5ibG9jay9ibGstbXEuYy0yMzE3LVx0ICogcXVpZXNjZWQuXG4tLVxuYmxvY2svYmxrLW1xLmM9MjMzND12b2lkIGJsa19tcV9ydW5faHdfcXVldWUoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIGJvb2wgYXN5bmMpXG4tLVxuYmxvY2svYmxrLW1xLmMtMjM0OS1cdFx0ICogaW5zZXJ0ZWQgYmVmb3JlIHRoaXMgY2FsbCwgd2hpbGUgYSBjb25jdXJyZW50XG5ibG9jay9ibGstbXEuYzoyMzUwOlx0XHQgKiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkgZHJvcHMgcXVpZXNjZV9kZXB0aCB0byB6ZXJvIGFuZFxuYmxvY2svYmxrLW1xLmMtMjM1MS1cdFx0ICogdGhlbiBydW5zIHRoZSBodyBxdWV1ZXMuICBUaGlzIHNtcF9tYigpIG9yZGVycyB0aGUgcmVxdWVzdFxuLS1cbmJsb2NrL2Jsay1tcS5jLTIzNTQtXHRcdCAqIHNtcF9tYl9fYWZ0ZXJfYXRvbWljKCkgYmV0d2VlbiB0aGUgcXVpZXNjZV9kZXB0aCBzdG9yZSBhbmRcbmJsb2NrL2Jsay1tcS5jOjIzNTU6XHRcdCAqIHRoZSBibGtfbXFfaGN0eF9oYXNfcGVuZGluZygpIGxvYWQgaW4gYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpXG5ibG9jay9ibGstbXEuYy0yMzU2LVx0XHQgKiAoYW5kIGluIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCgpKS4gIFdpdGggYSBmdWxsIGJhcnJpZXJcbi0tXG5ibG9jay9ibGstbXEuYz01MDAxPXN0cnVjdCBlbGV2YXRvcl90YWdzICpibGtfbXFfdXBkYXRlX25yX3JlcXVlc3RzKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLFxuLS1cbmJsb2NrL2Jsay1tcS5jLTUwNTYtXG5ibG9jay9ibGstbXEuYzo1MDU3Olx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcbmJsb2NrL2Jsay1tcS5jLTUwNTgtXHRyZXR1cm4gb2xkX2V0O1xuLS1cbmJsb2NrL2Jsay1zeXNmcy5jPTQwMD1zdGF0aWMgc3NpemVfdCBxdWV1ZV96b25lZF9xZDFfd3JpdGVzX3N0b3JlKHN0cnVjdCBnZW5kaXNrICpkaXNrLFxuLS1cbmJsb2NrL2Jsay1zeXNmcy5jLTQxNy1cdFx0YmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19aT05FRF9RRDFfV1JJVEVTLCBxKTtcbmJsb2NrL2Jsay1zeXNmcy5jOjQxODpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XG5ibG9jay9ibGstc3lzZnMuYy00MTktXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuLS1cbmJsb2NrL2Jsay10aHJvdHRsZS5jPTEzMTg9c3RhdGljIGludCBibGtfdGhyb3RsX2luaXQoc3RydWN0IGdlbmRpc2sgKmRpc2spXG4tLVxuYmxvY2svYmxrLXRocm90dGxlLmMtMTM0NC1cbmJsb2NrL2Jsay10aHJvdHRsZS5jOjEzNDU6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXHUwMDNlcXVldWUpO1xuYmxvY2svYmxrLXRocm90dGxlLmMtMTM0Ni1cdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShkaXNrLVx1MDAzZXF1ZXVlLCBtZW1mbGFncyk7XG4tLVxuYmxvY2svYmxrLXdidC5jPTk5MD1pbnQgd2J0X3NldF9sYXQoc3RydWN0IGdlbmRpc2sgKmRpc2ssIHM2NCB2YWwpXG4tLVxuYmxvY2svYmxrLXdidC5jLTEwMzUtXG5ibG9jay9ibGstd2J0LmM6MTAzNjpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XG5ibG9jay9ibGstd2J0LmMtMTAzNy1vdXQ6XG4tLVxuYmxvY2svZWxldmF0b3IuYz01NjI9c3RhdGljIGludCBlbGV2YXRvcl9zd2l0Y2goc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBlbHZfY2hhbmdlX2N0eCAqY3R4KVxuLS1cbmJsb2NrL2VsZXZhdG9yLmMtNTk2LW91dF91bmZyZWV6ZTpcbmJsb2NrL2VsZXZhdG9yLmM6NTk3Olx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcbmJsb2NrL2VsZXZhdG9yLmMtNTk4LVxuLS1cbmRyaXZlcnMvYmxvY2svYW9lL2FvZWRldi5jPTE5Nz1hb2VkZXZfZG93bmRldihzdHJ1Y3QgYW9lZGV2ICpkKVxuLS1cbmRyaXZlcnMvYmxvY2svYW9lL2FvZWRldi5jLTI0Mi1cdFx0YmxrX21xX3F1aWVzY2VfcXVldWUoZC1cdTAwM2VibGtxKTtcbmRyaXZlcnMvYmxvY2svYW9lL2FvZWRldi5jOjI0MzpcdFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShkLVx1MDAzZWJsa3EpO1xuZHJpdmVycy9ibG9jay9hb2UvYW9lZGV2LmMtMjQ0LVx0XHRibGtfbXFfdW5mcmVlemVfcXVldWUoZC1cdTAwM2VibGtxLCBtZW1mbGFncyk7XG4tLVxuZHJpdmVycy9ibG9jay9hdGFmbG9wLmM9NzQzPXN0YXRpYyBpbnQgZG9fZm9ybWF0KGludCBkcml2ZSwgaW50IHR5cGUsIHN0cnVjdCBhdGFyaV9mb3JtYXRfZGVzY3IgKmRlc2MpXG4tLVxuZHJpdmVycy9ibG9jay9hdGFmbG9wLmMtODE5LW91dDpcbmRyaXZlcnMvYmxvY2svYXRhZmxvcC5jOjgyMDpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XG5kcml2ZXJzL2Jsb2NrL2F0YWZsb3AuYy04MjEtXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuLS1cbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYz04ODk9c3RhdGljIGludCBtdGlwX3F1aWVzY2VfaW8oc3RydWN0IG10aXBfcG9ydCAqcG9ydCwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KVxuLS1cbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy05MTMtXG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmM6OTE0Olx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShwb3J0LVx1MDAzZWRkLVx1MDAzZXF1ZXVlKTtcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy05MTUtXHRyZXR1cm4gYWN0aXZlID8gLUVCVVNZIDogMDtcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy05MTYtZXJyX2ZhdWx0OlxuZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5jOjkxNzpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocG9ydC1cdTAwM2VkZC1cdTAwM2VxdWV1ZSk7XG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMtOTE4LVx0cmV0dXJuIC1FRkFVTFQ7XG4tLVxuZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5jPTI0NjU9c3RhdGljIGludCBtdGlwX3NlcnZpY2VfdGhyZWFkKHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5jLTI1MjgtXG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmM6MjUyOTpcdFx0XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRkLVx1MDAzZXF1ZXVlKTtcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy0yNTMwLVx0XHR9XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0xMDUwPXN0YXRpYyB2b2lkIG5iZF9jbGVhcl9xdWUoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEwNTMtXHRibGtfbXFfdGFnc2V0X2J1c3lfaXRlcihcdTAwMjZuYmQtXHUwMDNldGFnX3NldCwgbmJkX2NsZWFyX3JlcSwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEwNTQ6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKG5iZC1cdTAwM2VkaXNrLVx1MDAzZXF1ZXVlKTtcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTA1NS1cdGRldl9kYmcoZGlza190b19kZXYobmJkLVx1MDAzZWRpc2spLCBcJiMzNDtxdWV1ZSBjbGVhcmVkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3N1bnZkYy5jPTExMTQ9c3RhdGljIHZvaWQgdmRjX3F1ZXVlX2RyYWluKHN0cnVjdCB2ZGNfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL2Jsb2NrL3N1bnZkYy5jLTExMzAtXHRwb3J0LVx1MDAzZWRyYWluID0gMDtcbmRyaXZlcnMvYmxvY2svc3VudmRjLmM6MTEzMTpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XG5kcml2ZXJzL2Jsb2NrL3N1bnZkYy5jLTExMzItXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuLS1cbmRyaXZlcnMvYmxvY2svc3dpbTMuYz04NDA9c3RhdGljIHZvaWQgcmVsZWFzZV9kcml2ZShzdHJ1Y3QgZmxvcHB5X3N0YXRlICpmcylcbi0tXG5kcml2ZXJzL2Jsb2NrL3N3aW0zLmMtODUzLVx0YmxrX21xX3F1aWVzY2VfcXVldWUocSk7XG5kcml2ZXJzL2Jsb2NrL3N3aW0zLmM6ODU0Olx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcbmRyaXZlcnMvYmxvY2svc3dpbTMuYy04NTUtXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0yNzI2PXN0YXRpYyB2b2lkIHVibGtfc3RhcnRfY2FuY2VsKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTI3NDAtXHRcdHVibGtfc2V0X2NhbmNlbGluZyh1YiwgdHJ1ZSk7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6Mjc0MTpcdFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShkaXNrLVx1MDAzZXF1ZXVlKTtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNzQyLVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9Mjk1Mz1zdGF0aWMgdm9pZCB1YmxrX2ZvcmNlX2Fib3J0X2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yOTY2LVx0XHR1YmxrX2dldF9xdWV1ZSh1YiwgaSktXHUwMDNlZm9yY2VfYWJvcnQgPSB0cnVlO1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjI5Njc6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHViLVx1MDAzZXViX2Rpc2stXHUwMDNlcXVldWUpO1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTI5NjgtXHQvKiBXZSBtYXkgaGF2ZSByZXF1ZXVlZCBzb21lIHJxcyBpbiB1YmxrX3F1aWVzY2VfcXVldWUoKSAqL1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01MjIwPXN0YXRpYyBpbnQgdWJsa19jdHJsX3F1aWVzY2VfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyNDYtXHR1YmxrX3NldF9jYW5jZWxpbmcodWIsIHRydWUpO1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUyNDc6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXHUwMDNlcXVldWUpO1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyNDgtXHRtdXRleF91bmxvY2soXHUwMDI2dWItXHUwMDNlY2FuY2VsX211dGV4KTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYz0xNjE5PXN0YXRpYyBpbnQgdmlydGJsa19yZXN0b3JlX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTYyOC1cdHZpcnRpb19kZXZpY2VfcmVhZHkodmRldik7XG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYzoxNjI5Olx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZSh2YmxrLVx1MDAzZWRpc2stXHUwMDNlcXVldWUpO1xuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTYzMC1cbi0tXG5kcml2ZXJzL21kL2RtLXJxLmM9NjQ9dm9pZCBkbV9zdGFydF9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbmRyaXZlcnMvbWQvZG0tcnEuYy02NS17XG5kcml2ZXJzL21kL2RtLXJxLmM6NjY6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHEpO1xuZHJpdmVycy9tZC9kbS1ycS5jLTY3LVx0YmxrX21xX2tpY2tfcmVxdWV1ZV9saXN0KHEpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYz00OTU9dm9pZCBtbWNfcXVldWVfcmVzdW1lKHN0cnVjdCBtbWNfcXVldWUgKm1xKVxuZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jLTQ5Ni17XG5kcml2ZXJzL21tYy9jb3JlL3F1ZXVlLmM6NDk3Olx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShtcS1cdTAwM2VxdWV1ZSk7XG5kcml2ZXJzL21tYy9jb3JlL3F1ZXVlLmMtNDk4LX1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1ZXVlLmM9NTAwPXZvaWQgbW1jX2NsZWFudXBfcXVldWUoc3RydWN0IG1tY19xdWV1ZSAqbXEpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jLTUwOC1cdGlmIChibGtfcXVldWVfcXVpZXNjZWQocSkpXG5kcml2ZXJzL21tYy9jb3JlL3F1ZXVlLmM6NTA5Olx0XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHEpO1xuZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jLTUxMC1cbi0tXG5kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jPTQwND1pbnQgZGVsX210ZF9ibGt0cmFuc19kZXYoc3RydWN0IG10ZF9ibGt0cmFuc19kZXYgKm9sZClcbi0tXG5kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jLTQyNS1cdGJsa19tcV9xdWllc2NlX3F1ZXVlKG9sZC1cdTAwM2VycSk7XG5kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jOjQyNjpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUob2xkLVx1MDAzZXJxKTtcbmRyaXZlcnMvbXRkL210ZF9ibGtkZXZzLmMtNDI3LVx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKG9sZC1cdTAwM2VycSwgbWVtZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYz01MzgwPXZvaWQgbnZtZV91bnF1aWVzY2VfYWRtaW5fcXVldWUoc3RydWN0IG52bWVfY3RybCAqY3RybClcbi0tXG5kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMtNTM4Mi1cdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTlZNRV9DVFJMX0FETUlOX1FfU1RPUFBFRCwgXHUwMDI2Y3RybC1cdTAwM2VmbGFncykpXG5kcml2ZXJzL252bWUvaG9zdC9jb3JlLmM6NTM4MzpcdFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShjdHJsLVx1MDAzZWFkbWluX3EpO1xuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jLTUzODQtfVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jPTI5MzI9dm9pZCBzY3NpX3N0YXJ0X3F1ZXVlKHN0cnVjdCBzY3NpX2RldmljZSAqc2Rldilcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYy0yOTM0LVx0aWYgKGNtcHhjaGcoXHUwMDI2c2Rldi1cdTAwM2VxdWV1ZV9zdG9wcGVkLCAxLCAwKSlcbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jOjI5MzU6XHRcdGJsa19tcV91bnF1aWVzY2VfcXVldWUoc2Rldi1cdTAwM2VyZXF1ZXN0X3F1ZXVlKTtcbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jLTI5MzYtfVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jPTI5Mzg9c3RhdGljIHZvaWQgc2NzaV9zdG9wX3F1ZXVlKHN0cnVjdCBzY3NpX2RldmljZSAqc2Rldilcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYy0yOTQxLVx0ICogVGhlIGF0b21pYyB2YXJpYWJsZSBvZiAtXHUwMDNlcXVldWVfc3RvcHBlZCBjb3ZlcnMgdGhhdFxuZHJpdmVycy9zY3NpL3Njc2lfbGliLmM6Mjk0MjpcdCAqIGJsa19tcV9xdWllc2NlX3F1ZXVlKiBpcyBiYWxhbmNlZCB3aXRoIGJsa19tcV91bnF1aWVzY2VfcXVldWUuXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYy0yOTQzLVx0ICpcbi0tXG5pbmNsdWRlL2xpbnV4L2Jsay1tcS5oPTk0MD12b2lkIGJsa19tcV91bnF1aWVzY2VfdGFnc2V0KHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0KTtcbmluY2x1ZGUvbGludXgvYmxrLW1xLmg6OTQxOnZvaWQgYmxrX21xX3VucXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSk7XG5pbmNsdWRlL2xpbnV4L2Jsay1tcS5oLTk0Mi12b2lkIGJsa19tcV9kZWxheV9ydW5faHdfcXVldWUoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIHVuc2lnbmVkIGxvbmcgbXNlY3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODY4CgkJCQkJCQlvdXRwdXQ6IDEzMAoJCQkJCQkJdGhvdWdodHM6IDk1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJsb2NrIExheWVyIFF1aWVzY2UgQ2hhbmdlcyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB3aGljaCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgYmxvY2sgbGF5ZXImIzM5O3MgcXVpZXNjZSBtZWNoYW5pc20uIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBtaW5vciB0d2VhazsgaXQmIzM5O3MgYSBkZWVwIGRpdmUgaW50byBob3cgcXVpZXNjZW5jZSBpcyBoYW5kbGVkLCB3aGljaCBpcyBjcnVjaWFsIGZvciBhIHdob2xlIGhvc3Qgb2YgZHJpdmVycyDigJMgZXZlcnl0aGluZyBmcm9tIHZpcnRpb19ibGsgYW5kIFNDU0kgdG8gTlZNZSBhbmQgZXZlbiBNTUMuIEdpdmVuIHRoZSBicm9hZCBpbXBhY3QsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGhvbmUgaW4gb24gdGhlIGNvcmUgZnVuY3Rpb25zIGludm9sdmVkLiBTcGVjaWZpY2FsbHksIEkgd2FzIGNvbnNpZGVyaW5nOgoKKiAgIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgCiogICBgYmxrX21xX3VucXVpZXNjZV9xdWV1ZWAKKiAgIGBibGtfbXFfcnVuX2h3X3F1ZXVlYAoKTXkgZmlyc3QgaW5jbGluYXRpb24gd2FzIHRvIGV4YW1pbmUgaWYgYGJsa19tcV9ydW5faHdfcXVldWVgIHdhcyBhIHBhcnRpY3VsYXJseSBob3QtcGF0aCBmdW5jdGlvbiBiZWNhdXNlIGl0IGlzIGhlYXZpbHkgdXNlZCBieSBibG9jayBkZXZpY2VzLiBJdCYjMzk7cyBpbnZva2VkIGZyZXF1ZW50bHkgdG8gbWFuYWdlIHRoZSBoYXJkd2FyZSBxdWV1ZXMuIEhvd2V2ZXIsIGFmdGVyIGZ1cnRoZXIgcmV2aWV3LCBJIHJlYWxpemVkIHRoYXQgZm9jdXNpbmcgZXhjbHVzaXZlbHkgb24gYGJsa19tcV9ydW5faHdfcXVldWVgIG1pZ2h0IGxlYWQgdG8gYSBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb24sIGFzIGl0JiMzOTtzIGNhbGxlZCBmb3IgcHJldHR5IG11Y2ggZXZlcnkgSS9PIG9wZXJhdGlvbi4gTm9ybWFsIGJsb2NrIEkvT3MgYXJlIGFscmVhZHkgYSBjb21tb24gY2FzZSBmb3IgdGhlIGZ1enplci4KClRoZSBwYXRjaCBtb2RpZmllcyBgYmxrX21xX3J1bl9od19xdWV1ZWAgdG8gaW5jbHVkZSBgc21wX21iKClgIGFuZCByZW1vdmUgYHNwaW5fbG9ja19pcnFzYXZlYC4gSG93ZXZlciwgSSByZWFsaXplZCBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YCBhbmQgYGJsa19tcV91bnF1aWVzY2VfcXVldWVgIGFyZSB0aGUgbW9yZSBwZXJ0aW5lbnQgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGZvciB0aGlzIHBhdGNoLiBXaGlsZSBsZXNzIGZyZXF1ZW50bHkgY2FsbGVkLCB0aGV5IGFyZSBrZXkgdG8gdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyB0aGF0IHRoaXMgcGF0Y2ggbW9kaWZpZXMuIFF1aWVzY2UgaXMgY2FsbGVkIHdoZW4gcXVpZXNjaW5nIGEgcXVldWUgYW5kIHVucXVpZXNjZSB3aGVuIHVucXVpZXNjaW5nIGEgcXVldWUuCgpBY3R1YWxseSwgdGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgYGJsa19xdWV1ZV9xdWllc2NlZGAsIHdoaWNoIGlzIGlubGluZSwgc28gc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgY292ZXJlZCBpZiB0aGUgY29kZSBpcyByZWFjaGVkLgoKSSB0b29rIGEgcXVpY2sgbG9vayBhdCBjb25maWd1cmF0aW9ucyB0byBzZWUgaWYgd2UgbmVlZGVkIGFueXRoaW5nIHNwZWNpZmljLiBUdXJucyBvdXQgd2Ugb25seSBuZWVkIGBDT05GSUdfQkxPQ0tgLCB3aGljaCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGFuZCB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzIHNpZ25pZmljYW50bHkuIFdlIGRvbiYjMzk7dCBoYXZlIHRvIHdvcnJ5IGFib3V0IGZvcmNpbmcgY29uZmlndXJhdGlvbnMuCgpMb29raW5nIGF0IGRyaXZlcnMsIGl0IGxvb2tzIGxpa2UgYHZpcnRpb19ibGtgLCBgc2NzaWAsIGBudm1lYCwgYW5kIGB1YmxrYCB1dGlsaXplIHRoZSBuZXcgcXVpZXNjZSBjb2RlIHByZXR0eSBoZWF2aWx5IGR1cmluZyBmcmVlemUvcmVzdG9yZSwgYHNjc2lfc3RvcF9xdWV1ZWAsIGBzY3NpX3N0YXJ0X3F1ZXVlYCwgYW5kIG90aGVyIG9wZXJhdGlvbnMuIFdlIGFscmVhZHkgaGF2ZSBtYW55IGJsb2NrIGRyaXZlcnMgZW5hYmxlZCBpbiBzeXpib3QsIHNvIHdlIHNob3VsZCBiZSBnb29kLgoKU28sIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byBteSBmb2N1cyBzeW1ib2xzLiBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAgYW5kIGBibGtfbXFfdW5xdWllc2NlX3F1ZXVlYC4gVGhlc2UgYXJlIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyB0b3VjaGVkIGJ5IHRoZSBjaGFuZ2VzLCBhbmQgd2hpbGUgYGJsa19tcV9ydW5faHdfcXVldWVgIGlzIG1vZGlmaWVkLCBpdCYjMzk7cyBjYWxsZWQgZm9yIGV2ZXJ5IElPIG9wZXJhdGlvbi4KCkkgbmVlZCB0byBjb25maXJtIHRoYXQgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAgYW5kIGBibGtfbXFfdW5xdWllc2NlX3F1ZXVlYCBhcmUgZXhwb3J0ZWQgd2hpY2ggdGhleSBhcmUsIHNvIHRoYXQmIzM5O3MgZ29vZC4KCkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbHRlcmluZyB0aGUgc3luY2hyb25pemF0aW9uIGJldHdlZW4gcXVldWUgcXVpZXNjaW5nL3VucXVpZXNjaW5nIGFuZCBoYXJkd2FyZSBxdWV1ZSBydW5zLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHZhcmlvdXMgYmxvY2sgZGV2aWNlIG9wZXJhdGlvbnMuIFRoaXMgY29kZSB3aWxsIG5lZWQgYSB0aG9yb3VnaCBmdXp6aW5nLgoKKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5sb2NrLWJhc2VkIHF1ZXVlIHF1aWVzY2UgdHJhY2tpbmcgd2l0aCBhbiBhdG9taWMgY291bnRlciBhbmQgbWVtb3J5IGJhcnJpZXJzIGluIHRoZSBjb3JlIGJsb2NrIGxheWVyIChgYmxrLW1xLmNgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBxdWV1ZSBxdWllc2NpbmcvdW5xdWllc2NpbmcgYW5kIGhhcmR3YXJlIHF1ZXVlIHJ1bnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBibG9jayBkZXZpY2Ugb3BlcmF0aW9ucyAoZS5nLiwgZGV2aWNlIHN1c3BlbmQvcmVzdW1lLCBlcnJvciBoYW5kbGluZykuCgoqKldvcnRoRnV6emluZzoqKiB0cnVlCgoqKkVuYWJsZUNvbmZpZ3M6KiogXFsgXQoKKipGb2N1c1N5bWJvbHM6KiogXFsmIzM0O2Jsa1xfbXFcX3F1aWVzY2VcX3F1ZXVlXF9ub3dhaXQmIzM0OywgJiMzNDtibGtcX21xXF91bnF1aWVzY2VcX3F1ZXVlJiMzNDtdCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQmIzM0OywKICAgICYjMzQ7YmxrX21xX3VucXVpZXNjZV9xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBzcGlubG9jay1iYXNlZCBxdWV1ZSBxdWllc2NlIHRyYWNraW5nIHdpdGggYW4gYXRvbWljIGNvdW50ZXIgYW5kIG1lbW9yeSBiYXJyaWVycyBpbiB0aGUgY29yZSBibG9jayBsYXllciAoYmxrLW1xLmMpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHF1ZXVlIHF1aWVzY2luZy91bnF1aWVzY2luZyBhbmQgaGFyZHdhcmUgcXVldWUgcnVucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIChlLmcuLCBkZXZpY2Ugc3VzcGVuZC9yZXN1bWUsIGVycm9yIGhhbmRsaW5nKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQmIzM0OywKICAgICYjMzQ7YmxrX21xX3VucXVpZXNjZV9xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBzcGlubG9jay1iYXNlZCBxdWV1ZSBxdWllc2NlIHRyYWNraW5nIHdpdGggYW4gYXRvbWljIGNvdW50ZXIgYW5kIG1lbW9yeSBiYXJyaWVycyBpbiB0aGUgY29yZSBibG9jayBsYXllciAoYmxrLW1xLmMpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHF1ZXVlIHF1aWVzY2luZy91bnF1aWVzY2luZyBhbmQgaGFyZHdhcmUgcXVldWUgcnVucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIChlLmcuLCBkZXZpY2Ugc3VzcGVuZC9yZXN1bWUsIGVycm9yIGhhbmRsaW5nKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjQ2OjI2LjI3MTg4NTUxN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODUwNzUwNjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRcIixcbiAgICBcImJsa19tcV91bnF1aWVzY2VfcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBzcGlubG9jay1iYXNlZCBxdWV1ZSBxdWllc2NlIHRyYWNraW5nIHdpdGggYW4gYXRvbWljIGNvdW50ZXIgYW5kIG1lbW9yeSBiYXJyaWVycyBpbiB0aGUgY29yZSBibG9jayBsYXllciAoYmxrLW1xLmMpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHF1ZXVlIHF1aWVzY2luZy91bnF1aWVzY2luZyBhbmQgaGFyZHdhcmUgcXVldWUgcnVucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIChlLmcuLCBkZXZpY2Ugc3VzcGVuZC9yZXN1bWUsIGVycm9yIGhhbmRsaW5nKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDY6MjYuMjcxODkyMzc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTE3MDgxOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyZDI3NGYyMGUzMzkxOTQwY2UyMzFiNTBkYzQyM2ZjMDU4YzM0OWIxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDkgMjI6NDY6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWNvcmUuYyBiL2Jsb2NrL2Jsay1jb3JlLmNcXG5pbmRleCAzNjU2NDEyNjZjOWU4Mi4uNzk2Njk5NTdmNDdlNDcgMTAwNjQ0XFxuLS0tIGEvYmxvY2svYmxrLWNvcmUuY1xcbisrKyBiL2Jsb2NrL2Jsay1jb3JlLmNcXG5AQCAtNDc3LDYgKzQ3Nyw3IEBAIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpibGtfYWxsb2NfcXVldWUoc3RydWN0IHF1ZXVlX2xpbWl0cyAqbGltLCBpbnQgbm9kZV9pZClcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2cS1cXHUwMDNlbGltaXRzX2xvY2spO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZxLVxcdTAwM2VycV9xb3NfbXV0ZXgpO1xcbiBcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2cS1cXHUwMDNlcXVldWVfbG9jayk7XFxuK1xcdGF0b21pY19zZXQoXFx1MDAyNnEtXFx1MDAzZXF1aWVzY2VfZGVwdGgsIDApO1xcbiBcXG4gXFx0aW5pdF93YWl0cXVldWVfaGVhZChcXHUwMDI2cS1cXHUwMDNlbXFfZnJlZXplX3dxKTtcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2cS1cXHUwMDNlbXFfZnJlZXplX2xvY2spO1xcbmRpZmYgLS1naXQgYS9ibG9jay9ibGstbXEtZGVidWdmcy5jIGIvYmxvY2svYmxrLW1xLWRlYnVnZnMuY1xcbmluZGV4IDY3NTRkOGY5NDQ5YzEwLi41NjdlZWRiYmY1MGZjOCAxMDA2NDRcXG4tLS0gYS9ibG9jay9ibGstbXEtZGVidWdmcy5jXFxuKysrIGIvYmxvY2svYmxrLW1xLWRlYnVnZnMuY1xcbkBAIC05Myw3ICs5Myw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBibGtfcXVldWVfZmxhZ19uYW1lW10gPSB7XFxuIFxcdFFVRVVFX0ZMQUdfTkFNRShJTklUX0RPTkUpLFxcbiBcXHRRVUVVRV9GTEFHX05BTUUoU1RBVFMpLFxcbiBcXHRRVUVVRV9GTEFHX05BTUUoUkVHSVNURVJFRCksXFxuLVxcdFFVRVVFX0ZMQUdfTkFNRShRVUlFU0NFRCksXFxuIFxcdFFVRVVFX0ZMQUdfTkFNRShSUV9BTExPQ19USU1FKSxcXG4gXFx0UVVFVUVfRkxBR19OQU1FKEhDVFhfQUNUSVZFKSxcXG4gXFx0UVVFVUVfRkxBR19OQU1FKFNRX1NDSEVEKSxcXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLmMgYi9ibG9jay9ibGstbXEuY1xcbmluZGV4IDJjODUwMzMwYTMyYmM2Li4xODZiYmNjOGI5Mjc1OSAxMDA2NDRcXG4tLS0gYS9ibG9jay9ibGstbXEuY1xcbisrKyBiL2Jsb2NrL2Jsay1tcS5jXFxuQEAgLTI2MCwxMiArMjYwLDE2IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV91bmZyZWV6ZV9xdWV1ZV9ub25fb3duZXIpO1xcbiAgKi9cXG4gdm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXFxuIHtcXG4tXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tXFxuLVxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZxLVxcdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XFxuLVxcdGlmICghcS1cXHUwMDNlcXVpZXNjZV9kZXB0aCsrKVxcbi1cXHRcXHRibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19RVUlFU0NFRCwgcSk7XFxuLVxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnEtXFx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcXG4rXFx0YXRvbWljX2luYyhcXHUwMDI2cS1cXHUwMDNlcXVpZXNjZV9kZXB0aCk7XFxuK1xcdC8qXFxuK1xcdCAqIFB1Ymxpc2ggdGhlIHF1aWVzY2VfZGVwdGggaW5jcmVtZW50LiAgQ2FsbGVycyBtdXN0IGZvbGxvdyB0aGlzXFxuK1xcdCAqIHdpdGggYmxrX21xX3dhaXRfcXVpZXNjZV9kb25lKCkgKHN5bmNocm9uaXplX3NyY3UoKS9cXG4rXFx0ICogc3luY2hyb25pemVfcmN1KCkpLCB3aGljaCBpcyB3aGF0IGFjdHVhbGx5IGd1YXJhbnRlZXMgdGhhdCBhbnlcXG4rXFx0ICogaW4tZmxpZ2h0IGRpc3BhdGNoZXIgaGFzIGZpbmlzaGVkIGFuZCB0aGF0IGxhdGVyIGRpc3BhdGNoZXJzIHNlZVxcbitcXHQgKiB0aGUgcXVldWUgYXMgcXVpZXNjZWQ7IHRoZSBiYXJyaWVyIGhlcmUgb25seSBrZWVwcyB0aGlzIGhlbHBlclxcbitcXHQgKiBzZWxmLWNvbnRhaW5lZCBmb3IgdGhlIGZldyBjYWxsZXJzIHRoYXQgZGVmZXIgdGhlIHdhaXQuXFxuK1xcdCAqL1xcbitcXHRzbXBfbWJfX2FmdGVyX2F0b21pYygpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCk7XFxuIFxcbkBAIC0zMTQsMjEgKzMxOCwzMCBAQCBFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfcXVpZXNjZV9xdWV1ZSk7XFxuICAqL1xcbiB2b2lkIGJsa19tcV91bnF1aWVzY2VfcXVldWUoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXFxuIHtcXG4tXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tXFx0Ym9vbCBydW5fcXVldWUgPSBmYWxzZTtcXG4rXFx0aW50IGRlcHRoO1xcbiBcXG4tXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnEtXFx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcXG4tXFx0aWYgKFdBUk5fT05fT05DRShxLVxcdTAwM2VxdWllc2NlX2RlcHRoIFxcdTAwM2M9IDApKSB7XFxuLVxcdFxcdDtcXG4tXFx0fSBlbHNlIGlmICghLS1xLVxcdTAwM2VxdWllc2NlX2RlcHRoKSB7XFxuLVxcdFxcdGJsa19xdWV1ZV9mbGFnX2NsZWFyKFFVRVVFX0ZMQUdfUVVJRVNDRUQsIHEpO1xcbi1cXHRcXHRydW5fcXVldWUgPSB0cnVlO1xcbi1cXHR9XFxuLVxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnEtXFx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcXG4rXFx0ZGVwdGggPSBhdG9taWNfZGVjX2lmX3Bvc2l0aXZlKFxcdTAwMjZxLVxcdTAwM2VxdWllc2NlX2RlcHRoKTtcXG4rXFx0aWYgKFdBUk5fT05fT05DRShkZXB0aCBcXHUwMDNjIDApKVxcbitcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHQvKiBkaXNwYXRjaCByZXF1ZXN0cyB3aGljaCBhcmUgaW5zZXJ0ZWQgZHVyaW5nIHF1aWVzY2luZyAqL1xcbi1cXHRpZiAocnVuX3F1ZXVlKVxcbitcXHRpZiAoZGVwdGggPT0gMCkge1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBGdWxsIGJhcnJpZXIgYmV0d2VlbiB0aGUgcXVpZXNjZV9kZXB0aCBzdG9yZSBhYm92ZSBhbmQgdGhlXFxuK1xcdFxcdCAqIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgbG9hZCBkb25lIGZyb20gYmxrX21xX3J1bl9od19xdWV1ZXMoKVxcbitcXHRcXHQgKiBiZWxvdy4gIFRoaXMgcGFpcnMgd2l0aCB0aGUgc21wX21iKCkgYmVmb3JlIHRoZSByZXF1aWVzY2VcXG4rXFx0XFx0ICogcmUtY2hlY2sgaW4gYmxrX21xX3J1bl9od19xdWV1ZSgpOiBvZiB0aGUgdHdvIHJhY2luZyBDUFVzXFxuK1xcdFxcdCAqIChvbmUgaW5zZXJ0aW5nIGEgcmVxdWVzdCBhbmQgdGhlbiByZS1jaGVja2luZyBxdWllc2NlIHN0YXRlLFxcbitcXHRcXHQgKiB0aGUgb3RoZXIgdW5xdWllc2NpbmcgaGVyZSBhbmQgdGhlbiBjaGVja2luZyBmb3IgcGVuZGluZ1xcbitcXHRcXHQgKiB3b3JrKSBhdCBsZWFzdCBvbmUgc2VlcyB0aGUgb3RoZXIncyBzdG9yZSwgc28gdGhlIGh3IHF1ZXVlXFxuK1xcdFxcdCAqIGlzIG5vdCBsZWZ0IHdpdGggYSByZXF1ZXN0IHN0cmFuZGVkIG9uIGEgbm93LXJ1bm5pbmcgcXVldWUuXFxuK1xcdFxcdCAqXFxuK1xcdFxcdCAqIGF0b21pY19kZWNfaWZfcG9zaXRpdmUoKSBhbHJlYWR5IG9yZGVycyB0aGUgZGVjcmVtZW50IG9uXFxuK1xcdFxcdCAqIHN1Y2Nlc3MsIGJ1dCBzcGVsbCB0aGUgYmFycmllciBvdXQgc28gdGhlIHBhaXJpbmcgaXMgb2J2aW91cy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7XFxuK1xcdFxcdC8qIGRpc3BhdGNoIHJlcXVlc3RzIHdoaWNoIGFyZSBpbnNlcnRlZCBkdXJpbmcgcXVpZXNjaW5nICovXFxuIFxcdFxcdGJsa19tcV9ydW5faHdfcXVldWVzKHEsIHRydWUpO1xcbitcXHR9XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3VucXVpZXNjZV9xdWV1ZSk7XFxuIFxcbkBAIC0yMzMxLDE3ICsyMzQ0LDIxIEBAIHZvaWQgYmxrX21xX3J1bl9od19xdWV1ZShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgYm9vbCBhc3luYylcXG4gXFxuIFxcdG5lZWRfcnVuID0gYmxrX21xX2h3X3F1ZXVlX25lZWRfcnVuKGhjdHgpO1xcbiBcXHRpZiAoIW5lZWRfcnVuKSB7XFxuLVxcdFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLVxcbiBcXHRcXHQvKlxcbi1cXHRcXHQgKiBTeW5jaHJvbml6ZSB3aXRoIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKSwgYmVjYXVzZSB3ZSBjaGVja1xcbi1cXHRcXHQgKiBpZiBodyBxdWV1ZSBpcyBxdWllc2NlZCBsb2NrbGVzc2x5IGFib3ZlLCB3ZSBuZWVkIHRoZSB1c2VcXG4tXFx0XFx0ICogLVxcdTAwM2VxdWV1ZV9sb2NrIHRvIG1ha2Ugc3VyZSB3ZSBzZWUgdGhlIHVwLXRvLWRhdGUgc3RhdHVzIHRvXFxuLVxcdFxcdCAqIG5vdCBtaXNzIHJlcnVubmluZyB0aGUgaHcgcXVldWUuXFxuK1xcdFxcdCAqIFJlLWNoZWNrIGFmdGVyIGEgZnVsbCBiYXJyaWVyLiAgQSByZXF1ZXN0IG1heSBoYXZlIGJlZW5cXG4rXFx0XFx0ICogaW5zZXJ0ZWQgYmVmb3JlIHRoaXMgY2FsbCwgd2hpbGUgYSBjb25jdXJyZW50XFxuK1xcdFxcdCAqIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKSBkcm9wcyBxdWllc2NlX2RlcHRoIHRvIHplcm8gYW5kXFxuK1xcdFxcdCAqIHRoZW4gcnVucyB0aGUgaHcgcXVldWVzLiAgVGhpcyBzbXBfbWIoKSBvcmRlcnMgdGhlIHJlcXVlc3RcXG4rXFx0XFx0ICogaW5zZXJ0ICh0aGUgc3RvcmUgdGhhdCBtYWtlcyBibGtfbXFfaGN0eF9oYXNfcGVuZGluZygpIHRydWUpXFxuK1xcdFxcdCAqIGJlZm9yZSB0aGUgcmVxdWllc2NlLXN0YXRlIGxvYWQgYmVsb3csIGFuZCBwYWlycyB3aXRoIHRoZVxcbitcXHRcXHQgKiBzbXBfbWJfX2FmdGVyX2F0b21pYygpIGJldHdlZW4gdGhlIHF1aWVzY2VfZGVwdGggc3RvcmUgYW5kXFxuK1xcdFxcdCAqIHRoZSBibGtfbXFfaGN0eF9oYXNfcGVuZGluZygpIGxvYWQgaW4gYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpXFxuK1xcdFxcdCAqIChhbmQgaW4gYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkpLiAgV2l0aCBhIGZ1bGwgYmFycmllclxcbitcXHRcXHQgKiBvbiBib3RoIHNpZGVzLCBhdCBsZWFzdCBvbmUgQ1BVIG9ic2VydmVzIHRoZSBvdGhlcidzIHN0b3JlLFxcbitcXHRcXHQgKiBzbyB0aGUgcXVldWUgaXMgbm90IGxlZnQgYm90aCB1bi1xdWllc2NlZCBhbmQgbm90IHJlcnVuLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhjdHgtXFx1MDAzZXF1ZXVlLVxcdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XFxuK1xcdFxcdHNtcF9tYigpO1xcbiBcXHRcXHRuZWVkX3J1biA9IGJsa19tcV9od19xdWV1ZV9uZWVkX3J1bihoY3R4KTtcXG4tXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aGN0eC1cXHUwMDNlcXVldWUtXFx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcXG4gXFxuIFxcdFxcdGlmICghbmVlZF9ydW4pXFxuIFxcdFxcdFxcdHJldHVybjtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGtkZXYuaCBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmhcXG5pbmRleCBkYmI1NDljZGZiNzc4Yi4uOWU0OWFiOWM3OGFlMGMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9ibGtkZXYuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmhcXG5AQCAtNTI1LDcgKzUyNSw4IEBAIHN0cnVjdCByZXF1ZXN0X3F1ZXVlIHtcXG4gXFxuIFxcdHNwaW5sb2NrX3RcXHRcXHRxdWV1ZV9sb2NrO1xcbiBcXG4tXFx0aW50XFx0XFx0XFx0cXVpZXNjZV9kZXB0aDtcXG4rXFx0LyogQXRvbWljIHF1aWVzY2UgZGVwdGggLSBhbHNvIHNlcnZlcyBhcyBxdWllc2NlZCBpbmRpY2F0b3IgKGRlcHRoIFxcdTAwM2UgMCkgKi9cXG4rXFx0YXRvbWljX3RcXHRcXHRxdWllc2NlX2RlcHRoO1xcbiBcXG4gXFx0c3RydWN0IGdlbmRpc2tcXHRcXHQqZGlzaztcXG4gXFxuQEAgLTY3MCw3ICs2NzEsNiBAQCBlbnVtIHtcXG4gXFx0UVVFVUVfRkxBR19JTklUX0RPTkUsXFx0XFx0LyogcXVldWUgaXMgaW5pdGlhbGl6ZWQgKi9cXG4gXFx0UVVFVUVfRkxBR19TVEFUUyxcXHRcXHQvKiB0cmFjayBJTyBzdGFydCBhbmQgY29tcGxldGlvbiB0aW1lcyAqL1xcbiBcXHRRVUVVRV9GTEFHX1JFR0lTVEVSRUQsXFx0XFx0LyogcXVldWUgaGFzIGJlZW4gcmVnaXN0ZXJlZCB0byBhIGRpc2sgKi9cXG4tXFx0UVVFVUVfRkxBR19RVUlFU0NFRCxcXHRcXHQvKiBxdWV1ZSBoYXMgYmVlbiBxdWllc2NlZCAqL1xcbiBcXHRRVUVVRV9GTEFHX1JRX0FMTE9DX1RJTUUsXFx0LyogcmVjb3JkIHJxLVxcdTAwM2VhbGxvY190aW1lX25zICovXFxuIFxcdFFVRVVFX0ZMQUdfSENUWF9BQ1RJVkUsXFx0XFx0LyogYXQgbGVhc3Qgb25lIGJsay1tcSBoY3R4IGlzIGFjdGl2ZSAqL1xcbiBcXHRRVUVVRV9GTEFHX1NRX1NDSEVELFxcdFxcdC8qIHNpbmdsZSBxdWV1ZSBzdHlsZSBpbyBkaXNwYXRjaCAqL1xcbkBAIC03MDgsNyArNzA4LDEwIEBAIHZvaWQgYmxrX3F1ZXVlX2ZsYWdfY2xlYXIodW5zaWduZWQgaW50IGZsYWcsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKTtcXG4gI2RlZmluZSBibGtfbm9yZXRyeV9yZXF1ZXN0KHJxKSBcXFxcXFxuIFxcdCgocnEpLVxcdTAwM2VjbWRfZmxhZ3MgXFx1MDAyNiAoUkVRX0ZBSUxGQVNUX0RFVnxSRVFfRkFJTEZBU1RfVFJBTlNQT1JUfCBcXFxcXFxuIFxcdFxcdFxcdCAgICAgUkVRX0ZBSUxGQVNUX0RSSVZFUikpXFxuLSNkZWZpbmUgYmxrX3F1ZXVlX3F1aWVzY2VkKHEpXFx0dGVzdF9iaXQoUVVFVUVfRkxBR19RVUlFU0NFRCwgXFx1MDAyNihxKS1cXHUwMDNlcXVldWVfZmxhZ3MpXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBibGtfcXVldWVfcXVpZXNjZWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXFxuK3tcXG4rXFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZxLVxcdTAwM2VxdWllc2NlX2RlcHRoKSBcXHUwMDNlIDA7XFxuK31cXG4gI2RlZmluZSBibGtfcXVldWVfcG1fb25seShxKVxcdGF0b21pY19yZWFkKFxcdTAwMjYocSktXFx1MDAzZXBtX29ubHkpXFxuICNkZWZpbmUgYmxrX3F1ZXVlX3JlZ2lzdGVyZWQocSlcXHR0ZXN0X2JpdChRVUVVRV9GTEFHX1JFR0lTVEVSRUQsIFxcdTAwMjYocSktXFx1MDAzZXF1ZXVlX2ZsYWdzKVxcbiAjZGVmaW5lIGJsa19xdWV1ZV9zcV9zY2hlZChxKVxcdHRlc3RfYml0KFFVRVVFX0ZMQUdfU1FfU0NIRUQsIFxcdTAwMjYocSktXFx1MDAzZXF1ZXVlX2ZsYWdzKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0NjoyNi45MjQzNDYyMzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNzg1NTAzNzc5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRcIixcbiAgICBcImJsa19tcV91bnF1aWVzY2VfcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBzcGlubG9jay1iYXNlZCBxdWV1ZSBxdWllc2NlIHRyYWNraW5nIHdpdGggYW4gYXRvbWljIGNvdW50ZXIgYW5kIG1lbW9yeSBiYXJyaWVycyBpbiB0aGUgY29yZSBibG9jayBsYXllciAoYmxrLW1xLmMpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHF1ZXVlIHF1aWVzY2luZy91bnF1aWVzY2luZyBhbmQgaGFyZHdhcmUgcXVldWUgcnVucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIChlLmcuLCBkZXZpY2Ugc3VzcGVuZC9yZXN1bWUsIGVycm9yIGhhbmRsaW5nKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZDI3NGYyMGUzMzkxOTQwY2UyMzFiNTBkYzQyM2ZjMDU4YzM0OWIxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAyMjo0NjoyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1jb3JlLmMgYi9ibG9jay9ibGstY29yZS5jXG5pbmRleCAzNjU2NDEyNjZjOWU4Mi4uNzk2Njk5NTdmNDdlNDcgMTAwNjQ0XG4tLS0gYS9ibG9jay9ibGstY29yZS5jXG4rKysgYi9ibG9jay9ibGstY29yZS5jXG5AQCAtNDc3LDYgKzQ3Nyw3IEBAIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpibGtfYWxsb2NfcXVldWUoc3RydWN0IHF1ZXVlX2xpbWl0cyAqbGltLCBpbnQgbm9kZV9pZClcbiBcdG11dGV4X2luaXQoXHUwMDI2cS1cdTAwM2VsaW1pdHNfbG9jayk7XG4gXHRtdXRleF9pbml0KFx1MDAyNnEtXHUwMDNlcnFfcW9zX211dGV4KTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNnEtXHUwMDNlcXVldWVfbG9jayk7XG4rXHRhdG9taWNfc2V0KFx1MDAyNnEtXHUwMDNlcXVpZXNjZV9kZXB0aCwgMCk7XG4gXG4gXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNnEtXHUwMDNlbXFfZnJlZXplX3dxKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2cS1cdTAwM2VtcV9mcmVlemVfbG9jayk7XG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLWRlYnVnZnMuYyBiL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmNcbmluZGV4IDY3NTRkOGY5NDQ5YzEwLi41NjdlZWRiYmY1MGZjOCAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmNcbisrKyBiL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmNcbkBAIC05Myw3ICs5Myw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBibGtfcXVldWVfZmxhZ19uYW1lW10gPSB7XG4gXHRRVUVVRV9GTEFHX05BTUUoSU5JVF9ET05FKSxcbiBcdFFVRVVFX0ZMQUdfTkFNRShTVEFUUyksXG4gXHRRVUVVRV9GTEFHX05BTUUoUkVHSVNURVJFRCksXG4tXHRRVUVVRV9GTEFHX05BTUUoUVVJRVNDRUQpLFxuIFx0UVVFVUVfRkxBR19OQU1FKFJRX0FMTE9DX1RJTUUpLFxuIFx0UVVFVUVfRkxBR19OQU1FKEhDVFhfQUNUSVZFKSxcbiBcdFFVRVVFX0ZMQUdfTkFNRShTUV9TQ0hFRCksXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLmMgYi9ibG9jay9ibGstbXEuY1xuaW5kZXggMmM4NTAzMzBhMzJiYzYuLjE4NmJiY2M4YjkyNzU5IDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLW1xLmNcbisrKyBiL2Jsb2NrL2Jsay1tcS5jXG5AQCAtMjYwLDEyICsyNjAsMTYgQEAgRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3VuZnJlZXplX3F1ZXVlX25vbl9vd25lcik7XG4gICovXG4gdm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXG4ge1xuLVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi1cbi1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnEtXHUwMDNlcXVldWVfbG9jaywgZmxhZ3MpO1xuLVx0aWYgKCFxLVx1MDAzZXF1aWVzY2VfZGVwdGgrKylcbi1cdFx0YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfUVVJRVNDRUQsIHEpO1xuLVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZxLVx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcbitcdGF0b21pY19pbmMoXHUwMDI2cS1cdTAwM2VxdWllc2NlX2RlcHRoKTtcbitcdC8qXG4rXHQgKiBQdWJsaXNoIHRoZSBxdWllc2NlX2RlcHRoIGluY3JlbWVudC4gIENhbGxlcnMgbXVzdCBmb2xsb3cgdGhpc1xuK1x0ICogd2l0aCBibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUoKSAoc3luY2hyb25pemVfc3JjdSgpL1xuK1x0ICogc3luY2hyb25pemVfcmN1KCkpLCB3aGljaCBpcyB3aGF0IGFjdHVhbGx5IGd1YXJhbnRlZXMgdGhhdCBhbnlcbitcdCAqIGluLWZsaWdodCBkaXNwYXRjaGVyIGhhcyBmaW5pc2hlZCBhbmQgdGhhdCBsYXRlciBkaXNwYXRjaGVycyBzZWVcbitcdCAqIHRoZSBxdWV1ZSBhcyBxdWllc2NlZDsgdGhlIGJhcnJpZXIgaGVyZSBvbmx5IGtlZXBzIHRoaXMgaGVscGVyXG4rXHQgKiBzZWxmLWNvbnRhaW5lZCBmb3IgdGhlIGZldyBjYWxsZXJzIHRoYXQgZGVmZXIgdGhlIHdhaXQuXG4rXHQgKi9cbitcdHNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCk7XG4gXG5AQCAtMzE0LDIxICszMTgsMzAgQEAgRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWUpO1xuICAqL1xuIHZvaWQgYmxrX21xX3VucXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbiB7XG4tXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLVx0Ym9vbCBydW5fcXVldWUgPSBmYWxzZTtcbitcdGludCBkZXB0aDtcbiBcbi1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnEtXHUwMDNlcXVldWVfbG9jaywgZmxhZ3MpO1xuLVx0aWYgKFdBUk5fT05fT05DRShxLVx1MDAzZXF1aWVzY2VfZGVwdGggXHUwMDNjPSAwKSkge1xuLVx0XHQ7XG4tXHR9IGVsc2UgaWYgKCEtLXEtXHUwMDNlcXVpZXNjZV9kZXB0aCkge1xuLVx0XHRibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX1FVSUVTQ0VELCBxKTtcbi1cdFx0cnVuX3F1ZXVlID0gdHJ1ZTtcbi1cdH1cbi1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2cS1cdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XG4rXHRkZXB0aCA9IGF0b21pY19kZWNfaWZfcG9zaXRpdmUoXHUwMDI2cS1cdTAwM2VxdWllc2NlX2RlcHRoKTtcbitcdGlmIChXQVJOX09OX09OQ0UoZGVwdGggXHUwMDNjIDApKVxuK1x0XHRyZXR1cm47XG4gXG4tXHQvKiBkaXNwYXRjaCByZXF1ZXN0cyB3aGljaCBhcmUgaW5zZXJ0ZWQgZHVyaW5nIHF1aWVzY2luZyAqL1xuLVx0aWYgKHJ1bl9xdWV1ZSlcbitcdGlmIChkZXB0aCA9PSAwKSB7XG4rXHRcdC8qXG4rXHRcdCAqIEZ1bGwgYmFycmllciBiZXR3ZWVuIHRoZSBxdWllc2NlX2RlcHRoIHN0b3JlIGFib3ZlIGFuZCB0aGVcbitcdFx0ICogYmxrX21xX2hjdHhfaGFzX3BlbmRpbmcoKSBsb2FkIGRvbmUgZnJvbSBibGtfbXFfcnVuX2h3X3F1ZXVlcygpXG4rXHRcdCAqIGJlbG93LiAgVGhpcyBwYWlycyB3aXRoIHRoZSBzbXBfbWIoKSBiZWZvcmUgdGhlIHJlcXVpZXNjZVxuK1x0XHQgKiByZS1jaGVjayBpbiBibGtfbXFfcnVuX2h3X3F1ZXVlKCk6IG9mIHRoZSB0d28gcmFjaW5nIENQVXNcbitcdFx0ICogKG9uZSBpbnNlcnRpbmcgYSByZXF1ZXN0IGFuZCB0aGVuIHJlLWNoZWNraW5nIHF1aWVzY2Ugc3RhdGUsXG4rXHRcdCAqIHRoZSBvdGhlciB1bnF1aWVzY2luZyBoZXJlIGFuZCB0aGVuIGNoZWNraW5nIGZvciBwZW5kaW5nXG4rXHRcdCAqIHdvcmspIGF0IGxlYXN0IG9uZSBzZWVzIHRoZSBvdGhlcidzIHN0b3JlLCBzbyB0aGUgaHcgcXVldWVcbitcdFx0ICogaXMgbm90IGxlZnQgd2l0aCBhIHJlcXVlc3Qgc3RyYW5kZWQgb24gYSBub3ctcnVubmluZyBxdWV1ZS5cbitcdFx0ICpcbitcdFx0ICogYXRvbWljX2RlY19pZl9wb3NpdGl2ZSgpIGFscmVhZHkgb3JkZXJzIHRoZSBkZWNyZW1lbnQgb25cbitcdFx0ICogc3VjY2VzcywgYnV0IHNwZWxsIHRoZSBiYXJyaWVyIG91dCBzbyB0aGUgcGFpcmluZyBpcyBvYnZpb3VzLlxuK1x0XHQgKi9cbitcdFx0c21wX21iX19hZnRlcl9hdG9taWMoKTtcbitcdFx0LyogZGlzcGF0Y2ggcmVxdWVzdHMgd2hpY2ggYXJlIGluc2VydGVkIGR1cmluZyBxdWllc2NpbmcgKi9cbiBcdFx0YmxrX21xX3J1bl9od19xdWV1ZXMocSwgdHJ1ZSk7XG4rXHR9XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV91bnF1aWVzY2VfcXVldWUpO1xuIFxuQEAgLTIzMzEsMTcgKzIzNDQsMjEgQEAgdm9pZCBibGtfbXFfcnVuX2h3X3F1ZXVlKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LCBib29sIGFzeW5jKVxuIFxuIFx0bmVlZF9ydW4gPSBibGtfbXFfaHdfcXVldWVfbmVlZF9ydW4oaGN0eCk7XG4gXHRpZiAoIW5lZWRfcnVuKSB7XG4tXHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tXG4gXHRcdC8qXG4tXHRcdCAqIFN5bmNocm9uaXplIHdpdGggYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpLCBiZWNhdXNlIHdlIGNoZWNrXG4tXHRcdCAqIGlmIGh3IHF1ZXVlIGlzIHF1aWVzY2VkIGxvY2tsZXNzbHkgYWJvdmUsIHdlIG5lZWQgdGhlIHVzZVxuLVx0XHQgKiAtXHUwMDNlcXVldWVfbG9jayB0byBtYWtlIHN1cmUgd2Ugc2VlIHRoZSB1cC10by1kYXRlIHN0YXR1cyB0b1xuLVx0XHQgKiBub3QgbWlzcyByZXJ1bm5pbmcgdGhlIGh3IHF1ZXVlLlxuK1x0XHQgKiBSZS1jaGVjayBhZnRlciBhIGZ1bGwgYmFycmllci4gIEEgcmVxdWVzdCBtYXkgaGF2ZSBiZWVuXG4rXHRcdCAqIGluc2VydGVkIGJlZm9yZSB0aGlzIGNhbGwsIHdoaWxlIGEgY29uY3VycmVudFxuK1x0XHQgKiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkgZHJvcHMgcXVpZXNjZV9kZXB0aCB0byB6ZXJvIGFuZFxuK1x0XHQgKiB0aGVuIHJ1bnMgdGhlIGh3IHF1ZXVlcy4gIFRoaXMgc21wX21iKCkgb3JkZXJzIHRoZSByZXF1ZXN0XG4rXHRcdCAqIGluc2VydCAodGhlIHN0b3JlIHRoYXQgbWFrZXMgYmxrX21xX2hjdHhfaGFzX3BlbmRpbmcoKSB0cnVlKVxuK1x0XHQgKiBiZWZvcmUgdGhlIHJlcXVpZXNjZS1zdGF0ZSBsb2FkIGJlbG93LCBhbmQgcGFpcnMgd2l0aCB0aGVcbitcdFx0ICogc21wX21iX19hZnRlcl9hdG9taWMoKSBiZXR3ZWVuIHRoZSBxdWllc2NlX2RlcHRoIHN0b3JlIGFuZFxuK1x0XHQgKiB0aGUgYmxrX21xX2hjdHhfaGFzX3BlbmRpbmcoKSBsb2FkIGluIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKVxuK1x0XHQgKiAoYW5kIGluIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCgpKS4gIFdpdGggYSBmdWxsIGJhcnJpZXJcbitcdFx0ICogb24gYm90aCBzaWRlcywgYXQgbGVhc3Qgb25lIENQVSBvYnNlcnZlcyB0aGUgb3RoZXIncyBzdG9yZSxcbitcdFx0ICogc28gdGhlIHF1ZXVlIGlzIG5vdCBsZWZ0IGJvdGggdW4tcXVpZXNjZWQgYW5kIG5vdCByZXJ1bi5cbiBcdFx0ICovXG4tXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmhjdHgtXHUwMDNlcXVldWUtXHUwMDNlcXVldWVfbG9jaywgZmxhZ3MpO1xuK1x0XHRzbXBfbWIoKTtcbiBcdFx0bmVlZF9ydW4gPSBibGtfbXFfaHdfcXVldWVfbmVlZF9ydW4oaGN0eCk7XG4tXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aGN0eC1cdTAwM2VxdWV1ZS1cdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XG4gXG4gXHRcdGlmICghbmVlZF9ydW4pXG4gXHRcdFx0cmV0dXJuO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmggYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oXG5pbmRleCBkYmI1NDljZGZiNzc4Yi4uOWU0OWFiOWM3OGFlMGMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oXG5AQCAtNTI1LDcgKzUyNSw4IEBAIHN0cnVjdCByZXF1ZXN0X3F1ZXVlIHtcbiBcbiBcdHNwaW5sb2NrX3RcdFx0cXVldWVfbG9jaztcbiBcbi1cdGludFx0XHRcdHF1aWVzY2VfZGVwdGg7XG4rXHQvKiBBdG9taWMgcXVpZXNjZSBkZXB0aCAtIGFsc28gc2VydmVzIGFzIHF1aWVzY2VkIGluZGljYXRvciAoZGVwdGggXHUwMDNlIDApICovXG4rXHRhdG9taWNfdFx0XHRxdWllc2NlX2RlcHRoO1xuIFxuIFx0c3RydWN0IGdlbmRpc2tcdFx0KmRpc2s7XG4gXG5AQCAtNjcwLDcgKzY3MSw2IEBAIGVudW0ge1xuIFx0UVVFVUVfRkxBR19JTklUX0RPTkUsXHRcdC8qIHF1ZXVlIGlzIGluaXRpYWxpemVkICovXG4gXHRRVUVVRV9GTEFHX1NUQVRTLFx0XHQvKiB0cmFjayBJTyBzdGFydCBhbmQgY29tcGxldGlvbiB0aW1lcyAqL1xuIFx0UVVFVUVfRkxBR19SRUdJU1RFUkVELFx0XHQvKiBxdWV1ZSBoYXMgYmVlbiByZWdpc3RlcmVkIHRvIGEgZGlzayAqL1xuLVx0UVVFVUVfRkxBR19RVUlFU0NFRCxcdFx0LyogcXVldWUgaGFzIGJlZW4gcXVpZXNjZWQgKi9cbiBcdFFVRVVFX0ZMQUdfUlFfQUxMT0NfVElNRSxcdC8qIHJlY29yZCBycS1cdTAwM2VhbGxvY190aW1lX25zICovXG4gXHRRVUVVRV9GTEFHX0hDVFhfQUNUSVZFLFx0XHQvKiBhdCBsZWFzdCBvbmUgYmxrLW1xIGhjdHggaXMgYWN0aXZlICovXG4gXHRRVUVVRV9GTEFHX1NRX1NDSEVELFx0XHQvKiBzaW5nbGUgcXVldWUgc3R5bGUgaW8gZGlzcGF0Y2ggKi9cbkBAIC03MDgsNyArNzA4LDEwIEBAIHZvaWQgYmxrX3F1ZXVlX2ZsYWdfY2xlYXIodW5zaWduZWQgaW50IGZsYWcsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKTtcbiAjZGVmaW5lIGJsa19ub3JldHJ5X3JlcXVlc3QocnEpIFxcXG4gXHQoKHJxKS1cdTAwM2VjbWRfZmxhZ3MgXHUwMDI2IChSRVFfRkFJTEZBU1RfREVWfFJFUV9GQUlMRkFTVF9UUkFOU1BPUlR8IFxcXG4gXHRcdFx0ICAgICBSRVFfRkFJTEZBU1RfRFJJVkVSKSlcbi0jZGVmaW5lIGJsa19xdWV1ZV9xdWllc2NlZChxKVx0dGVzdF9iaXQoUVVFVUVfRkxBR19RVUlFU0NFRCwgXHUwMDI2KHEpLVx1MDAzZXF1ZXVlX2ZsYWdzKVxuK3N0YXRpYyBpbmxpbmUgYm9vbCBibGtfcXVldWVfcXVpZXNjZWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXG4re1xuK1x0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNnEtXHUwMDNlcXVpZXNjZV9kZXB0aCkgXHUwMDNlIDA7XG4rfVxuICNkZWZpbmUgYmxrX3F1ZXVlX3BtX29ubHkocSlcdGF0b21pY19yZWFkKFx1MDAyNihxKS1cdTAwM2VwbV9vbmx5KVxuICNkZWZpbmUgYmxrX3F1ZXVlX3JlZ2lzdGVyZWQocSlcdHRlc3RfYml0KFFVRVVFX0ZMQUdfUkVHSVNURVJFRCwgXHUwMDI2KHEpLVx1MDAzZXF1ZXVlX2ZsYWdzKVxuICNkZWZpbmUgYmxrX3F1ZXVlX3NxX3NjaGVkKHEpXHR0ZXN0X2JpdChRVUVVRV9GTEFHX1NRX1NDSEVELCBcdTAwMjYocSktXHUwMDNlcXVldWVfZmxhZ3MpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0NjoyNi45MjQzNDc3MTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDkwNzU0NTU2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQmxvY2sgTGF5ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHBva2luZyBhcm91bmQgaW4gdGhlIGJsb2NrIGxheWVyLCBzcGVjaWZpY2FsbHkgaW4gYGJsay1tcS5jYCwgYGJsay1jb3JlLmNgLCBgYmxrLW1xLWRlYnVnZnMuY2AsIGFuZCB0aGUgYGJsa2Rldi5oYCBpbmNsdWRlIGZpbGUuIFRoaXMgbG9va3MgbGlrZSBhIGZhaXJseSBzaWduaWZpY2FudCBjaGFuZ2Ug4oCTIHdlJ3JlIHRhbGtpbmcgYWJvdXQgaG93IHRoZSBrZXJuZWwgdHJhY2tzIHF1ZXVlIHF1aWVzY2luZy4gSW5zdGVhZCBvZiB0aGF0IHNwaW5sb2NrLXByb3RlY3RlZCBgcXVpZXNjZV9kZXB0aGAgYW5kIHRoZSBgUVVFVUVfRkxBR19RVUlFU0NFRGAgZmxhZywgdGhleSdyZSBzd2FwcGluZyBpbiBhbiBgYXRvbWljX3QgcXVpZXNjZV9kZXB0aGAuIEludGVyZXN0aW5nLlxuXG5UaGV5J3JlIGNsZWFybHkgbW9kaWZ5aW5nIHNvbWUga2V5IGZ1bmN0aW9uczogYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAsIGBibGtfbXFfdW5xdWllc2NlX3F1ZXVlYCwgYW5kIGBibGtfbXFfcnVuX2h3X3F1ZXVlYC4gWWVwLCB0aGlzIGlzIGNvcmUga2VybmVsIGxvZ2ljIGluIHRoZSBibG9jayBsYXllciwgbm8gZG91YnQgYWJvdXQgaXQuIERlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvZGUuIEdvb2QsIGdvb2QuIFRoZXkncmUgcmVtb3ZpbmcgdGhlIGBRVUVVRV9GTEFHX1FVSUVTQ0VEYCBjb21wbGV0ZWx5IGFuZCB1c2luZyBhbiBhdG9taWMgcmVhZCwgYGF0b21pY19yZWFkKFx1MDAyNnEtXHUwMDNlcXVpZXNjZV9kZXB0aCkgXHUwMDNlIDBgLCBpbnN0ZWFkLiBBbmQgdGhleSdyZSBhbHNvIGNoYW5naW5nIHRoZSBzeW5jaHJvbml6YXRpb24gaW4gYGJsa19tcV9ydW5faHdfcXVldWVgLCBtb3ZpbmcgdG8gYW4gYHNtcF9tYigpYCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBgcXVldWVfbG9ja2AuXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyB0b3VjaGluZyBjb3JlIGJsb2NrIGxheWVyIGZ1bmN0aW9uYWxpdHkgYW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSwgaXQncyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgc3ltYm9scyB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgdGhvc2UgdGhyZWUgZnVuY3Rpb25zOiBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YCwgYGJsa19tcV91bnF1aWVzY2VfcXVldWVgLCBhbmQgYGJsa19tcV9ydW5faHdfcXVldWVgLlxuXG5Ob3csIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBuZWVkZWQgdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS4gVGhlIGJsb2NrIGxheWVyLCBhcyBhbHdheXMsIGlzIGVuYWJsZWQgYnkgYENPTkZJR19CTE9DS2AuIFRoYXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIGtlcm5lbCwgc28gaXQncyBwcm9iYWJseSBlbmFibGVkIGJ5IGRlZmF1bHQuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAgaXRzZWxmIGlzIGd1YXJkZWQgYnkgYW55dGhpbmcgc3BlY2lmaWMuIE9rYXksIGBibGstbXEuY2AgYW5kIHRodXMgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19CTE9DS2AgaXMgZW5hYmxlZC4gR29vZC4gV2UndmUgdmVyaWZpZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMDIsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0NzowMS44MzE4OTYwMTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIyMzMzODM2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svYmxrLW1xLmM9MjU1PUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV91bmZyZWV6ZV9xdWV1ZV9ub25fb3duZXIpO1xcbi0tXFxuYmxvY2svYmxrLW1xLmMtMjYwLSAqL1xcbmJsb2NrL2Jsay1tcS5jOjI2MTp2b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcXG5ibG9jay9ibGstbXEuYy0yNjIte1xcbi0tXFxuYmxvY2svYmxrLW1xLmMtMjczLX1cXG5ibG9jay9ibGstbXEuYzoyNzQ6RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KTtcXG5ibG9jay9ibGstbXEuYy0yNzUtXFxuLS1cXG5ibG9jay9ibGstbXEuYy0yODItICogZnVuY3Rpb24gb25seSB3YWl0cyBmb3IgdGhlIHF1aWVzY2Ugb24gdGhvc2UgcmVxdWVzdF9xdWV1ZXMgdGhhdCBoYWRcXG5ibG9jay9ibGstbXEuYzoyODM6ICogdGhlIHF1aWVzY2UgZmxhZyBzZXQgdXNpbmcgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0LlxcbmJsb2NrL2Jsay1tcS5jLTI4NC0gKi9cXG4tLVxcbmJsb2NrL2Jsay1tcS5jPTMwMz12b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKVxcbmJsb2NrL2Jsay1tcS5jLTMwNC17XFxuYmxvY2svYmxrLW1xLmM6MzA1OlxcdGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTtcXG5ibG9jay9ibGstbXEuYy0zMDYtXFx0Lyogbm90aGluZyB0byB3YWl0IGZvciBub24tbXEgcXVldWVzICovXFxuLS1cXG5ibG9jay9ibGstbXEuYz0zNDg9dm9pZCBibGtfbXFfcXVpZXNjZV90YWdzZXQoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpXFxuLS1cXG5ibG9jay9ibGstbXEuYy0zNTQtXFx0XFx0aWYgKCFibGtfcXVldWVfc2tpcF90YWdzZXRfcXVpZXNjZShxKSlcXG5ibG9jay9ibGstbXEuYzozNTU6XFx0XFx0XFx0YmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpO1xcbmJsb2NrL2Jsay1tcS5jLTM1Ni1cXHR9XFxuLS1cXG5ibG9jay9ibGstbXEuYz0yMzM0PXZvaWQgYmxrX21xX3J1bl9od19xdWV1ZShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgYm9vbCBhc3luYylcXG4tLVxcbmJsb2NrL2Jsay1tcS5jLTIzNTUtXFx0XFx0ICogdGhlIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgbG9hZCBpbiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKClcXG5ibG9jay9ibGstbXEuYzoyMzU2OlxcdFxcdCAqIChhbmQgaW4gYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkpLiAgV2l0aCBhIGZ1bGwgYmFycmllclxcbmJsb2NrL2Jsay1tcS5jLTIzNTctXFx0XFx0ICogb24gYm90aCBzaWRlcywgYXQgbGVhc3Qgb25lIENQVSBvYnNlcnZlcyB0aGUgb3RoZXIncyBzdG9yZSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jPTE1OTA9c3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTU5Ny1cXHRtZW1mbGFncyA9IGJsa19tcV9mcmVlemVfcXVldWUocSk7XFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTU5ODpcXHRibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSk7XFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTU5OS1cXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfbGliLmM9MjkzOD1zdGF0aWMgdm9pZCBzY3NpX3N0b3BfcXVldWUoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KVxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfbGliLmMtMjk0Ni1cXHRpZiAoIWNtcHhjaGcoXFx1MDAyNnNkZXYtXFx1MDAzZXF1ZXVlX3N0b3BwZWQsIDAsIDEpKVxcbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jOjI5NDc6XFx0XFx0YmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHNkZXYtXFx1MDAzZXJlcXVlc3RfcXVldWUpO1xcbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jLTI5NDgtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9ibGstbXEuaD05Nzc9dm9pZCBibGtfbXFfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgKnNldCwgaW50IG5yX2h3X3F1ZXVlcyk7XFxuaW5jbHVkZS9saW51eC9ibGstbXEuaC05NzgtXFxuaW5jbHVkZS9saW51eC9ibGstbXEuaDo5Nzk6dm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpO1xcbmluY2x1ZGUvbGludXgvYmxrLW1xLmgtOTgwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0NzowNS4wNTUyNTI2OTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjIyOTIwODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipCbG9jayBMYXllciBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cblJpZ2h0LCB0aGUgYmxvY2sgbGF5ZXIuIFRoYXQncyBmdW5kYW1lbnRhbCwgYSAqY3JpdGljYWwqIHBpZWNlIG9mIHRoZSBrZXJuZWwgYXJjaGl0ZWN0dXJlLiBZb3UgY2FuIGJldCB0aGF0IGBDT05GSUdfQkxPQ0tgIGlzIGFsbW9zdCBhbHdheXMgZW5hYmxlZC4gSXQncyB0aGUgcGx1bWJpbmcsIHRoZSBjb3JlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZsYWdzLCBzb21ldGhpbmcgbW9yZSBncmFudWxhciwgZm9yIGEgcGFydGljdWxhciBjb21wb25lbnQsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBgYmxrLW1xLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQncyBiZWluZyBjb25maWd1cmVkLiBBcmUgdGhlcmUgYW55IHBlY3VsaWFyaXRpZXMgb3Igb3B0aW1pemF0aW9uIGZsYWdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mIGZvciBgYmxrLW1xYCB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGlzIGxheWVyPyBMZXQncyBkaWcgaW50byB0aGUgZGV0YWlscyBhbmQgc2VlIHdoYXQgdGhlIGtlcm5lbCBjb25maWcgc2F5cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk5MiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjQ3OjA4LjI3ODE3NzExNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTExMDk5NDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsay1tcS5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL01ha2VmaWxlPTg9b2JqLXlcXHRcXHQ6PSBiZGV2Lm8gZm9wcy5vIGJpby5vIGVsZXZhdG9yLm8gYmxrLWNvcmUubyBibGstc3lzZnMubyBcXFxcXFxuYmxvY2svTWFrZWZpbGUtOS1cXHRcXHRcXHRibGstZmx1c2gubyBibGstc2V0dGluZ3MubyBibGstaW9jLm8gYmxrLW1hcC5vIFxcXFxcXG5ibG9jay9NYWtlZmlsZToxMDpcXHRcXHRcXHRibGstbWVyZ2UubyBibGstdGltZW91dC5vIGJsay1saWIubyBibGstbXEubyBcXFxcXFxuYmxvY2svTWFrZWZpbGUtMTEtXFx0XFx0XFx0YmxrLW1xLXRhZy5vIGJsay1tcS1kbWEubyBibGstc3RhdC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDc6MTEuMzg5MjgzMDIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk4Njk5NDY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgdW5kZXJzdGFuZCB0aGlzOlxuXG4qKkFuYWx5emluZyBCbG9jayBMYXllciBDb21waWxhdGlvbiBhbmQgQ29uY3VycmVuY3kqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBzb21ldGhpbmcgdGhhdCdzIGRpcmVjdGx5IGxpbmtlZCBpbnRvIHRoZSBibG9jayBsYXllciwgd2hpY2ggaXMgY29uZmlybWVkIGJ5IGl0cyBpbmNsdXNpb24gaW4gdGhlIGBvYmoteWAgbGlzdCB3aXRoaW4gYGJsb2NrL01ha2VmaWxlYC4gVGhpcyBtZWFucywgYXMgYW4gZXhwZXJ0LCBJIGtub3cgdGhpcyBjb2RlIGlzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgYmxvY2sgZGV2aWNlIGRyaXZlciBpbmZyYXN0cnVjdHVyZS4gQ3J1Y2lhbGx5LCBpdCdzIGFsd2F5cyBjb21waWxlZCBhcyBsb25nIGFzIGBDT05GSUdfQkxPQ0tgIGlzIHNldC4gR2l2ZW4gdGhhdCBgQ09ORklHX0JMT0NLYCBpcyBhIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb24sIGl0IGZ1cnRoZXIgdW5kZXJzY29yZXMgdGhlIGltcG9ydGFuY2Ugb2YgdGhpcyBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdCB3b3JrcyB3aXRoIGFueSBibG9jayBkZXZpY2UuXG5cbk5vdywgbGV0J3MgZGl2ZSBkZWVwZXIgYW5kIGFuYWx5emUgd2hhdCBpcyBoYXBwZW5pbmcgd2l0aCBgYmxrX21xX3VucXVpZXNjZV9xdWV1ZWAgYW5kIGBibGtfbXFfcnVuX2h3X3F1ZXVlYC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgd2lsbCBiZSByZWxldmFudCB0byBjb25jdXJyZW5jeSwgYW5kIEkgaGF2ZSBhIGZlZWxpbmcgdGhpcyByZWxhdGVzIHRvIGJyaW5naW5nIGEgcXVldWUgYmFjayBvbmxpbmUgYWZ0ZXIgYmVpbmcgcXVpZXNjZWQsIGFuZCB0aGVuIGdldHRpbmcgaXQgcnVubmluZyBvbiBhIGhhcmR3YXJlIHF1ZXVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzU2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDc6MTQuMzc2MjgxMTA0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzkzNTg3NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrX21xX3VucXVpZXNjZV9xdWV1ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstaW9jb3N0LmM9MzI2Nj1zdGF0aWMgc3NpemVfdCBpb2NfcW9zX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqaW5wdXQsXFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmMtMzQwNy1cXG5ibG9jay9ibGstaW9jb3N0LmM6MzQwODpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXFx1MDAzZXF1ZXVlKTtcXG5ibG9jay9ibGstaW9jb3N0LmMtMzQwOS1cXG4tLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNDE3LVxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2aW9jLVxcdTAwM2Vsb2NrKTtcXG5ibG9jay9ibGstaW9jb3N0LmM6MzQxODpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXFx1MDAzZXF1ZXVlKTtcXG5ibG9jay9ibGstaW9jb3N0LmMtMzQxOS1cXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuYmxvY2svYmxrLWlvY29zdC5jPTM0Njk9c3RhdGljIHNzaXplX3QgaW9jX2Nvc3RfbW9kZWxfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICppbnB1dCxcXG4tLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNTU4LVxcbmJsb2NrL2Jsay1pb2Nvc3QuYzozNTU5OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XFxuYmxvY2svYmxrLWlvY29zdC5jLTM1NjAtXFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTtcXG4tLVxcbmJsb2NrL2Jsay1tcS5jPTI5Mj1FWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUpO1xcbi0tXFxuYmxvY2svYmxrLW1xLmMtMzAwLSAqIHN1cmUgbm8gZGlzcGF0Y2ggY2FuIGhhcHBlbiB1bnRpbCB0aGUgcXVldWUgaXMgdW5xdWllc2NlZCB2aWFcXG5ibG9jay9ibGstbXEuYzozMDE6ICogYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpLlxcbmJsb2NrL2Jsay1tcS5jLTMwMi0gKi9cXG4tLVxcbmJsb2NrL2Jsay1tcS5jPTMxMD1FWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfcXVpZXNjZV9xdWV1ZSk7XFxuLS1cXG5ibG9jay9ibGstbXEuYy0zMTItLypcXG5ibG9jay9ibGstbXEuYzozMTM6ICogYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpIC0gY291bnRlcnBhcnQgb2YgYmxrX21xX3F1aWVzY2VfcXVldWUoKVxcbmJsb2NrL2Jsay1tcS5jLTMxNC0gKiBAcTogcmVxdWVzdCBxdWV1ZS5cXG4tLVxcbmJsb2NrL2Jsay1tcS5jLTMxOC0gKi9cXG5ibG9jay9ibGstbXEuYzozMTk6dm9pZCBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKVxcbmJsb2NrL2Jsay1tcS5jLTMyMC17XFxuLS1cXG5ibG9jay9ibGstbXEuYy0zNDUtfVxcbmJsb2NrL2Jsay1tcS5jOjM0NjpFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfdW5xdWllc2NlX3F1ZXVlKTtcXG5ibG9jay9ibGstbXEuYy0zNDctXFxuLS1cXG5ibG9jay9ibGstbXEuYz0zNjM9dm9pZCBibGtfbXFfdW5xdWllc2NlX3RhZ3NldChzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgKnNldClcXG4tLVxcbmJsb2NrL2Jsay1tcS5jLTM2OS1cXHRcXHRpZiAoIWJsa19xdWV1ZV9za2lwX3RhZ3NldF9xdWllc2NlKHEpKVxcbmJsb2NrL2Jsay1tcS5jOjM3MDpcXHRcXHRcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHEpO1xcbmJsb2NrL2Jsay1tcS5jLTM3MS1cXHR9XFxuLS1cXG5ibG9jay9ibGstbXEuYz0yMzA3PXN0YXRpYyBpbmxpbmUgYm9vbCBibGtfbXFfaHdfcXVldWVfbmVlZF9ydW4oc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgpXFxuLS1cXG5ibG9jay9ibGstbXEuYy0yMzE1LVxcdCAqXFxuYmxvY2svYmxrLW1xLmM6MjMxNjpcXHQgKiBBbmQgcXVldWUgd2lsbCBiZSByZXJ1biBpbiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkgaWYgaXQgaXNcXG5ibG9jay9ibGstbXEuYy0yMzE3LVxcdCAqIHF1aWVzY2VkLlxcbi0tXFxuYmxvY2svYmxrLW1xLmM9MjMzND12b2lkIGJsa19tcV9ydW5faHdfcXVldWUoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIGJvb2wgYXN5bmMpXFxuLS1cXG5ibG9jay9ibGstbXEuYy0yMzQ5LVxcdFxcdCAqIGluc2VydGVkIGJlZm9yZSB0aGlzIGNhbGwsIHdoaWxlIGEgY29uY3VycmVudFxcbmJsb2NrL2Jsay1tcS5jOjIzNTA6XFx0XFx0ICogYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpIGRyb3BzIHF1aWVzY2VfZGVwdGggdG8gemVybyBhbmRcXG5ibG9jay9ibGstbXEuYy0yMzUxLVxcdFxcdCAqIHRoZW4gcnVucyB0aGUgaHcgcXVldWVzLiAgVGhpcyBzbXBfbWIoKSBvcmRlcnMgdGhlIHJlcXVlc3RcXG4tLVxcbmJsb2NrL2Jsay1tcS5jLTIzNTQtXFx0XFx0ICogc21wX21iX19hZnRlcl9hdG9taWMoKSBiZXR3ZWVuIHRoZSBxdWllc2NlX2RlcHRoIHN0b3JlIGFuZFxcbmJsb2NrL2Jsay1tcS5jOjIzNTU6XFx0XFx0ICogdGhlIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgbG9hZCBpbiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKClcXG5ibG9jay9ibGstbXEuYy0yMzU2LVxcdFxcdCAqIChhbmQgaW4gYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkpLiAgV2l0aCBhIGZ1bGwgYmFycmllclxcbi0tXFxuYmxvY2svYmxrLW1xLmM9NTAwMT1zdHJ1Y3QgZWxldmF0b3JfdGFncyAqYmxrX21xX3VwZGF0ZV9ucl9yZXF1ZXN0cyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSxcXG4tLVxcbmJsb2NrL2Jsay1tcS5jLTUwNTYtXFxuYmxvY2svYmxrLW1xLmM6NTA1NzpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHEpO1xcbmJsb2NrL2Jsay1tcS5jLTUwNTgtXFx0cmV0dXJuIG9sZF9ldDtcXG4tLVxcbmJsb2NrL2Jsay1zeXNmcy5jPTQwMD1zdGF0aWMgc3NpemVfdCBxdWV1ZV96b25lZF9xZDFfd3JpdGVzX3N0b3JlKHN0cnVjdCBnZW5kaXNrICpkaXNrLFxcbi0tXFxuYmxvY2svYmxrLXN5c2ZzLmMtNDE3LVxcdFxcdGJsa19xdWV1ZV9mbGFnX2NsZWFyKFFVRVVFX0ZMQUdfWk9ORURfUUQxX1dSSVRFUywgcSk7XFxuYmxvY2svYmxrLXN5c2ZzLmM6NDE4OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XFxuYmxvY2svYmxrLXN5c2ZzLmMtNDE5LVxcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShxLCBtZW1mbGFncyk7XFxuLS1cXG5ibG9jay9ibGstdGhyb3R0bGUuYz0xMzE4PXN0YXRpYyBpbnQgYmxrX3Rocm90bF9pbml0KHN0cnVjdCBnZW5kaXNrICpkaXNrKVxcbi0tXFxuYmxvY2svYmxrLXRocm90dGxlLmMtMTM0NC1cXG5ibG9jay9ibGstdGhyb3R0bGUuYzoxMzQ1OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUoZGlzay1cXHUwMDNlcXVldWUpO1xcbmJsb2NrL2Jsay10aHJvdHRsZS5jLTEzNDYtXFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKGRpc2stXFx1MDAzZXF1ZXVlLCBtZW1mbGFncyk7XFxuLS1cXG5ibG9jay9ibGstd2J0LmM9OTkwPWludCB3YnRfc2V0X2xhdChzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgczY0IHZhbClcXG4tLVxcbmJsb2NrL2Jsay13YnQuYy0xMDM1LVxcbmJsb2NrL2Jsay13YnQuYzoxMDM2OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XFxuYmxvY2svYmxrLXdidC5jLTEwMzctb3V0Olxcbi0tXFxuYmxvY2svZWxldmF0b3IuYz01NjI9c3RhdGljIGludCBlbGV2YXRvcl9zd2l0Y2goc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBlbHZfY2hhbmdlX2N0eCAqY3R4KVxcbi0tXFxuYmxvY2svZWxldmF0b3IuYy01OTYtb3V0X3VuZnJlZXplOlxcbmJsb2NrL2VsZXZhdG9yLmM6NTk3OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XFxuYmxvY2svZWxldmF0b3IuYy01OTgtXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2FvZS9hb2VkZXYuYz0xOTc9YW9lZGV2X2Rvd25kZXYoc3RydWN0IGFvZWRldiAqZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svYW9lL2FvZWRldi5jLTI0Mi1cXHRcXHRibGtfbXFfcXVpZXNjZV9xdWV1ZShkLVxcdTAwM2VibGtxKTtcXG5kcml2ZXJzL2Jsb2NrL2FvZS9hb2VkZXYuYzoyNDM6XFx0XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShkLVxcdTAwM2VibGtxKTtcXG5kcml2ZXJzL2Jsb2NrL2FvZS9hb2VkZXYuYy0yNDQtXFx0XFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKGQtXFx1MDAzZWJsa3EsIG1lbWZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svYXRhZmxvcC5jPTc0Mz1zdGF0aWMgaW50IGRvX2Zvcm1hdChpbnQgZHJpdmUsIGludCB0eXBlLCBzdHJ1Y3QgYXRhcmlfZm9ybWF0X2Rlc2NyICpkZXNjKVxcbi0tXFxuZHJpdmVycy9ibG9jay9hdGFmbG9wLmMtODE5LW91dDpcXG5kcml2ZXJzL2Jsb2NrL2F0YWZsb3AuYzo4MjA6XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcXG5kcml2ZXJzL2Jsb2NrL2F0YWZsb3AuYy04MjEtXFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYz04ODk9c3RhdGljIGludCBtdGlwX3F1aWVzY2VfaW8oc3RydWN0IG10aXBfcG9ydCAqcG9ydCwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KVxcbi0tXFxuZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5jLTkxMy1cXG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmM6OTE0OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocG9ydC1cXHUwMDNlZGQtXFx1MDAzZXF1ZXVlKTtcXG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMtOTE1LVxcdHJldHVybiBhY3RpdmUgPyAtRUJVU1kgOiAwO1xcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy05MTYtZXJyX2ZhdWx0OlxcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYzo5MTc6XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShwb3J0LVxcdTAwM2VkZC1cXHUwMDNlcXVldWUpO1xcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy05MTgtXFx0cmV0dXJuIC1FRkFVTFQ7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmM9MjQ2NT1zdGF0aWMgaW50IG10aXBfc2VydmljZV90aHJlYWQodm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy0yNTI4LVxcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYzoyNTI5OlxcdFxcdFxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUoZGQtXFx1MDAzZXF1ZXVlKTtcXG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMtMjUzMC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTEwNTA9c3RhdGljIHZvaWQgbmJkX2NsZWFyX3F1ZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMDUzLVxcdGJsa19tcV90YWdzZXRfYnVzeV9pdGVyKFxcdTAwMjZuYmQtXFx1MDAzZXRhZ19zZXQsIG5iZF9jbGVhcl9yZXEsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTA1NDpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKG5iZC1cXHUwMDNlZGlzay1cXHUwMDNlcXVldWUpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTA1NS1cXHRkZXZfZGJnKGRpc2tfdG9fZGV2KG5iZC1cXHUwMDNlZGlzayksIFxcXCJxdWV1ZSBjbGVhcmVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svc3VudmRjLmM9MTExND1zdGF0aWMgdm9pZCB2ZGNfcXVldWVfZHJhaW4oc3RydWN0IHZkY19wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9ibG9jay9zdW52ZGMuYy0xMTMwLVxcdHBvcnQtXFx1MDAzZWRyYWluID0gMDtcXG5kcml2ZXJzL2Jsb2NrL3N1bnZkYy5jOjExMzE6XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcXG5kcml2ZXJzL2Jsb2NrL3N1bnZkYy5jLTExMzItXFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svc3dpbTMuYz04NDA9c3RhdGljIHZvaWQgcmVsZWFzZV9kcml2ZShzdHJ1Y3QgZmxvcHB5X3N0YXRlICpmcylcXG4tLVxcbmRyaXZlcnMvYmxvY2svc3dpbTMuYy04NTMtXFx0YmxrX21xX3F1aWVzY2VfcXVldWUocSk7XFxuZHJpdmVycy9ibG9jay9zd2ltMy5jOjg1NDpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHEpO1xcbmRyaXZlcnMvYmxvY2svc3dpbTMuYy04NTUtXFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0yNzI2PXN0YXRpYyB2b2lkIHVibGtfc3RhcnRfY2FuY2VsKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjc0MC1cXHRcXHR1YmxrX3NldF9jYW5jZWxpbmcodWIsIHRydWUpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzoyNzQxOlxcdFxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUoZGlzay1cXHUwMDNlcXVldWUpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNzQyLVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9Mjk1Mz1zdGF0aWMgdm9pZCB1YmxrX2ZvcmNlX2Fib3J0X2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTI5NjYtXFx0XFx0dWJsa19nZXRfcXVldWUodWIsIGkpLVxcdTAwM2Vmb3JjZV9hYm9ydCA9IHRydWU7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjI5Njc6XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZSh1Yi1cXHUwMDNldWJfZGlzay1cXHUwMDNlcXVldWUpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yOTY4LVxcdC8qIFdlIG1heSBoYXZlIHJlcXVldWVkIHNvbWUgcnFzIGluIHVibGtfcXVpZXNjZV9xdWV1ZSgpICovXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTIyMD1zdGF0aWMgaW50IHVibGtfY3RybF9xdWllc2NlX2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyNDYtXFx0dWJsa19zZXRfY2FuY2VsaW5nKHViLCB0cnVlKTtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTI0NzpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXFx1MDAzZXF1ZXVlKTtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTI0OC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnViLVxcdTAwM2VjYW5jZWxfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM9MTYxOT1zdGF0aWMgaW50IHZpcnRibGtfcmVzdG9yZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTYyOC1cXHR2aXJ0aW9fZGV2aWNlX3JlYWR5KHZkZXYpO1xcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jOjE2Mjk6XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZSh2YmxrLVxcdTAwM2VkaXNrLVxcdTAwM2VxdWV1ZSk7XFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTYzMC1cXG4tLVxcbmRyaXZlcnMvbWQvZG0tcnEuYz02ND12b2lkIGRtX3N0YXJ0X3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKVxcbmRyaXZlcnMvbWQvZG0tcnEuYy02NS17XFxuZHJpdmVycy9tZC9kbS1ycS5jOjY2OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XFxuZHJpdmVycy9tZC9kbS1ycS5jLTY3LVxcdGJsa19tcV9raWNrX3JlcXVldWVfbGlzdChxKTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYz00OTU9dm9pZCBtbWNfcXVldWVfcmVzdW1lKHN0cnVjdCBtbWNfcXVldWUgKm1xKVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYy00OTYte1xcbmRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYzo0OTc6XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShtcS1cXHUwMDNlcXVldWUpO1xcbmRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYy00OTgtfVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jPTUwMD12b2lkIG1tY19jbGVhbnVwX3F1ZXVlKHN0cnVjdCBtbWNfcXVldWUgKm1xKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jLTUwOC1cXHRpZiAoYmxrX3F1ZXVlX3F1aWVzY2VkKHEpKVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYzo1MDk6XFx0XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcXG5kcml2ZXJzL21tYy9jb3JlL3F1ZXVlLmMtNTEwLVxcbi0tXFxuZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYz00MDQ9aW50IGRlbF9tdGRfYmxrdHJhbnNfZGV2KHN0cnVjdCBtdGRfYmxrdHJhbnNfZGV2ICpvbGQpXFxuLS1cXG5kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jLTQyNS1cXHRibGtfbXFfcXVpZXNjZV9xdWV1ZShvbGQtXFx1MDAzZXJxKTtcXG5kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jOjQyNjpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKG9sZC1cXHUwMDNlcnEpO1xcbmRyaXZlcnMvbXRkL210ZF9ibGtkZXZzLmMtNDI3LVxcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShvbGQtXFx1MDAzZXJxLCBtZW1mbGFncyk7XFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC9jb3JlLmM9NTM4MD12b2lkIG52bWVfdW5xdWllc2NlX2FkbWluX3F1ZXVlKHN0cnVjdCBudm1lX2N0cmwgKmN0cmwpXFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMtNTM4Mi1cXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5WTUVfQ1RSTF9BRE1JTl9RX1NUT1BQRUQsIFxcdTAwMjZjdHJsLVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jOjUzODM6XFx0XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShjdHJsLVxcdTAwM2VhZG1pbl9xKTtcXG5kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMtNTM4NC19XFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYz0yOTMyPXZvaWQgc2NzaV9zdGFydF9xdWV1ZShzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYpXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYy0yOTM0LVxcdGlmIChjbXB4Y2hnKFxcdTAwMjZzZGV2LVxcdTAwM2VxdWV1ZV9zdG9wcGVkLCAxLCAwKSlcXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYzoyOTM1OlxcdFxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUoc2Rldi1cXHUwMDNlcmVxdWVzdF9xdWV1ZSk7XFxuZHJpdmVycy9zY3NpL3Njc2lfbGliLmMtMjkzNi19XFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYz0yOTM4PXN0YXRpYyB2b2lkIHNjc2lfc3RvcF9xdWV1ZShzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYpXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYy0yOTQxLVxcdCAqIFRoZSBhdG9taWMgdmFyaWFibGUgb2YgLVxcdTAwM2VxdWV1ZV9zdG9wcGVkIGNvdmVycyB0aGF0XFxuZHJpdmVycy9zY3NpL3Njc2lfbGliLmM6Mjk0MjpcXHQgKiBibGtfbXFfcXVpZXNjZV9xdWV1ZSogaXMgYmFsYW5jZWQgd2l0aCBibGtfbXFfdW5xdWllc2NlX3F1ZXVlLlxcbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jLTI5NDMtXFx0ICpcXG4tLVxcbmluY2x1ZGUvbGludXgvYmxrLW1xLmg9OTQwPXZvaWQgYmxrX21xX3VucXVpZXNjZV90YWdzZXQoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpO1xcbmluY2x1ZGUvbGludXgvYmxrLW1xLmg6OTQxOnZvaWQgYmxrX21xX3VucXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSk7XFxuaW5jbHVkZS9saW51eC9ibGstbXEuaC05NDItdm9pZCBibGtfbXFfZGVsYXlfcnVuX2h3X3F1ZXVlKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LCB1bnNpZ25lZCBsb25nIG1zZWNzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDc6MTcuODU1NjQ2MzQ2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc2OTIzNjkwOTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQmxvY2sgTGF5ZXIgUXVpZXNjZSBDaGFuZ2VzIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB3aGljaCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgYmxvY2sgbGF5ZXIncyBxdWllc2NlIG1lY2hhbmlzbS4gVGhpcyBpc24ndCBqdXN0IGEgbWlub3IgdHdlYWs7IGl0J3MgYSBkZWVwIGRpdmUgaW50byBob3cgcXVpZXNjZW5jZSBpcyBoYW5kbGVkLCB3aGljaCBpcyBjcnVjaWFsIGZvciBhIHdob2xlIGhvc3Qgb2YgZHJpdmVycyDigJMgZXZlcnl0aGluZyBmcm9tIHZpcnRpb19ibGsgYW5kIFNDU0kgdG8gTlZNZSBhbmQgZXZlbiBNTUMuIEdpdmVuIHRoZSBicm9hZCBpbXBhY3QsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gaG9uZSBpbiBvbiB0aGUgY29yZSBmdW5jdGlvbnMgaW52b2x2ZWQuIFNwZWNpZmljYWxseSwgSSB3YXMgY29uc2lkZXJpbmc6XG5cbiogICBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YFxuKiAgIGBibGtfbXFfdW5xdWllc2NlX3F1ZXVlYFxuKiAgIGBibGtfbXFfcnVuX2h3X3F1ZXVlYFxuXG5NeSBmaXJzdCBpbmNsaW5hdGlvbiB3YXMgdG8gZXhhbWluZSBpZiBgYmxrX21xX3J1bl9od19xdWV1ZWAgd2FzIGEgcGFydGljdWxhcmx5IGhvdC1wYXRoIGZ1bmN0aW9uIGJlY2F1c2UgaXQgaXMgaGVhdmlseSB1c2VkIGJ5IGJsb2NrIGRldmljZXMuIEl0J3MgaW52b2tlZCBmcmVxdWVudGx5IHRvIG1hbmFnZSB0aGUgaGFyZHdhcmUgcXVldWVzLiBIb3dldmVyLCBhZnRlciBmdXJ0aGVyIHJldmlldywgSSByZWFsaXplZCB0aGF0IGZvY3VzaW5nIGV4Y2x1c2l2ZWx5IG9uIGBibGtfbXFfcnVuX2h3X3F1ZXVlYCBtaWdodCBsZWFkIHRvIGEgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9uLCBhcyBpdCdzIGNhbGxlZCBmb3IgcHJldHR5IG11Y2ggZXZlcnkgSS9PIG9wZXJhdGlvbi4gTm9ybWFsIGJsb2NrIEkvT3MgYXJlIGFscmVhZHkgYSBjb21tb24gY2FzZSBmb3IgdGhlIGZ1enplci5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGBibGtfbXFfcnVuX2h3X3F1ZXVlYCB0byBpbmNsdWRlIGBzbXBfbWIoKWAgYW5kIHJlbW92ZSBgc3Bpbl9sb2NrX2lycXNhdmVgLiBIb3dldmVyLCBJIHJlYWxpemVkIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIGFuZCBgYmxrX21xX3VucXVpZXNjZV9xdWV1ZWAgYXJlIHRoZSBtb3JlIHBlcnRpbmVudCBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIHRoaXMgcGF0Y2guIFdoaWxlIGxlc3MgZnJlcXVlbnRseSBjYWxsZWQsIHRoZXkgYXJlIGtleSB0byB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIHRoYXQgdGhpcyBwYXRjaCBtb2RpZmllcy4gUXVpZXNjZSBpcyBjYWxsZWQgd2hlbiBxdWllc2NpbmcgYSBxdWV1ZSBhbmQgdW5xdWllc2NlIHdoZW4gdW5xdWllc2NpbmcgYSBxdWV1ZS5cblxuQWN0dWFsbHksIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBibGtfcXVldWVfcXVpZXNjZWRgLCB3aGljaCBpcyBpbmxpbmUsIHNvIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGNvdmVyZWQgaWYgdGhlIGNvZGUgaXMgcmVhY2hlZC5cblxuSSB0b29rIGEgcXVpY2sgbG9vayBhdCBjb25maWd1cmF0aW9ucyB0byBzZWUgaWYgd2UgbmVlZGVkIGFueXRoaW5nIHNwZWNpZmljLiBUdXJucyBvdXQgd2Ugb25seSBuZWVkIGBDT05GSUdfQkxPQ0tgLCB3aGljaCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGFuZCB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzIHNpZ25pZmljYW50bHkuIFdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgZm9yY2luZyBjb25maWd1cmF0aW9ucy5cblxuTG9va2luZyBhdCBkcml2ZXJzLCBpdCBsb29rcyBsaWtlIGB2aXJ0aW9fYmxrYCwgYHNjc2lgLCBgbnZtZWAsIGFuZCBgdWJsa2AgdXRpbGl6ZSB0aGUgbmV3IHF1aWVzY2UgY29kZSBwcmV0dHkgaGVhdmlseSBkdXJpbmcgZnJlZXplL3Jlc3RvcmUsIGBzY3NpX3N0b3BfcXVldWVgLCBgc2NzaV9zdGFydF9xdWV1ZWAsIGFuZCBvdGhlciBvcGVyYXRpb25zLiBXZSBhbHJlYWR5IGhhdmUgbWFueSBibG9jayBkcml2ZXJzIGVuYWJsZWQgaW4gc3l6Ym90LCBzbyB3ZSBzaG91bGQgYmUgZ29vZC5cblxuU28sIGxldCdzIGNpcmNsZSBiYWNrIHRvIG15IGZvY3VzIHN5bWJvbHMuIEknbSBnb2luZyB0byBpbmNsdWRlIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIGFuZCBgYmxrX21xX3VucXVpZXNjZV9xdWV1ZWAuIFRoZXNlIGFyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdG91Y2hlZCBieSB0aGUgY2hhbmdlcywgYW5kIHdoaWxlIGBibGtfbXFfcnVuX2h3X3F1ZXVlYCBpcyBtb2RpZmllZCwgaXQncyBjYWxsZWQgZm9yIGV2ZXJ5IElPIG9wZXJhdGlvbi5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YCBhbmQgYGJsa19tcV91bnF1aWVzY2VfcXVldWVgIGFyZSBleHBvcnRlZCB3aGljaCB0aGV5IGFyZSwgc28gdGhhdCdzIGdvb2QuXG5cbkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbHRlcmluZyB0aGUgc3luY2hyb25pemF0aW9uIGJldHdlZW4gcXVldWUgcXVpZXNjaW5nL3VucXVpZXNjaW5nIGFuZCBoYXJkd2FyZSBxdWV1ZSBydW5zLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHZhcmlvdXMgYmxvY2sgZGV2aWNlIG9wZXJhdGlvbnMuIFRoaXMgY29kZSB3aWxsIG5lZWQgYSB0aG9yb3VnaCBmdXp6aW5nLlxuXG4qKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggcmVwbGFjZXMgc3BpbmxvY2stYmFzZWQgcXVldWUgcXVpZXNjZSB0cmFja2luZyB3aXRoIGFuIGF0b21pYyBjb3VudGVyIGFuZCBtZW1vcnkgYmFycmllcnMgaW4gdGhlIGNvcmUgYmxvY2sgbGF5ZXIgKGBibGstbXEuY2ApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHF1ZXVlIHF1aWVzY2luZy91bnF1aWVzY2luZyBhbmQgaGFyZHdhcmUgcXVldWUgcnVucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIChlLmcuLCBkZXZpY2Ugc3VzcGVuZC9yZXN1bWUsIGVycm9yIGhhbmRsaW5nKS5cblxuKipXb3J0aEZ1enppbmc6KiogdHJ1ZVxuXG4qKkVuYWJsZUNvbmZpZ3M6KiogXFxbIF1cblxuKipGb2N1c1N5bWJvbHM6KiogXFxbXCJibGtcXF9tcVxcX3F1aWVzY2VcXF9xdWV1ZVxcX25vd2FpdFwiLCBcImJsa1xcX21xXFxfdW5xdWllc2NlXFxfcXVldWVcIl1cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4NjgsIk91dHB1dFRva2VucyI6MTMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjUwOjE0Ljc3OTM0MDI1MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0XCIsXG4gICAgXCJibGtfbXFfdW5xdWllc2NlX3F1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgc3BpbmxvY2stYmFzZWQgcXVldWUgcXVpZXNjZSB0cmFja2luZyB3aXRoIGFuIGF0b21pYyBjb3VudGVyIGFuZCBtZW1vcnkgYmFycmllcnMgaW4gdGhlIGNvcmUgYmxvY2sgbGF5ZXIgKGJsay1tcS5jKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBxdWV1ZSBxdWllc2NpbmcvdW5xdWllc2NpbmcgYW5kIGhhcmR3YXJlIHF1ZXVlIHJ1bnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBibG9jayBkZXZpY2Ugb3BlcmF0aW9ucyAoZS5nLiwgZGV2aWNlIHN1c3BlbmQvcmVzdW1lLCBlcnJvciBoYW5kbGluZykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0XCIsXG4gICAgXCJibGtfbXFfdW5xdWllc2NlX3F1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgc3BpbmxvY2stYmFzZWQgcXVldWUgcXVpZXNjZSB0cmFja2luZyB3aXRoIGFuIGF0b21pYyBjb3VudGVyIGFuZCBtZW1vcnkgYmFycmllcnMgaW4gdGhlIGNvcmUgYmxvY2sgbGF5ZXIgKGJsay1tcS5jKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBxdWV1ZSBxdWllc2NpbmcvdW5xdWllc2NpbmcgYW5kIGhhcmR3YXJlIHF1ZXVlIHJ1bnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBibG9jayBkZXZpY2Ugb3BlcmF0aW9ucyAoZS5nLiwgZGV2aWNlIHN1c3BlbmQvcmVzdW1lLCBlcnJvciBoYW5kbGluZykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjtbn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 22:17:41 +0000 UTC FinishedAt: 2026-07-09 22:50:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b9810cd75b9fb56a3425d391cba3f608502bd474", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b9810cd75b9fb56a3425d391cba3f608502bd474", "config_name": "upstream-apparmor-kasan.config", "series_id": "bac9bcc9-4413-4391-bcf8-2a61361a0928" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "blk_mq_quiesce_queue_nowait", "blk_mq_unquiesce_queue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0JiMzNDssCiAgICAmIzM0O2Jsa19tcV91bnF1aWVzY2VfcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgc3BpbmxvY2stYmFzZWQgcXVldWUgcXVpZXNjZSB0cmFja2luZyB3aXRoIGFuIGF0b21pYyBjb3VudGVyIGFuZCBtZW1vcnkgYmFycmllcnMgaW4gdGhlIGNvcmUgYmxvY2sgbGF5ZXIgKGJsay1tcS5jKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBxdWV1ZSBxdWllc2NpbmcvdW5xdWllc2NpbmcgYW5kIGhhcmR3YXJlIHF1ZXVlIHJ1bnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBibG9jayBkZXZpY2Ugb3BlcmF0aW9ucyAoZS5nLiwgZGV2aWNlIHN1c3BlbmQvcmVzdW1lLCBlcnJvciBoYW5kbGluZykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjI6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyZDI3NGYyMGUzMzkxOTQwY2UyMzFiNTBkYzQyM2ZjMDU4YzM0OWIxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAyMjo0NjoyNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9ibG9jay9ibGstY29yZS5jIGIvYmxvY2svYmxrLWNvcmUuY1xuaW5kZXggMzY1NjQxMjY2YzllODIuLjc5NjY5OTU3ZjQ3ZTQ3IDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLWNvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWNvcmUuY1xuQEAgLTQ3Nyw2ICYjNDM7NDc3LDcgQEAgc3RydWN0IHJlcXVlc3RfcXVldWUgKmJsa19hbGxvY19xdWV1ZShzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW0sIGludCBub2RlX2lkKVxuIFx0bXV0ZXhfaW5pdChcdTAwMjZxLVx1MDAzZWxpbWl0c19sb2NrKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2cS1cdTAwM2VycV9xb3NfbXV0ZXgpO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2cS1cdTAwM2VxdWV1ZV9sb2NrKTtcbiYjNDM7XHRhdG9taWNfc2V0KFx1MDAyNnEtXHUwMDNlcXVpZXNjZV9kZXB0aCwgMCk7XG4gXG4gXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNnEtXHUwMDNlbXFfZnJlZXplX3dxKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2cS1cdTAwM2VtcV9mcmVlemVfbG9jayk7XG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLWRlYnVnZnMuYyBiL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmNcbmluZGV4IDY3NTRkOGY5NDQ5YzEwLi41NjdlZWRiYmY1MGZjOCAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmNcbkBAIC05Myw3ICYjNDM7OTMsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgYmxrX3F1ZXVlX2ZsYWdfbmFtZVtdID0ge1xuIFx0UVVFVUVfRkxBR19OQU1FKElOSVRfRE9ORSksXG4gXHRRVUVVRV9GTEFHX05BTUUoU1RBVFMpLFxuIFx0UVVFVUVfRkxBR19OQU1FKFJFR0lTVEVSRUQpLFxuLVx0UVVFVUVfRkxBR19OQU1FKFFVSUVTQ0VEKSxcbiBcdFFVRVVFX0ZMQUdfTkFNRShSUV9BTExPQ19USU1FKSxcbiBcdFFVRVVFX0ZMQUdfTkFNRShIQ1RYX0FDVElWRSksXG4gXHRRVUVVRV9GTEFHX05BTUUoU1FfU0NIRUQpLFxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1tcS5jIGIvYmxvY2svYmxrLW1xLmNcbmluZGV4IDJjODUwMzMwYTMyYmM2Li4xODZiYmNjOGI5Mjc1OSAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1tcS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGstbXEuY1xuQEAgLTI2MCwxMiAmIzQzOzI2MCwxNiBAQCBFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfdW5mcmVlemVfcXVldWVfbm9uX293bmVyKTtcbiAgKi9cbiB2b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbiB7XG4tXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLVxuLVx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2cS1cdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XG4tXHRpZiAoIXEtXHUwMDNlcXVpZXNjZV9kZXB0aCYjNDM7JiM0MzspXG4tXHRcdGJsa19xdWV1ZV9mbGFnX3NldChRVUVVRV9GTEFHX1FVSUVTQ0VELCBxKTtcbi1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2cS1cdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XG4mIzQzO1x0YXRvbWljX2luYyhcdTAwMjZxLVx1MDAzZXF1aWVzY2VfZGVwdGgpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUHVibGlzaCB0aGUgcXVpZXNjZV9kZXB0aCBpbmNyZW1lbnQuICBDYWxsZXJzIG11c3QgZm9sbG93IHRoaXNcbiYjNDM7XHQgKiB3aXRoIGJsa19tcV93YWl0X3F1aWVzY2VfZG9uZSgpIChzeW5jaHJvbml6ZV9zcmN1KCkvXG4mIzQzO1x0ICogc3luY2hyb25pemVfcmN1KCkpLCB3aGljaCBpcyB3aGF0IGFjdHVhbGx5IGd1YXJhbnRlZXMgdGhhdCBhbnlcbiYjNDM7XHQgKiBpbi1mbGlnaHQgZGlzcGF0Y2hlciBoYXMgZmluaXNoZWQgYW5kIHRoYXQgbGF0ZXIgZGlzcGF0Y2hlcnMgc2VlXG4mIzQzO1x0ICogdGhlIHF1ZXVlIGFzIHF1aWVzY2VkOyB0aGUgYmFycmllciBoZXJlIG9ubHkga2VlcHMgdGhpcyBoZWxwZXJcbiYjNDM7XHQgKiBzZWxmLWNvbnRhaW5lZCBmb3IgdGhlIGZldyBjYWxsZXJzIHRoYXQgZGVmZXIgdGhlIHdhaXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0c21wX21iX19hZnRlcl9hdG9taWMoKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KTtcbiBcbkBAIC0zMTQsMjEgJiM0MzszMTgsMzAgQEAgRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWUpO1xuICAqL1xuIHZvaWQgYmxrX21xX3VucXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbiB7XG4tXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLVx0Ym9vbCBydW5fcXVldWUgPSBmYWxzZTtcbiYjNDM7XHRpbnQgZGVwdGg7XG4gXG4tXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZxLVx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcbi1cdGlmIChXQVJOX09OX09OQ0UocS1cdTAwM2VxdWllc2NlX2RlcHRoIFx1MDAzYz0gMCkpIHtcbi1cdFx0O1xuLVx0fSBlbHNlIGlmICghLS1xLVx1MDAzZXF1aWVzY2VfZGVwdGgpIHtcbi1cdFx0YmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19RVUlFU0NFRCwgcSk7XG4tXHRcdHJ1bl9xdWV1ZSA9IHRydWU7XG4tXHR9XG4tXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnEtXHUwMDNlcXVldWVfbG9jaywgZmxhZ3MpO1xuJiM0MztcdGRlcHRoID0gYXRvbWljX2RlY19pZl9wb3NpdGl2ZShcdTAwMjZxLVx1MDAzZXF1aWVzY2VfZGVwdGgpO1xuJiM0MztcdGlmIChXQVJOX09OX09OQ0UoZGVwdGggXHUwMDNjIDApKVxuJiM0MztcdFx0cmV0dXJuO1xuIFxuLVx0LyogZGlzcGF0Y2ggcmVxdWVzdHMgd2hpY2ggYXJlIGluc2VydGVkIGR1cmluZyBxdWllc2NpbmcgKi9cbi1cdGlmIChydW5fcXVldWUpXG4mIzQzO1x0aWYgKGRlcHRoID09IDApIHtcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBGdWxsIGJhcnJpZXIgYmV0d2VlbiB0aGUgcXVpZXNjZV9kZXB0aCBzdG9yZSBhYm92ZSBhbmQgdGhlXG4mIzQzO1x0XHQgKiBibGtfbXFfaGN0eF9oYXNfcGVuZGluZygpIGxvYWQgZG9uZSBmcm9tIGJsa19tcV9ydW5faHdfcXVldWVzKClcbiYjNDM7XHRcdCAqIGJlbG93LiAgVGhpcyBwYWlycyB3aXRoIHRoZSBzbXBfbWIoKSBiZWZvcmUgdGhlIHJlcXVpZXNjZVxuJiM0MztcdFx0ICogcmUtY2hlY2sgaW4gYmxrX21xX3J1bl9od19xdWV1ZSgpOiBvZiB0aGUgdHdvIHJhY2luZyBDUFVzXG4mIzQzO1x0XHQgKiAob25lIGluc2VydGluZyBhIHJlcXVlc3QgYW5kIHRoZW4gcmUtY2hlY2tpbmcgcXVpZXNjZSBzdGF0ZSxcbiYjNDM7XHRcdCAqIHRoZSBvdGhlciB1bnF1aWVzY2luZyBoZXJlIGFuZCB0aGVuIGNoZWNraW5nIGZvciBwZW5kaW5nXG4mIzQzO1x0XHQgKiB3b3JrKSBhdCBsZWFzdCBvbmUgc2VlcyB0aGUgb3RoZXImIzM5O3Mgc3RvcmUsIHNvIHRoZSBodyBxdWV1ZVxuJiM0MztcdFx0ICogaXMgbm90IGxlZnQgd2l0aCBhIHJlcXVlc3Qgc3RyYW5kZWQgb24gYSBub3ctcnVubmluZyBxdWV1ZS5cbiYjNDM7XHRcdCAqXG4mIzQzO1x0XHQgKiBhdG9taWNfZGVjX2lmX3Bvc2l0aXZlKCkgYWxyZWFkeSBvcmRlcnMgdGhlIGRlY3JlbWVudCBvblxuJiM0MztcdFx0ICogc3VjY2VzcywgYnV0IHNwZWxsIHRoZSBiYXJyaWVyIG91dCBzbyB0aGUgcGFpcmluZyBpcyBvYnZpb3VzLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRzbXBfbWJfX2FmdGVyX2F0b21pYygpO1xuJiM0MztcdFx0LyogZGlzcGF0Y2ggcmVxdWVzdHMgd2hpY2ggYXJlIGluc2VydGVkIGR1cmluZyBxdWllc2NpbmcgKi9cbiBcdFx0YmxrX21xX3J1bl9od19xdWV1ZXMocSwgdHJ1ZSk7XG4mIzQzO1x0fVxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfdW5xdWllc2NlX3F1ZXVlKTtcbiBcbkBAIC0yMzMxLDE3ICYjNDM7MjM0NCwyMSBAQCB2b2lkIGJsa19tcV9ydW5faHdfcXVldWUoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIGJvb2wgYXN5bmMpXG4gXG4gXHRuZWVkX3J1biA9IGJsa19tcV9od19xdWV1ZV9uZWVkX3J1bihoY3R4KTtcbiBcdGlmICghbmVlZF9ydW4pIHtcbi1cdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbi1cbiBcdFx0Lypcbi1cdFx0ICogU3luY2hyb25pemUgd2l0aCBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCksIGJlY2F1c2Ugd2UgY2hlY2tcbi1cdFx0ICogaWYgaHcgcXVldWUgaXMgcXVpZXNjZWQgbG9ja2xlc3NseSBhYm92ZSwgd2UgbmVlZCB0aGUgdXNlXG4tXHRcdCAqIC1cdTAwM2VxdWV1ZV9sb2NrIHRvIG1ha2Ugc3VyZSB3ZSBzZWUgdGhlIHVwLXRvLWRhdGUgc3RhdHVzIHRvXG4tXHRcdCAqIG5vdCBtaXNzIHJlcnVubmluZyB0aGUgaHcgcXVldWUuXG4mIzQzO1x0XHQgKiBSZS1jaGVjayBhZnRlciBhIGZ1bGwgYmFycmllci4gIEEgcmVxdWVzdCBtYXkgaGF2ZSBiZWVuXG4mIzQzO1x0XHQgKiBpbnNlcnRlZCBiZWZvcmUgdGhpcyBjYWxsLCB3aGlsZSBhIGNvbmN1cnJlbnRcbiYjNDM7XHRcdCAqIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKSBkcm9wcyBxdWllc2NlX2RlcHRoIHRvIHplcm8gYW5kXG4mIzQzO1x0XHQgKiB0aGVuIHJ1bnMgdGhlIGh3IHF1ZXVlcy4gIFRoaXMgc21wX21iKCkgb3JkZXJzIHRoZSByZXF1ZXN0XG4mIzQzO1x0XHQgKiBpbnNlcnQgKHRoZSBzdG9yZSB0aGF0IG1ha2VzIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgdHJ1ZSlcbiYjNDM7XHRcdCAqIGJlZm9yZSB0aGUgcmVxdWllc2NlLXN0YXRlIGxvYWQgYmVsb3csIGFuZCBwYWlycyB3aXRoIHRoZVxuJiM0MztcdFx0ICogc21wX21iX19hZnRlcl9hdG9taWMoKSBiZXR3ZWVuIHRoZSBxdWllc2NlX2RlcHRoIHN0b3JlIGFuZFxuJiM0MztcdFx0ICogdGhlIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgbG9hZCBpbiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKClcbiYjNDM7XHRcdCAqIChhbmQgaW4gYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkpLiAgV2l0aCBhIGZ1bGwgYmFycmllclxuJiM0MztcdFx0ICogb24gYm90aCBzaWRlcywgYXQgbGVhc3Qgb25lIENQVSBvYnNlcnZlcyB0aGUgb3RoZXImIzM5O3Mgc3RvcmUsXG4mIzQzO1x0XHQgKiBzbyB0aGUgcXVldWUgaXMgbm90IGxlZnQgYm90aCB1bi1xdWllc2NlZCBhbmQgbm90IHJlcnVuLlxuIFx0XHQgKi9cbi1cdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aGN0eC1cdTAwM2VxdWV1ZS1cdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XG4mIzQzO1x0XHRzbXBfbWIoKTtcbiBcdFx0bmVlZF9ydW4gPSBibGtfbXFfaHdfcXVldWVfbmVlZF9ydW4oaGN0eCk7XG4tXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aGN0eC1cdTAwM2VxdWV1ZS1cdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XG4gXG4gXHRcdGlmICghbmVlZF9ydW4pXG4gXHRcdFx0cmV0dXJuO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmggYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oXG5pbmRleCBkYmI1NDljZGZiNzc4Yi4uOWU0OWFiOWM3OGFlMGMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oXG5AQCAtNTI1LDcgJiM0Mzs1MjUsOCBAQCBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSB7XG4gXG4gXHRzcGlubG9ja190XHRcdHF1ZXVlX2xvY2s7XG4gXG4tXHRpbnRcdFx0XHRxdWllc2NlX2RlcHRoO1xuJiM0MztcdC8qIEF0b21pYyBxdWllc2NlIGRlcHRoIC0gYWxzbyBzZXJ2ZXMgYXMgcXVpZXNjZWQgaW5kaWNhdG9yIChkZXB0aCBcdTAwM2UgMCkgKi9cbiYjNDM7XHRhdG9taWNfdFx0XHRxdWllc2NlX2RlcHRoO1xuIFxuIFx0c3RydWN0IGdlbmRpc2tcdFx0KmRpc2s7XG4gXG5AQCAtNjcwLDcgJiM0Mzs2NzEsNiBAQCBlbnVtIHtcbiBcdFFVRVVFX0ZMQUdfSU5JVF9ET05FLFx0XHQvKiBxdWV1ZSBpcyBpbml0aWFsaXplZCAqL1xuIFx0UVVFVUVfRkxBR19TVEFUUyxcdFx0LyogdHJhY2sgSU8gc3RhcnQgYW5kIGNvbXBsZXRpb24gdGltZXMgKi9cbiBcdFFVRVVFX0ZMQUdfUkVHSVNURVJFRCxcdFx0LyogcXVldWUgaGFzIGJlZW4gcmVnaXN0ZXJlZCB0byBhIGRpc2sgKi9cbi1cdFFVRVVFX0ZMQUdfUVVJRVNDRUQsXHRcdC8qIHF1ZXVlIGhhcyBiZWVuIHF1aWVzY2VkICovXG4gXHRRVUVVRV9GTEFHX1JRX0FMTE9DX1RJTUUsXHQvKiByZWNvcmQgcnEtXHUwMDNlYWxsb2NfdGltZV9ucyAqL1xuIFx0UVVFVUVfRkxBR19IQ1RYX0FDVElWRSxcdFx0LyogYXQgbGVhc3Qgb25lIGJsay1tcSBoY3R4IGlzIGFjdGl2ZSAqL1xuIFx0UVVFVUVfRkxBR19TUV9TQ0hFRCxcdFx0Lyogc2luZ2xlIHF1ZXVlIHN0eWxlIGlvIGRpc3BhdGNoICovXG5AQCAtNzA4LDcgJiM0Mzs3MDgsMTAgQEAgdm9pZCBibGtfcXVldWVfZmxhZ19jbGVhcih1bnNpZ25lZCBpbnQgZmxhZywgc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpO1xuICNkZWZpbmUgYmxrX25vcmV0cnlfcmVxdWVzdChycSkgXFxcbiBcdCgocnEpLVx1MDAzZWNtZF9mbGFncyBcdTAwMjYgKFJFUV9GQUlMRkFTVF9ERVZ8UkVRX0ZBSUxGQVNUX1RSQU5TUE9SVHwgXFxcbiBcdFx0XHQgICAgIFJFUV9GQUlMRkFTVF9EUklWRVIpKVxuLSNkZWZpbmUgYmxrX3F1ZXVlX3F1aWVzY2VkKHEpXHR0ZXN0X2JpdChRVUVVRV9GTEFHX1FVSUVTQ0VELCBcdTAwMjYocSktXHUwMDNlcXVldWVfZmxhZ3MpXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBibGtfcXVldWVfcXVpZXNjZWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2cS1cdTAwM2VxdWllc2NlX2RlcHRoKSBcdTAwM2UgMDtcbiYjNDM7fVxuICNkZWZpbmUgYmxrX3F1ZXVlX3BtX29ubHkocSlcdGF0b21pY19yZWFkKFx1MDAyNihxKS1cdTAwM2VwbV9vbmx5KVxuICNkZWZpbmUgYmxrX3F1ZXVlX3JlZ2lzdGVyZWQocSlcdHRlc3RfYml0KFFVRVVFX0ZMQUdfUkVHSVNURVJFRCwgXHUwMDI2KHEpLVx1MDAzZXF1ZXVlX2ZsYWdzKVxuICNkZWZpbmUgYmxrX3F1ZXVlX3NxX3NjaGVkKHEpXHR0ZXN0X2JpdChRVUVVRV9GTEFHX1NRX1NDSEVELCBcdTAwMjYocSktXHUwMDNlcXVldWVfZmxhZ3MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjI6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQmIzM0OywKICAgICYjMzQ7YmxrX21xX3VucXVpZXNjZV9xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBzcGlubG9jay1iYXNlZCBxdWV1ZSBxdWllc2NlIHRyYWNraW5nIHdpdGggYW4gYXRvbWljIGNvdW50ZXIgYW5kIG1lbW9yeSBiYXJyaWVycyBpbiB0aGUgY29yZSBibG9jayBsYXllciAoYmxrLW1xLmMpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHF1ZXVlIHF1aWVzY2luZy91bnF1aWVzY2luZyBhbmQgaGFyZHdhcmUgcXVldWUgcnVucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIChlLmcuLCBkZXZpY2Ugc3VzcGVuZC9yZXN1bWUsIGVycm9yIGhhbmRsaW5nKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmQyNzRmMjBlMzM5MTk0MGNlMjMxYjUwZGM0MjNmYzA1OGMzNDliMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDkgMjI6NDY6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9ibG9jay9ibGstY29yZS5jIGIvYmxvY2svYmxrLWNvcmUuYwppbmRleCAzNjU2NDEyNjZjOWU4Mi4uNzk2Njk5NTdmNDdlNDcgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLWNvcmUuYwpAQCAtNDc3LDYgJiM0Mzs0NzcsNyBAQCBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqYmxrX2FsbG9jX3F1ZXVlKHN0cnVjdCBxdWV1ZV9saW1pdHMgKmxpbSwgaW50IG5vZGVfaWQpCiAJbXV0ZXhfaW5pdCgmYW1wO3EtJmd0O2xpbWl0c19sb2NrKTsKIAltdXRleF9pbml0KCZhbXA7cS0mZ3Q7cnFfcW9zX211dGV4KTsKIAlzcGluX2xvY2tfaW5pdCgmYW1wO3EtJmd0O3F1ZXVlX2xvY2spOwomIzQzOwlhdG9taWNfc2V0KCZhbXA7cS0mZ3Q7cXVpZXNjZV9kZXB0aCwgMCk7CiAKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZhbXA7cS0mZ3Q7bXFfZnJlZXplX3dxKTsKIAltdXRleF9pbml0KCZhbXA7cS0mZ3Q7bXFfZnJlZXplX2xvY2spOwpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLWRlYnVnZnMuYyBiL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmMKaW5kZXggNjc1NGQ4Zjk0NDljMTAuLjU2N2VlZGJiZjUwZmM4IDEwMDY0NAotLS0gYS9ibG9jay9ibGstbXEtZGVidWdmcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmMKQEAgLTkzLDcgJiM0Mzs5Myw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBibGtfcXVldWVfZmxhZ19uYW1lW10gPSB7CiAJUVVFVUVfRkxBR19OQU1FKElOSVRfRE9ORSksCiAJUVVFVUVfRkxBR19OQU1FKFNUQVRTKSwKIAlRVUVVRV9GTEFHX05BTUUoUkVHSVNURVJFRCksCi0JUVVFVUVfRkxBR19OQU1FKFFVSUVTQ0VEKSwKIAlRVUVVRV9GTEFHX05BTUUoUlFfQUxMT0NfVElNRSksCiAJUVVFVUVfRkxBR19OQU1FKEhDVFhfQUNUSVZFKSwKIAlRVUVVRV9GTEFHX05BTUUoU1FfU0NIRUQpLApkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLmMgYi9ibG9jay9ibGstbXEuYwppbmRleCAyYzg1MDMzMGEzMmJjNi4uMTg2YmJjYzhiOTI3NTkgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1tcS5jCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jsay1tcS5jCkBAIC0yNjAsMTIgJiM0MzsyNjAsMTYgQEAgRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3VuZnJlZXplX3F1ZXVlX25vbl9vd25lcik7CiAgKi8KIHZvaWQgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKQogewotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO3EtJmd0O3F1ZXVlX2xvY2ssIGZsYWdzKTsKLQlpZiAoIXEtJmd0O3F1aWVzY2VfZGVwdGgmIzQzOyYjNDM7KQotCQlibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19RVUlFU0NFRCwgcSk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO3EtJmd0O3F1ZXVlX2xvY2ssIGZsYWdzKTsKJiM0MzsJYXRvbWljX2luYygmYW1wO3EtJmd0O3F1aWVzY2VfZGVwdGgpOwomIzQzOwkvKgomIzQzOwkgKiBQdWJsaXNoIHRoZSBxdWllc2NlX2RlcHRoIGluY3JlbWVudC4gIENhbGxlcnMgbXVzdCBmb2xsb3cgdGhpcwomIzQzOwkgKiB3aXRoIGJsa19tcV93YWl0X3F1aWVzY2VfZG9uZSgpIChzeW5jaHJvbml6ZV9zcmN1KCkvCiYjNDM7CSAqIHN5bmNocm9uaXplX3JjdSgpKSwgd2hpY2ggaXMgd2hhdCBhY3R1YWxseSBndWFyYW50ZWVzIHRoYXQgYW55CiYjNDM7CSAqIGluLWZsaWdodCBkaXNwYXRjaGVyIGhhcyBmaW5pc2hlZCBhbmQgdGhhdCBsYXRlciBkaXNwYXRjaGVycyBzZWUKJiM0MzsJICogdGhlIHF1ZXVlIGFzIHF1aWVzY2VkOyB0aGUgYmFycmllciBoZXJlIG9ubHkga2VlcHMgdGhpcyBoZWxwZXIKJiM0MzsJICogc2VsZi1jb250YWluZWQgZm9yIHRoZSBmZXcgY2FsbGVycyB0aGF0IGRlZmVyIHRoZSB3YWl0LgomIzQzOwkgKi8KJiM0MzsJc21wX21iX19hZnRlcl9hdG9taWMoKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCk7CiAKQEAgLTMxNCwyMSAmIzQzOzMxOCwzMCBAQCBFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfcXVpZXNjZV9xdWV1ZSk7CiAgKi8KIHZvaWQgYmxrX21xX3VucXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSkKIHsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCWJvb2wgcnVuX3F1ZXVlID0gZmFsc2U7CiYjNDM7CWludCBkZXB0aDsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7cS0mZ3Q7cXVldWVfbG9jaywgZmxhZ3MpOwotCWlmIChXQVJOX09OX09OQ0UocS0mZ3Q7cXVpZXNjZV9kZXB0aCAmbHQ7PSAwKSkgewotCQk7Ci0JfSBlbHNlIGlmICghLS1xLSZndDtxdWllc2NlX2RlcHRoKSB7Ci0JCWJsa19xdWV1ZV9mbGFnX2NsZWFyKFFVRVVFX0ZMQUdfUVVJRVNDRUQsIHEpOwotCQlydW5fcXVldWUgPSB0cnVlOwotCX0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7cS0mZ3Q7cXVldWVfbG9jaywgZmxhZ3MpOwomIzQzOwlkZXB0aCA9IGF0b21pY19kZWNfaWZfcG9zaXRpdmUoJmFtcDtxLSZndDtxdWllc2NlX2RlcHRoKTsKJiM0MzsJaWYgKFdBUk5fT05fT05DRShkZXB0aCAmbHQ7IDApKQomIzQzOwkJcmV0dXJuOwogCi0JLyogZGlzcGF0Y2ggcmVxdWVzdHMgd2hpY2ggYXJlIGluc2VydGVkIGR1cmluZyBxdWllc2NpbmcgKi8KLQlpZiAocnVuX3F1ZXVlKQomIzQzOwlpZiAoZGVwdGggPT0gMCkgewomIzQzOwkJLyoKJiM0MzsJCSAqIEZ1bGwgYmFycmllciBiZXR3ZWVuIHRoZSBxdWllc2NlX2RlcHRoIHN0b3JlIGFib3ZlIGFuZCB0aGUKJiM0MzsJCSAqIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgbG9hZCBkb25lIGZyb20gYmxrX21xX3J1bl9od19xdWV1ZXMoKQomIzQzOwkJICogYmVsb3cuICBUaGlzIHBhaXJzIHdpdGggdGhlIHNtcF9tYigpIGJlZm9yZSB0aGUgcmVxdWllc2NlCiYjNDM7CQkgKiByZS1jaGVjayBpbiBibGtfbXFfcnVuX2h3X3F1ZXVlKCk6IG9mIHRoZSB0d28gcmFjaW5nIENQVXMKJiM0MzsJCSAqIChvbmUgaW5zZXJ0aW5nIGEgcmVxdWVzdCBhbmQgdGhlbiByZS1jaGVja2luZyBxdWllc2NlIHN0YXRlLAomIzQzOwkJICogdGhlIG90aGVyIHVucXVpZXNjaW5nIGhlcmUgYW5kIHRoZW4gY2hlY2tpbmcgZm9yIHBlbmRpbmcKJiM0MzsJCSAqIHdvcmspIGF0IGxlYXN0IG9uZSBzZWVzIHRoZSBvdGhlciYjMzk7cyBzdG9yZSwgc28gdGhlIGh3IHF1ZXVlCiYjNDM7CQkgKiBpcyBub3QgbGVmdCB3aXRoIGEgcmVxdWVzdCBzdHJhbmRlZCBvbiBhIG5vdy1ydW5uaW5nIHF1ZXVlLgomIzQzOwkJICoKJiM0MzsJCSAqIGF0b21pY19kZWNfaWZfcG9zaXRpdmUoKSBhbHJlYWR5IG9yZGVycyB0aGUgZGVjcmVtZW50IG9uCiYjNDM7CQkgKiBzdWNjZXNzLCBidXQgc3BlbGwgdGhlIGJhcnJpZXIgb3V0IHNvIHRoZSBwYWlyaW5nIGlzIG9idmlvdXMuCiYjNDM7CQkgKi8KJiM0MzsJCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7CiYjNDM7CQkvKiBkaXNwYXRjaCByZXF1ZXN0cyB3aGljaCBhcmUgaW5zZXJ0ZWQgZHVyaW5nIHF1aWVzY2luZyAqLwogCQlibGtfbXFfcnVuX2h3X3F1ZXVlcyhxLCB0cnVlKTsKJiM0MzsJfQogfQogRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3VucXVpZXNjZV9xdWV1ZSk7CiAKQEAgLTIzMzEsMTcgJiM0MzsyMzQ0LDIxIEBAIHZvaWQgYmxrX21xX3J1bl9od19xdWV1ZShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgYm9vbCBhc3luYykKIAogCW5lZWRfcnVuID0gYmxrX21xX2h3X3F1ZXVlX25lZWRfcnVuKGhjdHgpOwogCWlmICghbmVlZF9ydW4pIHsKLQkJdW5zaWduZWQgbG9uZyBmbGFnczsKLQogCQkvKgotCQkgKiBTeW5jaHJvbml6ZSB3aXRoIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKSwgYmVjYXVzZSB3ZSBjaGVjawotCQkgKiBpZiBodyBxdWV1ZSBpcyBxdWllc2NlZCBsb2NrbGVzc2x5IGFib3ZlLCB3ZSBuZWVkIHRoZSB1c2UKLQkJICogLSZndDtxdWV1ZV9sb2NrIHRvIG1ha2Ugc3VyZSB3ZSBzZWUgdGhlIHVwLXRvLWRhdGUgc3RhdHVzIHRvCi0JCSAqIG5vdCBtaXNzIHJlcnVubmluZyB0aGUgaHcgcXVldWUuCiYjNDM7CQkgKiBSZS1jaGVjayBhZnRlciBhIGZ1bGwgYmFycmllci4gIEEgcmVxdWVzdCBtYXkgaGF2ZSBiZWVuCiYjNDM7CQkgKiBpbnNlcnRlZCBiZWZvcmUgdGhpcyBjYWxsLCB3aGlsZSBhIGNvbmN1cnJlbnQKJiM0MzsJCSAqIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKSBkcm9wcyBxdWllc2NlX2RlcHRoIHRvIHplcm8gYW5kCiYjNDM7CQkgKiB0aGVuIHJ1bnMgdGhlIGh3IHF1ZXVlcy4gIFRoaXMgc21wX21iKCkgb3JkZXJzIHRoZSByZXF1ZXN0CiYjNDM7CQkgKiBpbnNlcnQgKHRoZSBzdG9yZSB0aGF0IG1ha2VzIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgdHJ1ZSkKJiM0MzsJCSAqIGJlZm9yZSB0aGUgcmVxdWllc2NlLXN0YXRlIGxvYWQgYmVsb3csIGFuZCBwYWlycyB3aXRoIHRoZQomIzQzOwkJICogc21wX21iX19hZnRlcl9hdG9taWMoKSBiZXR3ZWVuIHRoZSBxdWllc2NlX2RlcHRoIHN0b3JlIGFuZAomIzQzOwkJICogdGhlIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgbG9hZCBpbiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkKJiM0MzsJCSAqIChhbmQgaW4gYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkpLiAgV2l0aCBhIGZ1bGwgYmFycmllcgomIzQzOwkJICogb24gYm90aCBzaWRlcywgYXQgbGVhc3Qgb25lIENQVSBvYnNlcnZlcyB0aGUgb3RoZXImIzM5O3Mgc3RvcmUsCiYjNDM7CQkgKiBzbyB0aGUgcXVldWUgaXMgbm90IGxlZnQgYm90aCB1bi1xdWllc2NlZCBhbmQgbm90IHJlcnVuLgogCQkgKi8KLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtoY3R4LSZndDtxdWV1ZS0mZ3Q7cXVldWVfbG9jaywgZmxhZ3MpOwomIzQzOwkJc21wX21iKCk7CiAJCW5lZWRfcnVuID0gYmxrX21xX2h3X3F1ZXVlX25lZWRfcnVuKGhjdHgpOwotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7aGN0eC0mZ3Q7cXVldWUtJmd0O3F1ZXVlX2xvY2ssIGZsYWdzKTsKIAogCQlpZiAoIW5lZWRfcnVuKQogCQkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGtkZXYuaCBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKaW5kZXggZGJiNTQ5Y2RmYjc3OGIuLjllNDlhYjljNzhhZTBjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmgKQEAgLTUyNSw3ICYjNDM7NTI1LDggQEAgc3RydWN0IHJlcXVlc3RfcXVldWUgewogCiAJc3BpbmxvY2tfdAkJcXVldWVfbG9jazsKIAotCWludAkJCXF1aWVzY2VfZGVwdGg7CiYjNDM7CS8qIEF0b21pYyBxdWllc2NlIGRlcHRoIC0gYWxzbyBzZXJ2ZXMgYXMgcXVpZXNjZWQgaW5kaWNhdG9yIChkZXB0aCAmZ3Q7IDApICovCiYjNDM7CWF0b21pY190CQlxdWllc2NlX2RlcHRoOwogCiAJc3RydWN0IGdlbmRpc2sJCSpkaXNrOwogCkBAIC02NzAsNyAmIzQzOzY3MSw2IEBAIGVudW0gewogCVFVRVVFX0ZMQUdfSU5JVF9ET05FLAkJLyogcXVldWUgaXMgaW5pdGlhbGl6ZWQgKi8KIAlRVUVVRV9GTEFHX1NUQVRTLAkJLyogdHJhY2sgSU8gc3RhcnQgYW5kIGNvbXBsZXRpb24gdGltZXMgKi8KIAlRVUVVRV9GTEFHX1JFR0lTVEVSRUQsCQkvKiBxdWV1ZSBoYXMgYmVlbiByZWdpc3RlcmVkIHRvIGEgZGlzayAqLwotCVFVRVVFX0ZMQUdfUVVJRVNDRUQsCQkvKiBxdWV1ZSBoYXMgYmVlbiBxdWllc2NlZCAqLwogCVFVRVVFX0ZMQUdfUlFfQUxMT0NfVElNRSwJLyogcmVjb3JkIHJxLSZndDthbGxvY190aW1lX25zICovCiAJUVVFVUVfRkxBR19IQ1RYX0FDVElWRSwJCS8qIGF0IGxlYXN0IG9uZSBibGstbXEgaGN0eCBpcyBhY3RpdmUgKi8KIAlRVUVVRV9GTEFHX1NRX1NDSEVELAkJLyogc2luZ2xlIHF1ZXVlIHN0eWxlIGlvIGRpc3BhdGNoICovCkBAIC03MDgsNyAmIzQzOzcwOCwxMCBAQCB2b2lkIGJsa19xdWV1ZV9mbGFnX2NsZWFyKHVuc2lnbmVkIGludCBmbGFnLCBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSk7CiAjZGVmaW5lIGJsa19ub3JldHJ5X3JlcXVlc3QocnEpIFwKIAkoKHJxKS0mZ3Q7Y21kX2ZsYWdzICZhbXA7IChSRVFfRkFJTEZBU1RfREVWfFJFUV9GQUlMRkFTVF9UUkFOU1BPUlR8IFwKIAkJCSAgICAgUkVRX0ZBSUxGQVNUX0RSSVZFUikpCi0jZGVmaW5lIGJsa19xdWV1ZV9xdWllc2NlZChxKQl0ZXN0X2JpdChRVUVVRV9GTEFHX1FVSUVTQ0VELCAmYW1wOyhxKS0mZ3Q7cXVldWVfZmxhZ3MpCiYjNDM7c3RhdGljIGlubGluZSBib29sIGJsa19xdWV1ZV9xdWllc2NlZChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSkKJiM0Mzt7CiYjNDM7CXJldHVybiBhdG9taWNfcmVhZCgmYW1wO3EtJmd0O3F1aWVzY2VfZGVwdGgpICZndDsgMDsKJiM0Mzt9CiAjZGVmaW5lIGJsa19xdWV1ZV9wbV9vbmx5KHEpCWF0b21pY19yZWFkKCZhbXA7KHEpLSZndDtwbV9vbmx5KQogI2RlZmluZSBibGtfcXVldWVfcmVnaXN0ZXJlZChxKQl0ZXN0X2JpdChRVUVVRV9GTEFHX1JFR0lTVEVSRUQsICZhbXA7KHEpLSZndDtxdWV1ZV9mbGFncykKICNkZWZpbmUgYmxrX3F1ZXVlX3NxX3NjaGVkKHEpCXRlc3RfYml0KFFVRVVFX0ZMQUdfU1FfU0NIRUQsICZhbXA7KHEpLSZndDtxdWV1ZV9mbGFncykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEwMgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgQmxvY2sgTGF5ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHBva2luZyBhcm91bmQgaW4gdGhlIGJsb2NrIGxheWVyLCBzcGVjaWZpY2FsbHkgaW4gYGJsay1tcS5jYCwgYGJsay1jb3JlLmNgLCBgYmxrLW1xLWRlYnVnZnMuY2AsIGFuZCB0aGUgYGJsa2Rldi5oYCBpbmNsdWRlIGZpbGUuIFRoaXMgbG9va3MgbGlrZSBhIGZhaXJseSBzaWduaWZpY2FudCBjaGFuZ2Ug4oCTIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhvdyB0aGUga2VybmVsIHRyYWNrcyBxdWV1ZSBxdWllc2NpbmcuIEluc3RlYWQgb2YgdGhhdCBzcGlubG9jay1wcm90ZWN0ZWQgYHF1aWVzY2VfZGVwdGhgIGFuZCB0aGUgYFFVRVVFX0ZMQUdfUVVJRVNDRURgIGZsYWcsIHRoZXkmIzM5O3JlIHN3YXBwaW5nIGluIGFuIGBhdG9taWNfdCBxdWllc2NlX2RlcHRoYC4gSW50ZXJlc3RpbmcuCgpUaGV5JiMzOTtyZSBjbGVhcmx5IG1vZGlmeWluZyBzb21lIGtleSBmdW5jdGlvbnM6IGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgLCBgYmxrX21xX3VucXVpZXNjZV9xdWV1ZWAsIGFuZCBgYmxrX21xX3J1bl9od19xdWV1ZWAuIFllcCwgdGhpcyBpcyBjb3JlIGtlcm5lbCBsb2dpYyBpbiB0aGUgYmxvY2sgbGF5ZXIsIG5vIGRvdWJ0IGFib3V0IGl0LiBEZWZpbml0ZWx5IGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb2RlLiBHb29kLCBnb29kLiBUaGV5JiMzOTtyZSByZW1vdmluZyB0aGUgYFFVRVVFX0ZMQUdfUVVJRVNDRURgIGNvbXBsZXRlbHkgYW5kIHVzaW5nIGFuIGF0b21pYyByZWFkLCBgYXRvbWljX3JlYWQoJmFtcDtxLSZndDtxdWllc2NlX2RlcHRoKSAmZ3Q7IDBgLCBpbnN0ZWFkLiBBbmQgdGhleSYjMzk7cmUgYWxzbyBjaGFuZ2luZyB0aGUgc3luY2hyb25pemF0aW9uIGluIGBibGtfbXFfcnVuX2h3X3F1ZXVlYCwgbW92aW5nIHRvIGFuIGBzbXBfbWIoKWAgaW5zdGVhZCBvZiB1c2luZyB0aGUgYHF1ZXVlX2xvY2tgLgoKR2l2ZW4gdGhhdCB0aGlzIGlzIHRvdWNoaW5nIGNvcmUgYmxvY2sgbGF5ZXIgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgc3ltYm9scyB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgdGhvc2UgdGhyZWUgZnVuY3Rpb25zOiBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YCwgYGJsa19tcV91bnF1aWVzY2VfcXVldWVgLCBhbmQgYGJsa19tcV9ydW5faHdfcXVldWVgLgoKTm93LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIG5lZWRlZCB0byBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5LiBUaGUgYmxvY2sgbGF5ZXIsIGFzIGFsd2F5cywgaXMgZW5hYmxlZCBieSBgQ09ORklHX0JMT0NLYC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIGtlcm5lbCwgc28gaXQmIzM5O3MgcHJvYmFibHkgZW5hYmxlZCBieSBkZWZhdWx0LiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIGl0c2VsZiBpcyBndWFyZGVkIGJ5IGFueXRoaW5nIHNwZWNpZmljLiBPa2F5LCBgYmxrLW1xLmNgIGFuZCB0aHVzIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfQkxPQ0tgIGlzIGVuYWJsZWQuIEdvb2QuIFdlJiMzOTt2ZSB2ZXJpZmllZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLW1xLmM9MjU1PUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV91bmZyZWV6ZV9xdWV1ZV9ub25fb3duZXIpO1xuLS1cbmJsb2NrL2Jsay1tcS5jLTI2MC0gKi9cbmJsb2NrL2Jsay1tcS5jOjI2MTp2b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbmJsb2NrL2Jsay1tcS5jLTI2Mi17XG4tLVxuYmxvY2svYmxrLW1xLmMtMjczLX1cbmJsb2NrL2Jsay1tcS5jOjI3NDpFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQpO1xuYmxvY2svYmxrLW1xLmMtMjc1LVxuLS1cbmJsb2NrL2Jsay1tcS5jLTI4Mi0gKiBmdW5jdGlvbiBvbmx5IHdhaXRzIGZvciB0aGUgcXVpZXNjZSBvbiB0aG9zZSByZXF1ZXN0X3F1ZXVlcyB0aGF0IGhhZFxuYmxvY2svYmxrLW1xLmM6MjgzOiAqIHRoZSBxdWllc2NlIGZsYWcgc2V0IHVzaW5nIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdC5cbmJsb2NrL2Jsay1tcS5jLTI4NC0gKi9cbi0tXG5ibG9jay9ibGstbXEuYz0zMDM9dm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbmJsb2NrL2Jsay1tcS5jLTMwNC17XG5ibG9jay9ibGstbXEuYzozMDU6XHRibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSk7XG5ibG9jay9ibGstbXEuYy0zMDYtXHQvKiBub3RoaW5nIHRvIHdhaXQgZm9yIG5vbi1tcSBxdWV1ZXMgKi9cbi0tXG5ibG9jay9ibGstbXEuYz0zNDg9dm9pZCBibGtfbXFfcXVpZXNjZV90YWdzZXQoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpXG4tLVxuYmxvY2svYmxrLW1xLmMtMzU0LVx0XHRpZiAoIWJsa19xdWV1ZV9za2lwX3RhZ3NldF9xdWllc2NlKHEpKVxuYmxvY2svYmxrLW1xLmM6MzU1Olx0XHRcdGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTtcbmJsb2NrL2Jsay1tcS5jLTM1Ni1cdH1cbi0tXG5ibG9jay9ibGstbXEuYz0yMzM0PXZvaWQgYmxrX21xX3J1bl9od19xdWV1ZShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgYm9vbCBhc3luYylcbi0tXG5ibG9jay9ibGstbXEuYy0yMzU1LVx0XHQgKiB0aGUgYmxrX21xX2hjdHhfaGFzX3BlbmRpbmcoKSBsb2FkIGluIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKVxuYmxvY2svYmxrLW1xLmM6MjM1NjpcdFx0ICogKGFuZCBpbiBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoKSkuICBXaXRoIGEgZnVsbCBiYXJyaWVyXG5ibG9jay9ibGstbXEuYy0yMzU3LVx0XHQgKiBvbiBib3RoIHNpZGVzLCBhdCBsZWFzdCBvbmUgQ1BVIG9ic2VydmVzIHRoZSBvdGhlciYjMzk7cyBzdG9yZSxcbi0tXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYz0xNTkwPXN0YXRpYyBpbnQgdmlydGJsa19mcmVlemVfcHJpdihzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYy0xNTk3LVx0bWVtZmxhZ3MgPSBibGtfbXFfZnJlZXplX3F1ZXVlKHEpO1xuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTU5ODpcdGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTtcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jLTE1OTktXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jPTI5Mzg9c3RhdGljIHZvaWQgc2NzaV9zdG9wX3F1ZXVlKHN0cnVjdCBzY3NpX2RldmljZSAqc2Rldilcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYy0yOTQ2LVx0aWYgKCFjbXB4Y2hnKFx1MDAyNnNkZXYtXHUwMDNlcXVldWVfc3RvcHBlZCwgMCwgMSkpXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYzoyOTQ3Olx0XHRibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoc2Rldi1cdTAwM2VyZXF1ZXN0X3F1ZXVlKTtcbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jLTI5NDgtfVxuLS1cbmluY2x1ZGUvbGludXgvYmxrLW1xLmg9OTc3PXZvaWQgYmxrX21xX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQsIGludCBucl9od19xdWV1ZXMpO1xuaW5jbHVkZS9saW51eC9ibGstbXEuaC05NzgtXG5pbmNsdWRlL2xpbnV4L2Jsay1tcS5oOjk3OTp2b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSk7XG5pbmNsdWRlL2xpbnV4L2Jsay1tcS5oLTk4MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTkyCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQmxvY2sgTGF5ZXIgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKUmlnaHQsIHRoZSBibG9jayBsYXllci4gVGhhdCYjMzk7cyBmdW5kYW1lbnRhbCwgYSAqY3JpdGljYWwqIHBpZWNlIG9mIHRoZSBrZXJuZWwgYXJjaGl0ZWN0dXJlLiBZb3UgY2FuIGJldCB0aGF0IGBDT05GSUdfQkxPQ0tgIGlzIGFsbW9zdCBhbHdheXMgZW5hYmxlZC4gSXQmIzM5O3MgdGhlIHBsdW1iaW5nLCB0aGUgY29yZS4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmbGFncywgc29tZXRoaW5nIG1vcmUgZ3JhbnVsYXIsIGZvciBhIHBhcnRpY3VsYXIgY29tcG9uZW50LCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgYGJsay1tcS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0JiMzOTtzIGJlaW5nIGNvbmZpZ3VyZWQuIEFyZSB0aGVyZSBhbnkgcGVjdWxpYXJpdGllcyBvciBvcHRpbWl6YXRpb24gZmxhZ3MgSSBzaG91bGQgYmUgYXdhcmUgb2YgZm9yIGBibGstbXFgIHRvIGJldHRlciB1bmRlcnN0YW5kIHRoaXMgbGF5ZXI/IExldCYjMzk7cyBkaWcgaW50byB0aGUgZGV0YWlscyBhbmQgc2VlIHdoYXQgdGhlIGtlcm5lbCBjb25maWcgc2F5cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibGstbXEubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9NYWtlZmlsZT04PW9iai15XHRcdDo9IGJkZXYubyBmb3BzLm8gYmlvLm8gZWxldmF0b3IubyBibGstY29yZS5vIGJsay1zeXNmcy5vIFxcXG5ibG9jay9NYWtlZmlsZS05LVx0XHRcdGJsay1mbHVzaC5vIGJsay1zZXR0aW5ncy5vIGJsay1pb2MubyBibGstbWFwLm8gXFxcbmJsb2NrL01ha2VmaWxlOjEwOlx0XHRcdGJsay1tZXJnZS5vIGJsay10aW1lb3V0Lm8gYmxrLWxpYi5vIGJsay1tcS5vIFxcXG5ibG9jay9NYWtlZmlsZS0xMS1cdFx0XHRibGstbXEtdGFnLm8gYmxrLW1xLWRtYS5vIGJsay1zdGF0Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzU2CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSB1bmRlcnN0YW5kIHRoaXM6CgoqKkFuYWx5emluZyBCbG9jayBMYXllciBDb21waWxhdGlvbiBhbmQgQ29uY3VycmVuY3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHNvbWV0aGluZyB0aGF0JiMzOTtzIGRpcmVjdGx5IGxpbmtlZCBpbnRvIHRoZSBibG9jayBsYXllciwgd2hpY2ggaXMgY29uZmlybWVkIGJ5IGl0cyBpbmNsdXNpb24gaW4gdGhlIGBvYmoteWAgbGlzdCB3aXRoaW4gYGJsb2NrL01ha2VmaWxlYC4gVGhpcyBtZWFucywgYXMgYW4gZXhwZXJ0LCBJIGtub3cgdGhpcyBjb2RlIGlzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgYmxvY2sgZGV2aWNlIGRyaXZlciBpbmZyYXN0cnVjdHVyZS4gQ3J1Y2lhbGx5LCBpdCYjMzk7cyBhbHdheXMgY29tcGlsZWQgYXMgbG9uZyBhcyBgQ09ORklHX0JMT0NLYCBpcyBzZXQuIEdpdmVuIHRoYXQgYENPTkZJR19CTE9DS2AgaXMgYSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBpdCBmdXJ0aGVyIHVuZGVyc2NvcmVzIHRoZSBpbXBvcnRhbmNlIG9mIHRoaXMgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQgd29ya3Mgd2l0aCBhbnkgYmxvY2sgZGV2aWNlLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBkZWVwZXIgYW5kIGFuYWx5emUgd2hhdCBpcyBoYXBwZW5pbmcgd2l0aCBgYmxrX21xX3VucXVpZXNjZV9xdWV1ZWAgYW5kIGBibGtfbXFfcnVuX2h3X3F1ZXVlYC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgd2lsbCBiZSByZWxldmFudCB0byBjb25jdXJyZW5jeSwgYW5kIEkgaGF2ZSBhIGZlZWxpbmcgdGhpcyByZWxhdGVzIHRvIGJyaW5naW5nIGEgcXVldWUgYmFjayBvbmxpbmUgYWZ0ZXIgYmVpbmcgcXVpZXNjZWQsIGFuZCB0aGVuIGdldHRpbmcgaXQgcnVubmluZyBvbiBhIGhhcmR3YXJlIHF1ZXVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jsa19tcV91bnF1aWVzY2VfcXVldWUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLWlvY29zdC5jPTMyNjY9c3RhdGljIHNzaXplX3QgaW9jX3Fvc193cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmlucHV0LFxuLS1cbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNDA3LVxuYmxvY2svYmxrLWlvY29zdC5jOjM0MDg6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXHUwMDNlcXVldWUpO1xuYmxvY2svYmxrLWlvY29zdC5jLTM0MDktXG4tLVxuYmxvY2svYmxrLWlvY29zdC5jLTM0MTctXHRzcGluX3VubG9ja19pcnEoXHUwMDI2aW9jLVx1MDAzZWxvY2spO1xuYmxvY2svYmxrLWlvY29zdC5jOjM0MTg6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXHUwMDNlcXVldWUpO1xuYmxvY2svYmxrLWlvY29zdC5jLTM0MTktXHRyZXQgPSAtRUlOVkFMO1xuLS1cbmJsb2NrL2Jsay1pb2Nvc3QuYz0zNDY5PXN0YXRpYyBzc2l6ZV90IGlvY19jb3N0X21vZGVsX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqaW5wdXQsXG4tLVxuYmxvY2svYmxrLWlvY29zdC5jLTM1NTgtXG5ibG9jay9ibGstaW9jb3N0LmM6MzU1OTpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XG5ibG9jay9ibGstaW9jb3N0LmMtMzU2MC1cdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShxLCBtZW1mbGFncyk7XG4tLVxuYmxvY2svYmxrLW1xLmM9MjkyPUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV93YWl0X3F1aWVzY2VfZG9uZSk7XG4tLVxuYmxvY2svYmxrLW1xLmMtMzAwLSAqIHN1cmUgbm8gZGlzcGF0Y2ggY2FuIGhhcHBlbiB1bnRpbCB0aGUgcXVldWUgaXMgdW5xdWllc2NlZCB2aWFcbmJsb2NrL2Jsay1tcS5jOjMwMTogKiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkuXG5ibG9jay9ibGstbXEuYy0zMDItICovXG4tLVxuYmxvY2svYmxrLW1xLmM9MzEwPUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV9xdWllc2NlX3F1ZXVlKTtcbi0tXG5ibG9jay9ibGstbXEuYy0zMTItLypcbmJsb2NrL2Jsay1tcS5jOjMxMzogKiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkgLSBjb3VudGVycGFydCBvZiBibGtfbXFfcXVpZXNjZV9xdWV1ZSgpXG5ibG9jay9ibGstbXEuYy0zMTQtICogQHE6IHJlcXVlc3QgcXVldWUuXG4tLVxuYmxvY2svYmxrLW1xLmMtMzE4LSAqL1xuYmxvY2svYmxrLW1xLmM6MzE5OnZvaWQgYmxrX21xX3VucXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbmJsb2NrL2Jsay1tcS5jLTMyMC17XG4tLVxuYmxvY2svYmxrLW1xLmMtMzQ1LX1cbmJsb2NrL2Jsay1tcS5jOjM0NjpFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfdW5xdWllc2NlX3F1ZXVlKTtcbmJsb2NrL2Jsay1tcS5jLTM0Ny1cbi0tXG5ibG9jay9ibGstbXEuYz0zNjM9dm9pZCBibGtfbXFfdW5xdWllc2NlX3RhZ3NldChzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgKnNldClcbi0tXG5ibG9jay9ibGstbXEuYy0zNjktXHRcdGlmICghYmxrX3F1ZXVlX3NraXBfdGFnc2V0X3F1aWVzY2UocSkpXG5ibG9jay9ibGstbXEuYzozNzA6XHRcdFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcbmJsb2NrL2Jsay1tcS5jLTM3MS1cdH1cbi0tXG5ibG9jay9ibGstbXEuYz0yMzA3PXN0YXRpYyBpbmxpbmUgYm9vbCBibGtfbXFfaHdfcXVldWVfbmVlZF9ydW4oc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgpXG4tLVxuYmxvY2svYmxrLW1xLmMtMjMxNS1cdCAqXG5ibG9jay9ibGstbXEuYzoyMzE2Olx0ICogQW5kIHF1ZXVlIHdpbGwgYmUgcmVydW4gaW4gYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpIGlmIGl0IGlzXG5ibG9jay9ibGstbXEuYy0yMzE3LVx0ICogcXVpZXNjZWQuXG4tLVxuYmxvY2svYmxrLW1xLmM9MjMzND12b2lkIGJsa19tcV9ydW5faHdfcXVldWUoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIGJvb2wgYXN5bmMpXG4tLVxuYmxvY2svYmxrLW1xLmMtMjM0OS1cdFx0ICogaW5zZXJ0ZWQgYmVmb3JlIHRoaXMgY2FsbCwgd2hpbGUgYSBjb25jdXJyZW50XG5ibG9jay9ibGstbXEuYzoyMzUwOlx0XHQgKiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkgZHJvcHMgcXVpZXNjZV9kZXB0aCB0byB6ZXJvIGFuZFxuYmxvY2svYmxrLW1xLmMtMjM1MS1cdFx0ICogdGhlbiBydW5zIHRoZSBodyBxdWV1ZXMuICBUaGlzIHNtcF9tYigpIG9yZGVycyB0aGUgcmVxdWVzdFxuLS1cbmJsb2NrL2Jsay1tcS5jLTIzNTQtXHRcdCAqIHNtcF9tYl9fYWZ0ZXJfYXRvbWljKCkgYmV0d2VlbiB0aGUgcXVpZXNjZV9kZXB0aCBzdG9yZSBhbmRcbmJsb2NrL2Jsay1tcS5jOjIzNTU6XHRcdCAqIHRoZSBibGtfbXFfaGN0eF9oYXNfcGVuZGluZygpIGxvYWQgaW4gYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpXG5ibG9jay9ibGstbXEuYy0yMzU2LVx0XHQgKiAoYW5kIGluIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCgpKS4gIFdpdGggYSBmdWxsIGJhcnJpZXJcbi0tXG5ibG9jay9ibGstbXEuYz01MDAxPXN0cnVjdCBlbGV2YXRvcl90YWdzICpibGtfbXFfdXBkYXRlX25yX3JlcXVlc3RzKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLFxuLS1cbmJsb2NrL2Jsay1tcS5jLTUwNTYtXG5ibG9jay9ibGstbXEuYzo1MDU3Olx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcbmJsb2NrL2Jsay1tcS5jLTUwNTgtXHRyZXR1cm4gb2xkX2V0O1xuLS1cbmJsb2NrL2Jsay1zeXNmcy5jPTQwMD1zdGF0aWMgc3NpemVfdCBxdWV1ZV96b25lZF9xZDFfd3JpdGVzX3N0b3JlKHN0cnVjdCBnZW5kaXNrICpkaXNrLFxuLS1cbmJsb2NrL2Jsay1zeXNmcy5jLTQxNy1cdFx0YmxrX3F1ZXVlX2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19aT05FRF9RRDFfV1JJVEVTLCBxKTtcbmJsb2NrL2Jsay1zeXNmcy5jOjQxODpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XG5ibG9jay9ibGstc3lzZnMuYy00MTktXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuLS1cbmJsb2NrL2Jsay10aHJvdHRsZS5jPTEzMTg9c3RhdGljIGludCBibGtfdGhyb3RsX2luaXQoc3RydWN0IGdlbmRpc2sgKmRpc2spXG4tLVxuYmxvY2svYmxrLXRocm90dGxlLmMtMTM0NC1cbmJsb2NrL2Jsay10aHJvdHRsZS5jOjEzNDU6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXHUwMDNlcXVldWUpO1xuYmxvY2svYmxrLXRocm90dGxlLmMtMTM0Ni1cdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShkaXNrLVx1MDAzZXF1ZXVlLCBtZW1mbGFncyk7XG4tLVxuYmxvY2svYmxrLXdidC5jPTk5MD1pbnQgd2J0X3NldF9sYXQoc3RydWN0IGdlbmRpc2sgKmRpc2ssIHM2NCB2YWwpXG4tLVxuYmxvY2svYmxrLXdidC5jLTEwMzUtXG5ibG9jay9ibGstd2J0LmM6MTAzNjpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XG5ibG9jay9ibGstd2J0LmMtMTAzNy1vdXQ6XG4tLVxuYmxvY2svZWxldmF0b3IuYz01NjI9c3RhdGljIGludCBlbGV2YXRvcl9zd2l0Y2goc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBlbHZfY2hhbmdlX2N0eCAqY3R4KVxuLS1cbmJsb2NrL2VsZXZhdG9yLmMtNTk2LW91dF91bmZyZWV6ZTpcbmJsb2NrL2VsZXZhdG9yLmM6NTk3Olx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcbmJsb2NrL2VsZXZhdG9yLmMtNTk4LVxuLS1cbmRyaXZlcnMvYmxvY2svYW9lL2FvZWRldi5jPTE5Nz1hb2VkZXZfZG93bmRldihzdHJ1Y3QgYW9lZGV2ICpkKVxuLS1cbmRyaXZlcnMvYmxvY2svYW9lL2FvZWRldi5jLTI0Mi1cdFx0YmxrX21xX3F1aWVzY2VfcXVldWUoZC1cdTAwM2VibGtxKTtcbmRyaXZlcnMvYmxvY2svYW9lL2FvZWRldi5jOjI0MzpcdFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShkLVx1MDAzZWJsa3EpO1xuZHJpdmVycy9ibG9jay9hb2UvYW9lZGV2LmMtMjQ0LVx0XHRibGtfbXFfdW5mcmVlemVfcXVldWUoZC1cdTAwM2VibGtxLCBtZW1mbGFncyk7XG4tLVxuZHJpdmVycy9ibG9jay9hdGFmbG9wLmM9NzQzPXN0YXRpYyBpbnQgZG9fZm9ybWF0KGludCBkcml2ZSwgaW50IHR5cGUsIHN0cnVjdCBhdGFyaV9mb3JtYXRfZGVzY3IgKmRlc2MpXG4tLVxuZHJpdmVycy9ibG9jay9hdGFmbG9wLmMtODE5LW91dDpcbmRyaXZlcnMvYmxvY2svYXRhZmxvcC5jOjgyMDpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XG5kcml2ZXJzL2Jsb2NrL2F0YWZsb3AuYy04MjEtXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuLS1cbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYz04ODk9c3RhdGljIGludCBtdGlwX3F1aWVzY2VfaW8oc3RydWN0IG10aXBfcG9ydCAqcG9ydCwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KVxuLS1cbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy05MTMtXG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmM6OTE0Olx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShwb3J0LVx1MDAzZWRkLVx1MDAzZXF1ZXVlKTtcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy05MTUtXHRyZXR1cm4gYWN0aXZlID8gLUVCVVNZIDogMDtcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy05MTYtZXJyX2ZhdWx0OlxuZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5jOjkxNzpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocG9ydC1cdTAwM2VkZC1cdTAwM2VxdWV1ZSk7XG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMtOTE4LVx0cmV0dXJuIC1FRkFVTFQ7XG4tLVxuZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5jPTI0NjU9c3RhdGljIGludCBtdGlwX3NlcnZpY2VfdGhyZWFkKHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5jLTI1MjgtXG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmM6MjUyOTpcdFx0XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRkLVx1MDAzZXF1ZXVlKTtcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy0yNTMwLVx0XHR9XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0xMDUwPXN0YXRpYyB2b2lkIG5iZF9jbGVhcl9xdWUoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEwNTMtXHRibGtfbXFfdGFnc2V0X2J1c3lfaXRlcihcdTAwMjZuYmQtXHUwMDNldGFnX3NldCwgbmJkX2NsZWFyX3JlcSwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEwNTQ6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKG5iZC1cdTAwM2VkaXNrLVx1MDAzZXF1ZXVlKTtcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTA1NS1cdGRldl9kYmcoZGlza190b19kZXYobmJkLVx1MDAzZWRpc2spLCBcJiMzNDtxdWV1ZSBjbGVhcmVkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3N1bnZkYy5jPTExMTQ9c3RhdGljIHZvaWQgdmRjX3F1ZXVlX2RyYWluKHN0cnVjdCB2ZGNfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL2Jsb2NrL3N1bnZkYy5jLTExMzAtXHRwb3J0LVx1MDAzZWRyYWluID0gMDtcbmRyaXZlcnMvYmxvY2svc3VudmRjLmM6MTEzMTpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XG5kcml2ZXJzL2Jsb2NrL3N1bnZkYy5jLTExMzItXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuLS1cbmRyaXZlcnMvYmxvY2svc3dpbTMuYz04NDA9c3RhdGljIHZvaWQgcmVsZWFzZV9kcml2ZShzdHJ1Y3QgZmxvcHB5X3N0YXRlICpmcylcbi0tXG5kcml2ZXJzL2Jsb2NrL3N3aW0zLmMtODUzLVx0YmxrX21xX3F1aWVzY2VfcXVldWUocSk7XG5kcml2ZXJzL2Jsb2NrL3N3aW0zLmM6ODU0Olx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcbmRyaXZlcnMvYmxvY2svc3dpbTMuYy04NTUtXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0yNzI2PXN0YXRpYyB2b2lkIHVibGtfc3RhcnRfY2FuY2VsKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTI3NDAtXHRcdHVibGtfc2V0X2NhbmNlbGluZyh1YiwgdHJ1ZSk7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6Mjc0MTpcdFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShkaXNrLVx1MDAzZXF1ZXVlKTtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNzQyLVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9Mjk1Mz1zdGF0aWMgdm9pZCB1YmxrX2ZvcmNlX2Fib3J0X2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yOTY2LVx0XHR1YmxrX2dldF9xdWV1ZSh1YiwgaSktXHUwMDNlZm9yY2VfYWJvcnQgPSB0cnVlO1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjI5Njc6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHViLVx1MDAzZXViX2Rpc2stXHUwMDNlcXVldWUpO1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTI5NjgtXHQvKiBXZSBtYXkgaGF2ZSByZXF1ZXVlZCBzb21lIHJxcyBpbiB1YmxrX3F1aWVzY2VfcXVldWUoKSAqL1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01MjIwPXN0YXRpYyBpbnQgdWJsa19jdHJsX3F1aWVzY2VfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyNDYtXHR1YmxrX3NldF9jYW5jZWxpbmcodWIsIHRydWUpO1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUyNDc6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXHUwMDNlcXVldWUpO1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyNDgtXHRtdXRleF91bmxvY2soXHUwMDI2dWItXHUwMDNlY2FuY2VsX211dGV4KTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYz0xNjE5PXN0YXRpYyBpbnQgdmlydGJsa19yZXN0b3JlX3ByaXYoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTYyOC1cdHZpcnRpb19kZXZpY2VfcmVhZHkodmRldik7XG5kcml2ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYzoxNjI5Olx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZSh2YmxrLVx1MDAzZWRpc2stXHUwMDNlcXVldWUpO1xuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTYzMC1cbi0tXG5kcml2ZXJzL21kL2RtLXJxLmM9NjQ9dm9pZCBkbV9zdGFydF9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbmRyaXZlcnMvbWQvZG0tcnEuYy02NS17XG5kcml2ZXJzL21kL2RtLXJxLmM6NjY6XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHEpO1xuZHJpdmVycy9tZC9kbS1ycS5jLTY3LVx0YmxrX21xX2tpY2tfcmVxdWV1ZV9saXN0KHEpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYz00OTU9dm9pZCBtbWNfcXVldWVfcmVzdW1lKHN0cnVjdCBtbWNfcXVldWUgKm1xKVxuZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jLTQ5Ni17XG5kcml2ZXJzL21tYy9jb3JlL3F1ZXVlLmM6NDk3Olx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShtcS1cdTAwM2VxdWV1ZSk7XG5kcml2ZXJzL21tYy9jb3JlL3F1ZXVlLmMtNDk4LX1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1ZXVlLmM9NTAwPXZvaWQgbW1jX2NsZWFudXBfcXVldWUoc3RydWN0IG1tY19xdWV1ZSAqbXEpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jLTUwOC1cdGlmIChibGtfcXVldWVfcXVpZXNjZWQocSkpXG5kcml2ZXJzL21tYy9jb3JlL3F1ZXVlLmM6NTA5Olx0XHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHEpO1xuZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jLTUxMC1cbi0tXG5kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jPTQwND1pbnQgZGVsX210ZF9ibGt0cmFuc19kZXYoc3RydWN0IG10ZF9ibGt0cmFuc19kZXYgKm9sZClcbi0tXG5kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jLTQyNS1cdGJsa19tcV9xdWllc2NlX3F1ZXVlKG9sZC1cdTAwM2VycSk7XG5kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jOjQyNjpcdGJsa19tcV91bnF1aWVzY2VfcXVldWUob2xkLVx1MDAzZXJxKTtcbmRyaXZlcnMvbXRkL210ZF9ibGtkZXZzLmMtNDI3LVx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKG9sZC1cdTAwM2VycSwgbWVtZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYz01MzgwPXZvaWQgbnZtZV91bnF1aWVzY2VfYWRtaW5fcXVldWUoc3RydWN0IG52bWVfY3RybCAqY3RybClcbi0tXG5kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMtNTM4Mi1cdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTlZNRV9DVFJMX0FETUlOX1FfU1RPUFBFRCwgXHUwMDI2Y3RybC1cdTAwM2VmbGFncykpXG5kcml2ZXJzL252bWUvaG9zdC9jb3JlLmM6NTM4MzpcdFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShjdHJsLVx1MDAzZWFkbWluX3EpO1xuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jLTUzODQtfVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jPTI5MzI9dm9pZCBzY3NpX3N0YXJ0X3F1ZXVlKHN0cnVjdCBzY3NpX2RldmljZSAqc2Rldilcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYy0yOTM0LVx0aWYgKGNtcHhjaGcoXHUwMDI2c2Rldi1cdTAwM2VxdWV1ZV9zdG9wcGVkLCAxLCAwKSlcbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jOjI5MzU6XHRcdGJsa19tcV91bnF1aWVzY2VfcXVldWUoc2Rldi1cdTAwM2VyZXF1ZXN0X3F1ZXVlKTtcbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jLTI5MzYtfVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jPTI5Mzg9c3RhdGljIHZvaWQgc2NzaV9zdG9wX3F1ZXVlKHN0cnVjdCBzY3NpX2RldmljZSAqc2Rldilcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYy0yOTQxLVx0ICogVGhlIGF0b21pYyB2YXJpYWJsZSBvZiAtXHUwMDNlcXVldWVfc3RvcHBlZCBjb3ZlcnMgdGhhdFxuZHJpdmVycy9zY3NpL3Njc2lfbGliLmM6Mjk0MjpcdCAqIGJsa19tcV9xdWllc2NlX3F1ZXVlKiBpcyBiYWxhbmNlZCB3aXRoIGJsa19tcV91bnF1aWVzY2VfcXVldWUuXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYy0yOTQzLVx0ICpcbi0tXG5pbmNsdWRlL2xpbnV4L2Jsay1tcS5oPTk0MD12b2lkIGJsa19tcV91bnF1aWVzY2VfdGFnc2V0KHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0KTtcbmluY2x1ZGUvbGludXgvYmxrLW1xLmg6OTQxOnZvaWQgYmxrX21xX3VucXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSk7XG5pbmNsdWRlL2xpbnV4L2Jsay1tcS5oLTk0Mi12b2lkIGJsa19tcV9kZWxheV9ydW5faHdfcXVldWUoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIHVuc2lnbmVkIGxvbmcgbXNlY3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODY4CgkJCQkJCQlvdXRwdXQ6IDEzMAoJCQkJCQkJdGhvdWdodHM6IDk1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJsb2NrIExheWVyIFF1aWVzY2UgQ2hhbmdlcyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB3aGljaCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgYmxvY2sgbGF5ZXImIzM5O3MgcXVpZXNjZSBtZWNoYW5pc20uIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBtaW5vciB0d2VhazsgaXQmIzM5O3MgYSBkZWVwIGRpdmUgaW50byBob3cgcXVpZXNjZW5jZSBpcyBoYW5kbGVkLCB3aGljaCBpcyBjcnVjaWFsIGZvciBhIHdob2xlIGhvc3Qgb2YgZHJpdmVycyDigJMgZXZlcnl0aGluZyBmcm9tIHZpcnRpb19ibGsgYW5kIFNDU0kgdG8gTlZNZSBhbmQgZXZlbiBNTUMuIEdpdmVuIHRoZSBicm9hZCBpbXBhY3QsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGhvbmUgaW4gb24gdGhlIGNvcmUgZnVuY3Rpb25zIGludm9sdmVkLiBTcGVjaWZpY2FsbHksIEkgd2FzIGNvbnNpZGVyaW5nOgoKKiAgIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgCiogICBgYmxrX21xX3VucXVpZXNjZV9xdWV1ZWAKKiAgIGBibGtfbXFfcnVuX2h3X3F1ZXVlYAoKTXkgZmlyc3QgaW5jbGluYXRpb24gd2FzIHRvIGV4YW1pbmUgaWYgYGJsa19tcV9ydW5faHdfcXVldWVgIHdhcyBhIHBhcnRpY3VsYXJseSBob3QtcGF0aCBmdW5jdGlvbiBiZWNhdXNlIGl0IGlzIGhlYXZpbHkgdXNlZCBieSBibG9jayBkZXZpY2VzLiBJdCYjMzk7cyBpbnZva2VkIGZyZXF1ZW50bHkgdG8gbWFuYWdlIHRoZSBoYXJkd2FyZSBxdWV1ZXMuIEhvd2V2ZXIsIGFmdGVyIGZ1cnRoZXIgcmV2aWV3LCBJIHJlYWxpemVkIHRoYXQgZm9jdXNpbmcgZXhjbHVzaXZlbHkgb24gYGJsa19tcV9ydW5faHdfcXVldWVgIG1pZ2h0IGxlYWQgdG8gYSBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb24sIGFzIGl0JiMzOTtzIGNhbGxlZCBmb3IgcHJldHR5IG11Y2ggZXZlcnkgSS9PIG9wZXJhdGlvbi4gTm9ybWFsIGJsb2NrIEkvT3MgYXJlIGFscmVhZHkgYSBjb21tb24gY2FzZSBmb3IgdGhlIGZ1enplci4KClRoZSBwYXRjaCBtb2RpZmllcyBgYmxrX21xX3J1bl9od19xdWV1ZWAgdG8gaW5jbHVkZSBgc21wX21iKClgIGFuZCByZW1vdmUgYHNwaW5fbG9ja19pcnFzYXZlYC4gSG93ZXZlciwgSSByZWFsaXplZCBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YCBhbmQgYGJsa19tcV91bnF1aWVzY2VfcXVldWVgIGFyZSB0aGUgbW9yZSBwZXJ0aW5lbnQgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGZvciB0aGlzIHBhdGNoLiBXaGlsZSBsZXNzIGZyZXF1ZW50bHkgY2FsbGVkLCB0aGV5IGFyZSBrZXkgdG8gdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyB0aGF0IHRoaXMgcGF0Y2ggbW9kaWZpZXMuIFF1aWVzY2UgaXMgY2FsbGVkIHdoZW4gcXVpZXNjaW5nIGEgcXVldWUgYW5kIHVucXVpZXNjZSB3aGVuIHVucXVpZXNjaW5nIGEgcXVldWUuCgpBY3R1YWxseSwgdGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgYGJsa19xdWV1ZV9xdWllc2NlZGAsIHdoaWNoIGlzIGlubGluZSwgc28gc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgY292ZXJlZCBpZiB0aGUgY29kZSBpcyByZWFjaGVkLgoKSSB0b29rIGEgcXVpY2sgbG9vayBhdCBjb25maWd1cmF0aW9ucyB0byBzZWUgaWYgd2UgbmVlZGVkIGFueXRoaW5nIHNwZWNpZmljLiBUdXJucyBvdXQgd2Ugb25seSBuZWVkIGBDT05GSUdfQkxPQ0tgLCB3aGljaCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGFuZCB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzIHNpZ25pZmljYW50bHkuIFdlIGRvbiYjMzk7dCBoYXZlIHRvIHdvcnJ5IGFib3V0IGZvcmNpbmcgY29uZmlndXJhdGlvbnMuCgpMb29raW5nIGF0IGRyaXZlcnMsIGl0IGxvb2tzIGxpa2UgYHZpcnRpb19ibGtgLCBgc2NzaWAsIGBudm1lYCwgYW5kIGB1YmxrYCB1dGlsaXplIHRoZSBuZXcgcXVpZXNjZSBjb2RlIHByZXR0eSBoZWF2aWx5IGR1cmluZyBmcmVlemUvcmVzdG9yZSwgYHNjc2lfc3RvcF9xdWV1ZWAsIGBzY3NpX3N0YXJ0X3F1ZXVlYCwgYW5kIG90aGVyIG9wZXJhdGlvbnMuIFdlIGFscmVhZHkgaGF2ZSBtYW55IGJsb2NrIGRyaXZlcnMgZW5hYmxlZCBpbiBzeXpib3QsIHNvIHdlIHNob3VsZCBiZSBnb29kLgoKU28sIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byBteSBmb2N1cyBzeW1ib2xzLiBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAgYW5kIGBibGtfbXFfdW5xdWllc2NlX3F1ZXVlYC4gVGhlc2UgYXJlIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyB0b3VjaGVkIGJ5IHRoZSBjaGFuZ2VzLCBhbmQgd2hpbGUgYGJsa19tcV9ydW5faHdfcXVldWVgIGlzIG1vZGlmaWVkLCBpdCYjMzk7cyBjYWxsZWQgZm9yIGV2ZXJ5IElPIG9wZXJhdGlvbi4KCkkgbmVlZCB0byBjb25maXJtIHRoYXQgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAgYW5kIGBibGtfbXFfdW5xdWllc2NlX3F1ZXVlYCBhcmUgZXhwb3J0ZWQgd2hpY2ggdGhleSBhcmUsIHNvIHRoYXQmIzM5O3MgZ29vZC4KCkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbHRlcmluZyB0aGUgc3luY2hyb25pemF0aW9uIGJldHdlZW4gcXVldWUgcXVpZXNjaW5nL3VucXVpZXNjaW5nIGFuZCBoYXJkd2FyZSBxdWV1ZSBydW5zLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHZhcmlvdXMgYmxvY2sgZGV2aWNlIG9wZXJhdGlvbnMuIFRoaXMgY29kZSB3aWxsIG5lZWQgYSB0aG9yb3VnaCBmdXp6aW5nLgoKKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5sb2NrLWJhc2VkIHF1ZXVlIHF1aWVzY2UgdHJhY2tpbmcgd2l0aCBhbiBhdG9taWMgY291bnRlciBhbmQgbWVtb3J5IGJhcnJpZXJzIGluIHRoZSBjb3JlIGJsb2NrIGxheWVyIChgYmxrLW1xLmNgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBxdWV1ZSBxdWllc2NpbmcvdW5xdWllc2NpbmcgYW5kIGhhcmR3YXJlIHF1ZXVlIHJ1bnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBibG9jayBkZXZpY2Ugb3BlcmF0aW9ucyAoZS5nLiwgZGV2aWNlIHN1c3BlbmQvcmVzdW1lLCBlcnJvciBoYW5kbGluZykuCgoqKldvcnRoRnV6emluZzoqKiB0cnVlCgoqKkVuYWJsZUNvbmZpZ3M6KiogXFsgXQoKKipGb2N1c1N5bWJvbHM6KiogXFsmIzM0O2Jsa1xfbXFcX3F1aWVzY2VcX3F1ZXVlXF9ub3dhaXQmIzM0OywgJiMzNDtibGtcX21xXF91bnF1aWVzY2VcX3F1ZXVlJiMzNDtdCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIyOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQmIzM0OywKICAgICYjMzQ7YmxrX21xX3VucXVpZXNjZV9xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBzcGlubG9jay1iYXNlZCBxdWV1ZSBxdWllc2NlIHRyYWNraW5nIHdpdGggYW4gYXRvbWljIGNvdW50ZXIgYW5kIG1lbW9yeSBiYXJyaWVycyBpbiB0aGUgY29yZSBibG9jayBsYXllciAoYmxrLW1xLmMpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHF1ZXVlIHF1aWVzY2luZy91bnF1aWVzY2luZyBhbmQgaGFyZHdhcmUgcXVldWUgcnVucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIChlLmcuLCBkZXZpY2Ugc3VzcGVuZC9yZXN1bWUsIGVycm9yIGhhbmRsaW5nKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQmIzM0OywKICAgICYjMzQ7YmxrX21xX3VucXVpZXNjZV9xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBzcGlubG9jay1iYXNlZCBxdWV1ZSBxdWllc2NlIHRyYWNraW5nIHdpdGggYW4gYXRvbWljIGNvdW50ZXIgYW5kIG1lbW9yeSBiYXJyaWVycyBpbiB0aGUgY29yZSBibG9jayBsYXllciAoYmxrLW1xLmMpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHF1ZXVlIHF1aWVzY2luZy91bnF1aWVzY2luZyBhbmQgaGFyZHdhcmUgcXVldWUgcnVucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIChlLmcuLCBkZXZpY2Ugc3VzcGVuZC9yZXN1bWUsIGVycm9yIGhhbmRsaW5nKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjQ2OjI2LjI3MTg4NTUxN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODUwNzUwNjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRcIixcbiAgICBcImJsa19tcV91bnF1aWVzY2VfcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBzcGlubG9jay1iYXNlZCBxdWV1ZSBxdWllc2NlIHRyYWNraW5nIHdpdGggYW4gYXRvbWljIGNvdW50ZXIgYW5kIG1lbW9yeSBiYXJyaWVycyBpbiB0aGUgY29yZSBibG9jayBsYXllciAoYmxrLW1xLmMpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHF1ZXVlIHF1aWVzY2luZy91bnF1aWVzY2luZyBhbmQgaGFyZHdhcmUgcXVldWUgcnVucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIChlLmcuLCBkZXZpY2Ugc3VzcGVuZC9yZXN1bWUsIGVycm9yIGhhbmRsaW5nKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDY6MjYuMjcxODkyMzc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTE3MDgxOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyZDI3NGYyMGUzMzkxOTQwY2UyMzFiNTBkYzQyM2ZjMDU4YzM0OWIxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDkgMjI6NDY6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWNvcmUuYyBiL2Jsb2NrL2Jsay1jb3JlLmNcXG5pbmRleCAzNjU2NDEyNjZjOWU4Mi4uNzk2Njk5NTdmNDdlNDcgMTAwNjQ0XFxuLS0tIGEvYmxvY2svYmxrLWNvcmUuY1xcbisrKyBiL2Jsb2NrL2Jsay1jb3JlLmNcXG5AQCAtNDc3LDYgKzQ3Nyw3IEBAIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpibGtfYWxsb2NfcXVldWUoc3RydWN0IHF1ZXVlX2xpbWl0cyAqbGltLCBpbnQgbm9kZV9pZClcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2cS1cXHUwMDNlbGltaXRzX2xvY2spO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZxLVxcdTAwM2VycV9xb3NfbXV0ZXgpO1xcbiBcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2cS1cXHUwMDNlcXVldWVfbG9jayk7XFxuK1xcdGF0b21pY19zZXQoXFx1MDAyNnEtXFx1MDAzZXF1aWVzY2VfZGVwdGgsIDApO1xcbiBcXG4gXFx0aW5pdF93YWl0cXVldWVfaGVhZChcXHUwMDI2cS1cXHUwMDNlbXFfZnJlZXplX3dxKTtcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2cS1cXHUwMDNlbXFfZnJlZXplX2xvY2spO1xcbmRpZmYgLS1naXQgYS9ibG9jay9ibGstbXEtZGVidWdmcy5jIGIvYmxvY2svYmxrLW1xLWRlYnVnZnMuY1xcbmluZGV4IDY3NTRkOGY5NDQ5YzEwLi41NjdlZWRiYmY1MGZjOCAxMDA2NDRcXG4tLS0gYS9ibG9jay9ibGstbXEtZGVidWdmcy5jXFxuKysrIGIvYmxvY2svYmxrLW1xLWRlYnVnZnMuY1xcbkBAIC05Myw3ICs5Myw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBibGtfcXVldWVfZmxhZ19uYW1lW10gPSB7XFxuIFxcdFFVRVVFX0ZMQUdfTkFNRShJTklUX0RPTkUpLFxcbiBcXHRRVUVVRV9GTEFHX05BTUUoU1RBVFMpLFxcbiBcXHRRVUVVRV9GTEFHX05BTUUoUkVHSVNURVJFRCksXFxuLVxcdFFVRVVFX0ZMQUdfTkFNRShRVUlFU0NFRCksXFxuIFxcdFFVRVVFX0ZMQUdfTkFNRShSUV9BTExPQ19USU1FKSxcXG4gXFx0UVVFVUVfRkxBR19OQU1FKEhDVFhfQUNUSVZFKSxcXG4gXFx0UVVFVUVfRkxBR19OQU1FKFNRX1NDSEVEKSxcXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLmMgYi9ibG9jay9ibGstbXEuY1xcbmluZGV4IDJjODUwMzMwYTMyYmM2Li4xODZiYmNjOGI5Mjc1OSAxMDA2NDRcXG4tLS0gYS9ibG9jay9ibGstbXEuY1xcbisrKyBiL2Jsb2NrL2Jsay1tcS5jXFxuQEAgLTI2MCwxMiArMjYwLDE2IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV91bmZyZWV6ZV9xdWV1ZV9ub25fb3duZXIpO1xcbiAgKi9cXG4gdm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXFxuIHtcXG4tXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tXFxuLVxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZxLVxcdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XFxuLVxcdGlmICghcS1cXHUwMDNlcXVpZXNjZV9kZXB0aCsrKVxcbi1cXHRcXHRibGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19RVUlFU0NFRCwgcSk7XFxuLVxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnEtXFx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcXG4rXFx0YXRvbWljX2luYyhcXHUwMDI2cS1cXHUwMDNlcXVpZXNjZV9kZXB0aCk7XFxuK1xcdC8qXFxuK1xcdCAqIFB1Ymxpc2ggdGhlIHF1aWVzY2VfZGVwdGggaW5jcmVtZW50LiAgQ2FsbGVycyBtdXN0IGZvbGxvdyB0aGlzXFxuK1xcdCAqIHdpdGggYmxrX21xX3dhaXRfcXVpZXNjZV9kb25lKCkgKHN5bmNocm9uaXplX3NyY3UoKS9cXG4rXFx0ICogc3luY2hyb25pemVfcmN1KCkpLCB3aGljaCBpcyB3aGF0IGFjdHVhbGx5IGd1YXJhbnRlZXMgdGhhdCBhbnlcXG4rXFx0ICogaW4tZmxpZ2h0IGRpc3BhdGNoZXIgaGFzIGZpbmlzaGVkIGFuZCB0aGF0IGxhdGVyIGRpc3BhdGNoZXJzIHNlZVxcbitcXHQgKiB0aGUgcXVldWUgYXMgcXVpZXNjZWQ7IHRoZSBiYXJyaWVyIGhlcmUgb25seSBrZWVwcyB0aGlzIGhlbHBlclxcbitcXHQgKiBzZWxmLWNvbnRhaW5lZCBmb3IgdGhlIGZldyBjYWxsZXJzIHRoYXQgZGVmZXIgdGhlIHdhaXQuXFxuK1xcdCAqL1xcbitcXHRzbXBfbWJfX2FmdGVyX2F0b21pYygpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCk7XFxuIFxcbkBAIC0zMTQsMjEgKzMxOCwzMCBAQCBFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfcXVpZXNjZV9xdWV1ZSk7XFxuICAqL1xcbiB2b2lkIGJsa19tcV91bnF1aWVzY2VfcXVldWUoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXFxuIHtcXG4tXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tXFx0Ym9vbCBydW5fcXVldWUgPSBmYWxzZTtcXG4rXFx0aW50IGRlcHRoO1xcbiBcXG4tXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnEtXFx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcXG4tXFx0aWYgKFdBUk5fT05fT05DRShxLVxcdTAwM2VxdWllc2NlX2RlcHRoIFxcdTAwM2M9IDApKSB7XFxuLVxcdFxcdDtcXG4tXFx0fSBlbHNlIGlmICghLS1xLVxcdTAwM2VxdWllc2NlX2RlcHRoKSB7XFxuLVxcdFxcdGJsa19xdWV1ZV9mbGFnX2NsZWFyKFFVRVVFX0ZMQUdfUVVJRVNDRUQsIHEpO1xcbi1cXHRcXHRydW5fcXVldWUgPSB0cnVlO1xcbi1cXHR9XFxuLVxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnEtXFx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcXG4rXFx0ZGVwdGggPSBhdG9taWNfZGVjX2lmX3Bvc2l0aXZlKFxcdTAwMjZxLVxcdTAwM2VxdWllc2NlX2RlcHRoKTtcXG4rXFx0aWYgKFdBUk5fT05fT05DRShkZXB0aCBcXHUwMDNjIDApKVxcbitcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHQvKiBkaXNwYXRjaCByZXF1ZXN0cyB3aGljaCBhcmUgaW5zZXJ0ZWQgZHVyaW5nIHF1aWVzY2luZyAqL1xcbi1cXHRpZiAocnVuX3F1ZXVlKVxcbitcXHRpZiAoZGVwdGggPT0gMCkge1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBGdWxsIGJhcnJpZXIgYmV0d2VlbiB0aGUgcXVpZXNjZV9kZXB0aCBzdG9yZSBhYm92ZSBhbmQgdGhlXFxuK1xcdFxcdCAqIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgbG9hZCBkb25lIGZyb20gYmxrX21xX3J1bl9od19xdWV1ZXMoKVxcbitcXHRcXHQgKiBiZWxvdy4gIFRoaXMgcGFpcnMgd2l0aCB0aGUgc21wX21iKCkgYmVmb3JlIHRoZSByZXF1aWVzY2VcXG4rXFx0XFx0ICogcmUtY2hlY2sgaW4gYmxrX21xX3J1bl9od19xdWV1ZSgpOiBvZiB0aGUgdHdvIHJhY2luZyBDUFVzXFxuK1xcdFxcdCAqIChvbmUgaW5zZXJ0aW5nIGEgcmVxdWVzdCBhbmQgdGhlbiByZS1jaGVja2luZyBxdWllc2NlIHN0YXRlLFxcbitcXHRcXHQgKiB0aGUgb3RoZXIgdW5xdWllc2NpbmcgaGVyZSBhbmQgdGhlbiBjaGVja2luZyBmb3IgcGVuZGluZ1xcbitcXHRcXHQgKiB3b3JrKSBhdCBsZWFzdCBvbmUgc2VlcyB0aGUgb3RoZXIncyBzdG9yZSwgc28gdGhlIGh3IHF1ZXVlXFxuK1xcdFxcdCAqIGlzIG5vdCBsZWZ0IHdpdGggYSByZXF1ZXN0IHN0cmFuZGVkIG9uIGEgbm93LXJ1bm5pbmcgcXVldWUuXFxuK1xcdFxcdCAqXFxuK1xcdFxcdCAqIGF0b21pY19kZWNfaWZfcG9zaXRpdmUoKSBhbHJlYWR5IG9yZGVycyB0aGUgZGVjcmVtZW50IG9uXFxuK1xcdFxcdCAqIHN1Y2Nlc3MsIGJ1dCBzcGVsbCB0aGUgYmFycmllciBvdXQgc28gdGhlIHBhaXJpbmcgaXMgb2J2aW91cy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7XFxuK1xcdFxcdC8qIGRpc3BhdGNoIHJlcXVlc3RzIHdoaWNoIGFyZSBpbnNlcnRlZCBkdXJpbmcgcXVpZXNjaW5nICovXFxuIFxcdFxcdGJsa19tcV9ydW5faHdfcXVldWVzKHEsIHRydWUpO1xcbitcXHR9XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3VucXVpZXNjZV9xdWV1ZSk7XFxuIFxcbkBAIC0yMzMxLDE3ICsyMzQ0LDIxIEBAIHZvaWQgYmxrX21xX3J1bl9od19xdWV1ZShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgYm9vbCBhc3luYylcXG4gXFxuIFxcdG5lZWRfcnVuID0gYmxrX21xX2h3X3F1ZXVlX25lZWRfcnVuKGhjdHgpO1xcbiBcXHRpZiAoIW5lZWRfcnVuKSB7XFxuLVxcdFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLVxcbiBcXHRcXHQvKlxcbi1cXHRcXHQgKiBTeW5jaHJvbml6ZSB3aXRoIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKSwgYmVjYXVzZSB3ZSBjaGVja1xcbi1cXHRcXHQgKiBpZiBodyBxdWV1ZSBpcyBxdWllc2NlZCBsb2NrbGVzc2x5IGFib3ZlLCB3ZSBuZWVkIHRoZSB1c2VcXG4tXFx0XFx0ICogLVxcdTAwM2VxdWV1ZV9sb2NrIHRvIG1ha2Ugc3VyZSB3ZSBzZWUgdGhlIHVwLXRvLWRhdGUgc3RhdHVzIHRvXFxuLVxcdFxcdCAqIG5vdCBtaXNzIHJlcnVubmluZyB0aGUgaHcgcXVldWUuXFxuK1xcdFxcdCAqIFJlLWNoZWNrIGFmdGVyIGEgZnVsbCBiYXJyaWVyLiAgQSByZXF1ZXN0IG1heSBoYXZlIGJlZW5cXG4rXFx0XFx0ICogaW5zZXJ0ZWQgYmVmb3JlIHRoaXMgY2FsbCwgd2hpbGUgYSBjb25jdXJyZW50XFxuK1xcdFxcdCAqIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKSBkcm9wcyBxdWllc2NlX2RlcHRoIHRvIHplcm8gYW5kXFxuK1xcdFxcdCAqIHRoZW4gcnVucyB0aGUgaHcgcXVldWVzLiAgVGhpcyBzbXBfbWIoKSBvcmRlcnMgdGhlIHJlcXVlc3RcXG4rXFx0XFx0ICogaW5zZXJ0ICh0aGUgc3RvcmUgdGhhdCBtYWtlcyBibGtfbXFfaGN0eF9oYXNfcGVuZGluZygpIHRydWUpXFxuK1xcdFxcdCAqIGJlZm9yZSB0aGUgcmVxdWllc2NlLXN0YXRlIGxvYWQgYmVsb3csIGFuZCBwYWlycyB3aXRoIHRoZVxcbitcXHRcXHQgKiBzbXBfbWJfX2FmdGVyX2F0b21pYygpIGJldHdlZW4gdGhlIHF1aWVzY2VfZGVwdGggc3RvcmUgYW5kXFxuK1xcdFxcdCAqIHRoZSBibGtfbXFfaGN0eF9oYXNfcGVuZGluZygpIGxvYWQgaW4gYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpXFxuK1xcdFxcdCAqIChhbmQgaW4gYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkpLiAgV2l0aCBhIGZ1bGwgYmFycmllclxcbitcXHRcXHQgKiBvbiBib3RoIHNpZGVzLCBhdCBsZWFzdCBvbmUgQ1BVIG9ic2VydmVzIHRoZSBvdGhlcidzIHN0b3JlLFxcbitcXHRcXHQgKiBzbyB0aGUgcXVldWUgaXMgbm90IGxlZnQgYm90aCB1bi1xdWllc2NlZCBhbmQgbm90IHJlcnVuLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmhjdHgtXFx1MDAzZXF1ZXVlLVxcdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XFxuK1xcdFxcdHNtcF9tYigpO1xcbiBcXHRcXHRuZWVkX3J1biA9IGJsa19tcV9od19xdWV1ZV9uZWVkX3J1bihoY3R4KTtcXG4tXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aGN0eC1cXHUwMDNlcXVldWUtXFx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcXG4gXFxuIFxcdFxcdGlmICghbmVlZF9ydW4pXFxuIFxcdFxcdFxcdHJldHVybjtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGtkZXYuaCBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmhcXG5pbmRleCBkYmI1NDljZGZiNzc4Yi4uOWU0OWFiOWM3OGFlMGMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9ibGtkZXYuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYmxrZGV2LmhcXG5AQCAtNTI1LDcgKzUyNSw4IEBAIHN0cnVjdCByZXF1ZXN0X3F1ZXVlIHtcXG4gXFxuIFxcdHNwaW5sb2NrX3RcXHRcXHRxdWV1ZV9sb2NrO1xcbiBcXG4tXFx0aW50XFx0XFx0XFx0cXVpZXNjZV9kZXB0aDtcXG4rXFx0LyogQXRvbWljIHF1aWVzY2UgZGVwdGggLSBhbHNvIHNlcnZlcyBhcyBxdWllc2NlZCBpbmRpY2F0b3IgKGRlcHRoIFxcdTAwM2UgMCkgKi9cXG4rXFx0YXRvbWljX3RcXHRcXHRxdWllc2NlX2RlcHRoO1xcbiBcXG4gXFx0c3RydWN0IGdlbmRpc2tcXHRcXHQqZGlzaztcXG4gXFxuQEAgLTY3MCw3ICs2NzEsNiBAQCBlbnVtIHtcXG4gXFx0UVVFVUVfRkxBR19JTklUX0RPTkUsXFx0XFx0LyogcXVldWUgaXMgaW5pdGlhbGl6ZWQgKi9cXG4gXFx0UVVFVUVfRkxBR19TVEFUUyxcXHRcXHQvKiB0cmFjayBJTyBzdGFydCBhbmQgY29tcGxldGlvbiB0aW1lcyAqL1xcbiBcXHRRVUVVRV9GTEFHX1JFR0lTVEVSRUQsXFx0XFx0LyogcXVldWUgaGFzIGJlZW4gcmVnaXN0ZXJlZCB0byBhIGRpc2sgKi9cXG4tXFx0UVVFVUVfRkxBR19RVUlFU0NFRCxcXHRcXHQvKiBxdWV1ZSBoYXMgYmVlbiBxdWllc2NlZCAqL1xcbiBcXHRRVUVVRV9GTEFHX1JRX0FMTE9DX1RJTUUsXFx0LyogcmVjb3JkIHJxLVxcdTAwM2VhbGxvY190aW1lX25zICovXFxuIFxcdFFVRVVFX0ZMQUdfSENUWF9BQ1RJVkUsXFx0XFx0LyogYXQgbGVhc3Qgb25lIGJsay1tcSBoY3R4IGlzIGFjdGl2ZSAqL1xcbiBcXHRRVUVVRV9GTEFHX1NRX1NDSEVELFxcdFxcdC8qIHNpbmdsZSBxdWV1ZSBzdHlsZSBpbyBkaXNwYXRjaCAqL1xcbkBAIC03MDgsNyArNzA4LDEwIEBAIHZvaWQgYmxrX3F1ZXVlX2ZsYWdfY2xlYXIodW5zaWduZWQgaW50IGZsYWcsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKTtcXG4gI2RlZmluZSBibGtfbm9yZXRyeV9yZXF1ZXN0KHJxKSBcXFxcXFxuIFxcdCgocnEpLVxcdTAwM2VjbWRfZmxhZ3MgXFx1MDAyNiAoUkVRX0ZBSUxGQVNUX0RFVnxSRVFfRkFJTEZBU1RfVFJBTlNQT1JUfCBcXFxcXFxuIFxcdFxcdFxcdCAgICAgUkVRX0ZBSUxGQVNUX0RSSVZFUikpXFxuLSNkZWZpbmUgYmxrX3F1ZXVlX3F1aWVzY2VkKHEpXFx0dGVzdF9iaXQoUVVFVUVfRkxBR19RVUlFU0NFRCwgXFx1MDAyNihxKS1cXHUwMDNlcXVldWVfZmxhZ3MpXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBibGtfcXVldWVfcXVpZXNjZWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXFxuK3tcXG4rXFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZxLVxcdTAwM2VxdWllc2NlX2RlcHRoKSBcXHUwMDNlIDA7XFxuK31cXG4gI2RlZmluZSBibGtfcXVldWVfcG1fb25seShxKVxcdGF0b21pY19yZWFkKFxcdTAwMjYocSktXFx1MDAzZXBtX29ubHkpXFxuICNkZWZpbmUgYmxrX3F1ZXVlX3JlZ2lzdGVyZWQocSlcXHR0ZXN0X2JpdChRVUVVRV9GTEFHX1JFR0lTVEVSRUQsIFxcdTAwMjYocSktXFx1MDAzZXF1ZXVlX2ZsYWdzKVxcbiAjZGVmaW5lIGJsa19xdWV1ZV9zcV9zY2hlZChxKVxcdHRlc3RfYml0KFFVRVVFX0ZMQUdfU1FfU0NIRUQsIFxcdTAwMjYocSktXFx1MDAzZXF1ZXVlX2ZsYWdzKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0NjoyNi45MjQzNDYyMzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNzg1NTAzNzc5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRcIixcbiAgICBcImJsa19tcV91bnF1aWVzY2VfcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBzcGlubG9jay1iYXNlZCBxdWV1ZSBxdWllc2NlIHRyYWNraW5nIHdpdGggYW4gYXRvbWljIGNvdW50ZXIgYW5kIG1lbW9yeSBiYXJyaWVycyBpbiB0aGUgY29yZSBibG9jayBsYXllciAoYmxrLW1xLmMpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHF1ZXVlIHF1aWVzY2luZy91bnF1aWVzY2luZyBhbmQgaGFyZHdhcmUgcXVldWUgcnVucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIChlLmcuLCBkZXZpY2Ugc3VzcGVuZC9yZXN1bWUsIGVycm9yIGhhbmRsaW5nKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZDI3NGYyMGUzMzkxOTQwY2UyMzFiNTBkYzQyM2ZjMDU4YzM0OWIxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAyMjo0NjoyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1jb3JlLmMgYi9ibG9jay9ibGstY29yZS5jXG5pbmRleCAzNjU2NDEyNjZjOWU4Mi4uNzk2Njk5NTdmNDdlNDcgMTAwNjQ0XG4tLS0gYS9ibG9jay9ibGstY29yZS5jXG4rKysgYi9ibG9jay9ibGstY29yZS5jXG5AQCAtNDc3LDYgKzQ3Nyw3IEBAIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpibGtfYWxsb2NfcXVldWUoc3RydWN0IHF1ZXVlX2xpbWl0cyAqbGltLCBpbnQgbm9kZV9pZClcbiBcdG11dGV4X2luaXQoXHUwMDI2cS1cdTAwM2VsaW1pdHNfbG9jayk7XG4gXHRtdXRleF9pbml0KFx1MDAyNnEtXHUwMDNlcnFfcW9zX211dGV4KTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNnEtXHUwMDNlcXVldWVfbG9jayk7XG4rXHRhdG9taWNfc2V0KFx1MDAyNnEtXHUwMDNlcXVpZXNjZV9kZXB0aCwgMCk7XG4gXG4gXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNnEtXHUwMDNlbXFfZnJlZXplX3dxKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2cS1cdTAwM2VtcV9mcmVlemVfbG9jayk7XG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLWRlYnVnZnMuYyBiL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmNcbmluZGV4IDY3NTRkOGY5NDQ5YzEwLi41NjdlZWRiYmY1MGZjOCAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmNcbisrKyBiL2Jsb2NrL2Jsay1tcS1kZWJ1Z2ZzLmNcbkBAIC05Myw3ICs5Myw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBibGtfcXVldWVfZmxhZ19uYW1lW10gPSB7XG4gXHRRVUVVRV9GTEFHX05BTUUoSU5JVF9ET05FKSxcbiBcdFFVRVVFX0ZMQUdfTkFNRShTVEFUUyksXG4gXHRRVUVVRV9GTEFHX05BTUUoUkVHSVNURVJFRCksXG4tXHRRVUVVRV9GTEFHX05BTUUoUVVJRVNDRUQpLFxuIFx0UVVFVUVfRkxBR19OQU1FKFJRX0FMTE9DX1RJTUUpLFxuIFx0UVVFVUVfRkxBR19OQU1FKEhDVFhfQUNUSVZFKSxcbiBcdFFVRVVFX0ZMQUdfTkFNRShTUV9TQ0hFRCksXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1xLmMgYi9ibG9jay9ibGstbXEuY1xuaW5kZXggMmM4NTAzMzBhMzJiYzYuLjE4NmJiY2M4YjkyNzU5IDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLW1xLmNcbisrKyBiL2Jsb2NrL2Jsay1tcS5jXG5AQCAtMjYwLDEyICsyNjAsMTYgQEAgRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3VuZnJlZXplX3F1ZXVlX25vbl9vd25lcik7XG4gICovXG4gdm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXG4ge1xuLVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi1cbi1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnEtXHUwMDNlcXVldWVfbG9jaywgZmxhZ3MpO1xuLVx0aWYgKCFxLVx1MDAzZXF1aWVzY2VfZGVwdGgrKylcbi1cdFx0YmxrX3F1ZXVlX2ZsYWdfc2V0KFFVRVVFX0ZMQUdfUVVJRVNDRUQsIHEpO1xuLVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZxLVx1MDAzZXF1ZXVlX2xvY2ssIGZsYWdzKTtcbitcdGF0b21pY19pbmMoXHUwMDI2cS1cdTAwM2VxdWllc2NlX2RlcHRoKTtcbitcdC8qXG4rXHQgKiBQdWJsaXNoIHRoZSBxdWllc2NlX2RlcHRoIGluY3JlbWVudC4gIENhbGxlcnMgbXVzdCBmb2xsb3cgdGhpc1xuK1x0ICogd2l0aCBibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUoKSAoc3luY2hyb25pemVfc3JjdSgpL1xuK1x0ICogc3luY2hyb25pemVfcmN1KCkpLCB3aGljaCBpcyB3aGF0IGFjdHVhbGx5IGd1YXJhbnRlZXMgdGhhdCBhbnlcbitcdCAqIGluLWZsaWdodCBkaXNwYXRjaGVyIGhhcyBmaW5pc2hlZCBhbmQgdGhhdCBsYXRlciBkaXNwYXRjaGVycyBzZWVcbitcdCAqIHRoZSBxdWV1ZSBhcyBxdWllc2NlZDsgdGhlIGJhcnJpZXIgaGVyZSBvbmx5IGtlZXBzIHRoaXMgaGVscGVyXG4rXHQgKiBzZWxmLWNvbnRhaW5lZCBmb3IgdGhlIGZldyBjYWxsZXJzIHRoYXQgZGVmZXIgdGhlIHdhaXQuXG4rXHQgKi9cbitcdHNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCk7XG4gXG5AQCAtMzE0LDIxICszMTgsMzAgQEAgRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWUpO1xuICAqL1xuIHZvaWQgYmxrX21xX3VucXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcbiB7XG4tXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLVx0Ym9vbCBydW5fcXVldWUgPSBmYWxzZTtcbitcdGludCBkZXB0aDtcbiBcbi1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnEtXHUwMDNlcXVldWVfbG9jaywgZmxhZ3MpO1xuLVx0aWYgKFdBUk5fT05fT05DRShxLVx1MDAzZXF1aWVzY2VfZGVwdGggXHUwMDNjPSAwKSkge1xuLVx0XHQ7XG4tXHR9IGVsc2UgaWYgKCEtLXEtXHUwMDNlcXVpZXNjZV9kZXB0aCkge1xuLVx0XHRibGtfcXVldWVfZmxhZ19jbGVhcihRVUVVRV9GTEFHX1FVSUVTQ0VELCBxKTtcbi1cdFx0cnVuX3F1ZXVlID0gdHJ1ZTtcbi1cdH1cbi1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2cS1cdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XG4rXHRkZXB0aCA9IGF0b21pY19kZWNfaWZfcG9zaXRpdmUoXHUwMDI2cS1cdTAwM2VxdWllc2NlX2RlcHRoKTtcbitcdGlmIChXQVJOX09OX09OQ0UoZGVwdGggXHUwMDNjIDApKVxuK1x0XHRyZXR1cm47XG4gXG4tXHQvKiBkaXNwYXRjaCByZXF1ZXN0cyB3aGljaCBhcmUgaW5zZXJ0ZWQgZHVyaW5nIHF1aWVzY2luZyAqL1xuLVx0aWYgKHJ1bl9xdWV1ZSlcbitcdGlmIChkZXB0aCA9PSAwKSB7XG4rXHRcdC8qXG4rXHRcdCAqIEZ1bGwgYmFycmllciBiZXR3ZWVuIHRoZSBxdWllc2NlX2RlcHRoIHN0b3JlIGFib3ZlIGFuZCB0aGVcbitcdFx0ICogYmxrX21xX2hjdHhfaGFzX3BlbmRpbmcoKSBsb2FkIGRvbmUgZnJvbSBibGtfbXFfcnVuX2h3X3F1ZXVlcygpXG4rXHRcdCAqIGJlbG93LiAgVGhpcyBwYWlycyB3aXRoIHRoZSBzbXBfbWIoKSBiZWZvcmUgdGhlIHJlcXVpZXNjZVxuK1x0XHQgKiByZS1jaGVjayBpbiBibGtfbXFfcnVuX2h3X3F1ZXVlKCk6IG9mIHRoZSB0d28gcmFjaW5nIENQVXNcbitcdFx0ICogKG9uZSBpbnNlcnRpbmcgYSByZXF1ZXN0IGFuZCB0aGVuIHJlLWNoZWNraW5nIHF1aWVzY2Ugc3RhdGUsXG4rXHRcdCAqIHRoZSBvdGhlciB1bnF1aWVzY2luZyBoZXJlIGFuZCB0aGVuIGNoZWNraW5nIGZvciBwZW5kaW5nXG4rXHRcdCAqIHdvcmspIGF0IGxlYXN0IG9uZSBzZWVzIHRoZSBvdGhlcidzIHN0b3JlLCBzbyB0aGUgaHcgcXVldWVcbitcdFx0ICogaXMgbm90IGxlZnQgd2l0aCBhIHJlcXVlc3Qgc3RyYW5kZWQgb24gYSBub3ctcnVubmluZyBxdWV1ZS5cbitcdFx0ICpcbitcdFx0ICogYXRvbWljX2RlY19pZl9wb3NpdGl2ZSgpIGFscmVhZHkgb3JkZXJzIHRoZSBkZWNyZW1lbnQgb25cbitcdFx0ICogc3VjY2VzcywgYnV0IHNwZWxsIHRoZSBiYXJyaWVyIG91dCBzbyB0aGUgcGFpcmluZyBpcyBvYnZpb3VzLlxuK1x0XHQgKi9cbitcdFx0c21wX21iX19hZnRlcl9hdG9taWMoKTtcbitcdFx0LyogZGlzcGF0Y2ggcmVxdWVzdHMgd2hpY2ggYXJlIGluc2VydGVkIGR1cmluZyBxdWllc2NpbmcgKi9cbiBcdFx0YmxrX21xX3J1bl9od19xdWV1ZXMocSwgdHJ1ZSk7XG4rXHR9XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV91bnF1aWVzY2VfcXVldWUpO1xuIFxuQEAgLTIzMzEsMTcgKzIzNDQsMjEgQEAgdm9pZCBibGtfbXFfcnVuX2h3X3F1ZXVlKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LCBib29sIGFzeW5jKVxuIFxuIFx0bmVlZF9ydW4gPSBibGtfbXFfaHdfcXVldWVfbmVlZF9ydW4oaGN0eCk7XG4gXHRpZiAoIW5lZWRfcnVuKSB7XG4tXHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tXG4gXHRcdC8qXG4tXHRcdCAqIFN5bmNocm9uaXplIHdpdGggYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpLCBiZWNhdXNlIHdlIGNoZWNrXG4tXHRcdCAqIGlmIGh3IHF1ZXVlIGlzIHF1aWVzY2VkIGxvY2tsZXNzbHkgYWJvdmUsIHdlIG5lZWQgdGhlIHVzZVxuLVx0XHQgKiAtXHUwMDNlcXVldWVfbG9jayB0byBtYWtlIHN1cmUgd2Ugc2VlIHRoZSB1cC10by1kYXRlIHN0YXR1cyB0b1xuLVx0XHQgKiBub3QgbWlzcyByZXJ1bm5pbmcgdGhlIGh3IHF1ZXVlLlxuK1x0XHQgKiBSZS1jaGVjayBhZnRlciBhIGZ1bGwgYmFycmllci4gIEEgcmVxdWVzdCBtYXkgaGF2ZSBiZWVuXG4rXHRcdCAqIGluc2VydGVkIGJlZm9yZSB0aGlzIGNhbGwsIHdoaWxlIGEgY29uY3VycmVudFxuK1x0XHQgKiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkgZHJvcHMgcXVpZXNjZV9kZXB0aCB0byB6ZXJvIGFuZFxuK1x0XHQgKiB0aGVuIHJ1bnMgdGhlIGh3IHF1ZXVlcy4gIFRoaXMgc21wX21iKCkgb3JkZXJzIHRoZSByZXF1ZXN0XG4rXHRcdCAqIGluc2VydCAodGhlIHN0b3JlIHRoYXQgbWFrZXMgYmxrX21xX2hjdHhfaGFzX3BlbmRpbmcoKSB0cnVlKVxuK1x0XHQgKiBiZWZvcmUgdGhlIHJlcXVpZXNjZS1zdGF0ZSBsb2FkIGJlbG93LCBhbmQgcGFpcnMgd2l0aCB0aGVcbitcdFx0ICogc21wX21iX19hZnRlcl9hdG9taWMoKSBiZXR3ZWVuIHRoZSBxdWllc2NlX2RlcHRoIHN0b3JlIGFuZFxuK1x0XHQgKiB0aGUgYmxrX21xX2hjdHhfaGFzX3BlbmRpbmcoKSBsb2FkIGluIGJsa19tcV91bnF1aWVzY2VfcXVldWUoKVxuK1x0XHQgKiAoYW5kIGluIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdCgpKS4gIFdpdGggYSBmdWxsIGJhcnJpZXJcbitcdFx0ICogb24gYm90aCBzaWRlcywgYXQgbGVhc3Qgb25lIENQVSBvYnNlcnZlcyB0aGUgb3RoZXIncyBzdG9yZSxcbitcdFx0ICogc28gdGhlIHF1ZXVlIGlzIG5vdCBsZWZ0IGJvdGggdW4tcXVpZXNjZWQgYW5kIG5vdCByZXJ1bi5cbiBcdFx0ICovXG4tXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmhjdHgtXHUwMDNlcXVldWUtXHUwMDNlcXVldWVfbG9jaywgZmxhZ3MpO1xuK1x0XHRzbXBfbWIoKTtcbiBcdFx0bmVlZF9ydW4gPSBibGtfbXFfaHdfcXVldWVfbmVlZF9ydW4oaGN0eCk7XG4tXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aGN0eC1cdTAwM2VxdWV1ZS1cdTAwM2VxdWV1ZV9sb2NrLCBmbGFncyk7XG4gXG4gXHRcdGlmICghbmVlZF9ydW4pXG4gXHRcdFx0cmV0dXJuO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmggYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oXG5pbmRleCBkYmI1NDljZGZiNzc4Yi4uOWU0OWFiOWM3OGFlMGMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oXG5AQCAtNTI1LDcgKzUyNSw4IEBAIHN0cnVjdCByZXF1ZXN0X3F1ZXVlIHtcbiBcbiBcdHNwaW5sb2NrX3RcdFx0cXVldWVfbG9jaztcbiBcbi1cdGludFx0XHRcdHF1aWVzY2VfZGVwdGg7XG4rXHQvKiBBdG9taWMgcXVpZXNjZSBkZXB0aCAtIGFsc28gc2VydmVzIGFzIHF1aWVzY2VkIGluZGljYXRvciAoZGVwdGggXHUwMDNlIDApICovXG4rXHRhdG9taWNfdFx0XHRxdWllc2NlX2RlcHRoO1xuIFxuIFx0c3RydWN0IGdlbmRpc2tcdFx0KmRpc2s7XG4gXG5AQCAtNjcwLDcgKzY3MSw2IEBAIGVudW0ge1xuIFx0UVVFVUVfRkxBR19JTklUX0RPTkUsXHRcdC8qIHF1ZXVlIGlzIGluaXRpYWxpemVkICovXG4gXHRRVUVVRV9GTEFHX1NUQVRTLFx0XHQvKiB0cmFjayBJTyBzdGFydCBhbmQgY29tcGxldGlvbiB0aW1lcyAqL1xuIFx0UVVFVUVfRkxBR19SRUdJU1RFUkVELFx0XHQvKiBxdWV1ZSBoYXMgYmVlbiByZWdpc3RlcmVkIHRvIGEgZGlzayAqL1xuLVx0UVVFVUVfRkxBR19RVUlFU0NFRCxcdFx0LyogcXVldWUgaGFzIGJlZW4gcXVpZXNjZWQgKi9cbiBcdFFVRVVFX0ZMQUdfUlFfQUxMT0NfVElNRSxcdC8qIHJlY29yZCBycS1cdTAwM2VhbGxvY190aW1lX25zICovXG4gXHRRVUVVRV9GTEFHX0hDVFhfQUNUSVZFLFx0XHQvKiBhdCBsZWFzdCBvbmUgYmxrLW1xIGhjdHggaXMgYWN0aXZlICovXG4gXHRRVUVVRV9GTEFHX1NRX1NDSEVELFx0XHQvKiBzaW5nbGUgcXVldWUgc3R5bGUgaW8gZGlzcGF0Y2ggKi9cbkBAIC03MDgsNyArNzA4LDEwIEBAIHZvaWQgYmxrX3F1ZXVlX2ZsYWdfY2xlYXIodW5zaWduZWQgaW50IGZsYWcsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKTtcbiAjZGVmaW5lIGJsa19ub3JldHJ5X3JlcXVlc3QocnEpIFxcXG4gXHQoKHJxKS1cdTAwM2VjbWRfZmxhZ3MgXHUwMDI2IChSRVFfRkFJTEZBU1RfREVWfFJFUV9GQUlMRkFTVF9UUkFOU1BPUlR8IFxcXG4gXHRcdFx0ICAgICBSRVFfRkFJTEZBU1RfRFJJVkVSKSlcbi0jZGVmaW5lIGJsa19xdWV1ZV9xdWllc2NlZChxKVx0dGVzdF9iaXQoUVVFVUVfRkxBR19RVUlFU0NFRCwgXHUwMDI2KHEpLVx1MDAzZXF1ZXVlX2ZsYWdzKVxuK3N0YXRpYyBpbmxpbmUgYm9vbCBibGtfcXVldWVfcXVpZXNjZWQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpXG4re1xuK1x0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNnEtXHUwMDNlcXVpZXNjZV9kZXB0aCkgXHUwMDNlIDA7XG4rfVxuICNkZWZpbmUgYmxrX3F1ZXVlX3BtX29ubHkocSlcdGF0b21pY19yZWFkKFx1MDAyNihxKS1cdTAwM2VwbV9vbmx5KVxuICNkZWZpbmUgYmxrX3F1ZXVlX3JlZ2lzdGVyZWQocSlcdHRlc3RfYml0KFFVRVVFX0ZMQUdfUkVHSVNURVJFRCwgXHUwMDI2KHEpLVx1MDAzZXF1ZXVlX2ZsYWdzKVxuICNkZWZpbmUgYmxrX3F1ZXVlX3NxX3NjaGVkKHEpXHR0ZXN0X2JpdChRVUVVRV9GTEFHX1NRX1NDSEVELCBcdTAwMjYocSktXHUwMDNlcXVldWVfZmxhZ3MpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0NjoyNi45MjQzNDc3MTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDkwNzU0NTU2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQmxvY2sgTGF5ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHBva2luZyBhcm91bmQgaW4gdGhlIGJsb2NrIGxheWVyLCBzcGVjaWZpY2FsbHkgaW4gYGJsay1tcS5jYCwgYGJsay1jb3JlLmNgLCBgYmxrLW1xLWRlYnVnZnMuY2AsIGFuZCB0aGUgYGJsa2Rldi5oYCBpbmNsdWRlIGZpbGUuIFRoaXMgbG9va3MgbGlrZSBhIGZhaXJseSBzaWduaWZpY2FudCBjaGFuZ2Ug4oCTIHdlJ3JlIHRhbGtpbmcgYWJvdXQgaG93IHRoZSBrZXJuZWwgdHJhY2tzIHF1ZXVlIHF1aWVzY2luZy4gSW5zdGVhZCBvZiB0aGF0IHNwaW5sb2NrLXByb3RlY3RlZCBgcXVpZXNjZV9kZXB0aGAgYW5kIHRoZSBgUVVFVUVfRkxBR19RVUlFU0NFRGAgZmxhZywgdGhleSdyZSBzd2FwcGluZyBpbiBhbiBgYXRvbWljX3QgcXVpZXNjZV9kZXB0aGAuIEludGVyZXN0aW5nLlxuXG5UaGV5J3JlIGNsZWFybHkgbW9kaWZ5aW5nIHNvbWUga2V5IGZ1bmN0aW9uczogYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAsIGBibGtfbXFfdW5xdWllc2NlX3F1ZXVlYCwgYW5kIGBibGtfbXFfcnVuX2h3X3F1ZXVlYC4gWWVwLCB0aGlzIGlzIGNvcmUga2VybmVsIGxvZ2ljIGluIHRoZSBibG9jayBsYXllciwgbm8gZG91YnQgYWJvdXQgaXQuIERlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvZGUuIEdvb2QsIGdvb2QuIFRoZXkncmUgcmVtb3ZpbmcgdGhlIGBRVUVVRV9GTEFHX1FVSUVTQ0VEYCBjb21wbGV0ZWx5IGFuZCB1c2luZyBhbiBhdG9taWMgcmVhZCwgYGF0b21pY19yZWFkKFx1MDAyNnEtXHUwMDNlcXVpZXNjZV9kZXB0aCkgXHUwMDNlIDBgLCBpbnN0ZWFkLiBBbmQgdGhleSdyZSBhbHNvIGNoYW5naW5nIHRoZSBzeW5jaHJvbml6YXRpb24gaW4gYGJsa19tcV9ydW5faHdfcXVldWVgLCBtb3ZpbmcgdG8gYW4gYHNtcF9tYigpYCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBgcXVldWVfbG9ja2AuXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyB0b3VjaGluZyBjb3JlIGJsb2NrIGxheWVyIGZ1bmN0aW9uYWxpdHkgYW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSwgaXQncyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgc3ltYm9scyB0byBrZWVwIGFuIGV5ZSBvbiBhcmUgdGhvc2UgdGhyZWUgZnVuY3Rpb25zOiBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YCwgYGJsa19tcV91bnF1aWVzY2VfcXVldWVgLCBhbmQgYGJsa19tcV9ydW5faHdfcXVldWVgLlxuXG5Ob3csIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBuZWVkZWQgdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS4gVGhlIGJsb2NrIGxheWVyLCBhcyBhbHdheXMsIGlzIGVuYWJsZWQgYnkgYENPTkZJR19CTE9DS2AuIFRoYXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIGtlcm5lbCwgc28gaXQncyBwcm9iYWJseSBlbmFibGVkIGJ5IGRlZmF1bHQuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgYGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdGAgaXRzZWxmIGlzIGd1YXJkZWQgYnkgYW55dGhpbmcgc3BlY2lmaWMuIE9rYXksIGBibGstbXEuY2AgYW5kIHRodXMgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19CTE9DS2AgaXMgZW5hYmxlZC4gR29vZC4gV2UndmUgdmVyaWZpZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMDIsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0NzowMS44MzE4OTYwMTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIyMzMzODM2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svYmxrLW1xLmM9MjU1PUVYUE9SVF9TWU1CT0xfR1BMKGJsa19tcV91bmZyZWV6ZV9xdWV1ZV9ub25fb3duZXIpO1xcbi0tXFxuYmxvY2svYmxrLW1xLmMtMjYwLSAqL1xcbmJsb2NrL2Jsay1tcS5jOjI2MTp2b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSlcXG5ibG9jay9ibGstbXEuYy0yNjIte1xcbi0tXFxuYmxvY2svYmxrLW1xLmMtMjczLX1cXG5ibG9jay9ibGstbXEuYzoyNzQ6RVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KTtcXG5ibG9jay9ibGstbXEuYy0yNzUtXFxuLS1cXG5ibG9jay9ibGstbXEuYy0yODItICogZnVuY3Rpb24gb25seSB3YWl0cyBmb3IgdGhlIHF1aWVzY2Ugb24gdGhvc2UgcmVxdWVzdF9xdWV1ZXMgdGhhdCBoYWRcXG5ibG9jay9ibGstbXEuYzoyODM6ICogdGhlIHF1aWVzY2UgZmxhZyBzZXQgdXNpbmcgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0LlxcbmJsb2NrL2Jsay1tcS5jLTI4NC0gKi9cXG4tLVxcbmJsb2NrL2Jsay1tcS5jPTMwMz12b2lkIGJsa19tcV9xdWllc2NlX3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKVxcbmJsb2NrL2Jsay1tcS5jLTMwNC17XFxuYmxvY2svYmxrLW1xLmM6MzA1OlxcdGJsa19tcV9xdWllc2NlX3F1ZXVlX25vd2FpdChxKTtcXG5ibG9jay9ibGstbXEuYy0zMDYtXFx0Lyogbm90aGluZyB0byB3YWl0IGZvciBub24tbXEgcXVldWVzICovXFxuLS1cXG5ibG9jay9ibGstbXEuYz0zNDg9dm9pZCBibGtfbXFfcXVpZXNjZV90YWdzZXQoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpXFxuLS1cXG5ibG9jay9ibGstbXEuYy0zNTQtXFx0XFx0aWYgKCFibGtfcXVldWVfc2tpcF90YWdzZXRfcXVpZXNjZShxKSlcXG5ibG9jay9ibGstbXEuYzozNTU6XFx0XFx0XFx0YmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHEpO1xcbmJsb2NrL2Jsay1tcS5jLTM1Ni1cXHR9XFxuLS1cXG5ibG9jay9ibGstbXEuYz0yMzM0PXZvaWQgYmxrX21xX3J1bl9od19xdWV1ZShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgYm9vbCBhc3luYylcXG4tLVxcbmJsb2NrL2Jsay1tcS5jLTIzNTUtXFx0XFx0ICogdGhlIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgbG9hZCBpbiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKClcXG5ibG9jay9ibGstbXEuYzoyMzU2OlxcdFxcdCAqIChhbmQgaW4gYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkpLiAgV2l0aCBhIGZ1bGwgYmFycmllclxcbmJsb2NrL2Jsay1tcS5jLTIzNTctXFx0XFx0ICogb24gYm90aCBzaWRlcywgYXQgbGVhc3Qgb25lIENQVSBvYnNlcnZlcyB0aGUgb3RoZXIncyBzdG9yZSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jPTE1OTA9c3RhdGljIGludCB2aXJ0YmxrX2ZyZWV6ZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTU5Ny1cXHRtZW1mbGFncyA9IGJsa19tcV9mcmVlemVfcXVldWUocSk7XFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM6MTU5ODpcXHRibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQocSk7XFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTU5OS1cXHRibGtfbXFfdW5mcmVlemVfcXVldWUocSwgbWVtZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfbGliLmM9MjkzOD1zdGF0aWMgdm9pZCBzY3NpX3N0b3BfcXVldWUoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KVxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfbGliLmMtMjk0Ni1cXHRpZiAoIWNtcHhjaGcoXFx1MDAyNnNkZXYtXFx1MDAzZXF1ZXVlX3N0b3BwZWQsIDAsIDEpKVxcbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jOjI5NDc6XFx0XFx0YmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KHNkZXYtXFx1MDAzZXJlcXVlc3RfcXVldWUpO1xcbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jLTI5NDgtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9ibGstbXEuaD05Nzc9dm9pZCBibGtfbXFfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgKnNldCwgaW50IG5yX2h3X3F1ZXVlcyk7XFxuaW5jbHVkZS9saW51eC9ibGstbXEuaC05NzgtXFxuaW5jbHVkZS9saW51eC9ibGstbXEuaDo5Nzk6dm9pZCBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEpO1xcbmluY2x1ZGUvbGludXgvYmxrLW1xLmgtOTgwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMjo0NzowNS4wNTUyNTI2OTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjIyOTIwODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipCbG9jayBMYXllciBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cblJpZ2h0LCB0aGUgYmxvY2sgbGF5ZXIuIFRoYXQncyBmdW5kYW1lbnRhbCwgYSAqY3JpdGljYWwqIHBpZWNlIG9mIHRoZSBrZXJuZWwgYXJjaGl0ZWN0dXJlLiBZb3UgY2FuIGJldCB0aGF0IGBDT05GSUdfQkxPQ0tgIGlzIGFsbW9zdCBhbHdheXMgZW5hYmxlZC4gSXQncyB0aGUgcGx1bWJpbmcsIHRoZSBjb3JlLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZsYWdzLCBzb21ldGhpbmcgbW9yZSBncmFudWxhciwgZm9yIGEgcGFydGljdWxhciBjb21wb25lbnQsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBgYmxrLW1xLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQncyBiZWluZyBjb25maWd1cmVkLiBBcmUgdGhlcmUgYW55IHBlY3VsaWFyaXRpZXMgb3Igb3B0aW1pemF0aW9uIGZsYWdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mIGZvciBgYmxrLW1xYCB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGlzIGxheWVyPyBMZXQncyBkaWcgaW50byB0aGUgZGV0YWlscyBhbmQgc2VlIHdoYXQgdGhlIGtlcm5lbCBjb25maWcgc2F5cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk5MiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjQ3OjA4LjI3ODE3NzExNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTExMDk5NDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsay1tcS5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL01ha2VmaWxlPTg9b2JqLXlcXHRcXHQ6PSBiZGV2Lm8gZm9wcy5vIGJpby5vIGVsZXZhdG9yLm8gYmxrLWNvcmUubyBibGstc3lzZnMubyBcXFxcXFxuYmxvY2svTWFrZWZpbGUtOS1cXHRcXHRcXHRibGstZmx1c2gubyBibGstc2V0dGluZ3MubyBibGstaW9jLm8gYmxrLW1hcC5vIFxcXFxcXG5ibG9jay9NYWtlZmlsZToxMDpcXHRcXHRcXHRibGstbWVyZ2UubyBibGstdGltZW91dC5vIGJsay1saWIubyBibGstbXEubyBcXFxcXFxuYmxvY2svTWFrZWZpbGUtMTEtXFx0XFx0XFx0YmxrLW1xLXRhZy5vIGJsay1tcS1kbWEubyBibGstc3RhdC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDc6MTEuMzg5MjgzMDIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk4Njk5NDY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgdW5kZXJzdGFuZCB0aGlzOlxuXG4qKkFuYWx5emluZyBCbG9jayBMYXllciBDb21waWxhdGlvbiBhbmQgQ29uY3VycmVuY3kqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBzb21ldGhpbmcgdGhhdCdzIGRpcmVjdGx5IGxpbmtlZCBpbnRvIHRoZSBibG9jayBsYXllciwgd2hpY2ggaXMgY29uZmlybWVkIGJ5IGl0cyBpbmNsdXNpb24gaW4gdGhlIGBvYmoteWAgbGlzdCB3aXRoaW4gYGJsb2NrL01ha2VmaWxlYC4gVGhpcyBtZWFucywgYXMgYW4gZXhwZXJ0LCBJIGtub3cgdGhpcyBjb2RlIGlzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgYmxvY2sgZGV2aWNlIGRyaXZlciBpbmZyYXN0cnVjdHVyZS4gQ3J1Y2lhbGx5LCBpdCdzIGFsd2F5cyBjb21waWxlZCBhcyBsb25nIGFzIGBDT05GSUdfQkxPQ0tgIGlzIHNldC4gR2l2ZW4gdGhhdCBgQ09ORklHX0JMT0NLYCBpcyBhIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb24sIGl0IGZ1cnRoZXIgdW5kZXJzY29yZXMgdGhlIGltcG9ydGFuY2Ugb2YgdGhpcyBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdCB3b3JrcyB3aXRoIGFueSBibG9jayBkZXZpY2UuXG5cbk5vdywgbGV0J3MgZGl2ZSBkZWVwZXIgYW5kIGFuYWx5emUgd2hhdCBpcyBoYXBwZW5pbmcgd2l0aCBgYmxrX21xX3VucXVpZXNjZV9xdWV1ZWAgYW5kIGBibGtfbXFfcnVuX2h3X3F1ZXVlYC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgd2lsbCBiZSByZWxldmFudCB0byBjb25jdXJyZW5jeSwgYW5kIEkgaGF2ZSBhIGZlZWxpbmcgdGhpcyByZWxhdGVzIHRvIGJyaW5naW5nIGEgcXVldWUgYmFjayBvbmxpbmUgYWZ0ZXIgYmVpbmcgcXVpZXNjZWQsIGFuZCB0aGVuIGdldHRpbmcgaXQgcnVubmluZyBvbiBhIGhhcmR3YXJlIHF1ZXVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzU2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDc6MTQuMzc2MjgxMTA0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzkzNTg3NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrX21xX3VucXVpZXNjZV9xdWV1ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstaW9jb3N0LmM9MzI2Nj1zdGF0aWMgc3NpemVfdCBpb2NfcW9zX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqaW5wdXQsXFxuLS1cXG5ibG9jay9ibGstaW9jb3N0LmMtMzQwNy1cXG5ibG9jay9ibGstaW9jb3N0LmM6MzQwODpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXFx1MDAzZXF1ZXVlKTtcXG5ibG9jay9ibGstaW9jb3N0LmMtMzQwOS1cXG4tLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNDE3LVxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2aW9jLVxcdTAwM2Vsb2NrKTtcXG5ibG9jay9ibGstaW9jb3N0LmM6MzQxODpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXFx1MDAzZXF1ZXVlKTtcXG5ibG9jay9ibGstaW9jb3N0LmMtMzQxOS1cXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuYmxvY2svYmxrLWlvY29zdC5jPTM0Njk9c3RhdGljIHNzaXplX3QgaW9jX2Nvc3RfbW9kZWxfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICppbnB1dCxcXG4tLVxcbmJsb2NrL2Jsay1pb2Nvc3QuYy0zNTU4LVxcbmJsb2NrL2Jsay1pb2Nvc3QuYzozNTU5OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XFxuYmxvY2svYmxrLWlvY29zdC5jLTM1NjAtXFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTtcXG4tLVxcbmJsb2NrL2Jsay1tcS5jPTI5Mj1FWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfd2FpdF9xdWllc2NlX2RvbmUpO1xcbi0tXFxuYmxvY2svYmxrLW1xLmMtMzAwLSAqIHN1cmUgbm8gZGlzcGF0Y2ggY2FuIGhhcHBlbiB1bnRpbCB0aGUgcXVldWUgaXMgdW5xdWllc2NlZCB2aWFcXG5ibG9jay9ibGstbXEuYzozMDE6ICogYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpLlxcbmJsb2NrL2Jsay1tcS5jLTMwMi0gKi9cXG4tLVxcbmJsb2NrL2Jsay1tcS5jPTMxMD1FWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfcXVpZXNjZV9xdWV1ZSk7XFxuLS1cXG5ibG9jay9ibGstbXEuYy0zMTItLypcXG5ibG9jay9ibGstbXEuYzozMTM6ICogYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpIC0gY291bnRlcnBhcnQgb2YgYmxrX21xX3F1aWVzY2VfcXVldWUoKVxcbmJsb2NrL2Jsay1tcS5jLTMxNC0gKiBAcTogcmVxdWVzdCBxdWV1ZS5cXG4tLVxcbmJsb2NrL2Jsay1tcS5jLTMxOC0gKi9cXG5ibG9jay9ibGstbXEuYzozMTk6dm9pZCBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKVxcbmJsb2NrL2Jsay1tcS5jLTMyMC17XFxuLS1cXG5ibG9jay9ibGstbXEuYy0zNDUtfVxcbmJsb2NrL2Jsay1tcS5jOjM0NjpFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFfdW5xdWllc2NlX3F1ZXVlKTtcXG5ibG9jay9ibGstbXEuYy0zNDctXFxuLS1cXG5ibG9jay9ibGstbXEuYz0zNjM9dm9pZCBibGtfbXFfdW5xdWllc2NlX3RhZ3NldChzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgKnNldClcXG4tLVxcbmJsb2NrL2Jsay1tcS5jLTM2OS1cXHRcXHRpZiAoIWJsa19xdWV1ZV9za2lwX3RhZ3NldF9xdWllc2NlKHEpKVxcbmJsb2NrL2Jsay1tcS5jOjM3MDpcXHRcXHRcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHEpO1xcbmJsb2NrL2Jsay1tcS5jLTM3MS1cXHR9XFxuLS1cXG5ibG9jay9ibGstbXEuYz0yMzA3PXN0YXRpYyBpbmxpbmUgYm9vbCBibGtfbXFfaHdfcXVldWVfbmVlZF9ydW4oc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgpXFxuLS1cXG5ibG9jay9ibGstbXEuYy0yMzE1LVxcdCAqXFxuYmxvY2svYmxrLW1xLmM6MjMxNjpcXHQgKiBBbmQgcXVldWUgd2lsbCBiZSByZXJ1biBpbiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKCkgaWYgaXQgaXNcXG5ibG9jay9ibGstbXEuYy0yMzE3LVxcdCAqIHF1aWVzY2VkLlxcbi0tXFxuYmxvY2svYmxrLW1xLmM9MjMzND12b2lkIGJsa19tcV9ydW5faHdfcXVldWUoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIGJvb2wgYXN5bmMpXFxuLS1cXG5ibG9jay9ibGstbXEuYy0yMzQ5LVxcdFxcdCAqIGluc2VydGVkIGJlZm9yZSB0aGlzIGNhbGwsIHdoaWxlIGEgY29uY3VycmVudFxcbmJsb2NrL2Jsay1tcS5jOjIzNTA6XFx0XFx0ICogYmxrX21xX3VucXVpZXNjZV9xdWV1ZSgpIGRyb3BzIHF1aWVzY2VfZGVwdGggdG8gemVybyBhbmRcXG5ibG9jay9ibGstbXEuYy0yMzUxLVxcdFxcdCAqIHRoZW4gcnVucyB0aGUgaHcgcXVldWVzLiAgVGhpcyBzbXBfbWIoKSBvcmRlcnMgdGhlIHJlcXVlc3RcXG4tLVxcbmJsb2NrL2Jsay1tcS5jLTIzNTQtXFx0XFx0ICogc21wX21iX19hZnRlcl9hdG9taWMoKSBiZXR3ZWVuIHRoZSBxdWllc2NlX2RlcHRoIHN0b3JlIGFuZFxcbmJsb2NrL2Jsay1tcS5jOjIzNTU6XFx0XFx0ICogdGhlIGJsa19tcV9oY3R4X2hhc19wZW5kaW5nKCkgbG9hZCBpbiBibGtfbXFfdW5xdWllc2NlX3F1ZXVlKClcXG5ibG9jay9ibGstbXEuYy0yMzU2LVxcdFxcdCAqIChhbmQgaW4gYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0KCkpLiAgV2l0aCBhIGZ1bGwgYmFycmllclxcbi0tXFxuYmxvY2svYmxrLW1xLmM9NTAwMT1zdHJ1Y3QgZWxldmF0b3JfdGFncyAqYmxrX21xX3VwZGF0ZV9ucl9yZXF1ZXN0cyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSxcXG4tLVxcbmJsb2NrL2Jsay1tcS5jLTUwNTYtXFxuYmxvY2svYmxrLW1xLmM6NTA1NzpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHEpO1xcbmJsb2NrL2Jsay1tcS5jLTUwNTgtXFx0cmV0dXJuIG9sZF9ldDtcXG4tLVxcbmJsb2NrL2Jsay1zeXNmcy5jPTQwMD1zdGF0aWMgc3NpemVfdCBxdWV1ZV96b25lZF9xZDFfd3JpdGVzX3N0b3JlKHN0cnVjdCBnZW5kaXNrICpkaXNrLFxcbi0tXFxuYmxvY2svYmxrLXN5c2ZzLmMtNDE3LVxcdFxcdGJsa19xdWV1ZV9mbGFnX2NsZWFyKFFVRVVFX0ZMQUdfWk9ORURfUUQxX1dSSVRFUywgcSk7XFxuYmxvY2svYmxrLXN5c2ZzLmM6NDE4OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XFxuYmxvY2svYmxrLXN5c2ZzLmMtNDE5LVxcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShxLCBtZW1mbGFncyk7XFxuLS1cXG5ibG9jay9ibGstdGhyb3R0bGUuYz0xMzE4PXN0YXRpYyBpbnQgYmxrX3Rocm90bF9pbml0KHN0cnVjdCBnZW5kaXNrICpkaXNrKVxcbi0tXFxuYmxvY2svYmxrLXRocm90dGxlLmMtMTM0NC1cXG5ibG9jay9ibGstdGhyb3R0bGUuYzoxMzQ1OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUoZGlzay1cXHUwMDNlcXVldWUpO1xcbmJsb2NrL2Jsay10aHJvdHRsZS5jLTEzNDYtXFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKGRpc2stXFx1MDAzZXF1ZXVlLCBtZW1mbGFncyk7XFxuLS1cXG5ibG9jay9ibGstd2J0LmM9OTkwPWludCB3YnRfc2V0X2xhdChzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgczY0IHZhbClcXG4tLVxcbmJsb2NrL2Jsay13YnQuYy0xMDM1LVxcbmJsb2NrL2Jsay13YnQuYzoxMDM2OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XFxuYmxvY2svYmxrLXdidC5jLTEwMzctb3V0Olxcbi0tXFxuYmxvY2svZWxldmF0b3IuYz01NjI9c3RhdGljIGludCBlbGV2YXRvcl9zd2l0Y2goc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBlbHZfY2hhbmdlX2N0eCAqY3R4KVxcbi0tXFxuYmxvY2svZWxldmF0b3IuYy01OTYtb3V0X3VuZnJlZXplOlxcbmJsb2NrL2VsZXZhdG9yLmM6NTk3OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XFxuYmxvY2svZWxldmF0b3IuYy01OTgtXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2FvZS9hb2VkZXYuYz0xOTc9YW9lZGV2X2Rvd25kZXYoc3RydWN0IGFvZWRldiAqZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svYW9lL2FvZWRldi5jLTI0Mi1cXHRcXHRibGtfbXFfcXVpZXNjZV9xdWV1ZShkLVxcdTAwM2VibGtxKTtcXG5kcml2ZXJzL2Jsb2NrL2FvZS9hb2VkZXYuYzoyNDM6XFx0XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShkLVxcdTAwM2VibGtxKTtcXG5kcml2ZXJzL2Jsb2NrL2FvZS9hb2VkZXYuYy0yNDQtXFx0XFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKGQtXFx1MDAzZWJsa3EsIG1lbWZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svYXRhZmxvcC5jPTc0Mz1zdGF0aWMgaW50IGRvX2Zvcm1hdChpbnQgZHJpdmUsIGludCB0eXBlLCBzdHJ1Y3QgYXRhcmlfZm9ybWF0X2Rlc2NyICpkZXNjKVxcbi0tXFxuZHJpdmVycy9ibG9jay9hdGFmbG9wLmMtODE5LW91dDpcXG5kcml2ZXJzL2Jsb2NrL2F0YWZsb3AuYzo4MjA6XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcXG5kcml2ZXJzL2Jsb2NrL2F0YWZsb3AuYy04MjEtXFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYz04ODk9c3RhdGljIGludCBtdGlwX3F1aWVzY2VfaW8oc3RydWN0IG10aXBfcG9ydCAqcG9ydCwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KVxcbi0tXFxuZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5jLTkxMy1cXG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmM6OTE0OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocG9ydC1cXHUwMDNlZGQtXFx1MDAzZXF1ZXVlKTtcXG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMtOTE1LVxcdHJldHVybiBhY3RpdmUgPyAtRUJVU1kgOiAwO1xcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy05MTYtZXJyX2ZhdWx0OlxcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYzo5MTc6XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShwb3J0LVxcdTAwM2VkZC1cXHUwMDNlcXVldWUpO1xcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy05MTgtXFx0cmV0dXJuIC1FRkFVTFQ7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmM9MjQ2NT1zdGF0aWMgaW50IG10aXBfc2VydmljZV90aHJlYWQodm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYy0yNTI4LVxcbmRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYzoyNTI5OlxcdFxcdFxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUoZGQtXFx1MDAzZXF1ZXVlKTtcXG5kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMtMjUzMC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTEwNTA9c3RhdGljIHZvaWQgbmJkX2NsZWFyX3F1ZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMDUzLVxcdGJsa19tcV90YWdzZXRfYnVzeV9pdGVyKFxcdTAwMjZuYmQtXFx1MDAzZXRhZ19zZXQsIG5iZF9jbGVhcl9yZXEsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTA1NDpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKG5iZC1cXHUwMDNlZGlzay1cXHUwMDNlcXVldWUpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTA1NS1cXHRkZXZfZGJnKGRpc2tfdG9fZGV2KG5iZC1cXHUwMDNlZGlzayksIFxcXCJxdWV1ZSBjbGVhcmVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svc3VudmRjLmM9MTExND1zdGF0aWMgdm9pZCB2ZGNfcXVldWVfZHJhaW4oc3RydWN0IHZkY19wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9ibG9jay9zdW52ZGMuYy0xMTMwLVxcdHBvcnQtXFx1MDAzZWRyYWluID0gMDtcXG5kcml2ZXJzL2Jsb2NrL3N1bnZkYy5jOjExMzE6XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcXG5kcml2ZXJzL2Jsb2NrL3N1bnZkYy5jLTExMzItXFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svc3dpbTMuYz04NDA9c3RhdGljIHZvaWQgcmVsZWFzZV9kcml2ZShzdHJ1Y3QgZmxvcHB5X3N0YXRlICpmcylcXG4tLVxcbmRyaXZlcnMvYmxvY2svc3dpbTMuYy04NTMtXFx0YmxrX21xX3F1aWVzY2VfcXVldWUocSk7XFxuZHJpdmVycy9ibG9jay9zd2ltMy5jOjg1NDpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKHEpO1xcbmRyaXZlcnMvYmxvY2svc3dpbTMuYy04NTUtXFx0YmxrX21xX3VuZnJlZXplX3F1ZXVlKHEsIG1lbWZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0yNzI2PXN0YXRpYyB2b2lkIHVibGtfc3RhcnRfY2FuY2VsKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjc0MC1cXHRcXHR1YmxrX3NldF9jYW5jZWxpbmcodWIsIHRydWUpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzoyNzQxOlxcdFxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUoZGlzay1cXHUwMDNlcXVldWUpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNzQyLVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9Mjk1Mz1zdGF0aWMgdm9pZCB1YmxrX2ZvcmNlX2Fib3J0X2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTI5NjYtXFx0XFx0dWJsa19nZXRfcXVldWUodWIsIGkpLVxcdTAwM2Vmb3JjZV9hYm9ydCA9IHRydWU7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjI5Njc6XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZSh1Yi1cXHUwMDNldWJfZGlzay1cXHUwMDNlcXVldWUpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yOTY4LVxcdC8qIFdlIG1heSBoYXZlIHJlcXVldWVkIHNvbWUgcnFzIGluIHVibGtfcXVpZXNjZV9xdWV1ZSgpICovXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTIyMD1zdGF0aWMgaW50IHVibGtfY3RybF9xdWllc2NlX2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyNDYtXFx0dWJsa19zZXRfY2FuY2VsaW5nKHViLCB0cnVlKTtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTI0NzpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKGRpc2stXFx1MDAzZXF1ZXVlKTtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTI0OC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnViLVxcdTAwM2VjYW5jZWxfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmM9MTYxOT1zdGF0aWMgaW50IHZpcnRibGtfcmVzdG9yZV9wcml2KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTYyOC1cXHR2aXJ0aW9fZGV2aWNlX3JlYWR5KHZkZXYpO1xcbmRyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jOjE2Mjk6XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZSh2YmxrLVxcdTAwM2VkaXNrLVxcdTAwM2VxdWV1ZSk7XFxuZHJpdmVycy9ibG9jay92aXJ0aW9fYmxrLmMtMTYzMC1cXG4tLVxcbmRyaXZlcnMvbWQvZG0tcnEuYz02ND12b2lkIGRtX3N0YXJ0X3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKVxcbmRyaXZlcnMvbWQvZG0tcnEuYy02NS17XFxuZHJpdmVycy9tZC9kbS1ycS5jOjY2OlxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUocSk7XFxuZHJpdmVycy9tZC9kbS1ycS5jLTY3LVxcdGJsa19tcV9raWNrX3JlcXVldWVfbGlzdChxKTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYz00OTU9dm9pZCBtbWNfcXVldWVfcmVzdW1lKHN0cnVjdCBtbWNfcXVldWUgKm1xKVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYy00OTYte1xcbmRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYzo0OTc6XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShtcS1cXHUwMDNlcXVldWUpO1xcbmRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYy00OTgtfVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jPTUwMD12b2lkIG1tY19jbGVhbnVwX3F1ZXVlKHN0cnVjdCBtbWNfcXVldWUgKm1xKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWV1ZS5jLTUwOC1cXHRpZiAoYmxrX3F1ZXVlX3F1aWVzY2VkKHEpKVxcbmRyaXZlcnMvbW1jL2NvcmUvcXVldWUuYzo1MDk6XFx0XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShxKTtcXG5kcml2ZXJzL21tYy9jb3JlL3F1ZXVlLmMtNTEwLVxcbi0tXFxuZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYz00MDQ9aW50IGRlbF9tdGRfYmxrdHJhbnNfZGV2KHN0cnVjdCBtdGRfYmxrdHJhbnNfZGV2ICpvbGQpXFxuLS1cXG5kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jLTQyNS1cXHRibGtfbXFfcXVpZXNjZV9xdWV1ZShvbGQtXFx1MDAzZXJxKTtcXG5kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jOjQyNjpcXHRibGtfbXFfdW5xdWllc2NlX3F1ZXVlKG9sZC1cXHUwMDNlcnEpO1xcbmRyaXZlcnMvbXRkL210ZF9ibGtkZXZzLmMtNDI3LVxcdGJsa19tcV91bmZyZWV6ZV9xdWV1ZShvbGQtXFx1MDAzZXJxLCBtZW1mbGFncyk7XFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC9jb3JlLmM9NTM4MD12b2lkIG52bWVfdW5xdWllc2NlX2FkbWluX3F1ZXVlKHN0cnVjdCBudm1lX2N0cmwgKmN0cmwpXFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMtNTM4Mi1cXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5WTUVfQ1RSTF9BRE1JTl9RX1NUT1BQRUQsIFxcdTAwMjZjdHJsLVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jOjUzODM6XFx0XFx0YmxrX21xX3VucXVpZXNjZV9xdWV1ZShjdHJsLVxcdTAwM2VhZG1pbl9xKTtcXG5kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMtNTM4NC19XFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYz0yOTMyPXZvaWQgc2NzaV9zdGFydF9xdWV1ZShzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYpXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYy0yOTM0LVxcdGlmIChjbXB4Y2hnKFxcdTAwMjZzZGV2LVxcdTAwM2VxdWV1ZV9zdG9wcGVkLCAxLCAwKSlcXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYzoyOTM1OlxcdFxcdGJsa19tcV91bnF1aWVzY2VfcXVldWUoc2Rldi1cXHUwMDNlcmVxdWVzdF9xdWV1ZSk7XFxuZHJpdmVycy9zY3NpL3Njc2lfbGliLmMtMjkzNi19XFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYz0yOTM4PXN0YXRpYyB2b2lkIHNjc2lfc3RvcF9xdWV1ZShzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYpXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYy0yOTQxLVxcdCAqIFRoZSBhdG9taWMgdmFyaWFibGUgb2YgLVxcdTAwM2VxdWV1ZV9zdG9wcGVkIGNvdmVycyB0aGF0XFxuZHJpdmVycy9zY3NpL3Njc2lfbGliLmM6Mjk0MjpcXHQgKiBibGtfbXFfcXVpZXNjZV9xdWV1ZSogaXMgYmFsYW5jZWQgd2l0aCBibGtfbXFfdW5xdWllc2NlX3F1ZXVlLlxcbmRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jLTI5NDMtXFx0ICpcXG4tLVxcbmluY2x1ZGUvbGludXgvYmxrLW1xLmg9OTQwPXZvaWQgYmxrX21xX3VucXVpZXNjZV90YWdzZXQoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpO1xcbmluY2x1ZGUvbGludXgvYmxrLW1xLmg6OTQxOnZvaWQgYmxrX21xX3VucXVpZXNjZV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSk7XFxuaW5jbHVkZS9saW51eC9ibGstbXEuaC05NDItdm9pZCBibGtfbXFfZGVsYXlfcnVuX2h3X3F1ZXVlKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LCB1bnNpZ25lZCBsb25nIG1zZWNzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjI6NDc6MTcuODU1NjQ2MzQ2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc2OTIzNjkwOTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQmxvY2sgTGF5ZXIgUXVpZXNjZSBDaGFuZ2VzIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB3aGljaCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgYmxvY2sgbGF5ZXIncyBxdWllc2NlIG1lY2hhbmlzbS4gVGhpcyBpc24ndCBqdXN0IGEgbWlub3IgdHdlYWs7IGl0J3MgYSBkZWVwIGRpdmUgaW50byBob3cgcXVpZXNjZW5jZSBpcyBoYW5kbGVkLCB3aGljaCBpcyBjcnVjaWFsIGZvciBhIHdob2xlIGhvc3Qgb2YgZHJpdmVycyDigJMgZXZlcnl0aGluZyBmcm9tIHZpcnRpb19ibGsgYW5kIFNDU0kgdG8gTlZNZSBhbmQgZXZlbiBNTUMuIEdpdmVuIHRoZSBicm9hZCBpbXBhY3QsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gaG9uZSBpbiBvbiB0aGUgY29yZSBmdW5jdGlvbnMgaW52b2x2ZWQuIFNwZWNpZmljYWxseSwgSSB3YXMgY29uc2lkZXJpbmc6XG5cbiogICBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YFxuKiAgIGBibGtfbXFfdW5xdWllc2NlX3F1ZXVlYFxuKiAgIGBibGtfbXFfcnVuX2h3X3F1ZXVlYFxuXG5NeSBmaXJzdCBpbmNsaW5hdGlvbiB3YXMgdG8gZXhhbWluZSBpZiBgYmxrX21xX3J1bl9od19xdWV1ZWAgd2FzIGEgcGFydGljdWxhcmx5IGhvdC1wYXRoIGZ1bmN0aW9uIGJlY2F1c2UgaXQgaXMgaGVhdmlseSB1c2VkIGJ5IGJsb2NrIGRldmljZXMuIEl0J3MgaW52b2tlZCBmcmVxdWVudGx5IHRvIG1hbmFnZSB0aGUgaGFyZHdhcmUgcXVldWVzLiBIb3dldmVyLCBhZnRlciBmdXJ0aGVyIHJldmlldywgSSByZWFsaXplZCB0aGF0IGZvY3VzaW5nIGV4Y2x1c2l2ZWx5IG9uIGBibGtfbXFfcnVuX2h3X3F1ZXVlYCBtaWdodCBsZWFkIHRvIGEgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9uLCBhcyBpdCdzIGNhbGxlZCBmb3IgcHJldHR5IG11Y2ggZXZlcnkgSS9PIG9wZXJhdGlvbi4gTm9ybWFsIGJsb2NrIEkvT3MgYXJlIGFscmVhZHkgYSBjb21tb24gY2FzZSBmb3IgdGhlIGZ1enplci5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGBibGtfbXFfcnVuX2h3X3F1ZXVlYCB0byBpbmNsdWRlIGBzbXBfbWIoKWAgYW5kIHJlbW92ZSBgc3Bpbl9sb2NrX2lycXNhdmVgLiBIb3dldmVyLCBJIHJlYWxpemVkIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIGFuZCBgYmxrX21xX3VucXVpZXNjZV9xdWV1ZWAgYXJlIHRoZSBtb3JlIHBlcnRpbmVudCBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIHRoaXMgcGF0Y2guIFdoaWxlIGxlc3MgZnJlcXVlbnRseSBjYWxsZWQsIHRoZXkgYXJlIGtleSB0byB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIHRoYXQgdGhpcyBwYXRjaCBtb2RpZmllcy4gUXVpZXNjZSBpcyBjYWxsZWQgd2hlbiBxdWllc2NpbmcgYSBxdWV1ZSBhbmQgdW5xdWllc2NlIHdoZW4gdW5xdWllc2NpbmcgYSBxdWV1ZS5cblxuQWN0dWFsbHksIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBibGtfcXVldWVfcXVpZXNjZWRgLCB3aGljaCBpcyBpbmxpbmUsIHNvIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGNvdmVyZWQgaWYgdGhlIGNvZGUgaXMgcmVhY2hlZC5cblxuSSB0b29rIGEgcXVpY2sgbG9vayBhdCBjb25maWd1cmF0aW9ucyB0byBzZWUgaWYgd2UgbmVlZGVkIGFueXRoaW5nIHNwZWNpZmljLiBUdXJucyBvdXQgd2Ugb25seSBuZWVkIGBDT05GSUdfQkxPQ0tgLCB3aGljaCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGFuZCB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzIHNpZ25pZmljYW50bHkuIFdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgZm9yY2luZyBjb25maWd1cmF0aW9ucy5cblxuTG9va2luZyBhdCBkcml2ZXJzLCBpdCBsb29rcyBsaWtlIGB2aXJ0aW9fYmxrYCwgYHNjc2lgLCBgbnZtZWAsIGFuZCBgdWJsa2AgdXRpbGl6ZSB0aGUgbmV3IHF1aWVzY2UgY29kZSBwcmV0dHkgaGVhdmlseSBkdXJpbmcgZnJlZXplL3Jlc3RvcmUsIGBzY3NpX3N0b3BfcXVldWVgLCBgc2NzaV9zdGFydF9xdWV1ZWAsIGFuZCBvdGhlciBvcGVyYXRpb25zLiBXZSBhbHJlYWR5IGhhdmUgbWFueSBibG9jayBkcml2ZXJzIGVuYWJsZWQgaW4gc3l6Ym90LCBzbyB3ZSBzaG91bGQgYmUgZ29vZC5cblxuU28sIGxldCdzIGNpcmNsZSBiYWNrIHRvIG15IGZvY3VzIHN5bWJvbHMuIEknbSBnb2luZyB0byBpbmNsdWRlIGBibGtfbXFfcXVpZXNjZV9xdWV1ZV9ub3dhaXRgIGFuZCBgYmxrX21xX3VucXVpZXNjZV9xdWV1ZWAuIFRoZXNlIGFyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdG91Y2hlZCBieSB0aGUgY2hhbmdlcywgYW5kIHdoaWxlIGBibGtfbXFfcnVuX2h3X3F1ZXVlYCBpcyBtb2RpZmllZCwgaXQncyBjYWxsZWQgZm9yIGV2ZXJ5IElPIG9wZXJhdGlvbi5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0YCBhbmQgYGJsa19tcV91bnF1aWVzY2VfcXVldWVgIGFyZSBleHBvcnRlZCB3aGljaCB0aGV5IGFyZSwgc28gdGhhdCdzIGdvb2QuXG5cbkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbHRlcmluZyB0aGUgc3luY2hyb25pemF0aW9uIGJldHdlZW4gcXVldWUgcXVpZXNjaW5nL3VucXVpZXNjaW5nIGFuZCBoYXJkd2FyZSBxdWV1ZSBydW5zLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIHZhcmlvdXMgYmxvY2sgZGV2aWNlIG9wZXJhdGlvbnMuIFRoaXMgY29kZSB3aWxsIG5lZWQgYSB0aG9yb3VnaCBmdXp6aW5nLlxuXG4qKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggcmVwbGFjZXMgc3BpbmxvY2stYmFzZWQgcXVldWUgcXVpZXNjZSB0cmFja2luZyB3aXRoIGFuIGF0b21pYyBjb3VudGVyIGFuZCBtZW1vcnkgYmFycmllcnMgaW4gdGhlIGNvcmUgYmxvY2sgbGF5ZXIgKGBibGstbXEuY2ApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHF1ZXVlIHF1aWVzY2luZy91bnF1aWVzY2luZyBhbmQgaGFyZHdhcmUgcXVldWUgcnVucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIGJsb2NrIGRldmljZSBvcGVyYXRpb25zIChlLmcuLCBkZXZpY2Ugc3VzcGVuZC9yZXN1bWUsIGVycm9yIGhhbmRsaW5nKS5cblxuKipXb3J0aEZ1enppbmc6KiogdHJ1ZVxuXG4qKkVuYWJsZUNvbmZpZ3M6KiogXFxbIF1cblxuKipGb2N1c1N5bWJvbHM6KiogXFxbXCJibGtcXF9tcVxcX3F1aWVzY2VcXF9xdWV1ZVxcX25vd2FpdFwiLCBcImJsa1xcX21xXFxfdW5xdWllc2NlXFxfcXVldWVcIl1cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4NjgsIk91dHB1dFRva2VucyI6MTMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIyOjUwOjE0Ljc3OTM0MDI1MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0XCIsXG4gICAgXCJibGtfbXFfdW5xdWllc2NlX3F1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgc3BpbmxvY2stYmFzZWQgcXVldWUgcXVpZXNjZSB0cmFja2luZyB3aXRoIGFuIGF0b21pYyBjb3VudGVyIGFuZCBtZW1vcnkgYmFycmllcnMgaW4gdGhlIGNvcmUgYmxvY2sgbGF5ZXIgKGJsay1tcS5jKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBxdWV1ZSBxdWllc2NpbmcvdW5xdWllc2NpbmcgYW5kIGhhcmR3YXJlIHF1ZXVlIHJ1bnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBibG9jayBkZXZpY2Ugb3BlcmF0aW9ucyAoZS5nLiwgZGV2aWNlIHN1c3BlbmQvcmVzdW1lLCBlcnJvciBoYW5kbGluZykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxrX21xX3F1aWVzY2VfcXVldWVfbm93YWl0XCIsXG4gICAgXCJibGtfbXFfdW5xdWllc2NlX3F1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgc3BpbmxvY2stYmFzZWQgcXVldWUgcXVpZXNjZSB0cmFja2luZyB3aXRoIGFuIGF0b21pYyBjb3VudGVyIGFuZCBtZW1vcnkgYmFycmllcnMgaW4gdGhlIGNvcmUgYmxvY2sgbGF5ZXIgKGJsay1tcS5jKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBxdWV1ZSBxdWllc2NpbmcvdW5xdWllc2NpbmcgYW5kIGhhcmR3YXJlIHF1ZXVlIHJ1bnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBibG9jayBkZXZpY2Ugb3BlcmF0aW9ucyAoZS5nLiwgZGV2aWNlIHN1c3BlbmQvcmVzdW1lLCBlcnJvciBoYW5kbGluZykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjtbn[1] Phase: Succeeded StartedAt: 2026-07-09 22:50:27 +0000 UTC FinishedAt: 2026-07-09 22:50:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-09 22:50:27 +0000 UTC FinishedAt: 2026-07-09 22:50:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2] Phase: Succeeded StartedAt: 2026-07-09 22:50:27 +0000 UTC FinishedAt: 2026-07-10 03:32:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-09 22:50:27 +0000 UTC FinishedAt: 2026-07-10 03:32:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-09 22:50:27 +0000 UTC FinishedAt: 2026-07-09 22:50:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-09 22:50:27 +0000 UTC FinishedAt: 2026-07-09 22:50:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-convert-artifact-687138572/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-09 22:50:47 +0000 UTC FinishedAt: 2026-07-09 23:26:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-09 22:50:47 +0000 UTC FinishedAt: 2026-07-09 23:26:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dcd02215-75b1-460a-8d91-f4caebd58cda,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-convert-artifact-687138572/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "4034bdfb-8831-46a9-aac0-3da61cd28fa5", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-build-action-1066642746/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-09 22:50:47 +0000 UTC FinishedAt: 2026-07-09 23:26:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dcd02215-75b1-460a-8d91-f4caebd58cda,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-convert-artifact-687138572/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "4034bdfb-8831-46a9-aac0-3da61cd28fa5", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-build-action-1066642746/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-09 23:26:13 +0000 UTC FinishedAt: 2026-07-09 23:26:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-09 23:26:13 +0000 UTC FinishedAt: 2026-07-09 23:26:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-09 23:26:13 +0000 UTC FinishedAt: 2026-07-09 23:26:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-09 23:26:13 +0000 UTC FinishedAt: 2026-07-09 23:26:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-convert-artifact-2440463435/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-09 23:26:23 +0000 UTC FinishedAt: 2026-07-09 23:28:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-09 23:26:23 +0000 UTC FinishedAt: 2026-07-09 23:28:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4034bdfb-8831-46a9-aac0-3da61cd28fa5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-build-action-1066642746/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-09 23:28:48 +0000 UTC FinishedAt: 2026-07-09 23:28:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-09 23:28:48 +0000 UTC FinishedAt: 2026-07-09 23:28:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-09 23:28:48 +0000 UTC FinishedAt: 2026-07-10 00:28:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-09 23:28:48 +0000 UTC FinishedAt: 2026-07-10 00:28:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dcd02215-75b1-460a-8d91-f4caebd58cda,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-convert-artifact-2440463435/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "74477fe0-790d-4865-ba6e-8979ae2b831c", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-build-action-1022666991/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-09 23:28:48 +0000 UTC FinishedAt: 2026-07-10 00:28:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dcd02215-75b1-460a-8d91-f4caebd58cda,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-convert-artifact-2440463435/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "74477fe0-790d-4865-ba6e-8979ae2b831c", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-build-action-1022666991/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-10 00:28:57 +0000 UTC FinishedAt: 2026-07-10 00:28:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-10 00:28:57 +0000 UTC FinishedAt: 2026-07-10 00:28:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-10 00:28:57 +0000 UTC FinishedAt: 2026-07-10 00:30:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-10 00:28:57 +0000 UTC FinishedAt: 2026-07-10 00:30:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*74477fe0-790d-4865-ba6e-8979ae2b831c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-build-action-1022666991/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-10 00:30:51 +0000 UTC FinishedAt: 2026-07-10 03:32:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-10 00:30:51 +0000 UTC FinishedAt: 2026-07-10 03:32:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*4034bdfb-8831-46a9-aac0-3da61cd28fa5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*74477fe0-790d-4865-ba6e-8979ae2b831c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-build-action-1066642746/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-build-action-1022666991/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-10 00:30:51 +0000 UTC FinishedAt: 2026-07-10 00:31:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-10 00:30:51 +0000 UTC FinishedAt: 2026-07-10 00:30:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-convert-artifact-1989351140/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-10 00:30:51 +0000 UTC FinishedAt: 2026-07-10 00:30:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-10 00:30:51 +0000 UTC FinishedAt: 2026-07-10 00:30:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-10 00:30:51 +0000 UTC FinishedAt: 2026-07-10 00:30:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-10 00:31:01 +0000 UTC FinishedAt: 2026-07-10 03:32:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjtbn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blk_mq_quiesce_queue_nowait","blk_mq_unquiesce_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b9810cd75b9fb56a3425d391cba3f608502bd474","config_name":"upstream-apparmor-kasan.config","series_id":"bac9bcc9-4413-4391-bcf8-2a61361a0928","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-10 00:31:01 +0000 UTC FinishedAt: 2026-07-10 03:32:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4034bdfb-8831-46a9-aac0-3da61cd28fa5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*74477fe0-790d-4865-ba6e-8979ae2b831c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-build-action-1066642746/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-build-action-1022666991/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxjtbn/series-workflowxjtbn-convert-artifact-1989351140/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}