Name: series-workflowt7wlc Phase: Succeeded StartedAt: 2026-08-27 08:42:41 +0000 UTC FinishedAt: 2026-08-27 13:23:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[0] Phase: Succeeded StartedAt: 2026-08-27 08:42:41 +0000 UTC FinishedAt: 2026-08-27 09:40:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[0].run-triage Phase: Succeeded StartedAt: 2026-08-27 08:42:41 +0000 UTC FinishedAt: 2026-08-27 09:40:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "ce6dcd0aed185432d02cafc82b738318af257ccd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "ce6dcd0aed185432d02cafc82b738318af257ccd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "f77e9c68-7d16-4a38-9550-e0437897671e" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_mem_alloc_init", "bpf_mem_alloc_percpu_init", "bpf_mem_alloc_percpu_unit_init", "bpf_mem_alloc_destroy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "5ac25989-0260-4506-a08a-25fa6e4957e7", "d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4", "f322b4d1-7f66-454a-80ff-6ed13eb274aa", "40ff44c7-989e-4e59-a57c-7d669c0abd76" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA5OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX21lbV9hbGxvY19pbml0JiMzNDssCiAgICAmIzM0O2JwZl9tZW1fYWxsb2NfcGVyY3B1X2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0JiMzNDssCiAgICAmIzM0O2JwZl9tZW1fYWxsb2NfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSByYXdfc3BpbmxvY2tfdCB0byBwcm90ZWN0IGNvbmN1cnJlbnQgYWNjZXNzZXMgdG8gdGhlIGB3YWl0aW5nX2Zvcl9ncF90dHJhY2VgIGxpbmtlZCBsaXN0IGluIHRoZSBCUEYgbWVtb3J5IGFsbG9jYXRvci4gSXQgcmVwbGFjZXMgYXRvbWljIGxvY2tsZXNzIGxpc3Qgb3BlcmF0aW9ucyAobGxpc3RfZGVsX2ZpcnN0LCBsbGlzdF9kZWxfYWxsLCBsbGlzdF9hZGQpIHdpdGggdGhlaXIgbm9uLWF0b21pYyBjb3VudGVycGFydHMgcHJvdGVjdGVkIGJ5IHRoZSBuZXcgc3BpbmxvY2suIFRoaXMgaXMgcHVyZWx5IGEgY29uY3VycmVuY3kgYW5kIHN5bmNocm9uaXphdGlvbiBmaXggdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYW5kIGRhdGEgcmFjZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiBsb2dpYyBvciBib3VuZHMgY2hlY2tpbmcuIEFueSBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIChzdWNoIGFzIGxpc3QgY29ycnVwdGlvbiBsZWFkaW5nIHRvIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBLQ1NBTi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBCUEYgbWVtb3J5IGFsbG9jYXRvciBieSBpbnRyb2R1Y2luZyBhIHJhdyBzcGlubG9jayB0byBwcm90ZWN0IHRoZSBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYCBsb2NrbGVzcyBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBCUEYgbWFwIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyYWYzMDU1ODc4YjZmODdmODMyYWRlOWRhOTlhMjNmMWYzYzhiMGM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMDk6Mzg6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9tZW1hbGxvYy5jIGIva2VybmVsL2JwZi9tZW1hbGxvYy5jXG5pbmRleCBlOTY2MmRiNzE5OGZlLi41ODI5NmU5MmE0ZmVkIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9tZW1hbGxvYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbkBAIC0xMTksNiAmIzQzOzExOSw3IEBAIHN0cnVjdCBicGZfbWVtX2NhY2hlIHtcbiBcdHN0cnVjdCBsbGlzdF9oZWFkIHdhaXRpbmdfZm9yX2dwX3R0cmFjZTtcbiBcdHN0cnVjdCByY3VfaGVhZCByY3VfdHRyYWNlO1xuIFx0YXRvbWljX3QgY2FsbF9yY3VfdHRyYWNlX2luX3Byb2dyZXNzO1xuJiM0MztcdHJhd19zcGlubG9ja190IGxvY2s7XG4gfTtcbiBcbiBzdHJ1Y3QgYnBmX21lbV9jYWNoZXMge1xuQEAgLTIwNyw2ICYjNDM7MjA4LDcgQEAgc3RhdGljIHZvaWQgYWRkX29ial90b19mcmVlX2xpc3Qoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHZvaWQgKm9iailcbiBzdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpXG4ge1xuIFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnID0gTlVMTCwgKm9sZF9tZW1jZztcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0Z2ZwX3QgZ2ZwO1xuIFx0dm9pZCAqb2JqO1xuIFx0aW50IGk7XG5AQCAtMjI4LDEyICYjNDM7MjMwLDE0IEBAIHN0YXRpYyB2b2lkIGFsbG9jX2J1bGsoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjbnQsIGludCBub2RlLCBib29sIGF0b21pYylcbiBcdGlmIChpIFx1MDAzZT0gY250KVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0Zm9yICg7IGkgXHUwMDNjIGNudDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0b2JqID0gbGxpc3RfZGVsX2ZpcnN0KFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbiYjNDM7XHRcdG9iaiA9IF9fbGxpc3RfZGVsX2ZpcnN0KFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbiBcdFx0aWYgKCFvYmopXG4gXHRcdFx0YnJlYWs7XG4gXHRcdGFkZF9vYmpfdG9fZnJlZV9saXN0KGMsIG9iaik7XG4gXHR9XG4mIzQzO1x0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRpZiAoaSBcdTAwM2U9IGNudClcbiBcdFx0cmV0dXJuO1xuIFxuQEAgLTI3OSw4ICYjNDM7MjgzLDE0IEBAIHN0YXRpYyBpbnQgZnJlZV9hbGwoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGUsIGJvb2wgcGVyXG4gc3RhdGljIHZvaWQgX19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4ge1xuIFx0c3RydWN0IGJwZl9tZW1fY2FjaGUgKmMgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IGJwZl9tZW1fY2FjaGUsIHJjdV90dHJhY2UpO1xuJiM0MztcdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcbi1cdGZyZWVfYWxsKGMsIGxsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpLCAhIWMtXHUwMDNlcGVyY3B1X3NpemUpO1xuJiM0MztcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRsbG5vZGUgPSBfX2xsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xuJiM0MztcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRmcmVlX2FsbChjLCBsbG5vZGUsICEhYy1cdTAwM2VwZXJjcHVfc2l6ZSk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmMtXHUwMDNlY2FsbF9yY3VfdHRyYWNlX2luX3Byb2dyZXNzLCAwKTtcbiB9XG4gXG5AQCAtMjk3LDYgJiM0MzszMDcsNyBAQCBzdGF0aWMgdm9pZCBlbnF1ZV90b19mcmVlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCB2b2lkICpvYmopXG4gc3RhdGljIHZvaWQgZG9fY2FsbF9yY3VfdHRyYWNlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxuIHtcbiBcdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGUsICp0O1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXG4gXHRpZiAoYXRvbWljX3hjaGcoXHUwMDI2Yy1cdTAwM2VjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3MsIDEpKSB7XG4gXHRcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoYy1cdTAwM2VkcmFpbmluZykpKSB7XG5AQCAtMzA3LDggJiM0MzszMTgsMTAgQEAgc3RhdGljIHZvaWQgZG9fY2FsbF9yY3VfdHRyYWNlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxuIFx0fVxuIFxuIFx0V0FSTl9PTl9PTkNFKCFsbGlzdF9lbXB0eShcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSkpO1xuJiM0MztcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcdGxsaXN0X2Zvcl9lYWNoX3NhZmUobGxub2RlLCB0LCBsbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNlZnJlZV9ieV9yY3VfdHRyYWNlKSlcbi1cdFx0bGxpc3RfYWRkKGxsbm9kZSwgXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xuJiM0MztcdFx0X19sbGlzdF9hZGQobGxub2RlLCBcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSk7XG4mIzQzO1x0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHRpZiAodW5saWtlbHkoUkVBRF9PTkNFKGMtXHUwMDNlZHJhaW5pbmcpKSkge1xuIFx0XHRfX2ZyZWVfcmN1KFx1MDAyNmMtXHUwMDNlcmN1X3R0cmFjZSk7XG5AQCAtNTM1LDYgJiM0Mzs1NDgsNyBAQCBpbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KVxuIFx0XHRcdGMtXHUwMDNlb2JqY2cgPSBvYmpjZztcbiBcdFx0XHRjLVx1MDAzZXBlcmNwdV9zaXplID0gcGVyY3B1X3NpemU7XG4gXHRcdFx0Yy1cdTAwM2V0Z3QgPSBjO1xuJiM0MztcdFx0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRpbml0X3JlZmlsbF93b3JrKGMpO1xuIFx0XHRcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XG4gXHRcdH1cbkBAIC01NTcsNyAmIzQzOzU3MSw3IEBAIGludCBicGZfbWVtX2FsbG9jX2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSwgYm9vbCBwZXJjcHUpXG4gXHRcdFx0Yy1cdTAwM2VvYmpjZyA9IG9iamNnO1xuIFx0XHRcdGMtXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcbiBcdFx0XHRjLVx1MDAzZXRndCA9IGM7XG4tXG4mIzQzO1x0XHRcdHJhd19zcGluX2xvY2tfaW5pdChcdTAwMjZjLVx1MDAzZWxvY2spO1xuIFx0XHRcdGluaXRfcmVmaWxsX3dvcmsoYyk7XG4gXHRcdFx0cHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTtcbiBcdFx0fVxuQEAgLTYwOSw3ICYjNDM7NjIzLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKVxuIFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdGMtXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcbiBcdFx0Yy1cdTAwM2V0Z3QgPSBjO1xuLVxuJiM0MztcdFx0cmF3X3NwaW5fbG9ja19pbml0KFx1MDAyNmMtXHUwMDNlbG9jayk7XG4gXHRcdGluaXRfcmVmaWxsX3dvcmsoYyk7XG4gXHRcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XG4gXHR9XG5AQCAtNjIwLDYgJiM0Mzs2MzQsOCBAQCBpbnQgYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUpXG4gc3RhdGljIHZvaWQgZHJhaW5fbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxuIHtcbiBcdGJvb2wgcGVyY3B1ID0gISFjLVx1MDAzZXBlcmNwdV9zaXplO1xuJiM0MztcdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcbiBcdC8qIE5vIHByb2dzIGFyZSB1c2luZyB0aGlzIGJwZl9tZW1fY2FjaGUsIGJ1dCBodGFiX21hcF9mcmVlKCkgY2FsbGVkXG4gXHQgKiBicGZfbWVtX2NhY2hlX2ZyZWUoKSBmb3IgYWxsIHJlbWFpbmluZyBlbGVtZW50cyBhbmQgdGhleSBjYW4gYmUgaW5cbkBAIC02MjksNyAmIzQzOzY0NSwxMCBAQCBzdGF0aWMgdm9pZCBkcmFpbl9tZW1fY2FjaGUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXG4gXHQgKiBvbiB0aGVzZSBsaXN0cywgc28gaXQgaXMgc2FmZSB0byB1c2UgX19sbGlzdF9kZWxfYWxsKCkuXG4gXHQgKi9cbiBcdGZyZWVfYWxsKGMsIGxsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2VmcmVlX2J5X3JjdV90dHJhY2UpLCBwZXJjcHUpO1xuLVx0ZnJlZV9hbGwoYywgbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSksIHBlcmNwdSk7XG4mIzQzO1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdGxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSk7XG4mIzQzO1x0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0ZnJlZV9hbGwoYywgbGxub2RlLCBwZXJjcHUpO1xuIFx0ZnJlZV9hbGwoYywgX19sbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNlZnJlZV9sbGlzdCksIHBlcmNwdSk7XG4gXHRmcmVlX2FsbChjLCBfX2xsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2VmcmVlX2xsaXN0X2V4dHJhKSwgcGVyY3B1KTtcbiBcdGZyZWVfYWxsKGMsIF9fbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZWZyZWVfYnlfcmN1KSwgcGVyY3B1KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfbWVtX2FsbG9jX2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19wZXJjcHVfaW5pdCYjMzQ7LAogICAgJiMzNDticGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19kZXN0cm95JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGJ5IGludHJvZHVjaW5nIGEgcmF3IHNwaW5sb2NrIHRvIHByb3RlY3QgdGhlIGB3YWl0aW5nX2Zvcl9ncF90dHJhY2VgIGxvY2tsZXNzIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdmlhIEJQRiBtYXAgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJhZjMwNTU4NzhiNmY4N2Y4MzJhZGU5ZGE5OWEyM2YxZjNjOGIwYzYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyNyAwOTozODo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvbWVtYWxsb2MuYyBiL2tlcm5lbC9icGYvbWVtYWxsb2MuYwppbmRleCBlOTY2MmRiNzE5OGZlLi41ODI5NmU5MmE0ZmVkIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL21lbWFsbG9jLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9tZW1hbGxvYy5jCkBAIC0xMTksNiAmIzQzOzExOSw3IEBAIHN0cnVjdCBicGZfbWVtX2NhY2hlIHsKIAlzdHJ1Y3QgbGxpc3RfaGVhZCB3YWl0aW5nX2Zvcl9ncF90dHJhY2U7CiAJc3RydWN0IHJjdV9oZWFkIHJjdV90dHJhY2U7CiAJYXRvbWljX3QgY2FsbF9yY3VfdHRyYWNlX2luX3Byb2dyZXNzOwomIzQzOwlyYXdfc3BpbmxvY2tfdCBsb2NrOwogfTsKIAogc3RydWN0IGJwZl9tZW1fY2FjaGVzIHsKQEAgLTIwNyw2ICYjNDM7MjA4LDcgQEAgc3RhdGljIHZvaWQgYWRkX29ial90b19mcmVlX2xpc3Qoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHZvaWQgKm9iaikKIHN0YXRpYyB2b2lkIGFsbG9jX2J1bGsoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjbnQsIGludCBub2RlLCBib29sIGF0b21pYykKIHsKIAlzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBOVUxMLCAqb2xkX21lbWNnOwomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWdmcF90IGdmcDsKIAl2b2lkICpvYmo7CiAJaW50IGk7CkBAIC0yMjgsMTIgJiM0MzsyMzAsMTQgQEAgc3RhdGljIHZvaWQgYWxsb2NfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNudCwgaW50IG5vZGUsIGJvb2wgYXRvbWljKQogCWlmIChpICZndDs9IGNudCkKIAkJcmV0dXJuOwogCiYjNDM7CXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2MtJmd0O2xvY2ssIGZsYWdzKTsKIAlmb3IgKDsgaSAmbHQ7IGNudDsgaSYjNDM7JiM0MzspIHsKLQkJb2JqID0gbGxpc3RfZGVsX2ZpcnN0KCZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKTsKJiM0MzsJCW9iaiA9IF9fbGxpc3RfZGVsX2ZpcnN0KCZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKTsKIAkJaWYgKCFvYmopCiAJCQlicmVhazsKIAkJYWRkX29ial90b19mcmVlX2xpc3QoYywgb2JqKTsKIAl9CiYjNDM7CXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7Yy0mZ3Q7bG9jaywgZmxhZ3MpOwogCWlmIChpICZndDs9IGNudCkKIAkJcmV0dXJuOwogCkBAIC0yNzksOCAmIzQzOzI4MywxNCBAQCBzdGF0aWMgaW50IGZyZWVfYWxsKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlLCBib29sIHBlcgogc3RhdGljIHZvaWQgX19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCiB7CiAJc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IGJwZl9tZW1fY2FjaGUsIHJjdV90dHJhY2UpOwomIzQzOwlzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlOwomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JZnJlZV9hbGwoYywgbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O3dhaXRpbmdfZm9yX2dwX3R0cmFjZSksICEhYy0mZ3Q7cGVyY3B1X3NpemUpOwomIzQzOwlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CWxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O3dhaXRpbmdfZm9yX2dwX3R0cmFjZSk7CiYjNDM7CXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7Yy0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwomIzQzOwlmcmVlX2FsbChjLCBsbG5vZGUsICEhYy0mZ3Q7cGVyY3B1X3NpemUpOwogCWF0b21pY19zZXQoJmFtcDtjLSZndDtjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3MsIDApOwogfQogCkBAIC0yOTcsNiAmIzQzOzMwNyw3IEBAIHN0YXRpYyB2b2lkIGVucXVlX3RvX2ZyZWUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHZvaWQgKm9iaikKIHN0YXRpYyB2b2lkIGRvX2NhbGxfcmN1X3R0cmFjZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYykKIHsKIAlzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlLCAqdDsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWlmIChhdG9taWNfeGNoZygmYW1wO2MtJmd0O2NhbGxfcmN1X3R0cmFjZV9pbl9wcm9ncmVzcywgMSkpIHsKIAkJaWYgKHVubGlrZWx5KFJFQURfT05DRShjLSZndDtkcmFpbmluZykpKSB7CkBAIC0zMDcsOCAmIzQzOzMxOCwxMCBAQCBzdGF0aWMgdm9pZCBkb19jYWxsX3JjdV90dHJhY2Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpCiAJfQogCiAJV0FSTl9PTl9PTkNFKCFsbGlzdF9lbXB0eSgmYW1wO2MtJmd0O3dhaXRpbmdfZm9yX2dwX3R0cmFjZSkpOwomIzQzOwlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjLSZndDtsb2NrLCBmbGFncyk7CiAJbGxpc3RfZm9yX2VhY2hfc2FmZShsbG5vZGUsIHQsIGxsaXN0X2RlbF9hbGwoJmFtcDtjLSZndDtmcmVlX2J5X3JjdV90dHJhY2UpKQotCQlsbGlzdF9hZGQobGxub2RlLCAmYW1wO2MtJmd0O3dhaXRpbmdfZm9yX2dwX3R0cmFjZSk7CiYjNDM7CQlfX2xsaXN0X2FkZChsbG5vZGUsICZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKTsKJiM0MzsJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtjLSZndDtsb2NrLCBmbGFncyk7CiAKIAlpZiAodW5saWtlbHkoUkVBRF9PTkNFKGMtJmd0O2RyYWluaW5nKSkpIHsKIAkJX19mcmVlX3JjdSgmYW1wO2MtJmd0O3JjdV90dHJhY2UpOwpAQCAtNTM1LDYgJiM0Mzs1NDgsNyBAQCBpbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KQogCQkJYy0mZ3Q7b2JqY2cgPSBvYmpjZzsKIAkJCWMtJmd0O3BlcmNwdV9zaXplID0gcGVyY3B1X3NpemU7CiAJCQljLSZndDt0Z3QgPSBjOwomIzQzOwkJCXJhd19zcGluX2xvY2tfaW5pdCgmYW1wO2MtJmd0O2xvY2spOwogCQkJaW5pdF9yZWZpbGxfd29yayhjKTsKIAkJCXByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7CiAJCX0KQEAgLTU1Nyw3ICYjNDM7NTcxLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSkKIAkJCWMtJmd0O29iamNnID0gb2JqY2c7CiAJCQljLSZndDtwZXJjcHVfc2l6ZSA9IHBlcmNwdV9zaXplOwogCQkJYy0mZ3Q7dGd0ID0gYzsKLQomIzQzOwkJCXJhd19zcGluX2xvY2tfaW5pdCgmYW1wO2MtJmd0O2xvY2spOwogCQkJaW5pdF9yZWZpbGxfd29yayhjKTsKIAkJCXByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7CiAJCX0KQEAgLTYwOSw3ICYjNDM7NjIzLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKQogCQljLSZndDtvYmpjZyA9IG9iamNnOwogCQljLSZndDtwZXJjcHVfc2l6ZSA9IHBlcmNwdV9zaXplOwogCQljLSZndDt0Z3QgPSBjOwotCiYjNDM7CQlyYXdfc3Bpbl9sb2NrX2luaXQoJmFtcDtjLSZndDtsb2NrKTsKIAkJaW5pdF9yZWZpbGxfd29yayhjKTsKIAkJcHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTsKIAl9CkBAIC02MjAsNiAmIzQzOzYzNCw4IEBAIGludCBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSkKIHN0YXRpYyB2b2lkIGRyYWluX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYykKIHsKIAlib29sIHBlcmNwdSA9ICEhYy0mZ3Q7cGVyY3B1X3NpemU7CiYjNDM7CXN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAkvKiBObyBwcm9ncyBhcmUgdXNpbmcgdGhpcyBicGZfbWVtX2NhY2hlLCBidXQgaHRhYl9tYXBfZnJlZSgpIGNhbGxlZAogCSAqIGJwZl9tZW1fY2FjaGVfZnJlZSgpIGZvciBhbGwgcmVtYWluaW5nIGVsZW1lbnRzIGFuZCB0aGV5IGNhbiBiZSBpbgpAQCAtNjI5LDcgJiM0Mzs2NDUsMTAgQEAgc3RhdGljIHZvaWQgZHJhaW5fbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKQogCSAqIG9uIHRoZXNlIGxpc3RzLCBzbyBpdCBpcyBzYWZlIHRvIHVzZSBfX2xsaXN0X2RlbF9hbGwoKS4KIAkgKi8KIAlmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7ZnJlZV9ieV9yY3VfdHRyYWNlKSwgcGVyY3B1KTsKLQlmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKSwgcGVyY3B1KTsKJiM0MzsJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZhbXA7Yy0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwlsbG5vZGUgPSBfX2xsaXN0X2RlbF9hbGwoJmFtcDtjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2UpOwomIzQzOwlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2MtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJZnJlZV9hbGwoYywgbGxub2RlLCBwZXJjcHUpOwogCWZyZWVfYWxsKGMsIF9fbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O2ZyZWVfbGxpc3QpLCBwZXJjcHUpOwogCWZyZWVfYWxsKGMsIF9fbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O2ZyZWVfbGxpc3RfZXh0cmEpLCBwZXJjcHUpOwogCWZyZWVfYWxsKGMsIF9fbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O2ZyZWVfYnlfcmN1KSwgcGVyY3B1KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxNQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgTWVtb3J5IEFsbG9jYXRvciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIG1ha2luZyBhIHNpZ25pZmljYW50IGNoYW5nZSB0byBga2VybmVsL2JwZi9tZW1hbGxvYy5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgYHJhd19zcGlubG9ja190IGxvY2tgIHdpdGhpbiB0aGUgYHN0cnVjdCBicGZfbWVtX2NhY2hlYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgaXQmIzM5O3MgYSBkaXJlY3QgYXR0ZW1wdCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIGBjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2VgLiBUaGV5JiMzOTt2ZSBzd2FwcGVkIG91dCB0aGUgYXRvbWljIGxpbmtlZCBsaXN0IG9wZXJhdGlvbnMgKGBsbGlzdF9kZWxfZmlyc3RgLCBgbGxpc3RfZGVsX2FsbGAsIGBsbGlzdF9hZGRgKSBmb3IgdGhlaXIgbm9uLWF0b21pYyBjb3VudGVycGFydHMgKGBfX2xsaXN0X2RlbF9maXJzdGAsIGBfX2xsaXN0X2RlbF9hbGxgLCBgX19sbGlzdF9hZGRgKSB1bmRlciB0aGUgcHJvdGVjdGlvbiBvZiB0aGlzIG5ldyBsb2NrLiBUaGlzIGlzIGEgc29saWQgYXBwcm9hY2ggdG8gcHJldmVudCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9uIGB3YWl0aW5nX2Zvcl9ncF90dHJhY2VgLCBhbmQgaXQgaXMgc2lnbmlmaWNhbnQsIGdpdmVuIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGlzIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGNvZGUuCgpUaGUgcXVlc3Rpb24gbm93IGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB3aXRob3V0IGEgZG91YnQuIEFueSBmdW5kYW1lbnRhbCBtb2RpZmljYXRpb24gdG8gbWVtb3J5IGFsbG9jYXRpb24gY29kZSBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUga2V5IHRhcmdldHM/IEkmIzM5O2QgaW5pdGlhbGx5IHplcm8gaW4gb24gYGFsbG9jX2J1bGtgLCBgX19mcmVlX3JjdWAsIGBkb19jYWxsX3JjdV90dHJhY2VgLCBhbmQgYGRyYWluX21lbV9jYWNoZWAuIEhvd2V2ZXIsIGEgcXVpY2sgY2hlY2sgcmVtaW5kcyBtZSB0aGF0IHRob3NlIGFyZSBhbGwgZGVjbGFyZWQgYHN0YXRpY2AuIFNvLCBsZXQmIzM5O3MgdHJhY2UgdGhlaXIgY2FsbGVycyB0byBmaW5kIHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgYnBmX21lbV9hbGxvY19pbml0YCwgYGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdGAsIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgLCBgYnBmX21lbV9jYWNoZV9hbGxvY2AsIGBicGZfbWVtX2NhY2hlX2ZyZWVgLCBhbmQgYGJwZl9tZW1fY2FjaGVfcmF3X2ZyZWVgIHRvIGZpbmQgYW55IGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBrZXJuZWwvYnBmL21lbWFsbG9jLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oaW50fHZvaWR8c3RydWN0KS4qYnBmX21lbV8uKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvbWVtYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL21lbWFsbG9jLmM9NDk0PXN0YXRpYyB2b2lkIHByZWZpbGxfbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY3B1KVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTQtICovXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTE1OmludCBicGZfbWVtX2FsbG9jX2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSwgYm9vbCBwZXJjcHUpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNTE2LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNTgzLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjU4NDppbnQgYnBmX21lbV9hbGxvY19wZXJjcHVfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHN0cnVjdCBvYmpfY2dyb3VwICpvYmpjZylcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01ODUte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01OTctXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTk4OmludCBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01OTkte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYz03MzA9c3RhdGljIHZvaWQgZGVzdHJveV9tZW1fYWxsb2Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgcmN1X2luX3Byb2dyZXNzKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03NTQtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NzU1OnZvaWQgYnBmX21lbV9hbGxvY19kZXN0cm95KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03NTYte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYz04Nzg9c3RhdGljIHZvaWQgbm90cmFjZSB1bml0X2ZyZWVfcmN1KHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCB2b2lkICpwdHIpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTkwMS0gKi9cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5MDI6dm9pZCBub3RyYWNlICpicGZfbWVtX2FsbG9jKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc2l6ZV90IHNpemUpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTAzLXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTE5LVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjkyMDp2b2lkIG5vdHJhY2UgYnBmX21lbV9mcmVlKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgdm9pZCAqcHRyKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTkyMS17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTkzNS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5MzY6dm9pZCBub3RyYWNlIGJwZl9tZW1fZnJlZV9yY3Uoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTM3LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTUxLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk1Mjp2b2lkIG5vdHJhY2UgKmJwZl9tZW1fY2FjaGVfYWxsb2Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk1My17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk1OS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5NjA6dm9pZCBub3RyYWNlIGJwZl9tZW1fY2FjaGVfZnJlZShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKnB0cilcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NjEte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NjctXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTY4OnZvaWQgbm90cmFjZSBicGZfbWVtX2NhY2hlX2ZyZWVfcmN1KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgdm9pZCAqcHRyKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk2OS17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk4NS0gKi9cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5ODY6dm9pZCBicGZfbWVtX2NhY2hlX3Jhd19mcmVlKHZvaWQgKnB0cilcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05ODcte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05OTctICovXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTk4OnZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvY19mbGFncyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGdmcF90IGZsYWdzKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk5OS17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTEwMjAtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MTAyMTppbnQgYnBmX21lbV9hbGxvY19jaGVja19zaXplKGJvb2wgcGVyY3B1LCBzaXplX3Qgc2l6ZSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xMDIyLXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMTAzMC1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoxMDMxOnZvaWQgYnBmX21lbV9hbGxvY19zZXRfZHRvcihzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKCpkdG9yKSh2b2lkICpvYmosIHZvaWQgKmN0eCksXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMTAzMi1cdFx0XHQgICAgdm9pZCAoKmR0b3JfY3R4X2ZyZWUpKHZvaWQgKmN0eCksIHZvaWQgKmN0eClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzEzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIE1lbW9yeSBNYW5hZ2VtZW50IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gemVyb2VzIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGl0JiMzOTtzIHRvdWNoaW5nOiBgYWxsb2NfYnVsa2AsIGBfX2ZyZWVfcmN1YCwgYGRvX2NhbGxfcmN1X3R0cmFjZWAsIGBicGZfbWVtX2FsbG9jX2luaXRgLCBgYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0YCwgYW5kIGBkcmFpbl9tZW1fY2FjaGVgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4gUmlnaHQgYXdheSwgSSBzZWUgYGFsbG9jX2J1bGtgLCBhbmQgdGhhdCByaW5ncyBhbGFybSBiZWxscyDigJMgc3BlY2lmaWNhbGx5IGJlY2F1c2Ugb2YgaXRzIHJlbGF0aW9uc2hpcCB0byBgYnBmX21lbV9jYWNoZV9hbGxvY2AuIEl0IHNlZW1zIGxpa2UgYGFsbG9jX2J1bGtgIGlzIHVzZWQgd2hlbiB0aGUgbWVtb3J5IGNhY2hlIGlzIGVtcHR5LiBNYWtlcyBzZW5zZTsgeW91IG5lZWQgdG8gYnVsay1hbGxvY2F0ZSB3aGVuIHlvdSBoYXZlIHRvIHJlZmlsbCB0aGUgY2FjaGUuCgpOb3csIGBfX2ZyZWVfcmN1YCBqdW1wcyBvdXQgYXMgYW4gUkNVIGNhbGxiYWNrLiBPZiBjb3Vyc2UuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQsIHNvIFJDVSBtYWtlcyBwZXJmZWN0IHNlbnNlIGZvciBzYWZlIGZyZWVpbmcuIEFuZCB0aGF0IHB1bGxzIG15IGZvY3VzIHRvIGBkb19jYWxsX3JjdV90dHJhY2VgIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGBicGZfbWVtX2NhY2hlX2ZyZWVfcmN1YC4gU28sIGBkb19jYWxsX3JjdV90dHJhY2VgIGlzIGxpa2VseSBjYWxsZWQgYnkgc29tZXRoaW5nIHJlbGF0ZWQgdG8gZnJlZWluZyBjYWNoZSBpdGVtcywgbGlrZWx5IGluc2lkZSBvZiBhbiBSQ1UgY2FsbGJhY2suIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBleGFjdCBjYWxsIHBhdGhzLCBidXQgdGhhdCBzZWVtcyB0aGUgbW9zdCBsaWtlbHkgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9fY2FsbF9yY3VfdHRyYWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9tZW1hbGxvYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvbWVtYWxsb2MuYz0yOTc9c3RhdGljIHZvaWQgZW5xdWVfdG9fZnJlZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0zMDYtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MzA3OnN0YXRpYyB2b2lkIGRvX2NhbGxfcmN1X3R0cmFjZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0zMDgte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYz0zMzk9c3RhdGljIHZvaWQgZnJlZV9idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0zNjMtXHRcdGVucXVlX3RvX2ZyZWUodGd0LCBsbG5vZGUpO1xua2VybmVsL2JwZi9tZW1hbGxvYy5jOjM2NDpcdGRvX2NhbGxfcmN1X3R0cmFjZSh0Z3QpO1xua2VybmVsL2JwZi9tZW1hbGxvYy5jLTM2NS19XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTM2Nz1zdGF0aWMgdm9pZCBfX2ZyZWVfYnlfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMzgyLVx0LyogT2JqZWN0cyB3ZW50IHRocm91Z2ggcmVndWxhciBSQ1UgR1AuIFNlbmQgdGhlbSB0byBSQ1UgdGFza3MgdHJhY2UgKi9cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzozODM6XHRkb19jYWxsX3JjdV90dHJhY2UodGd0KTtcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0zODQtb3V0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NjQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTWVudGFsIFdhbGsgVGhyb3VnaCB0aGUgQlBGIE1lbW9yeSBNYW5hZ2VtZW50IENvZGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgZG9fY2FsbF9yY3VfdHRyYWNlYCBpcyBjYWxsZWQgZnJvbSB0d28ga2V5IGZ1bmN0aW9ucywgYGZyZWVfYnVsa2AgYW5kIGBfX2ZyZWVfYnlfcmN1YC4gYGZyZWVfYnVsa2AgaXMgdGhlbiB0cmlnZ2VyZWQgZWl0aGVyIHRocm91Z2ggYGJwZl9tZW1fY2FjaGVfZnJlZWAgb3IgYGJwZl9tZW1fZnJlZWAsIHNwZWNpZmljYWxseSB3aGVuIHRoZSBjYWNoZSByZWFjaGVzIGNhcGFjaXR5LiBJIG5lZWQgdG8ga2VlcCB0aGF0IGNhbGwgc3RhY2sgaW4gbWluZC4gVGhlIGluaXRpYWxpemF0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiB0aGlzIG1lbW9yeSBtYW5hZ2VtZW50IHN5c3RlbSBpcyBhbGwgbWFuYWdlZCB0aHJvdWdoIGBicGZfbWVtX2FsbG9jX2luaXRgLCBgYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0YCwgYW5kIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgLgoKVGhlIHJlYWxseSBjb3JlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlIHRoZXNlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucywgdGhlc2UgYXJlOgoqICAgYGJwZl9tZW1fYWxsb2NgCiogICBgYnBmX21lbV9mcmVlYAoqICAgYGJwZl9tZW1fZnJlZV9yY3VgCiogICBgYnBmX21lbV9jYWNoZV9hbGxvY2AKKiAgIGBicGZfbWVtX2NhY2hlX2ZyZWVgCiogICBgYnBmX21lbV9jYWNoZV9mcmVlX3JjdWAKKiAgIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgCgpOb3cgSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseS4gSXQgc2VlbXMgbGlrZSB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3ImIzM5O3MgYXZhaWxhYmlsaXR5IGlzIGNvbnRyb2xsZWQgYnkgdGhlIGBDT05GSUdfQlBGX1NZU0NBTExgIGNvbmZpZyBvcHRpb24uIEdvb2QgdG8ga25vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjE4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCByZWxhdGVzIHRvIHRoZSBrZXJuZWwgY29kZToKCioqQ2hlY2tpbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gb2YgYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AqKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZSBga2VybmVsL2JwZi9tZW1hbGxvYy5jYCBmaWxlIGluIHRoZSBrZXJuZWwgaXMgY29tcGlsZWQgY29uZGl0aW9uYWxseS4gSSBrbm93IHRoaXMgZmlsZSBpcyBjcml0aWNhbCBmb3IgQlBGIG1lbW9yeSBhbGxvY2F0aW9uLCBhbmQgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0cyBhdmFpbGFiaWxpdHkgbWlnaHQgYWZmZWN0IGEgZ2l2ZW4gc3lzdGVtIGNvbmZpZ3VyYXRpb24gb3IgcGVyZm9ybWFuY2UgcHJvZmlsZS4gSSYjMzk7bSB0aGlua2luZywgaXMgaXQgb25seSBpbmNsdWRlZCB3aGVuIGNlcnRhaW4gZmVhdHVyZXMgb3IgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQ/IElmIHNvLCB3aGljaCBvbmVzPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBncmVwcGluZyB0aGUga2VybmVsIHNvdXJjZSBmb3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIHJlbGF0ZWQgdG8gdGhpcyBzcGVjaWZpYyBmaWxlLCBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBgI2lmZGVmYCwgYCNpZmAsIGAjaWZuZGVmYCwgYW5kIGAjZW5kaWZgLiBJJiMzOTtsbCB3YW50IHRvIHF1aWNrbHkgc2VlIGlmIGl0JiMzOTtzIHdyYXBwZWQgaW4gYW55IHN1Y2ggYmxvY2tzIHRvIHRlbGwgbWUgd2hldGhlciBpdHMgaW5jbHVzaW9uIGlzIGRlcGVuZGVudCBvbiBwYXJ0aWN1bGFyIGJ1aWxkIGZsYWdzIG9yIGtlcm5lbCBtb2R1bGVzIGJlaW5nIGVuYWJsZWQuIFRoaXMgdW5kZXJzdGFuZGluZyBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyBmbGV4aWJsZSBhIHN5c3RlbSB3aWxsIGJlIGluIGl0cyB1c2FnZSBvZiBCUEYgbWVtb3J5IGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVtYWxsb2NcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gdHJhbXBvbGluZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE5LWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1ODUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgVGhpcyBCUEYgTWVtb3J5IEFsbG9jYXRvciBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBjZW50ZXJzIGFyb3VuZCBgQlBGX1NZU0NBTExgIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtLiBUaGlzIGZpeCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiB3aXRoaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGJ5IGludHJvZHVjaW5nIGEgcmF3IHNwaW5sb2NrIHRvIHNhZmVndWFyZCBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYC4gTXkgZ3V0IHNheXMgdGhpcyBpcyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeSwgc28gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgcmlnaHQgYXBwcm9hY2guCgpGaXJzdCwgSSBuZWVkIHRvIGNob29zZSBteSBmb2N1cyBzeW1ib2xzLiBNeSBpbml0aWFsIGxpc3QgaW5jbHVkZXMgdGhlIGNvcmUgYWxsb2NhdG9yIGFuZCBmcmVlIGZ1bmN0aW9uczogYGJwZl9tZW1fYWxsb2NgLCBgYnBmX21lbV9mcmVlYCwgYGJwZl9tZW1fZnJlZV9yY3VgLCBgYnBmX21lbV9jYWNoZV9hbGxvY2AsIGBicGZfbWVtX2NhY2hlX2ZyZWVgLCBgYnBmX21lbV9jYWNoZV9mcmVlX3JjdWAsIGFuZCBgYnBmX21lbV9hbGxvY19kZXN0cm95YC4KCldhaXQgYSBtaW51dGUsIGBicGZfbWVtX2FsbG9jYCBhbmQgYGJwZl9tZW1fZnJlZWAgYXJlICpoZWF2aWx5KiBpbnZvbHZlZCBpbiBCUEYgbWFwcy4gSSBuZWVkIHRvIGJlIGNhcmVmdWwgaGVyZS4gSSByZW1lbWJlciB0aGUgZ29hbCBpcyB0byBhdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4gTXkgY29uY2VybiBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBtaWdodCBiZSBob3QgcGF0aHMgZm9yIEJQRiBwcm9ncmFtcywgYnV0IHRoZXkgYXJlIGFsc28gdGhlIG1haW4gZW50cnkgcG9pbnRzIGZvciB0aGUgbW9kaWZpZWQgY29kZS4gSSYjMzk7bSBnb2luZyB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLCBsb29raW5nIGZvciBzb21lIGZ1bmN0aW9ucyB0aGF0IGFyZSBkZWZpbml0ZWx5IG5vdCBob3QgcGF0aHMuCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLiBUaGVyZSYjMzk7cyBgYnBmX21lbV9hbGxvY19pbml0YCwgYGJwZl9tZW1fYWxsb2NfZGVzdHJveWAsIGBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0YCwgYW5kIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgLiBBaCwgdGhlc2UgYXJlIGRlZmluaXRlbHkgY2FsbGVkIHdoZW4gYSBCUEYgbWFwIGlzIGNyZWF0ZWQgb3IgZGVzdHJveWVkLCBub3QgZHVyaW5nIHRoZSBmcmVxdWVudCBleGVjdXRpb24gb2YgYSBCUEYgcHJvZ3JhbS4gVGhvc2UgYXJlIHBlcmZlY3QuIEJ1dCBsZXQgbWUgcXVpY2tseSBjaGVjayB3aGVyZSBgYnBmX21lbV9hbGxvY19pbml0YCBpcyBjYWxsZWQsIGp1c3QgdG8gYmUgc3VyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfbWVtX2FsbG9jX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2NvcmUuYz0zNDM2PXN0YXRpYyBpbnQgX19pbml0IGJwZl9nbG9iYWxfbWFfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTM0MzktXG5rZXJuZWwvYnBmL2NvcmUuYzozNDQwOlx0cmV0ID0gYnBmX21lbV9hbGxvY19pbml0KFx1MDAyNmJwZl9nbG9iYWxfbWEsIDAsIGZhbHNlKTtcbmtlcm5lbC9icGYvY29yZS5jLTM0NDEtXHRicGZfZ2xvYmFsX21hX3NldCA9ICFyZXQ7XG4tLVxua2VybmVsL2JwZi9jcHVtYXNrLmM9NTE1PXN0YXRpYyBpbnQgX19pbml0IGNwdW1hc2tfa2Z1bmNfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9icGYvY3B1bWFzay5jLTUyNC1cbmtlcm5lbC9icGYvY3B1bWFzay5jOjUyNTpcdHJldCA9IGJwZl9tZW1fYWxsb2NfaW5pdChcdTAwMjZicGZfY3B1bWFza19tYSwgc2l6ZW9mKHN0cnVjdCBicGZfY3B1bWFzayksIGZhbHNlKTtcbmtlcm5lbC9icGYvY3B1bWFzay5jLTUyNi1cdHJldCA9IHJldCA/OiByZWdpc3Rlcl9idGZfa2Z1bmNfaWRfc2V0KEJQRl9QUk9HX1RZUEVfVFJBQ0lORywgXHUwMDI2Y3B1bWFza19rZnVuY19zZXQpO1xuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTU0NT1zdGF0aWMgc3RydWN0IGJwZl9tYXAgKmh0YWJfbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTY0OC1cdH0gZWxzZSB7XG5rZXJuZWwvYnBmL2hhc2h0YWIuYzo2NDk6XHRcdGVyciA9IGJwZl9tZW1fYWxsb2NfaW5pdChcdTAwMjZodGFiLVx1MDAzZW1hLCBodGFiLVx1MDAzZWVsZW1fc2l6ZSwgZmFsc2UpO1xua2VybmVsL2JwZi9oYXNodGFiLmMtNjUwLVx0XHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTY1Mi1cdFx0aWYgKHBlcmNwdSkge1xua2VybmVsL2JwZi9oYXNodGFiLmM6NjUzOlx0XHRcdGVyciA9IGJwZl9tZW1fYWxsb2NfaW5pdChcdTAwMjZodGFiLVx1MDAzZXBjcHVfbWEsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy02NTQtXHRcdFx0XHRcdFx0IHJvdW5kX3VwKGh0YWItXHUwMDNlbWFwLnZhbHVlX3NpemUsIDgpLCB0cnVlKTtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNzk1PXN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqcmh0YWJfbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI4MzEtXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyODMyOlx0ZXJyID0gYnBmX21lbV9hbGxvY19pbml0KFx1MDAyNnJodGFiLVx1MDAzZW1hLCByaHRhYi1cdTAwM2VlbGVtX3NpemUsIGZhbHNlKTtcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI4MzMtXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvbHBtX3RyaWUuYz01NzE9c3RhdGljIHN0cnVjdCBicGZfbWFwICp0cmllX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuLS1cbmtlcm5lbC9icGYvbHBtX3RyaWUuYy02MDItXHRcdCAgICB0cmllLVx1MDAzZW1hcC52YWx1ZV9zaXplO1xua2VybmVsL2JwZi9scG1fdHJpZS5jOjYwMzpcdGVyciA9IGJwZl9tZW1fYWxsb2NfaW5pdChcdTAwMjZ0cmllLVx1MDAzZW1hLCBsZWFmX3NpemUsIGZhbHNlKTtcbmtlcm5lbC9icGYvbHBtX3RyaWUuYy02MDQtXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYz00OTQ9c3RhdGljIHZvaWQgcHJlZmlsbF9tZW1fY2FjaGUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjcHUpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTUxNC0gKi9cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo1MTU6aW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjI2CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNzg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzIFN5bWJvbCBTZWxlY3Rpb24gZm9yIEJQRiBNZW1vcnkgQWxsb2NhdG9yIFJhY2UgQ29uZGl0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIGNyaXRpY2FsIGtlcm5lbCBmdW5jdGlvbnMgZm9yIGZ1enppbmcgcmVsYXRlZCB0byB0aGlzIEJQRiBtZW1vcnkgYWxsb2NhdG9yIHJhY2UgY29uZGl0aW9uLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogdGFyZ2V0IHNwZWNpZmljLCBub24taG90cGF0aCBlbnRyeXBvaW50cyB0aGF0IGFyZSAqZGlyZWN0bHkqIGludm9sdmVkIGluIHRoZSBidWcmIzM5O3MgbW9kaWZpZWQgbG9naWMuIFdlIHdhbnQgdG8gYXZvaWQgc2tld2luZyB0aGUgZnV6emluZyBkaXN0cmlidXRpb24gd2l0aCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4KCkluaXRpYWxseSwgSSB0aG91Z2h0IGBicGZfbWVtX2FsbG9jYCBhbmQgYGJwZl9tZW1fZnJlZWAgd2VyZSBwcm9taXNpbmcsIGJlaW5nIGNhbGxlZCBkdXJpbmcgbWFwIHVwZGF0ZXMgYW5kIGRlbGV0ZXMsIHdoaWNoIGFyZSBob3QgcGF0aHMuIEhvd2V2ZXIsIHRoZSByb290IG9mIHRoZSBpc3N1ZSBsaWVzIGluIFJDVSBjYWxsYmFja3MgYW5kIGJ1bGsgYWxsb2NhdGlvbnMvZnJlZXMuIFRoZSBwcm9ibGVtIGlzIHdpdGggdGhlIG1hbmlwdWxhdGlvbiBvZiBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYCBpbiBmdW5jdGlvbnMgbGlrZSBgYWxsb2NfYnVsa2AsIGBfX2ZyZWVfcmN1YCwgYGRvX2NhbGxfcmN1X3R0cmFjZWAsIGFuZCBgZHJhaW5fbWVtX2NhY2hlYC4KCk15IGluaXRpYWwgaW50dWl0aW9uIHdhcyB0byBpbmNsdWRlIGBicGZfbWVtX2NhY2hlX2FsbG9jYCBhbmQgYGJwZl9tZW1fY2FjaGVfZnJlZWAsIHNpbmNlIHRoZXkgYXJlIHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgdGhlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcgb2YgQlBGIG1hcCBlbGVtZW50cy4gVGhleSBhcmUgdXNlZCBmcmVxdWVudGx5IGFuZCByZWxhdGVkIHRvIHRoZSBjb25jdXJyZW50IGFsbG9jYXRpb25zIGFuZCBmcmVlcyB0aGF0IHRyaWdnZXIgdGhlIHJhY2UuIEhvd2V2ZXIsIHRoZSBpbnN0cnVjdGlvbnMgY2F1dGlvbiBhZ2FpbnN0IGluY2x1ZGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gSW5jbHVkaW5nIHRoZXNlIG1pZ2h0IHNrZXcgdGhlIHRlc3QgZGlzdHJpYnV0aW9ucywgbGVhZGluZyB0byB0aGUgZnV6emVyIGZvY3VzaW5nIG9uIHRoZW0gZGlzcHJvcG9ydGlvbmF0ZWx5LgoKSW5zdGVhZCwgbGV0JiMzOTtzIGNvbnNpZGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSAqZGlyZWN0bHkqIGludm9sdmVkIGJ1dCBhcmUgbm90IGhvdCBwYXRocy4gYGJwZl9tZW1fYWxsb2NfaW5pdGAgYW5kIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgIGFyZSBjYWxsZWQgZHVyaW5nIG1hcCBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFdoaWxlIG5vdCBob3QgcGF0aHMgdGhlbXNlbHZlcywgdGhleSBpbml0aWFsaXplIGFuZCBkZXN0cm95IHRoZSBzdHJ1Y3R1cmVzIGltcGFjdGVkIGJ5IHRoZSBmaXguIENyaXRpY2FsbHksIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgIGNhbGxzIGBkcmFpbl9tZW1fY2FjaGVgLCB3aGljaCBkaXJlY3RseSBleGVjdXRlcyB0aGUgbW9kaWZpZWQgY29kZS4gVGhpcyBtYWtlcyB0aGVtIGdvb2QgY2FuZGlkYXRlcy4gYGJwZl9tZW1fYWxsb2NfaW5pdGAgaW5pdGlhbGl6ZXMgdGhlIGxvY2ssIHdoaWNoIGlzIGtleS4gQWxzbywgSSB3aWxsIGluY2x1ZGUgYGJwZl9tZW1fYWxsb2NfcGVyY3B1X2luaXRgIGFuZCBgYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0YCBzaW5jZSB0aGV5IGFyZSBlbnRyeSBwb2ludHMgdGhhdCBhcmUgbm90IGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIGFuZCBpbml0aWFsaXplIHN0cnVjdHVyZXMsIHJlbGF0ZWQgdG8gdGhlIGZpeGVkIGNvZGUuCgpTbywgSSYjMzk7bSBnb2luZyB3aXRoOgoKKiAgIGBicGZfbWVtX2FsbG9jX2luaXRgCiogICBgYnBmX21lbV9hbGxvY19wZXJjcHVfaW5pdGAKKiAgIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgCiogICBgYnBmX21lbV9hbGxvY19kZXN0cm95YAoKVGhlc2UgYXJlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gVGhleSBhcmUgbm90IGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBUaGlzIHNob3VsZCBnaXZlIHRoZSBmdXp6ZXIgYSBnb29kIGVudHJ5IHBvaW50IHRvIHRyaWdnZXIgdGhlIGJ1Zy4KCkkgc2hvdWxkIGFsc28gbm90ZSB0aGUgcmVsZXZhbnQgY29uZmlnIGlzOiBgQlBGX1NZU0NBTExgIGJlY2F1c2UgdGhpcyBwYXRjaCBtb2RpZmllcyBjb3JlIEJQRiBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlLgoKRmluYWwgUmV2aWV3OiBUaGlzIHNlbGVjdGlvbiBhbGlnbnMgd2l0aCB0aGUgaW5zdHJ1Y3Rpb25zLCBhbmQgdGFyZ2V0cyBmdW5jdGlvbnMgZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhlIGZpeCBidXQgbm90IHN1YmplY3QgdG8gZXhjZXNzaXZlIGhvdC1wYXRoIHVzYWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZz0xNz1pZiBSQ19DT1JFXG5kcml2ZXJzL21lZGlhL3JjL0tjb25maWctMTgtXG5kcml2ZXJzL21lZGlhL3JjL0tjb25maWc6MTk6Y29uZmlnIEJQRl9MSVJDX01PREUyXG5kcml2ZXJzL21lZGlhL3JjL0tjb25maWctMjAtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIGVCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gbGlyYyBkZXZpY2VzXCYjMzQ7XG4tLVxua2VybmVsL0tjb25maWcubG9ja3M9MjQ2PWNvbmZpZyBRVUVVRURfU1BJTkxPQ0tTX1RSQUNFX0NPTlRFTkRFRF9SRUxFQVNFXG4tLVxua2VybmVsL0tjb25maWcubG9ja3MtMjY1LVxua2VybmVsL0tjb25maWcubG9ja3M6MjY2OmNvbmZpZyBCUEZfQVJDSF9TUElOTE9DS1xua2VybmVsL0tjb25maWcubG9ja3MtMjY3LVx0Ym9vbFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy0zLSMgQlBGIGludGVycHJldGVyIHRoYXQsIGZvciBleGFtcGxlLCBjbGFzc2ljIHNvY2tldCBmaWx0ZXJzIGRlcGVuZCBvbi5cbmtlcm5lbC9icGYvS2NvbmZpZzo0OmNvbmZpZyBCUEZcbmtlcm5lbC9icGYvS2NvbmZpZy01LVx0Ym9vbFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTcyLVxua2VybmVsL2JwZi9LY29uZmlnOjczOmNvbmZpZyBCUEZfVU5QUklWX0RFRkFVTFRfT0ZGXG5rZXJuZWwvYnBmL0tjb25maWctNzQtXHRib29sIFwmIzM0O0Rpc2FibGUgdW5wcml2aWxlZ2VkIEJQRiBieSBkZWZhdWx0XCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTkwPXNvdXJjZSBcJiMzNDtrZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZ1wmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTkxLVxua2VybmVsL2JwZi9LY29uZmlnOjkyOmNvbmZpZyBCUEZfTFNNXG5rZXJuZWwvYnBmL0tjb25maWctOTMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgTFNNIEluc3RydW1lbnRhdGlvblwmIzM0O1xuLS1cbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZzoyOm1lbnVjb25maWcgQlBGX1BSRUxPQURcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnLTMtXHRib29sIFwmIzM0O1ByZWxvYWQgQlBGIGZpbGUgc3lzdGVtIHdpdGgga2VybmVsIHNwZWNpZmljIHByb2dyYW0gYW5kIG1hcCBpdGVyYXRvcnNcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZz0xND1pZiBCUEZfUFJFTE9BRFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWc6MTU6Y29uZmlnIEJQRl9QUkVMT0FEX1VNRFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDticGZfcHJlbG9hZCBrZXJuZWwgbW9kdWxlXCYjMzQ7XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWc9ODM5PWNvbmZpZyBFUFJPQkVfRVZFTlRTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxua2VybmVsL3RyYWNlL0tjb25maWc6ODUzOmNvbmZpZyBCUEZfRVZFTlRTXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTQtXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWc9ODY1PWNvbmZpZyBQUk9CRV9FVkVOVFNcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NjctXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4Njg6Y29uZmlnIEJQRl9LUFJPQkVfT1ZFUlJJREVcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg2OS1cdGJvb2wgXCYjMzQ7RW5hYmxlIEJQRiBwcm9ncmFtcyB0byBvdmVycmlkZSBhIGtwcm9iZWQgZnVuY3Rpb25cJiMzNDtcbi0tXG5uZXQvS2NvbmZpZz0zNTQ9Y29uZmlnIEJRTFxuLS1cbm5ldC9LY29uZmlnLTM2MC1cbm5ldC9LY29uZmlnOjM2MTpjb25maWcgQlBGX1NUUkVBTV9QQVJTRVJcbm5ldC9LY29uZmlnLTM2Mi1cdGJvb2wgXCYjMzQ7ZW5hYmxlIEJQRiBTVFJFQU1fUEFSU0VSXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjczCgkJCQkJCQlvdXRwdXQ6IDE0OAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkJQRiBDb25zaWRlcmF0aW9ucyBmb3IgUmVzdWx0IFNldHRpbmcqKgoKT2theSwgc28gSSYjMzk7bSBhc3Nlc3NpbmcgdGhlIGJlc3QgYXBwcm9hY2ggaGVyZS4gVGhpbmtpbmcgdGhyb3VnaCB0aGUgbWVjaGFuaWNzIG9mIHRoZSBkYXRhIGZsb3csIHRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBhbmQgZWZmaWNpZW50IHBhdGggaXMgY2xlYXJseSB0aGUgYEJQRl9TWVNDQUxMYCBpbnRlcmZhY2UuIEl0IHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgaG9vayBpbnRvIHRoZSBrZXJuZWwgYXQgdGhlIHJpZ2h0IHN0YWdlLiBObyBuZWVkIHRvIG92ZXJjb21wbGljYXRlIHRoaW5ncyB3aXRoIHNvbWUgY3VzdG9tIG9yIG1vcmUgaW52b2x2ZWQgbWV0aG9kLCB3aGVuIGEgZGVkaWNhdGVkIGFuZCB3ZWxsLWRlZmluZWQgc3lzY2FsbCBpbnRlcmZhY2UgaXMgYXZhaWxhYmxlLiBJdCYjMzk7cyB0aGUgcmlnaHQgdG9vbCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGpvYiwgZm9yIHN1cmUuCgpUaGVyZWZvcmUsIHRoZSBhY3Rpb24gYmVjb21lcyBjbGVhcjogSSYjMzk7bGwgZm9jdXMgb24gY3JhZnRpbmcgdGhlIG5lY2Vzc2FyeSBsb2dpYyB0byBlZmZlY3RpdmVseSBsZXZlcmFnZSBgQlBGX1NZU0NBTExgIHRvIHNldCB0aGUgcmVzdWx0cy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gY2FsbCwgb3IgaW1wbGVtZW50LCB0aGUgZnVuY3Rpb24gdGhhdCB3aWxsIGhhbmRsZSB0aGUgc2V0dGluZyBvZiB0aGVzZSByZXN1bHRzLiBMZXQmIzM5O3MgY2FsbCB0aGlzIHRoZSAqc2V0LXJlc3VsdHMqIGZ1bmN0aW9uLCBhbmQgYnVpbGQgaXQgdG8gaGFuZGxlIHdoYXRldmVyIGRhdGEgc3RydWN0dXJlIHRoZSByZXN1bHRzIG5lZWQgdG8gYmUgZmVkIGludG8gdGhlIHRhcmdldCBwcm9ncmFtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfbWVtX2FsbG9jX2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19wZXJjcHVfaW5pdCYjMzQ7LAogICAgJiMzNDticGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19kZXN0cm95JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGJ5IGludHJvZHVjaW5nIGEgcmF3IHNwaW5sb2NrIHRvIHByb3RlY3QgdGhlIGB3YWl0aW5nX2Zvcl9ncF90dHJhY2VgIGxvY2tsZXNzIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdmlhIEJQRiBtYXAgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfbWVtX2FsbG9jX2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19wZXJjcHVfaW5pdCYjMzQ7LAogICAgJiMzNDticGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19kZXN0cm95JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGJ5IGludHJvZHVjaW5nIGEgcmF3IHNwaW5sb2NrIHRvIHByb3RlY3QgdGhlIGB3YWl0aW5nX2Zvcl9ncF90dHJhY2VgIGxvY2tsZXNzIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdmlhIEJQRiBtYXAgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgcmF3X3NwaW5sb2NrX3QgdG8gcHJvdGVjdCBjb25jdXJyZW50IGFjY2Vzc2VzIHRvIHRoZSBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYCBsaW5rZWQgbGlzdCBpbiB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3IuIEl0IHJlcGxhY2VzIGF0b21pYyBsb2NrbGVzcyBsaXN0IG9wZXJhdGlvbnMgKGxsaXN0X2RlbF9maXJzdCwgbGxpc3RfZGVsX2FsbCwgbGxpc3RfYWRkKSB3aXRoIHRoZWlyIG5vbi1hdG9taWMgY291bnRlcnBhcnRzIHByb3RlY3RlZCBieSB0aGUgbmV3IHNwaW5sb2NrLiBUaGlzIGlzIHB1cmVseSBhIGNvbmN1cnJlbmN5IGFuZCBzeW5jaHJvbml6YXRpb24gZml4IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFuZCBkYXRhIHJhY2VzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24gbG9naWMgb3IgYm91bmRzIGNoZWNraW5nLiBBbnkgYnVncyByZWxhdGVkIHRvIHRoaXMgY29kZSAoc3VjaCBhcyBsaXN0IGNvcnJ1cHRpb24gbGVhZGluZyB0byB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgS0NTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmFmMzA1NTg3OGI2Zjg3ZjgzMmFkZTlkYTk5YTIzZjFmM2M4YjBjNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDI3IDA5OjM4OjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9tZW1hbGxvYy5jIGIva2VybmVsL2JwZi9tZW1hbGxvYy5jCmluZGV4IGU5NjYyZGI3MTk4ZmUuLjU4Mjk2ZTkyYTRmZWQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvbWVtYWxsb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL21lbWFsbG9jLmMKQEAgLTExOSw2ICYjNDM7MTE5LDcgQEAgc3RydWN0IGJwZl9tZW1fY2FjaGUgewogCXN0cnVjdCBsbGlzdF9oZWFkIHdhaXRpbmdfZm9yX2dwX3R0cmFjZTsKIAlzdHJ1Y3QgcmN1X2hlYWQgcmN1X3R0cmFjZTsKIAlhdG9taWNfdCBjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3M7CiYjNDM7CXJhd19zcGlubG9ja190IGxvY2s7CiB9OwogCiBzdHJ1Y3QgYnBmX21lbV9jYWNoZXMgewpAQCAtMjA3LDYgJiM0MzsyMDgsNyBAQCBzdGF0aWMgdm9pZCBhZGRfb2JqX3RvX2ZyZWVfbGlzdChzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKQogc3RhdGljIHZvaWQgYWxsb2NfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNudCwgaW50IG5vZGUsIGJvb2wgYXRvbWljKQogewogCXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyA9IE5VTEwsICpvbGRfbWVtY2c7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJZ2ZwX3QgZ2ZwOwogCXZvaWQgKm9iajsKIAlpbnQgaTsKQEAgLTIyOCwxMiAmIzQzOzIzMCwxNCBAQCBzdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpCiAJaWYgKGkgJmd0Oz0gY250KQogCQlyZXR1cm47CiAKJiM0MzsJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZhbXA7Yy0mZ3Q7bG9jaywgZmxhZ3MpOwogCWZvciAoOyBpICZsdDsgY250OyBpJiM0MzsmIzQzOykgewotCQlvYmogPSBsbGlzdF9kZWxfZmlyc3QoJmFtcDtjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2UpOwomIzQzOwkJb2JqID0gX19sbGlzdF9kZWxfZmlyc3QoJmFtcDtjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2UpOwogCQlpZiAoIW9iaikKIAkJCWJyZWFrOwogCQlhZGRfb2JqX3RvX2ZyZWVfbGlzdChjLCBvYmopOwogCX0KJiM0MzsJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtjLSZndDtsb2NrLCBmbGFncyk7CiAJaWYgKGkgJmd0Oz0gY250KQogCQlyZXR1cm47CiAKQEAgLTI3OSw4ICYjNDM7MjgzLDE0IEBAIHN0YXRpYyBpbnQgZnJlZV9hbGwoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGUsIGJvb2wgcGVyCiBzdGF0aWMgdm9pZCBfX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZCkKIHsKIAlzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYyA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgYnBmX21lbV9jYWNoZSwgcmN1X3R0cmFjZSk7CiYjNDM7CXN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLQlmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKSwgISFjLSZndDtwZXJjcHVfc2l6ZSk7CiYjNDM7CXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2MtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJbGxub2RlID0gX19sbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKTsKJiM0MzsJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtjLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CiYjNDM7CWZyZWVfYWxsKGMsIGxsbm9kZSwgISFjLSZndDtwZXJjcHVfc2l6ZSk7CiAJYXRvbWljX3NldCgmYW1wO2MtJmd0O2NhbGxfcmN1X3R0cmFjZV9pbl9wcm9ncmVzcywgMCk7CiB9CiAKQEAgLTI5Nyw2ICYjNDM7MzA3LDcgQEAgc3RhdGljIHZvaWQgZW5xdWVfdG9fZnJlZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKQogc3RhdGljIHZvaWQgZG9fY2FsbF9yY3VfdHRyYWNlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKQogewogCXN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGUsICp0OwomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJaWYgKGF0b21pY194Y2hnKCZhbXA7Yy0mZ3Q7Y2FsbF9yY3VfdHRyYWNlX2luX3Byb2dyZXNzLCAxKSkgewogCQlpZiAodW5saWtlbHkoUkVBRF9PTkNFKGMtJmd0O2RyYWluaW5nKSkpIHsKQEAgLTMwNyw4ICYjNDM7MzE4LDEwIEBAIHN0YXRpYyB2b2lkIGRvX2NhbGxfcmN1X3R0cmFjZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYykKIAl9CiAKIAlXQVJOX09OX09OQ0UoIWxsaXN0X2VtcHR5KCZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKSk7CiYjNDM7CXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2MtJmd0O2xvY2ssIGZsYWdzKTsKIAlsbGlzdF9mb3JfZWFjaF9zYWZlKGxsbm9kZSwgdCwgbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O2ZyZWVfYnlfcmN1X3R0cmFjZSkpCi0JCWxsaXN0X2FkZChsbG5vZGUsICZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKTsKJiM0MzsJCV9fbGxpc3RfYWRkKGxsbm9kZSwgJmFtcDtjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2UpOwomIzQzOwlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2MtJmd0O2xvY2ssIGZsYWdzKTsKIAogCWlmICh1bmxpa2VseShSRUFEX09OQ0UoYy0mZ3Q7ZHJhaW5pbmcpKSkgewogCQlfX2ZyZWVfcmN1KCZhbXA7Yy0mZ3Q7cmN1X3R0cmFjZSk7CkBAIC01MzUsNiAmIzQzOzU0OCw3IEBAIGludCBicGZfbWVtX2FsbG9jX2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSwgYm9vbCBwZXJjcHUpCiAJCQljLSZndDtvYmpjZyA9IG9iamNnOwogCQkJYy0mZ3Q7cGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTsKIAkJCWMtJmd0O3RndCA9IGM7CiYjNDM7CQkJcmF3X3NwaW5fbG9ja19pbml0KCZhbXA7Yy0mZ3Q7bG9jayk7CiAJCQlpbml0X3JlZmlsbF93b3JrKGMpOwogCQkJcHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTsKIAkJfQpAQCAtNTU3LDcgJiM0Mzs1NzEsNyBAQCBpbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KQogCQkJYy0mZ3Q7b2JqY2cgPSBvYmpjZzsKIAkJCWMtJmd0O3BlcmNwdV9zaXplID0gcGVyY3B1X3NpemU7CiAJCQljLSZndDt0Z3QgPSBjOwotCiYjNDM7CQkJcmF3X3NwaW5fbG9ja19pbml0KCZhbXA7Yy0mZ3Q7bG9jayk7CiAJCQlpbml0X3JlZmlsbF93b3JrKGMpOwogCQkJcHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTsKIAkJfQpAQCAtNjA5LDcgJiM0Mzs2MjMsNyBAQCBpbnQgYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUpCiAJCWMtJmd0O29iamNnID0gb2JqY2c7CiAJCWMtJmd0O3BlcmNwdV9zaXplID0gcGVyY3B1X3NpemU7CiAJCWMtJmd0O3RndCA9IGM7Ci0KJiM0MzsJCXJhd19zcGluX2xvY2tfaW5pdCgmYW1wO2MtJmd0O2xvY2spOwogCQlpbml0X3JlZmlsbF93b3JrKGMpOwogCQlwcmVmaWxsX21lbV9jYWNoZShjLCBjcHUpOwogCX0KQEAgLTYyMCw2ICYjNDM7NjM0LDggQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKQogc3RhdGljIHZvaWQgZHJhaW5fbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKQogewogCWJvb2wgcGVyY3B1ID0gISFjLSZndDtwZXJjcHVfc2l6ZTsKJiM0MzsJc3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZTsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCS8qIE5vIHByb2dzIGFyZSB1c2luZyB0aGlzIGJwZl9tZW1fY2FjaGUsIGJ1dCBodGFiX21hcF9mcmVlKCkgY2FsbGVkCiAJICogYnBmX21lbV9jYWNoZV9mcmVlKCkgZm9yIGFsbCByZW1haW5pbmcgZWxlbWVudHMgYW5kIHRoZXkgY2FuIGJlIGluCkBAIC02MjksNyAmIzQzOzY0NSwxMCBAQCBzdGF0aWMgdm9pZCBkcmFpbl9tZW1fY2FjaGUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpCiAJICogb24gdGhlc2UgbGlzdHMsIHNvIGl0IGlzIHNhZmUgdG8gdXNlIF9fbGxpc3RfZGVsX2FsbCgpLgogCSAqLwogCWZyZWVfYWxsKGMsIGxsaXN0X2RlbF9hbGwoJmFtcDtjLSZndDtmcmVlX2J5X3JjdV90dHJhY2UpLCBwZXJjcHUpOwotCWZyZWVfYWxsKGMsIGxsaXN0X2RlbF9hbGwoJmFtcDtjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2UpLCBwZXJjcHUpOwomIzQzOwlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CWxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O3dhaXRpbmdfZm9yX2dwX3R0cmFjZSk7CiYjNDM7CXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7Yy0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwlmcmVlX2FsbChjLCBsbG5vZGUsIHBlcmNwdSk7CiAJZnJlZV9hbGwoYywgX19sbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7ZnJlZV9sbGlzdCksIHBlcmNwdSk7CiAJZnJlZV9hbGwoYywgX19sbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7ZnJlZV9sbGlzdF9leHRyYSksIHBlcmNwdSk7CiAJZnJlZV9hbGwoYywgX19sbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7ZnJlZV9ieV9yY3UpLCBwZXJjcHUpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxMgoJCQkJCQkJb3V0cHV0OiAyMDUKCQkJCQkJCXRob3VnaHRzOiA0ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIE1lbW9yeSBBbGxvY2F0b3IgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBjb25jdXJyZW5jeSBmaXggaW4gYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AuIE15IGluaXRpYWwgcmVhZCB0ZWxscyBtZSBpdCYjMzk7cyBhZGRpbmcgYSBgcmF3X3NwaW5sb2NrX3QgbG9ja2AgdG8gdGhlIGBicGZfbWVtX2NhY2hlYCBzdHJ1Y3R1cmUuIFRoZSBtYWluIHRocnVzdCBpcyByZXBsYWNpbmcgdGhlIGF0b21pYyBsaXN0IG9wZXJhdGlvbnMgKGBsbGlzdF9kZWxfZmlyc3RgLCBgbGxpc3RfZGVsX2FsbGAsIGBsbGlzdF9hZGRgKSB3aXRoIHRoZWlyIG5vbi1hdG9taWMgY291bnRlcnBhcnRzIChgX19sbGlzdF9kZWxfZmlyc3RgLCBgX19sbGlzdF9kZWxfYWxsYCwgYF9fbGxpc3RfYWRkYCkgd2hlbiBkZWFsaW5nIHdpdGggYGMtJmd0O3dhaXRpbmdfZm9yX2dwX3R0cmFjZWAsIGFuZCB3cmFwcGluZyB0aG9zZSBvcGVyYXRpb25zIHdpdGggYHJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2MtJmd0O2xvY2ssIGZsYWdzKWAuIFRoaXMgaXMgY2xlYXJseSBkZXNpZ25lZCB0byBwcm90ZWN0IHRoZSBsaXN0IGZyb20gcmFjZSBjb25kaXRpb25zIGFyaXNpbmcgZnJvbSBjb25jdXJyZW50IGFjY2VzcyBmcm9tIG11bHRpcGxlIENQVXMgb3IgY29udGV4dHMuCgpUaGUgcGF0Y2ggaXRzZWxmIGRvZXNuJiMzOTt0IHRvdWNoIGFueXRoaW5nIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcywgb3IgbWVtb3J5IGNvbnRlbnRzIGRpcmVjdGx5LiBUaGUgYnVncyB0aGlzIGFpbXMgdG8gZml4IGFyZSBhbGwgYWJvdXQgcmFjZSBjb25kaXRpb25zIG9yIGRhdGEgY29ycnVwdGlvbiB3aXRoaW4gdGhlIGxpc3QgaXRzZWxmLCB3aGljaCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gKHVzZS1hZnRlci1mcmVlLCBvdXQtb2YtYm91bmRzIGR1ZSB0byBsaXN0IGNvcnJ1cHRpb24pIG9yIEtDU0FOIChkYXRhIHJhY2VzKSwgb3IgbGVhZCB0byBzdHJhaWdodGZvcndhcmQga2VybmVsIHBhbmljcy4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHdhbGstdGhyb3VnaCB0byBjb25maXJtLiBgYWxsb2NfYnVsa2AsIGBfX2ZyZWVfcmN1YCwgYGRvX2NhbGxfcmN1X3R0cmFjZWAsIGFuZCBgZHJhaW5fbWVtX2NhY2hlYCBhbGwgbm93IGNvcnJlY3RseSBhY3F1aXJlIHRoZSBsb2NrIGBjLSZndDtsb2NrYCBiZWZvcmUgbWFuaXB1bGF0aW5nIGBjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2VgIHVzaW5nIHRoZSBub24tYXRvbWljIGxpc3QgZnVuY3Rpb25zLiBgYnBmX21lbV9hbGxvY19pbml0YCBhbmQgYGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdGAgY29ycmVjdGx5IGluaXRpYWxpemUgdGhlIGxvY2suCgpJdCYjMzk7cyBwdXJlbHkgYSBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gY2hhbmdlIHRvIHByb3RlY3QgYSBsaW5rZWQgbGlzdC4gTm8gbmV3IHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIE15IGNvbmNsdXNpb24gaXMgdGhhdCBLTVNBTiBpcyBub3QgbmVjZXNzYXJ5IGhlcmUuIEkmIzM5O2xsIGRvY3VtZW50IG15IHJlYXNvbmluZyBhbmQgc2V0IGBOZWVkc0tNU0FOYCB0byBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHJhd19zcGlubG9ja190IHRvIHByb3RlY3QgY29uY3VycmVudCBhY2Nlc3NlcyB0byB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbGlua2VkIGxpc3QgaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yLiBJdCByZXBsYWNlcyBhdG9taWMgbG9ja2xlc3MgbGlzdCBvcGVyYXRpb25zIChsbGlzdF9kZWxfZmlyc3QsIGxsaXN0X2RlbF9hbGwsIGxsaXN0X2FkZCkgd2l0aCB0aGVpciBub24tYXRvbWljIGNvdW50ZXJwYXJ0cyBwcm90ZWN0ZWQgYnkgdGhlIG5ldyBzcGlubG9jay4gVGhpcyBpcyBwdXJlbHkgYSBjb25jdXJyZW5jeSBhbmQgc3luY2hyb25pemF0aW9uIGZpeCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhbmQgZGF0YSByYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uIGxvZ2ljIG9yIGJvdW5kcyBjaGVja2luZy4gQW55IGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNvZGUgKHN1Y2ggYXMgbGlzdCBjb3JydXB0aW9uIGxlYWRpbmcgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtDU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgcmF3X3NwaW5sb2NrX3QgdG8gcHJvdGVjdCBjb25jdXJyZW50IGFjY2Vzc2VzIHRvIHRoZSBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYCBsaW5rZWQgbGlzdCBpbiB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3IuIEl0IHJlcGxhY2VzIGF0b21pYyBsb2NrbGVzcyBsaXN0IG9wZXJhdGlvbnMgKGxsaXN0X2RlbF9maXJzdCwgbGxpc3RfZGVsX2FsbCwgbGxpc3RfYWRkKSB3aXRoIHRoZWlyIG5vbi1hdG9taWMgY291bnRlcnBhcnRzIHByb3RlY3RlZCBieSB0aGUgbmV3IHNwaW5sb2NrLiBUaGlzIGlzIHB1cmVseSBhIGNvbmN1cnJlbmN5IGFuZCBzeW5jaHJvbml6YXRpb24gZml4IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFuZCBkYXRhIHJhY2VzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24gbG9naWMgb3IgYm91bmRzIGNoZWNraW5nLiBBbnkgYnVncyByZWxhdGVkIHRvIHRoaXMgY29kZSAoc3VjaCBhcyBsaXN0IGNvcnJ1cHRpb24gbGVhZGluZyB0byB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgS0NTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDk6Mzg6NTEuMjI5NzI0MTk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MzQ2ODk4NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX21lbV9hbGxvY19pbml0XCIsXG4gICAgXCJicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0XCIsXG4gICAgXCJicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRcIixcbiAgICBcImJwZl9tZW1fYWxsb2NfZGVzdHJveVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHJhd19zcGlubG9ja190IHRvIHByb3RlY3QgY29uY3VycmVudCBhY2Nlc3NlcyB0byB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbGlua2VkIGxpc3QgaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yLiBJdCByZXBsYWNlcyBhdG9taWMgbG9ja2xlc3MgbGlzdCBvcGVyYXRpb25zIChsbGlzdF9kZWxfZmlyc3QsIGxsaXN0X2RlbF9hbGwsIGxsaXN0X2FkZCkgd2l0aCB0aGVpciBub24tYXRvbWljIGNvdW50ZXJwYXJ0cyBwcm90ZWN0ZWQgYnkgdGhlIG5ldyBzcGlubG9jay4gVGhpcyBpcyBwdXJlbHkgYSBjb25jdXJyZW5jeSBhbmQgc3luY2hyb25pemF0aW9uIGZpeCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhbmQgZGF0YSByYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uIGxvZ2ljIG9yIGJvdW5kcyBjaGVja2luZy4gQW55IGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNvZGUgKHN1Y2ggYXMgbGlzdCBjb3JydXB0aW9uIGxlYWRpbmcgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtDU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3IgYnkgaW50cm9kdWNpbmcgYSByYXcgc3BpbmxvY2sgdG8gcHJvdGVjdCB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbG9ja2xlc3MgbGlzdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlci1zcGFjZSB2aWEgQlBGIG1hcCBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozODo1MS4yMjk3Mjg0MjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjE5NTc2NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyYWYzMDU1ODc4YjZmODdmODMyYWRlOWRhOTlhMjNmMWYzYzhiMGM2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDI3IDA5OjM4OjQ5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvbWVtYWxsb2MuYyBiL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xcbmluZGV4IGU5NjYyZGI3MTk4ZmUuLjU4Mjk2ZTkyYTRmZWQgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi9tZW1hbGxvYy5jXFxuKysrIGIva2VybmVsL2JwZi9tZW1hbGxvYy5jXFxuQEAgLTExOSw2ICsxMTksNyBAQCBzdHJ1Y3QgYnBmX21lbV9jYWNoZSB7XFxuIFxcdHN0cnVjdCBsbGlzdF9oZWFkIHdhaXRpbmdfZm9yX2dwX3R0cmFjZTtcXG4gXFx0c3RydWN0IHJjdV9oZWFkIHJjdV90dHJhY2U7XFxuIFxcdGF0b21pY190IGNhbGxfcmN1X3R0cmFjZV9pbl9wcm9ncmVzcztcXG4rXFx0cmF3X3NwaW5sb2NrX3QgbG9jaztcXG4gfTtcXG4gXFxuIHN0cnVjdCBicGZfbWVtX2NhY2hlcyB7XFxuQEAgLTIwNyw2ICsyMDgsNyBAQCBzdGF0aWMgdm9pZCBhZGRfb2JqX3RvX2ZyZWVfbGlzdChzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKVxcbiBzdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpXFxuIHtcXG4gXFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnID0gTlVMTCwgKm9sZF9tZW1jZztcXG4rXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gXFx0Z2ZwX3QgZ2ZwO1xcbiBcXHR2b2lkICpvYmo7XFxuIFxcdGludCBpO1xcbkBAIC0yMjgsMTIgKzIzMCwxNCBAQCBzdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpXFxuIFxcdGlmIChpIFxcdTAwM2U9IGNudClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZjLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIFxcdGZvciAoOyBpIFxcdTAwM2MgY250OyBpKyspIHtcXG4tXFx0XFx0b2JqID0gbGxpc3RfZGVsX2ZpcnN0KFxcdTAwMjZjLVxcdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xcbitcXHRcXHRvYmogPSBfX2xsaXN0X2RlbF9maXJzdChcXHUwMDI2Yy1cXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcXG4gXFx0XFx0aWYgKCFvYmopXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRhZGRfb2JqX3RvX2ZyZWVfbGlzdChjLCBvYmopO1xcbiBcXHR9XFxuK1xcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZjLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIFxcdGlmIChpIFxcdTAwM2U9IGNudClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG5AQCAtMjc5LDggKzI4MywxNCBAQCBzdGF0aWMgaW50IGZyZWVfYWxsKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlLCBib29sIHBlclxcbiBzdGF0aWMgdm9pZCBfX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG4ge1xcbiBcXHRzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYyA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgYnBmX21lbV9jYWNoZSwgcmN1X3R0cmFjZSk7XFxuK1xcdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIFxcbi1cXHRmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKFxcdTAwMjZjLVxcdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpLCAhIWMtXFx1MDAzZXBlcmNwdV9zaXplKTtcXG4rXFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZjLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdGxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbChcXHUwMDI2Yy1cXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcXG4rXFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFxuK1xcdGZyZWVfYWxsKGMsIGxsbm9kZSwgISFjLVxcdTAwM2VwZXJjcHVfc2l6ZSk7XFxuIFxcdGF0b21pY19zZXQoXFx1MDAyNmMtXFx1MDAzZWNhbGxfcmN1X3R0cmFjZV9pbl9wcm9ncmVzcywgMCk7XFxuIH1cXG4gXFxuQEAgLTI5Nyw2ICszMDcsNyBAQCBzdGF0aWMgdm9pZCBlbnF1ZV90b19mcmVlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCB2b2lkICpvYmopXFxuIHN0YXRpYyB2b2lkIGRvX2NhbGxfcmN1X3R0cmFjZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcXG4ge1xcbiBcXHRzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlLCAqdDtcXG4rXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gXFxuIFxcdGlmIChhdG9taWNfeGNoZyhcXHUwMDI2Yy1cXHUwMDNlY2FsbF9yY3VfdHRyYWNlX2luX3Byb2dyZXNzLCAxKSkge1xcbiBcXHRcXHRpZiAodW5saWtlbHkoUkVBRF9PTkNFKGMtXFx1MDAzZWRyYWluaW5nKSkpIHtcXG5AQCAtMzA3LDggKzMxOCwxMCBAQCBzdGF0aWMgdm9pZCBkb19jYWxsX3JjdV90dHJhY2Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXFxuIFxcdH1cXG4gXFxuIFxcdFdBUk5fT05fT05DRSghbGxpc3RfZW1wdHkoXFx1MDAyNmMtXFx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSkpO1xcbitcXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFx0bGxpc3RfZm9yX2VhY2hfc2FmZShsbG5vZGUsIHQsIGxsaXN0X2RlbF9hbGwoXFx1MDAyNmMtXFx1MDAzZWZyZWVfYnlfcmN1X3R0cmFjZSkpXFxuLVxcdFxcdGxsaXN0X2FkZChsbG5vZGUsIFxcdTAwMjZjLVxcdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xcbitcXHRcXHRfX2xsaXN0X2FkZChsbG5vZGUsIFxcdTAwMjZjLVxcdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xcbitcXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2Yy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KFJFQURfT05DRShjLVxcdTAwM2VkcmFpbmluZykpKSB7XFxuIFxcdFxcdF9fZnJlZV9yY3UoXFx1MDAyNmMtXFx1MDAzZXJjdV90dHJhY2UpO1xcbkBAIC01MzUsNiArNTQ4LDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcXG4gXFx0XFx0XFx0Yy1cXHUwMDNlb2JqY2cgPSBvYmpjZztcXG4gXFx0XFx0XFx0Yy1cXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcXG4gXFx0XFx0XFx0Yy1cXHUwMDNldGd0ID0gYztcXG4rXFx0XFx0XFx0cmF3X3NwaW5fbG9ja19pbml0KFxcdTAwMjZjLVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0XFx0aW5pdF9yZWZpbGxfd29yayhjKTtcXG4gXFx0XFx0XFx0cHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTtcXG4gXFx0XFx0fVxcbkBAIC01NTcsNyArNTcxLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcXG4gXFx0XFx0XFx0Yy1cXHUwMDNlb2JqY2cgPSBvYmpjZztcXG4gXFx0XFx0XFx0Yy1cXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcXG4gXFx0XFx0XFx0Yy1cXHUwMDNldGd0ID0gYztcXG4tXFxuK1xcdFxcdFxcdHJhd19zcGluX2xvY2tfaW5pdChcXHUwMDI2Yy1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdFxcdGluaXRfcmVmaWxsX3dvcmsoYyk7XFxuIFxcdFxcdFxcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XFxuIFxcdFxcdH1cXG5AQCAtNjA5LDcgKzYyMyw3IEBAIGludCBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSlcXG4gXFx0XFx0Yy1cXHUwMDNlb2JqY2cgPSBvYmpjZztcXG4gXFx0XFx0Yy1cXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcXG4gXFx0XFx0Yy1cXHUwMDNldGd0ID0gYztcXG4tXFxuK1xcdFxcdHJhd19zcGluX2xvY2tfaW5pdChcXHUwMDI2Yy1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdGluaXRfcmVmaWxsX3dvcmsoYyk7XFxuIFxcdFxcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XFxuIFxcdH1cXG5AQCAtNjIwLDYgKzYzNCw4IEBAIGludCBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSlcXG4gc3RhdGljIHZvaWQgZHJhaW5fbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxcbiB7XFxuIFxcdGJvb2wgcGVyY3B1ID0gISFjLVxcdTAwM2VwZXJjcHVfc2l6ZTtcXG4rXFx0c3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZTtcXG4rXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gXFxuIFxcdC8qIE5vIHByb2dzIGFyZSB1c2luZyB0aGlzIGJwZl9tZW1fY2FjaGUsIGJ1dCBodGFiX21hcF9mcmVlKCkgY2FsbGVkXFxuIFxcdCAqIGJwZl9tZW1fY2FjaGVfZnJlZSgpIGZvciBhbGwgcmVtYWluaW5nIGVsZW1lbnRzIGFuZCB0aGV5IGNhbiBiZSBpblxcbkBAIC02MjksNyArNjQ1LDEwIEBAIHN0YXRpYyB2b2lkIGRyYWluX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcXG4gXFx0ICogb24gdGhlc2UgbGlzdHMsIHNvIGl0IGlzIHNhZmUgdG8gdXNlIF9fbGxpc3RfZGVsX2FsbCgpLlxcbiBcXHQgKi9cXG4gXFx0ZnJlZV9hbGwoYywgbGxpc3RfZGVsX2FsbChcXHUwMDI2Yy1cXHUwMDNlZnJlZV9ieV9yY3VfdHRyYWNlKSwgcGVyY3B1KTtcXG4tXFx0ZnJlZV9hbGwoYywgbGxpc3RfZGVsX2FsbChcXHUwMDI2Yy1cXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKSwgcGVyY3B1KTtcXG4rXFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZjLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdGxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbChcXHUwMDI2Yy1cXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcXG4rXFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0ZnJlZV9hbGwoYywgbGxub2RlLCBwZXJjcHUpO1xcbiBcXHRmcmVlX2FsbChjLCBfX2xsaXN0X2RlbF9hbGwoXFx1MDAyNmMtXFx1MDAzZWZyZWVfbGxpc3QpLCBwZXJjcHUpO1xcbiBcXHRmcmVlX2FsbChjLCBfX2xsaXN0X2RlbF9hbGwoXFx1MDAyNmMtXFx1MDAzZWZyZWVfbGxpc3RfZXh0cmEpLCBwZXJjcHUpO1xcbiBcXHRmcmVlX2FsbChjLCBfX2xsaXN0X2RlbF9hbGwoXFx1MDAyNmMtXFx1MDAzZWZyZWVfYnlfcmN1KSwgcGVyY3B1KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDk6Mzg6NTIuNjUyMzcwMjUyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTY5NjkwNDE5OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfbWVtX2FsbG9jX2luaXRcIixcbiAgICBcImJwZl9tZW1fYWxsb2NfcGVyY3B1X2luaXRcIixcbiAgICBcImJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdFwiLFxuICAgIFwiYnBmX21lbV9hbGxvY19kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3IgYnkgaW50cm9kdWNpbmcgYSByYXcgc3BpbmxvY2sgdG8gcHJvdGVjdCB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbG9ja2xlc3MgbGlzdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlci1zcGFjZSB2aWEgQlBGIG1hcCBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYWYzMDU1ODc4YjZmODdmODMyYWRlOWRhOTlhMjNmMWYzYzhiMGM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMDk6Mzg6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21lbWFsbG9jLmMgYi9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbmluZGV4IGU5NjYyZGI3MTk4ZmUuLjU4Mjk2ZTkyYTRmZWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbisrKyBiL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xuQEAgLTExOSw2ICsxMTksNyBAQCBzdHJ1Y3QgYnBmX21lbV9jYWNoZSB7XG4gXHRzdHJ1Y3QgbGxpc3RfaGVhZCB3YWl0aW5nX2Zvcl9ncF90dHJhY2U7XG4gXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1X3R0cmFjZTtcbiBcdGF0b21pY190IGNhbGxfcmN1X3R0cmFjZV9pbl9wcm9ncmVzcztcbitcdHJhd19zcGlubG9ja190IGxvY2s7XG4gfTtcbiBcbiBzdHJ1Y3QgYnBmX21lbV9jYWNoZXMge1xuQEAgLTIwNyw2ICsyMDgsNyBAQCBzdGF0aWMgdm9pZCBhZGRfb2JqX3RvX2ZyZWVfbGlzdChzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKVxuIHN0YXRpYyB2b2lkIGFsbG9jX2J1bGsoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjbnQsIGludCBub2RlLCBib29sIGF0b21pYylcbiB7XG4gXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBOVUxMLCAqb2xkX21lbWNnO1xuK1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdGdmcF90IGdmcDtcbiBcdHZvaWQgKm9iajtcbiBcdGludCBpO1xuQEAgLTIyOCwxMiArMjMwLDE0IEBAIHN0YXRpYyB2b2lkIGFsbG9jX2J1bGsoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjbnQsIGludCBub2RlLCBib29sIGF0b21pYylcbiBcdGlmIChpIFx1MDAzZT0gY250KVxuIFx0XHRyZXR1cm47XG4gXG4rXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRmb3IgKDsgaSBcdTAwM2MgY250OyBpKyspIHtcbi1cdFx0b2JqID0gbGxpc3RfZGVsX2ZpcnN0KFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbitcdFx0b2JqID0gX19sbGlzdF9kZWxfZmlyc3QoXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xuIFx0XHRpZiAoIW9iailcbiBcdFx0XHRicmVhaztcbiBcdFx0YWRkX29ial90b19mcmVlX2xpc3QoYywgb2JqKTtcbiBcdH1cbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0aWYgKGkgXHUwMDNlPSBjbnQpXG4gXHRcdHJldHVybjtcbiBcbkBAIC0yNzksOCArMjgzLDE0IEBAIHN0YXRpYyBpbnQgZnJlZV9hbGwoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGUsIGJvb2wgcGVyXG4gc3RhdGljIHZvaWQgX19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4ge1xuIFx0c3RydWN0IGJwZl9tZW1fY2FjaGUgKmMgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IGJwZl9tZW1fY2FjaGUsIHJjdV90dHJhY2UpO1xuK1x0c3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZTtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXG4tXHRmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKSwgISFjLVx1MDAzZXBlcmNwdV9zaXplKTtcbitcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdGxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSk7XG4rXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcbitcdGZyZWVfYWxsKGMsIGxsbm9kZSwgISFjLVx1MDAzZXBlcmNwdV9zaXplKTtcbiBcdGF0b21pY19zZXQoXHUwMDI2Yy1cdTAwM2VjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3MsIDApO1xuIH1cbiBcbkBAIC0yOTcsNiArMzA3LDcgQEAgc3RhdGljIHZvaWQgZW5xdWVfdG9fZnJlZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKVxuIHN0YXRpYyB2b2lkIGRvX2NhbGxfcmN1X3R0cmFjZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcbiB7XG4gXHRzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlLCAqdDtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXG4gXHRpZiAoYXRvbWljX3hjaGcoXHUwMDI2Yy1cdTAwM2VjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3MsIDEpKSB7XG4gXHRcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoYy1cdTAwM2VkcmFpbmluZykpKSB7XG5AQCAtMzA3LDggKzMxOCwxMCBAQCBzdGF0aWMgdm9pZCBkb19jYWxsX3JjdV90dHJhY2Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXG4gXHR9XG4gXG4gXHRXQVJOX09OX09OQ0UoIWxsaXN0X2VtcHR5KFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKSk7XG4rXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRsbGlzdF9mb3JfZWFjaF9zYWZlKGxsbm9kZSwgdCwgbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZWZyZWVfYnlfcmN1X3R0cmFjZSkpXG4tXHRcdGxsaXN0X2FkZChsbG5vZGUsIFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbitcdFx0X19sbGlzdF9hZGQobGxub2RlLCBcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSk7XG4rXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoYy1cdTAwM2VkcmFpbmluZykpKSB7XG4gXHRcdF9fZnJlZV9yY3UoXHUwMDI2Yy1cdTAwM2VyY3VfdHRyYWNlKTtcbkBAIC01MzUsNiArNTQ4LDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcbiBcdFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdFx0Yy1cdTAwM2VwZXJjcHVfc2l6ZSA9IHBlcmNwdV9zaXplO1xuIFx0XHRcdGMtXHUwMDNldGd0ID0gYztcbitcdFx0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRpbml0X3JlZmlsbF93b3JrKGMpO1xuIFx0XHRcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XG4gXHRcdH1cbkBAIC01NTcsNyArNTcxLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcbiBcdFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdFx0Yy1cdTAwM2VwZXJjcHVfc2l6ZSA9IHBlcmNwdV9zaXplO1xuIFx0XHRcdGMtXHUwMDNldGd0ID0gYztcbi1cbitcdFx0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRpbml0X3JlZmlsbF93b3JrKGMpO1xuIFx0XHRcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XG4gXHRcdH1cbkBAIC02MDksNyArNjIzLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKVxuIFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdGMtXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcbiBcdFx0Yy1cdTAwM2V0Z3QgPSBjO1xuLVxuK1x0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0aW5pdF9yZWZpbGxfd29yayhjKTtcbiBcdFx0cHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTtcbiBcdH1cbkBAIC02MjAsNiArNjM0LDggQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKVxuIHN0YXRpYyB2b2lkIGRyYWluX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcbiB7XG4gXHRib29sIHBlcmNwdSA9ICEhYy1cdTAwM2VwZXJjcHVfc2l6ZTtcbitcdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XG4rXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFxuIFx0LyogTm8gcHJvZ3MgYXJlIHVzaW5nIHRoaXMgYnBmX21lbV9jYWNoZSwgYnV0IGh0YWJfbWFwX2ZyZWUoKSBjYWxsZWRcbiBcdCAqIGJwZl9tZW1fY2FjaGVfZnJlZSgpIGZvciBhbGwgcmVtYWluaW5nIGVsZW1lbnRzIGFuZCB0aGV5IGNhbiBiZSBpblxuQEAgLTYyOSw3ICs2NDUsMTAgQEAgc3RhdGljIHZvaWQgZHJhaW5fbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxuIFx0ICogb24gdGhlc2UgbGlzdHMsIHNvIGl0IGlzIHNhZmUgdG8gdXNlIF9fbGxpc3RfZGVsX2FsbCgpLlxuIFx0ICovXG4gXHRmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNlZnJlZV9ieV9yY3VfdHRyYWNlKSwgcGVyY3B1KTtcbi1cdGZyZWVfYWxsKGMsIGxsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpLCBwZXJjcHUpO1xuK1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0bGxub2RlID0gX19sbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0ZnJlZV9hbGwoYywgbGxub2RlLCBwZXJjcHUpO1xuIFx0ZnJlZV9hbGwoYywgX19sbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNlZnJlZV9sbGlzdCksIHBlcmNwdSk7XG4gXHRmcmVlX2FsbChjLCBfX2xsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2VmcmVlX2xsaXN0X2V4dHJhKSwgcGVyY3B1KTtcbiBcdGZyZWVfYWxsKGMsIF9fbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZWZyZWVfYnlfcmN1KSwgcGVyY3B1KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjM4OjUyLjY1MjM3MTM5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MDY4MTUxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIE1lbW9yeSBBbGxvY2F0b3IgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBtYWtpbmcgYSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBpbnRyb2R1Y2VkIGEgYHJhd19zcGlubG9ja190IGxvY2tgIHdpdGhpbiB0aGUgYHN0cnVjdCBicGZfbWVtX2NhY2hlYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgaXQncyBhIGRpcmVjdCBhdHRlbXB0IHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gYGMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlYC4gVGhleSd2ZSBzd2FwcGVkIG91dCB0aGUgYXRvbWljIGxpbmtlZCBsaXN0IG9wZXJhdGlvbnMgKGBsbGlzdF9kZWxfZmlyc3RgLCBgbGxpc3RfZGVsX2FsbGAsIGBsbGlzdF9hZGRgKSBmb3IgdGhlaXIgbm9uLWF0b21pYyBjb3VudGVycGFydHMgKGBfX2xsaXN0X2RlbF9maXJzdGAsIGBfX2xsaXN0X2RlbF9hbGxgLCBgX19sbGlzdF9hZGRgKSB1bmRlciB0aGUgcHJvdGVjdGlvbiBvZiB0aGlzIG5ldyBsb2NrLiBUaGlzIGlzIGEgc29saWQgYXBwcm9hY2ggdG8gcHJldmVudCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9uIGB3YWl0aW5nX2Zvcl9ncF90dHJhY2VgLCBhbmQgaXQgaXMgc2lnbmlmaWNhbnQsIGdpdmVuIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGlzIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGNvZGUuXG5cblRoZSBxdWVzdGlvbiBub3cgaXMsIGRvZXMgdGhpcyB3YXJyYW50IGZ1enppbmc/IEFic29sdXRlbHksIHdpdGhvdXQgYSBkb3VidC4gQW55IGZ1bmRhbWVudGFsIG1vZGlmaWNhdGlvbiB0byBtZW1vcnkgYWxsb2NhdGlvbiBjb2RlIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5Ob3csIHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIGtleSB0YXJnZXRzPyBJJ2QgaW5pdGlhbGx5IHplcm8gaW4gb24gYGFsbG9jX2J1bGtgLCBgX19mcmVlX3JjdWAsIGBkb19jYWxsX3JjdV90dHJhY2VgLCBhbmQgYGRyYWluX21lbV9jYWNoZWAuIEhvd2V2ZXIsIGEgcXVpY2sgY2hlY2sgcmVtaW5kcyBtZSB0aGF0IHRob3NlIGFyZSBhbGwgZGVjbGFyZWQgYHN0YXRpY2AuIFNvLCBsZXQncyB0cmFjZSB0aGVpciBjYWxsZXJzIHRvIGZpbmQgdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgYGJwZl9tZW1fYWxsb2NfaW5pdGAsIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgLCBgYnBmX21lbV9hbGxvY19kZXN0cm95YCwgYGJwZl9tZW1fY2FjaGVfYWxsb2NgLCBgYnBmX21lbV9jYWNoZV9mcmVlYCwgYW5kIGBicGZfbWVtX2NhY2hlX3Jhd19mcmVlYCB0byBmaW5kIGFueSBleHBvcnRlZCBvciBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiBga2VybmVsL2JwZi9tZW1hbGxvYy5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxNSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjM5OjAwLjA1OTE4ODQ5NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODExMzU5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKGludHx2b2lkfHN0cnVjdCkuKmJwZl9tZW1fLipcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL21lbWFsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9tZW1hbGxvYy5jPTQ5ND1zdGF0aWMgdm9pZCBwcmVmaWxsX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNwdSlcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTQtICovXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjUxNTppbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTYte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU4My1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTg0OmludCBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01ODUte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU5Ny1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTk4OmludCBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNTk5LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz03MzA9c3RhdGljIHZvaWQgZGVzdHJveV9tZW1fYWxsb2Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgcmN1X2luX3Byb2dyZXNzKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTc1NC1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NzU1OnZvaWQgYnBmX21lbV9hbGxvY19kZXN0cm95KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzU2LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz04Nzg9c3RhdGljIHZvaWQgbm90cmFjZSB1bml0X2ZyZWVfcmN1KHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCB2b2lkICpwdHIpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTAxLSAqL1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5MDI6dm9pZCBub3RyYWNlICpicGZfbWVtX2FsbG9jKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc2l6ZV90IHNpemUpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTkwMy17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTE5LVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5MjA6dm9pZCBub3RyYWNlIGJwZl9tZW1fZnJlZShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTIxLXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MzUtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjkzNjp2b2lkIG5vdHJhY2UgYnBmX21lbV9mcmVlX3JjdShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTM3LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NTEtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk1Mjp2b2lkIG5vdHJhY2UgKmJwZl9tZW1fY2FjaGVfYWxsb2Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NTMte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk1OS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTYwOnZvaWQgbm90cmFjZSBicGZfbWVtX2NhY2hlX2ZyZWUoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk2MS17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTY3LVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5Njg6dm9pZCBub3RyYWNlIGJwZl9tZW1fY2FjaGVfZnJlZV9yY3Uoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk2OS17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTg1LSAqL1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5ODY6dm9pZCBicGZfbWVtX2NhY2hlX3Jhd19mcmVlKHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTg3LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05OTctICovXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk5ODp2b2lkIG5vdHJhY2UgKmJwZl9tZW1fY2FjaGVfYWxsb2NfZmxhZ3Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBnZnBfdCBmbGFncylcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTk5LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xMDIwLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoxMDIxOmludCBicGZfbWVtX2FsbG9jX2NoZWNrX3NpemUoYm9vbCBwZXJjcHUsIHNpemVfdCBzaXplKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xMDIyLXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xMDMwLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoxMDMxOnZvaWQgYnBmX21lbV9hbGxvY19zZXRfZHRvcihzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKCpkdG9yKSh2b2lkICpvYmosIHZvaWQgKmN0eCksXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTEwMzItXFx0XFx0XFx0ICAgIHZvaWQgKCpkdG9yX2N0eF9mcmVlKSh2b2lkICpjdHgpLCB2b2lkICpjdHgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjM5OjAwLjEwNzMwNDYzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyOTkxMTgxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gemVyb2VzIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGl0J3MgdG91Y2hpbmc6IGBhbGxvY19idWxrYCwgYF9fZnJlZV9yY3VgLCBgZG9fY2FsbF9yY3VfdHRyYWNlYCwgYGJwZl9tZW1fYWxsb2NfaW5pdGAsIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgLCBhbmQgYGRyYWluX21lbV9jYWNoZWAuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBSaWdodCBhd2F5LCBJIHNlZSBgYWxsb2NfYnVsa2AsIGFuZCB0aGF0IHJpbmdzIGFsYXJtIGJlbGxzIOKAkyBzcGVjaWZpY2FsbHkgYmVjYXVzZSBvZiBpdHMgcmVsYXRpb25zaGlwIHRvIGBicGZfbWVtX2NhY2hlX2FsbG9jYC4gSXQgc2VlbXMgbGlrZSBgYWxsb2NfYnVsa2AgaXMgdXNlZCB3aGVuIHRoZSBtZW1vcnkgY2FjaGUgaXMgZW1wdHkuIE1ha2VzIHNlbnNlOyB5b3UgbmVlZCB0byBidWxrLWFsbG9jYXRlIHdoZW4geW91IGhhdmUgdG8gcmVmaWxsIHRoZSBjYWNoZS5cblxuTm93LCBgX19mcmVlX3JjdWAganVtcHMgb3V0IGFzIGFuIFJDVSBjYWxsYmFjay4gT2YgY291cnNlLiBXZSdyZSBkZWFsaW5nIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQsIHNvIFJDVSBtYWtlcyBwZXJmZWN0IHNlbnNlIGZvciBzYWZlIGZyZWVpbmcuIEFuZCB0aGF0IHB1bGxzIG15IGZvY3VzIHRvIGBkb19jYWxsX3JjdV90dHJhY2VgIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGBicGZfbWVtX2NhY2hlX2ZyZWVfcmN1YC4gU28sIGBkb19jYWxsX3JjdV90dHJhY2VgIGlzIGxpa2VseSBjYWxsZWQgYnkgc29tZXRoaW5nIHJlbGF0ZWQgdG8gZnJlZWluZyBjYWNoZSBpdGVtcywgbGlrZWx5IGluc2lkZSBvZiBhbiBSQ1UgY2FsbGJhY2suIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGV4YWN0IGNhbGwgcGF0aHMsIGJ1dCB0aGF0IHNlZW1zIHRoZSBtb3N0IGxpa2VseSB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcxMywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOTowNi40MDY0MjQ3OTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0MDQ4NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fY2FsbF9yY3VfdHRyYWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvbWVtYWxsb2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL21lbWFsbG9jLmM9Mjk3PXN0YXRpYyB2b2lkIGVucXVlX3RvX2ZyZWUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHZvaWQgKm9iailcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0zMDYtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjMwNzpzdGF0aWMgdm9pZCBkb19jYWxsX3JjdV90dHJhY2Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTMwOC17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9MzM5PXN0YXRpYyB2b2lkIGZyZWVfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0zNjMtXFx0XFx0ZW5xdWVfdG9fZnJlZSh0Z3QsIGxsbm9kZSk7XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjM2NDpcXHRkb19jYWxsX3JjdV90dHJhY2UodGd0KTtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMzY1LX1cXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz0zNjc9c3RhdGljIHZvaWQgX19mcmVlX2J5X3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMzgyLVxcdC8qIE9iamVjdHMgd2VudCB0aHJvdWdoIHJlZ3VsYXIgUkNVIEdQLiBTZW5kIHRoZW0gdG8gUkNVIHRhc2tzIHRyYWNlICovXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjM4MzpcXHRkb19jYWxsX3JjdV90dHJhY2UodGd0KTtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMzg0LW91dDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDk6Mzk6MDYuNDUzODMzMDUzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY0NTQ3ODUyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBNZW50YWwgV2FsayBUaHJvdWdoIHRoZSBCUEYgTWVtb3J5IE1hbmFnZW1lbnQgQ29kZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIGBkb19jYWxsX3JjdV90dHJhY2VgIGlzIGNhbGxlZCBmcm9tIHR3byBrZXkgZnVuY3Rpb25zLCBgZnJlZV9idWxrYCBhbmQgYF9fZnJlZV9ieV9yY3VgLiBgZnJlZV9idWxrYCBpcyB0aGVuIHRyaWdnZXJlZCBlaXRoZXIgdGhyb3VnaCBgYnBmX21lbV9jYWNoZV9mcmVlYCBvciBgYnBmX21lbV9mcmVlYCwgc3BlY2lmaWNhbGx5IHdoZW4gdGhlIGNhY2hlIHJlYWNoZXMgY2FwYWNpdHkuIEkgbmVlZCB0byBrZWVwIHRoYXQgY2FsbCBzdGFjayBpbiBtaW5kLiBUaGUgaW5pdGlhbGl6YXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIHRoaXMgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtIGlzIGFsbCBtYW5hZ2VkIHRocm91Z2ggYGJwZl9tZW1fYWxsb2NfaW5pdGAsIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgLCBhbmQgYGJwZl9tZW1fYWxsb2NfZGVzdHJveWAuXG5cblRoZSByZWFsbHkgY29yZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZSB0aGVzZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMsIHRoZXNlIGFyZTpcbiogICBgYnBmX21lbV9hbGxvY2BcbiogICBgYnBmX21lbV9mcmVlYFxuKiAgIGBicGZfbWVtX2ZyZWVfcmN1YFxuKiAgIGBicGZfbWVtX2NhY2hlX2FsbG9jYFxuKiAgIGBicGZfbWVtX2NhY2hlX2ZyZWVgXG4qICAgYGJwZl9tZW1fY2FjaGVfZnJlZV9yY3VgXG4qICAgYGJwZl9tZW1fYWxsb2NfZGVzdHJveWBcblxuTm93IEkgbmVlZCB0byBxdWlja2x5IGNoZWNrIGlmIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHkuIEl0IHNlZW1zIGxpa2UgdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yJ3MgYXZhaWxhYmlsaXR5IGlzIGNvbnRyb2xsZWQgYnkgdGhlIGBDT05GSUdfQlBGX1NZU0NBTExgIGNvbmZpZyBvcHRpb24uIEdvb2QgdG8ga25vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU2NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOToxMi4wOTkzMTM5ODJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0ODU1MTkwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDk6Mzk6MTQuMTQ3ODczNTc5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY3OTQyMDU1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgcmVsYXRlcyB0byB0aGUga2VybmVsIGNvZGU6XG5cbioqQ2hlY2tpbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gb2YgYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlIGBrZXJuZWwvYnBmL21lbWFsbG9jLmNgIGZpbGUgaW4gdGhlIGtlcm5lbCBpcyBjb21waWxlZCBjb25kaXRpb25hbGx5LiBJIGtub3cgdGhpcyBmaWxlIGlzIGNyaXRpY2FsIGZvciBCUEYgbWVtb3J5IGFsbG9jYXRpb24sIGFuZCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXRzIGF2YWlsYWJpbGl0eSBtaWdodCBhZmZlY3QgYSBnaXZlbiBzeXN0ZW0gY29uZmlndXJhdGlvbiBvciBwZXJmb3JtYW5jZSBwcm9maWxlLiBJJ20gdGhpbmtpbmcsIGlzIGl0IG9ubHkgaW5jbHVkZWQgd2hlbiBjZXJ0YWluIGZlYXR1cmVzIG9yIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkPyBJZiBzbywgd2hpY2ggb25lcz8gSSdsbCBwcm9iYWJseSBzdGFydCBieSBncmVwcGluZyB0aGUga2VybmVsIHNvdXJjZSBmb3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIHJlbGF0ZWQgdG8gdGhpcyBzcGVjaWZpYyBmaWxlLCBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBgI2lmZGVmYCwgYCNpZmAsIGAjaWZuZGVmYCwgYW5kIGAjZW5kaWZgLiBJJ2xsIHdhbnQgdG8gcXVpY2tseSBzZWUgaWYgaXQncyB3cmFwcGVkIGluIGFueSBzdWNoIGJsb2NrcyB0byB0ZWxsIG1lIHdoZXRoZXIgaXRzIGluY2x1c2lvbiBpcyBkZXBlbmRlbnQgb24gcGFydGljdWxhciBidWlsZCBmbGFncyBvciBrZXJuZWwgbW9kdWxlcyBiZWluZyBlbmFibGVkLiBUaGlzIHVuZGVyc3RhbmRpbmcgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgZmxleGlibGUgYSBzeXN0ZW0gd2lsbCBiZSBpbiBpdHMgdXNhZ2Ugb2YgQlBGIG1lbW9yeSBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMTgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOToxOC44MjcyOTYzODRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTAxMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbWFsbG9jXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT0xNz1vYmotJChDT05GSUdfQlBGX0pJVCkgKz0gdHJhbXBvbGluZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xOS1pZmVxICgkKENPTkZJR19NTVUpJChDT05GSUdfNjRCSVQpLHl5KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOToxOC44NzY0MDMzMDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ4NjU2OTIxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBUaGlzIEJQRiBNZW1vcnkgQWxsb2NhdG9yIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggY2VudGVycyBhcm91bmQgYEJQRl9TWVNDQUxMYCDigJMgdGhhdCdzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtLiBUaGlzIGZpeCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiB3aXRoaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGJ5IGludHJvZHVjaW5nIGEgcmF3IHNwaW5sb2NrIHRvIHNhZmVndWFyZCBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYC4gTXkgZ3V0IHNheXMgdGhpcyBpcyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeSwgc28gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgcmlnaHQgYXBwcm9hY2guXG5cbkZpcnN0LCBJIG5lZWQgdG8gY2hvb3NlIG15IGZvY3VzIHN5bWJvbHMuIE15IGluaXRpYWwgbGlzdCBpbmNsdWRlcyB0aGUgY29yZSBhbGxvY2F0b3IgYW5kIGZyZWUgZnVuY3Rpb25zOiBgYnBmX21lbV9hbGxvY2AsIGBicGZfbWVtX2ZyZWVgLCBgYnBmX21lbV9mcmVlX3JjdWAsIGBicGZfbWVtX2NhY2hlX2FsbG9jYCwgYGJwZl9tZW1fY2FjaGVfZnJlZWAsIGBicGZfbWVtX2NhY2hlX2ZyZWVfcmN1YCwgYW5kIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgLlxuXG5XYWl0IGEgbWludXRlLCBgYnBmX21lbV9hbGxvY2AgYW5kIGBicGZfbWVtX2ZyZWVgIGFyZSAqaGVhdmlseSogaW52b2x2ZWQgaW4gQlBGIG1hcHMuIEkgbmVlZCB0byBiZSBjYXJlZnVsIGhlcmUuIEkgcmVtZW1iZXIgdGhlIGdvYWwgaXMgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIE15IGNvbmNlcm4gaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgbWlnaHQgYmUgaG90IHBhdGhzIGZvciBCUEYgcHJvZ3JhbXMsIGJ1dCB0aGV5IGFyZSBhbHNvIHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgdGhlIG1vZGlmaWVkIGNvZGUuIEknbSBnb2luZyB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLCBsb29raW5nIGZvciBzb21lIGZ1bmN0aW9ucyB0aGF0IGFyZSBkZWZpbml0ZWx5IG5vdCBob3QgcGF0aHMuXG5cbk9rYXksIGxldCdzIHNlZS4gVGhlcmUncyBgYnBmX21lbV9hbGxvY19pbml0YCwgYGJwZl9tZW1fYWxsb2NfZGVzdHJveWAsIGBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0YCwgYW5kIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgLiBBaCwgdGhlc2UgYXJlIGRlZmluaXRlbHkgY2FsbGVkIHdoZW4gYSBCUEYgbWFwIGlzIGNyZWF0ZWQgb3IgZGVzdHJveWVkLCBub3QgZHVyaW5nIHRoZSBmcmVxdWVudCBleGVjdXRpb24gb2YgYSBCUEYgcHJvZ3JhbS4gVGhvc2UgYXJlIHBlcmZlY3QuIEJ1dCBsZXQgbWUgcXVpY2tseSBjaGVjayB3aGVyZSBgYnBmX21lbV9hbGxvY19pbml0YCBpcyBjYWxsZWQsIGp1c3QgdG8gYmUgc3VyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTg1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjM5OjI1LjM2Mjk3NTM4OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE4OTkxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX21lbV9hbGxvY19pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvY29yZS5jPTM0MzY9c3RhdGljIGludCBfX2luaXQgYnBmX2dsb2JhbF9tYV9pbml0KHZvaWQpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDM5LVxcbmtlcm5lbC9icGYvY29yZS5jOjM0NDA6XFx0cmV0ID0gYnBmX21lbV9hbGxvY19pbml0KFxcdTAwMjZicGZfZ2xvYmFsX21hLCAwLCBmYWxzZSk7XFxua2VybmVsL2JwZi9jb3JlLmMtMzQ0MS1cXHRicGZfZ2xvYmFsX21hX3NldCA9ICFyZXQ7XFxuLS1cXG5rZXJuZWwvYnBmL2NwdW1hc2suYz01MTU9c3RhdGljIGludCBfX2luaXQgY3B1bWFza19rZnVuY19pbml0KHZvaWQpXFxuLS1cXG5rZXJuZWwvYnBmL2NwdW1hc2suYy01MjQtXFxua2VybmVsL2JwZi9jcHVtYXNrLmM6NTI1OlxcdHJldCA9IGJwZl9tZW1fYWxsb2NfaW5pdChcXHUwMDI2YnBmX2NwdW1hc2tfbWEsIHNpemVvZihzdHJ1Y3QgYnBmX2NwdW1hc2spLCBmYWxzZSk7XFxua2VybmVsL2JwZi9jcHVtYXNrLmMtNTI2LVxcdHJldCA9IHJldCA/OiByZWdpc3Rlcl9idGZfa2Z1bmNfaWRfc2V0KEJQRl9QUk9HX1RZUEVfVFJBQ0lORywgXFx1MDAyNmNwdW1hc2tfa2Z1bmNfc2V0KTtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTU0NT1zdGF0aWMgc3RydWN0IGJwZl9tYXAgKmh0YWJfbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtNjQ4LVxcdH0gZWxzZSB7XFxua2VybmVsL2JwZi9oYXNodGFiLmM6NjQ5OlxcdFxcdGVyciA9IGJwZl9tZW1fYWxsb2NfaW5pdChcXHUwMDI2aHRhYi1cXHUwMDNlbWEsIGh0YWItXFx1MDAzZWVsZW1fc2l6ZSwgZmFsc2UpO1xcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTY1MC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtNjUyLVxcdFxcdGlmIChwZXJjcHUpIHtcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzo2NTM6XFx0XFx0XFx0ZXJyID0gYnBmX21lbV9hbGxvY19pbml0KFxcdTAwMjZodGFiLVxcdTAwM2VwY3B1X21hLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTY1NC1cXHRcXHRcXHRcXHRcXHRcXHQgcm91bmRfdXAoaHRhYi1cXHUwMDNlbWFwLnZhbHVlX3NpemUsIDgpLCB0cnVlKTtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI3OTU9c3RhdGljIHN0cnVjdCBicGZfbWFwICpyaHRhYl9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yODMxLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI4MzI6XFx0ZXJyID0gYnBmX21lbV9hbGxvY19pbml0KFxcdTAwMjZyaHRhYi1cXHUwMDNlbWEsIHJodGFiLVxcdTAwM2VlbGVtX3NpemUsIGZhbHNlKTtcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yODMzLVxcdGlmIChlcnIpXFxuLS1cXG5rZXJuZWwvYnBmL2xwbV90cmllLmM9NTcxPXN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqdHJpZV9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG4tLVxcbmtlcm5lbC9icGYvbHBtX3RyaWUuYy02MDItXFx0XFx0ICAgIHRyaWUtXFx1MDAzZW1hcC52YWx1ZV9zaXplO1xcbmtlcm5lbC9icGYvbHBtX3RyaWUuYzo2MDM6XFx0ZXJyID0gYnBmX21lbV9hbGxvY19pbml0KFxcdTAwMjZ0cmllLVxcdTAwM2VtYSwgbGVhZl9zaXplLCBmYWxzZSk7XFxua2VybmVsL2JwZi9scG1fdHJpZS5jLTYwNC1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTQ5ND1zdGF0aWMgdm9pZCBwcmVmaWxsX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNwdSlcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTQtICovXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjUxNTppbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOToyNS40MTQ4Nzg3NThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ2NDM2ODg3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXMgU3ltYm9sIFNlbGVjdGlvbiBmb3IgQlBGIE1lbW9yeSBBbGxvY2F0b3IgUmFjZSBDb25kaXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIGNyaXRpY2FsIGtlcm5lbCBmdW5jdGlvbnMgZm9yIGZ1enppbmcgcmVsYXRlZCB0byB0aGlzIEJQRiBtZW1vcnkgYWxsb2NhdG9yIHJhY2UgY29uZGl0aW9uLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogdGFyZ2V0IHNwZWNpZmljLCBub24taG90cGF0aCBlbnRyeXBvaW50cyB0aGF0IGFyZSAqZGlyZWN0bHkqIGludm9sdmVkIGluIHRoZSBidWcncyBtb2RpZmllZCBsb2dpYy4gV2Ugd2FudCB0byBhdm9pZCBza2V3aW5nIHRoZSBmdXp6aW5nIGRpc3RyaWJ1dGlvbiB3aXRoIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLlxuXG5Jbml0aWFsbHksIEkgdGhvdWdodCBgYnBmX21lbV9hbGxvY2AgYW5kIGBicGZfbWVtX2ZyZWVgIHdlcmUgcHJvbWlzaW5nLCBiZWluZyBjYWxsZWQgZHVyaW5nIG1hcCB1cGRhdGVzIGFuZCBkZWxldGVzLCB3aGljaCBhcmUgaG90IHBhdGhzLiBIb3dldmVyLCB0aGUgcm9vdCBvZiB0aGUgaXNzdWUgbGllcyBpbiBSQ1UgY2FsbGJhY2tzIGFuZCBidWxrIGFsbG9jYXRpb25zL2ZyZWVzLiBUaGUgcHJvYmxlbSBpcyB3aXRoIHRoZSBtYW5pcHVsYXRpb24gb2YgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgaW4gZnVuY3Rpb25zIGxpa2UgYGFsbG9jX2J1bGtgLCBgX19mcmVlX3JjdWAsIGBkb19jYWxsX3JjdV90dHJhY2VgLCBhbmQgYGRyYWluX21lbV9jYWNoZWAuXG5cbk15IGluaXRpYWwgaW50dWl0aW9uIHdhcyB0byBpbmNsdWRlIGBicGZfbWVtX2NhY2hlX2FsbG9jYCBhbmQgYGJwZl9tZW1fY2FjaGVfZnJlZWAsIHNpbmNlIHRoZXkgYXJlIHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgdGhlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcgb2YgQlBGIG1hcCBlbGVtZW50cy4gVGhleSBhcmUgdXNlZCBmcmVxdWVudGx5IGFuZCByZWxhdGVkIHRvIHRoZSBjb25jdXJyZW50IGFsbG9jYXRpb25zIGFuZCBmcmVlcyB0aGF0IHRyaWdnZXIgdGhlIHJhY2UuIEhvd2V2ZXIsIHRoZSBpbnN0cnVjdGlvbnMgY2F1dGlvbiBhZ2FpbnN0IGluY2x1ZGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gSW5jbHVkaW5nIHRoZXNlIG1pZ2h0IHNrZXcgdGhlIHRlc3QgZGlzdHJpYnV0aW9ucywgbGVhZGluZyB0byB0aGUgZnV6emVyIGZvY3VzaW5nIG9uIHRoZW0gZGlzcHJvcG9ydGlvbmF0ZWx5LlxuXG5JbnN0ZWFkLCBsZXQncyBjb25zaWRlciBmdW5jdGlvbnMgdGhhdCBhcmUgKmRpcmVjdGx5KiBpbnZvbHZlZCBidXQgYXJlIG5vdCBob3QgcGF0aHMuIGBicGZfbWVtX2FsbG9jX2luaXRgIGFuZCBgYnBmX21lbV9hbGxvY19kZXN0cm95YCBhcmUgY2FsbGVkIGR1cmluZyBtYXAgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uLiBXaGlsZSBub3QgaG90IHBhdGhzIHRoZW1zZWx2ZXMsIHRoZXkgaW5pdGlhbGl6ZSBhbmQgZGVzdHJveSB0aGUgc3RydWN0dXJlcyBpbXBhY3RlZCBieSB0aGUgZml4LiBDcml0aWNhbGx5LCBgYnBmX21lbV9hbGxvY19kZXN0cm95YCBjYWxscyBgZHJhaW5fbWVtX2NhY2hlYCwgd2hpY2ggZGlyZWN0bHkgZXhlY3V0ZXMgdGhlIG1vZGlmaWVkIGNvZGUuIFRoaXMgbWFrZXMgdGhlbSBnb29kIGNhbmRpZGF0ZXMuIGBicGZfbWVtX2FsbG9jX2luaXRgIGluaXRpYWxpemVzIHRoZSBsb2NrLCB3aGljaCBpcyBrZXkuIEFsc28sIEkgd2lsbCBpbmNsdWRlIGBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0YCBhbmQgYGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdGAgc2luY2UgdGhleSBhcmUgZW50cnkgcG9pbnRzIHRoYXQgYXJlIG5vdCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyBhbmQgaW5pdGlhbGl6ZSBzdHJ1Y3R1cmVzLCByZWxhdGVkIHRvIHRoZSBmaXhlZCBjb2RlLlxuXG5TbywgSSdtIGdvaW5nIHdpdGg6XG5cbiogICBgYnBmX21lbV9hbGxvY19pbml0YFxuKiAgIGBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0YFxuKiAgIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgXG4qICAgYGJwZl9tZW1fYWxsb2NfZGVzdHJveWBcblxuVGhlc2UgYXJlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gVGhleSBhcmUgbm90IGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBUaGlzIHNob3VsZCBnaXZlIHRoZSBmdXp6ZXIgYSBnb29kIGVudHJ5IHBvaW50IHRvIHRyaWdnZXIgdGhlIGJ1Zy5cblxuSSBzaG91bGQgYWxzbyBub3RlIHRoZSByZWxldmFudCBjb25maWcgaXM6IGBCUEZfU1lTQ0FMTGAgYmVjYXVzZSB0aGlzIHBhdGNoIG1vZGlmaWVzIGNvcmUgQlBGIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UuXG5cbkZpbmFsIFJldmlldzogVGhpcyBzZWxlY3Rpb24gYWxpZ25zIHdpdGggdGhlIGluc3RydWN0aW9ucywgYW5kIHRhcmdldHMgZnVuY3Rpb25zIGRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBmaXggYnV0IG5vdCBzdWJqZWN0IHRvIGV4Y2Vzc2l2ZSBob3QtcGF0aCB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIyNiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOTo0MC4wNTg1Njk2MjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDU1NjQ4NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnPTE3PWlmIFJDX0NPUkVcXG5kcml2ZXJzL21lZGlhL3JjL0tjb25maWctMTgtXFxuZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnOjE5OmNvbmZpZyBCUEZfTElSQ19NT0RFMlxcbmRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZy0yMC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBlQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIGxpcmMgZGV2aWNlc1xcXCJcXG4tLVxcbmtlcm5lbC9LY29uZmlnLmxvY2tzPTI0Nj1jb25maWcgUVVFVUVEX1NQSU5MT0NLU19UUkFDRV9DT05URU5ERURfUkVMRUFTRVxcbi0tXFxua2VybmVsL0tjb25maWcubG9ja3MtMjY1LVxcbmtlcm5lbC9LY29uZmlnLmxvY2tzOjI2Njpjb25maWcgQlBGX0FSQ0hfU1BJTkxPQ0tcXG5rZXJuZWwvS2NvbmZpZy5sb2Nrcy0yNjctXFx0Ym9vbFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTMtIyBCUEYgaW50ZXJwcmV0ZXIgdGhhdCwgZm9yIGV4YW1wbGUsIGNsYXNzaWMgc29ja2V0IGZpbHRlcnMgZGVwZW5kIG9uLlxcbmtlcm5lbC9icGYvS2NvbmZpZzo0OmNvbmZpZyBCUEZcXG5rZXJuZWwvYnBmL0tjb25maWctNS1cXHRib29sXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcXFwiQlBGIHN1YnN5c3RlbVxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctMjYtXFxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXFxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXFxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXFx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTcyLVxcbmtlcm5lbC9icGYvS2NvbmZpZzo3Mzpjb25maWcgQlBGX1VOUFJJVl9ERUZBVUxUX09GRlxcbmtlcm5lbC9icGYvS2NvbmZpZy03NC1cXHRib29sIFxcXCJEaXNhYmxlIHVucHJpdmlsZWdlZCBCUEYgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz05MD1zb3VyY2UgXFxcImtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy05MS1cXG5rZXJuZWwvYnBmL0tjb25maWc6OTI6Y29uZmlnIEJQRl9MU01cXG5rZXJuZWwvYnBmL0tjb25maWctOTMtXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBMU00gSW5zdHJ1bWVudGF0aW9uXFxcIlxcbi0tXFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZzoyOm1lbnVjb25maWcgQlBGX1BSRUxPQURcXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIlByZWxvYWQgQlBGIGZpbGUgc3lzdGVtIHdpdGgga2VybmVsIHNwZWNpZmljIHByb2dyYW0gYW5kIG1hcCBpdGVyYXRvcnNcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZz0xND1pZiBCUEZfUFJFTE9BRFxcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnOjE1OmNvbmZpZyBCUEZfUFJFTE9BRF9VTURcXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiYnBmX3ByZWxvYWQga2VybmVsIG1vZHVsZVxcXCJcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz04NjU9Y29uZmlnIFBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODY3LVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg2ODpjb25maWcgQlBGX0tQUk9CRV9PVkVSUklERVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg2OS1cXHRib29sIFxcXCJFbmFibGUgQlBGIHByb2dyYW1zIHRvIG92ZXJyaWRlIGEga3Byb2JlZCBmdW5jdGlvblxcXCJcXG4tLVxcbm5ldC9LY29uZmlnPTM1ND1jb25maWcgQlFMXFxuLS1cXG5uZXQvS2NvbmZpZy0zNjAtXFxubmV0L0tjb25maWc6MzYxOmNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxcbm5ldC9LY29uZmlnLTM2Mi1cXHRib29sIFxcXCJlbmFibGUgQlBGIFNUUkVBTV9QQVJTRVJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjM5OjQyLjI2NDEzODgwOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjIxNzA4MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipCUEYgQ29uc2lkZXJhdGlvbnMgZm9yIFJlc3VsdCBTZXR0aW5nKipcblxuT2theSwgc28gSSdtIGFzc2Vzc2luZyB0aGUgYmVzdCBhcHByb2FjaCBoZXJlLiBUaGlua2luZyB0aHJvdWdoIHRoZSBtZWNoYW5pY3Mgb2YgdGhlIGRhdGEgZmxvdywgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIGFuZCBlZmZpY2llbnQgcGF0aCBpcyBjbGVhcmx5IHRoZSBgQlBGX1NZU0NBTExgIGludGVyZmFjZS4gSXQgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBob29rIGludG8gdGhlIGtlcm5lbCBhdCB0aGUgcmlnaHQgc3RhZ2UuIE5vIG5lZWQgdG8gb3ZlcmNvbXBsaWNhdGUgdGhpbmdzIHdpdGggc29tZSBjdXN0b20gb3IgbW9yZSBpbnZvbHZlZCBtZXRob2QsIHdoZW4gYSBkZWRpY2F0ZWQgYW5kIHdlbGwtZGVmaW5lZCBzeXNjYWxsIGludGVyZmFjZSBpcyBhdmFpbGFibGUuIEl0J3MgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoaXMgcGFydGljdWxhciBqb2IsIGZvciBzdXJlLlxuXG5UaGVyZWZvcmUsIHRoZSBhY3Rpb24gYmVjb21lcyBjbGVhcjogSSdsbCBmb2N1cyBvbiBjcmFmdGluZyB0aGUgbmVjZXNzYXJ5IGxvZ2ljIHRvIGVmZmVjdGl2ZWx5IGxldmVyYWdlIGBCUEZfU1lTQ0FMTGAgdG8gc2V0IHRoZSByZXN1bHRzLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBjYWxsLCBvciBpbXBsZW1lbnQsIHRoZSBmdW5jdGlvbiB0aGF0IHdpbGwgaGFuZGxlIHRoZSBzZXR0aW5nIG9mIHRoZXNlIHJlc3VsdHMuIExldCdzIGNhbGwgdGhpcyB0aGUgKnNldC1yZXN1bHRzKiBmdW5jdGlvbiwgYW5kIGJ1aWxkIGl0IHRvIGhhbmRsZSB3aGF0ZXZlciBkYXRhIHN0cnVjdHVyZSB0aGUgcmVzdWx0cyBuZWVkIHRvIGJlIGZlZCBpbnRvIHRoZSB0YXJnZXQgcHJvZ3JhbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE2NzMsIk91dHB1dFRva2VucyI6MTQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDk6Mzk6NDkuNDg1ODQ5NjYzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1NTU4MzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9tZW1fYWxsb2NfaW5pdFwiLFxuICAgIFwiYnBmX21lbV9hbGxvY19wZXJjcHVfaW5pdFwiLFxuICAgIFwiYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0XCIsXG4gICAgXCJicGZfbWVtX2FsbG9jX2Rlc3Ryb3lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBCUEYgbWVtb3J5IGFsbG9jYXRvciBieSBpbnRyb2R1Y2luZyBhIHJhdyBzcGlubG9jayB0byBwcm90ZWN0IHRoZSBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYCBsb2NrbGVzcyBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBCUEYgbWFwIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfbWVtX2FsbG9jX2luaXRcIixcbiAgICBcImJwZl9tZW1fYWxsb2NfcGVyY3B1X2luaXRcIixcbiAgICBcImJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdFwiLFxuICAgIFwiYnBmX21lbV9hbGxvY19kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3IgYnkgaW50cm9kdWNpbmcgYSByYXcgc3BpbmxvY2sgdG8gcHJvdGVjdCB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbG9ja2xlc3MgbGlzdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlci1zcGFjZSB2aWEgQlBGIG1hcCBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOTo0OS42MjE0NDEwNzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwOTU1MTY2Nzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDk6Mzk6NDkuNjIyMzY1NzQxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUwOTU0MjM4OTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgcmF3X3NwaW5sb2NrX3QgdG8gcHJvdGVjdCBjb25jdXJyZW50IGFjY2Vzc2VzIHRvIHRoZSBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYCBsaW5rZWQgbGlzdCBpbiB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3IuIEl0IHJlcGxhY2VzIGF0b21pYyBsb2NrbGVzcyBsaXN0IG9wZXJhdGlvbnMgKGxsaXN0X2RlbF9maXJzdCwgbGxpc3RfZGVsX2FsbCwgbGxpc3RfYWRkKSB3aXRoIHRoZWlyIG5vbi1hdG9taWMgY291bnRlcnBhcnRzIHByb3RlY3RlZCBieSB0aGUgbmV3IHNwaW5sb2NrLiBUaGlzIGlzIHB1cmVseSBhIGNvbmN1cnJlbmN5IGFuZCBzeW5jaHJvbml6YXRpb24gZml4IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFuZCBkYXRhIHJhY2VzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24gbG9naWMgb3IgYm91bmRzIGNoZWNraW5nLiBBbnkgYnVncyByZWxhdGVkIHRvIHRoaXMgY29kZSAoc3VjaCBhcyBsaXN0IGNvcnJ1cHRpb24gbGVhZGluZyB0byB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgS0NTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYWYzMDU1ODc4YjZmODdmODMyYWRlOWRhOTlhMjNmMWYzYzhiMGM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMDk6Mzg6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21lbWFsbG9jLmMgYi9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbmluZGV4IGU5NjYyZGI3MTk4ZmUuLjU4Mjk2ZTkyYTRmZWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbisrKyBiL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xuQEAgLTExOSw2ICsxMTksNyBAQCBzdHJ1Y3QgYnBmX21lbV9jYWNoZSB7XG4gXHRzdHJ1Y3QgbGxpc3RfaGVhZCB3YWl0aW5nX2Zvcl9ncF90dHJhY2U7XG4gXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1X3R0cmFjZTtcbiBcdGF0b21pY190IGNhbGxfcmN1X3R0cmFjZV9pbl9wcm9ncmVzcztcbitcdHJhd19zcGlubG9ja190IGxvY2s7XG4gfTtcbiBcbiBzdHJ1Y3QgYnBmX21lbV9jYWNoZXMge1xuQEAgLTIwNyw2ICsyMDgsNyBAQCBzdGF0aWMgdm9pZCBhZGRfb2JqX3RvX2ZyZWVfbGlzdChzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKVxuIHN0YXRpYyB2b2lkIGFsbG9jX2J1bGsoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjbnQsIGludCBub2RlLCBib29sIGF0b21pYylcbiB7XG4gXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBOVUxMLCAqb2xkX21lbWNnO1xuK1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdGdmcF90IGdmcDtcbiBcdHZvaWQgKm9iajtcbiBcdGludCBpO1xuQEAgLTIyOCwxMiArMjMwLDE0IEBAIHN0YXRpYyB2b2lkIGFsbG9jX2J1bGsoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjbnQsIGludCBub2RlLCBib29sIGF0b21pYylcbiBcdGlmIChpIFx1MDAzZT0gY250KVxuIFx0XHRyZXR1cm47XG4gXG4rXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRmb3IgKDsgaSBcdTAwM2MgY250OyBpKyspIHtcbi1cdFx0b2JqID0gbGxpc3RfZGVsX2ZpcnN0KFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbitcdFx0b2JqID0gX19sbGlzdF9kZWxfZmlyc3QoXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xuIFx0XHRpZiAoIW9iailcbiBcdFx0XHRicmVhaztcbiBcdFx0YWRkX29ial90b19mcmVlX2xpc3QoYywgb2JqKTtcbiBcdH1cbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0aWYgKGkgXHUwMDNlPSBjbnQpXG4gXHRcdHJldHVybjtcbiBcbkBAIC0yNzksOCArMjgzLDE0IEBAIHN0YXRpYyBpbnQgZnJlZV9hbGwoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGUsIGJvb2wgcGVyXG4gc3RhdGljIHZvaWQgX19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4ge1xuIFx0c3RydWN0IGJwZl9tZW1fY2FjaGUgKmMgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IGJwZl9tZW1fY2FjaGUsIHJjdV90dHJhY2UpO1xuK1x0c3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZTtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXG4tXHRmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKSwgISFjLVx1MDAzZXBlcmNwdV9zaXplKTtcbitcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdGxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSk7XG4rXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcbitcdGZyZWVfYWxsKGMsIGxsbm9kZSwgISFjLVx1MDAzZXBlcmNwdV9zaXplKTtcbiBcdGF0b21pY19zZXQoXHUwMDI2Yy1cdTAwM2VjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3MsIDApO1xuIH1cbiBcbkBAIC0yOTcsNiArMzA3LDcgQEAgc3RhdGljIHZvaWQgZW5xdWVfdG9fZnJlZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKVxuIHN0YXRpYyB2b2lkIGRvX2NhbGxfcmN1X3R0cmFjZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcbiB7XG4gXHRzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlLCAqdDtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXG4gXHRpZiAoYXRvbWljX3hjaGcoXHUwMDI2Yy1cdTAwM2VjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3MsIDEpKSB7XG4gXHRcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoYy1cdTAwM2VkcmFpbmluZykpKSB7XG5AQCAtMzA3LDggKzMxOCwxMCBAQCBzdGF0aWMgdm9pZCBkb19jYWxsX3JjdV90dHJhY2Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXG4gXHR9XG4gXG4gXHRXQVJOX09OX09OQ0UoIWxsaXN0X2VtcHR5KFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKSk7XG4rXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRsbGlzdF9mb3JfZWFjaF9zYWZlKGxsbm9kZSwgdCwgbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZWZyZWVfYnlfcmN1X3R0cmFjZSkpXG4tXHRcdGxsaXN0X2FkZChsbG5vZGUsIFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbitcdFx0X19sbGlzdF9hZGQobGxub2RlLCBcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSk7XG4rXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoYy1cdTAwM2VkcmFpbmluZykpKSB7XG4gXHRcdF9fZnJlZV9yY3UoXHUwMDI2Yy1cdTAwM2VyY3VfdHRyYWNlKTtcbkBAIC01MzUsNiArNTQ4LDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcbiBcdFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdFx0Yy1cdTAwM2VwZXJjcHVfc2l6ZSA9IHBlcmNwdV9zaXplO1xuIFx0XHRcdGMtXHUwMDNldGd0ID0gYztcbitcdFx0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRpbml0X3JlZmlsbF93b3JrKGMpO1xuIFx0XHRcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XG4gXHRcdH1cbkBAIC01NTcsNyArNTcxLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcbiBcdFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdFx0Yy1cdTAwM2VwZXJjcHVfc2l6ZSA9IHBlcmNwdV9zaXplO1xuIFx0XHRcdGMtXHUwMDNldGd0ID0gYztcbi1cbitcdFx0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRpbml0X3JlZmlsbF93b3JrKGMpO1xuIFx0XHRcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XG4gXHRcdH1cbkBAIC02MDksNyArNjIzLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKVxuIFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdGMtXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcbiBcdFx0Yy1cdTAwM2V0Z3QgPSBjO1xuLVxuK1x0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0aW5pdF9yZWZpbGxfd29yayhjKTtcbiBcdFx0cHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTtcbiBcdH1cbkBAIC02MjAsNiArNjM0LDggQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKVxuIHN0YXRpYyB2b2lkIGRyYWluX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcbiB7XG4gXHRib29sIHBlcmNwdSA9ICEhYy1cdTAwM2VwZXJjcHVfc2l6ZTtcbitcdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XG4rXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFxuIFx0LyogTm8gcHJvZ3MgYXJlIHVzaW5nIHRoaXMgYnBmX21lbV9jYWNoZSwgYnV0IGh0YWJfbWFwX2ZyZWUoKSBjYWxsZWRcbiBcdCAqIGJwZl9tZW1fY2FjaGVfZnJlZSgpIGZvciBhbGwgcmVtYWluaW5nIGVsZW1lbnRzIGFuZCB0aGV5IGNhbiBiZSBpblxuQEAgLTYyOSw3ICs2NDUsMTAgQEAgc3RhdGljIHZvaWQgZHJhaW5fbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxuIFx0ICogb24gdGhlc2UgbGlzdHMsIHNvIGl0IGlzIHNhZmUgdG8gdXNlIF9fbGxpc3RfZGVsX2FsbCgpLlxuIFx0ICovXG4gXHRmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNlZnJlZV9ieV9yY3VfdHRyYWNlKSwgcGVyY3B1KTtcbi1cdGZyZWVfYWxsKGMsIGxsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpLCBwZXJjcHUpO1xuK1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0bGxub2RlID0gX19sbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0ZnJlZV9hbGwoYywgbGxub2RlLCBwZXJjcHUpO1xuIFx0ZnJlZV9hbGwoYywgX19sbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNlZnJlZV9sbGlzdCksIHBlcmNwdSk7XG4gXHRmcmVlX2FsbChjLCBfX2xsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2VmcmVlX2xsaXN0X2V4dHJhKSwgcGVyY3B1KTtcbiBcdGZyZWVfYWxsKGMsIF9fbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZWZyZWVfYnlfcmN1KSwgcGVyY3B1KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjM5OjQ5LjYyMjM2Njk5MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDk1NDIxOTk4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgTWVtb3J5IEFsbG9jYXRvciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgY29uY3VycmVuY3kgZml4IGluIGBrZXJuZWwvYnBmL21lbWFsbG9jLmNgLiBNeSBpbml0aWFsIHJlYWQgdGVsbHMgbWUgaXQncyBhZGRpbmcgYSBgcmF3X3NwaW5sb2NrX3QgbG9ja2AgdG8gdGhlIGBicGZfbWVtX2NhY2hlYCBzdHJ1Y3R1cmUuIFRoZSBtYWluIHRocnVzdCBpcyByZXBsYWNpbmcgdGhlIGF0b21pYyBsaXN0IG9wZXJhdGlvbnMgKGBsbGlzdF9kZWxfZmlyc3RgLCBgbGxpc3RfZGVsX2FsbGAsIGBsbGlzdF9hZGRgKSB3aXRoIHRoZWlyIG5vbi1hdG9taWMgY291bnRlcnBhcnRzIChgX19sbGlzdF9kZWxfZmlyc3RgLCBgX19sbGlzdF9kZWxfYWxsYCwgYF9fbGxpc3RfYWRkYCkgd2hlbiBkZWFsaW5nIHdpdGggYGMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlYCwgYW5kIHdyYXBwaW5nIHRob3NlIG9wZXJhdGlvbnMgd2l0aCBgcmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpYC4gVGhpcyBpcyBjbGVhcmx5IGRlc2lnbmVkIHRvIHByb3RlY3QgdGhlIGxpc3QgZnJvbSByYWNlIGNvbmRpdGlvbnMgYXJpc2luZyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzIGZyb20gbXVsdGlwbGUgQ1BVcyBvciBjb250ZXh0cy5cblxuVGhlIHBhdGNoIGl0c2VsZiBkb2Vzbid0IHRvdWNoIGFueXRoaW5nIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcywgb3IgbWVtb3J5IGNvbnRlbnRzIGRpcmVjdGx5LiBUaGUgYnVncyB0aGlzIGFpbXMgdG8gZml4IGFyZSBhbGwgYWJvdXQgcmFjZSBjb25kaXRpb25zIG9yIGRhdGEgY29ycnVwdGlvbiB3aXRoaW4gdGhlIGxpc3QgaXRzZWxmLCB3aGljaCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gKHVzZS1hZnRlci1mcmVlLCBvdXQtb2YtYm91bmRzIGR1ZSB0byBsaXN0IGNvcnJ1cHRpb24pIG9yIEtDU0FOIChkYXRhIHJhY2VzKSwgb3IgbGVhZCB0byBzdHJhaWdodGZvcndhcmQga2VybmVsIHBhbmljcy5cblxuTGV0J3MgZG8gYSBxdWljayB3YWxrLXRocm91Z2ggdG8gY29uZmlybS4gYGFsbG9jX2J1bGtgLCBgX19mcmVlX3JjdWAsIGBkb19jYWxsX3JjdV90dHJhY2VgLCBhbmQgYGRyYWluX21lbV9jYWNoZWAgYWxsIG5vdyBjb3JyZWN0bHkgYWNxdWlyZSB0aGUgbG9jayBgYy1cdTAwM2Vsb2NrYCBiZWZvcmUgbWFuaXB1bGF0aW5nIGBjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgdXNpbmcgdGhlIG5vbi1hdG9taWMgbGlzdCBmdW5jdGlvbnMuIGBicGZfbWVtX2FsbG9jX2luaXRgIGFuZCBgYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0YCBjb3JyZWN0bHkgaW5pdGlhbGl6ZSB0aGUgbG9jay5cblxuSXQncyBwdXJlbHkgYSBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gY2hhbmdlIHRvIHByb3RlY3QgYSBsaW5rZWQgbGlzdC4gTm8gbmV3IHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIE15IGNvbmNsdXNpb24gaXMgdGhhdCBLTVNBTiBpcyBub3QgbmVjZXNzYXJ5IGhlcmUuIEknbGwgZG9jdW1lbnQgbXkgcmVhc29uaW5nIGFuZCBzZXQgYE5lZWRzS01TQU5gIHRvIGZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzEyLCJPdXRwdXRUb2tlbnMiOjIwNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjQwOjQwLjU3NjU4OTQ4NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHJhd19zcGlubG9ja190IHRvIHByb3RlY3QgY29uY3VycmVudCBhY2Nlc3NlcyB0byB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbGlua2VkIGxpc3QgaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yLiBJdCByZXBsYWNlcyBhdG9taWMgbG9ja2xlc3MgbGlzdCBvcGVyYXRpb25zIChsbGlzdF9kZWxfZmlyc3QsIGxsaXN0X2RlbF9hbGwsIGxsaXN0X2FkZCkgd2l0aCB0aGVpciBub24tYXRvbWljIGNvdW50ZXJwYXJ0cyBwcm90ZWN0ZWQgYnkgdGhlIG5ldyBzcGlubG9jay4gVGhpcyBpcyBwdXJlbHkgYSBjb25jdXJyZW5jeSBhbmQgc3luY2hyb25pemF0aW9uIGZpeCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhbmQgZGF0YSByYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uIGxvZ2ljIG9yIGJvdW5kcyBjaGVja2luZy4gQW55IGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNvZGUgKHN1Y2ggYXMgbGlzdCBjb3JydXB0aW9uIGxlYWRpbmcgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtDU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHJhd19zcGlubG9ja190IHRvIHByb3RlY3QgY29uY3VycmVudCBhY2Nlc3NlcyB0byB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbGlua2VkIGxpc3QgaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yLiBJdCByZXBsYWNlcyBhdG9taWMgbG9ja2xlc3MgbGlzdCBvcGVyYXRpb25zIChsbGlzdF9kZWxfZmlyc3QsIGxsaXN0X2RlbF9hbGwsIGxsaXN0X2FkZCkgd2l0aCB0aGVpciBub24tYXRvbWljIGNvdW50ZXJwYXJ0cyBwcm90ZWN0ZWQgYnkgdGhlIG5ldyBzcGlubG9jay4gVGhpcyBpcyBwdXJlbHkgYSBjb25jdXJyZW5jeSBhbmQgc3luY2hyb25pemF0aW9uIGZpeCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhbmQgZGF0YSByYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uIGxvZ2ljIG9yIGJvdW5kcyBjaGVja2luZy4gQW55IGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNvZGUgKHN1Y2ggYXMgbGlzdCBjb3JydXB0aW9uIGxlYWRpbmcgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtDU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7wlc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-27 08:42:41 +0000 UTC FinishedAt: 2026-08-27 09:40:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "ce6dcd0aed185432d02cafc82b738318af257ccd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "ce6dcd0aed185432d02cafc82b738318af257ccd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "f77e9c68-7d16-4a38-9550-e0437897671e" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_mem_alloc_init", "bpf_mem_alloc_percpu_init", "bpf_mem_alloc_percpu_unit_init", "bpf_mem_alloc_destroy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "5ac25989-0260-4506-a08a-25fa6e4957e7", "d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4", "f322b4d1-7f66-454a-80ff-6ed13eb274aa", "40ff44c7-989e-4e59-a57c-7d669c0abd76" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA5OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX21lbV9hbGxvY19pbml0JiMzNDssCiAgICAmIzM0O2JwZl9tZW1fYWxsb2NfcGVyY3B1X2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0JiMzNDssCiAgICAmIzM0O2JwZl9tZW1fYWxsb2NfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSByYXdfc3BpbmxvY2tfdCB0byBwcm90ZWN0IGNvbmN1cnJlbnQgYWNjZXNzZXMgdG8gdGhlIGB3YWl0aW5nX2Zvcl9ncF90dHJhY2VgIGxpbmtlZCBsaXN0IGluIHRoZSBCUEYgbWVtb3J5IGFsbG9jYXRvci4gSXQgcmVwbGFjZXMgYXRvbWljIGxvY2tsZXNzIGxpc3Qgb3BlcmF0aW9ucyAobGxpc3RfZGVsX2ZpcnN0LCBsbGlzdF9kZWxfYWxsLCBsbGlzdF9hZGQpIHdpdGggdGhlaXIgbm9uLWF0b21pYyBjb3VudGVycGFydHMgcHJvdGVjdGVkIGJ5IHRoZSBuZXcgc3BpbmxvY2suIFRoaXMgaXMgcHVyZWx5IGEgY29uY3VycmVuY3kgYW5kIHN5bmNocm9uaXphdGlvbiBmaXggdG8gcHJldmVudCBsaXN0IGNvcnJ1cHRpb24gYW5kIGRhdGEgcmFjZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiBsb2dpYyBvciBib3VuZHMgY2hlY2tpbmcuIEFueSBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIChzdWNoIGFzIGxpc3QgY29ycnVwdGlvbiBsZWFkaW5nIHRvIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBLQ1NBTi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBCUEYgbWVtb3J5IGFsbG9jYXRvciBieSBpbnRyb2R1Y2luZyBhIHJhdyBzcGlubG9jayB0byBwcm90ZWN0IHRoZSBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYCBsb2NrbGVzcyBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBCUEYgbWFwIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyYWYzMDU1ODc4YjZmODdmODMyYWRlOWRhOTlhMjNmMWYzYzhiMGM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMDk6Mzg6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9tZW1hbGxvYy5jIGIva2VybmVsL2JwZi9tZW1hbGxvYy5jXG5pbmRleCBlOTY2MmRiNzE5OGZlLi41ODI5NmU5MmE0ZmVkIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9tZW1hbGxvYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbkBAIC0xMTksNiAmIzQzOzExOSw3IEBAIHN0cnVjdCBicGZfbWVtX2NhY2hlIHtcbiBcdHN0cnVjdCBsbGlzdF9oZWFkIHdhaXRpbmdfZm9yX2dwX3R0cmFjZTtcbiBcdHN0cnVjdCByY3VfaGVhZCByY3VfdHRyYWNlO1xuIFx0YXRvbWljX3QgY2FsbF9yY3VfdHRyYWNlX2luX3Byb2dyZXNzO1xuJiM0MztcdHJhd19zcGlubG9ja190IGxvY2s7XG4gfTtcbiBcbiBzdHJ1Y3QgYnBmX21lbV9jYWNoZXMge1xuQEAgLTIwNyw2ICYjNDM7MjA4LDcgQEAgc3RhdGljIHZvaWQgYWRkX29ial90b19mcmVlX2xpc3Qoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHZvaWQgKm9iailcbiBzdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpXG4ge1xuIFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnID0gTlVMTCwgKm9sZF9tZW1jZztcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0Z2ZwX3QgZ2ZwO1xuIFx0dm9pZCAqb2JqO1xuIFx0aW50IGk7XG5AQCAtMjI4LDEyICYjNDM7MjMwLDE0IEBAIHN0YXRpYyB2b2lkIGFsbG9jX2J1bGsoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjbnQsIGludCBub2RlLCBib29sIGF0b21pYylcbiBcdGlmIChpIFx1MDAzZT0gY250KVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0Zm9yICg7IGkgXHUwMDNjIGNudDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0b2JqID0gbGxpc3RfZGVsX2ZpcnN0KFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbiYjNDM7XHRcdG9iaiA9IF9fbGxpc3RfZGVsX2ZpcnN0KFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbiBcdFx0aWYgKCFvYmopXG4gXHRcdFx0YnJlYWs7XG4gXHRcdGFkZF9vYmpfdG9fZnJlZV9saXN0KGMsIG9iaik7XG4gXHR9XG4mIzQzO1x0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRpZiAoaSBcdTAwM2U9IGNudClcbiBcdFx0cmV0dXJuO1xuIFxuQEAgLTI3OSw4ICYjNDM7MjgzLDE0IEBAIHN0YXRpYyBpbnQgZnJlZV9hbGwoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGUsIGJvb2wgcGVyXG4gc3RhdGljIHZvaWQgX19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4ge1xuIFx0c3RydWN0IGJwZl9tZW1fY2FjaGUgKmMgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IGJwZl9tZW1fY2FjaGUsIHJjdV90dHJhY2UpO1xuJiM0MztcdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcbi1cdGZyZWVfYWxsKGMsIGxsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpLCAhIWMtXHUwMDNlcGVyY3B1X3NpemUpO1xuJiM0MztcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRsbG5vZGUgPSBfX2xsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xuJiM0MztcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRmcmVlX2FsbChjLCBsbG5vZGUsICEhYy1cdTAwM2VwZXJjcHVfc2l6ZSk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNmMtXHUwMDNlY2FsbF9yY3VfdHRyYWNlX2luX3Byb2dyZXNzLCAwKTtcbiB9XG4gXG5AQCAtMjk3LDYgJiM0MzszMDcsNyBAQCBzdGF0aWMgdm9pZCBlbnF1ZV90b19mcmVlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCB2b2lkICpvYmopXG4gc3RhdGljIHZvaWQgZG9fY2FsbF9yY3VfdHRyYWNlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxuIHtcbiBcdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGUsICp0O1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXG4gXHRpZiAoYXRvbWljX3hjaGcoXHUwMDI2Yy1cdTAwM2VjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3MsIDEpKSB7XG4gXHRcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoYy1cdTAwM2VkcmFpbmluZykpKSB7XG5AQCAtMzA3LDggJiM0MzszMTgsMTAgQEAgc3RhdGljIHZvaWQgZG9fY2FsbF9yY3VfdHRyYWNlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxuIFx0fVxuIFxuIFx0V0FSTl9PTl9PTkNFKCFsbGlzdF9lbXB0eShcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSkpO1xuJiM0MztcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcdGxsaXN0X2Zvcl9lYWNoX3NhZmUobGxub2RlLCB0LCBsbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNlZnJlZV9ieV9yY3VfdHRyYWNlKSlcbi1cdFx0bGxpc3RfYWRkKGxsbm9kZSwgXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xuJiM0MztcdFx0X19sbGlzdF9hZGQobGxub2RlLCBcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSk7XG4mIzQzO1x0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHRpZiAodW5saWtlbHkoUkVBRF9PTkNFKGMtXHUwMDNlZHJhaW5pbmcpKSkge1xuIFx0XHRfX2ZyZWVfcmN1KFx1MDAyNmMtXHUwMDNlcmN1X3R0cmFjZSk7XG5AQCAtNTM1LDYgJiM0Mzs1NDgsNyBAQCBpbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KVxuIFx0XHRcdGMtXHUwMDNlb2JqY2cgPSBvYmpjZztcbiBcdFx0XHRjLVx1MDAzZXBlcmNwdV9zaXplID0gcGVyY3B1X3NpemU7XG4gXHRcdFx0Yy1cdTAwM2V0Z3QgPSBjO1xuJiM0MztcdFx0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRpbml0X3JlZmlsbF93b3JrKGMpO1xuIFx0XHRcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XG4gXHRcdH1cbkBAIC01NTcsNyAmIzQzOzU3MSw3IEBAIGludCBicGZfbWVtX2FsbG9jX2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSwgYm9vbCBwZXJjcHUpXG4gXHRcdFx0Yy1cdTAwM2VvYmpjZyA9IG9iamNnO1xuIFx0XHRcdGMtXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcbiBcdFx0XHRjLVx1MDAzZXRndCA9IGM7XG4tXG4mIzQzO1x0XHRcdHJhd19zcGluX2xvY2tfaW5pdChcdTAwMjZjLVx1MDAzZWxvY2spO1xuIFx0XHRcdGluaXRfcmVmaWxsX3dvcmsoYyk7XG4gXHRcdFx0cHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTtcbiBcdFx0fVxuQEAgLTYwOSw3ICYjNDM7NjIzLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKVxuIFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdGMtXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcbiBcdFx0Yy1cdTAwM2V0Z3QgPSBjO1xuLVxuJiM0MztcdFx0cmF3X3NwaW5fbG9ja19pbml0KFx1MDAyNmMtXHUwMDNlbG9jayk7XG4gXHRcdGluaXRfcmVmaWxsX3dvcmsoYyk7XG4gXHRcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XG4gXHR9XG5AQCAtNjIwLDYgJiM0Mzs2MzQsOCBAQCBpbnQgYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUpXG4gc3RhdGljIHZvaWQgZHJhaW5fbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxuIHtcbiBcdGJvb2wgcGVyY3B1ID0gISFjLVx1MDAzZXBlcmNwdV9zaXplO1xuJiM0MztcdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcbiBcdC8qIE5vIHByb2dzIGFyZSB1c2luZyB0aGlzIGJwZl9tZW1fY2FjaGUsIGJ1dCBodGFiX21hcF9mcmVlKCkgY2FsbGVkXG4gXHQgKiBicGZfbWVtX2NhY2hlX2ZyZWUoKSBmb3IgYWxsIHJlbWFpbmluZyBlbGVtZW50cyBhbmQgdGhleSBjYW4gYmUgaW5cbkBAIC02MjksNyAmIzQzOzY0NSwxMCBAQCBzdGF0aWMgdm9pZCBkcmFpbl9tZW1fY2FjaGUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXG4gXHQgKiBvbiB0aGVzZSBsaXN0cywgc28gaXQgaXMgc2FmZSB0byB1c2UgX19sbGlzdF9kZWxfYWxsKCkuXG4gXHQgKi9cbiBcdGZyZWVfYWxsKGMsIGxsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2VmcmVlX2J5X3JjdV90dHJhY2UpLCBwZXJjcHUpO1xuLVx0ZnJlZV9hbGwoYywgbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSksIHBlcmNwdSk7XG4mIzQzO1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdGxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSk7XG4mIzQzO1x0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0ZnJlZV9hbGwoYywgbGxub2RlLCBwZXJjcHUpO1xuIFx0ZnJlZV9hbGwoYywgX19sbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNlZnJlZV9sbGlzdCksIHBlcmNwdSk7XG4gXHRmcmVlX2FsbChjLCBfX2xsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2VmcmVlX2xsaXN0X2V4dHJhKSwgcGVyY3B1KTtcbiBcdGZyZWVfYWxsKGMsIF9fbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZWZyZWVfYnlfcmN1KSwgcGVyY3B1KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfbWVtX2FsbG9jX2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19wZXJjcHVfaW5pdCYjMzQ7LAogICAgJiMzNDticGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19kZXN0cm95JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGJ5IGludHJvZHVjaW5nIGEgcmF3IHNwaW5sb2NrIHRvIHByb3RlY3QgdGhlIGB3YWl0aW5nX2Zvcl9ncF90dHJhY2VgIGxvY2tsZXNzIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdmlhIEJQRiBtYXAgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJhZjMwNTU4NzhiNmY4N2Y4MzJhZGU5ZGE5OWEyM2YxZjNjOGIwYzYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyNyAwOTozODo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvbWVtYWxsb2MuYyBiL2tlcm5lbC9icGYvbWVtYWxsb2MuYwppbmRleCBlOTY2MmRiNzE5OGZlLi41ODI5NmU5MmE0ZmVkIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL21lbWFsbG9jLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9tZW1hbGxvYy5jCkBAIC0xMTksNiAmIzQzOzExOSw3IEBAIHN0cnVjdCBicGZfbWVtX2NhY2hlIHsKIAlzdHJ1Y3QgbGxpc3RfaGVhZCB3YWl0aW5nX2Zvcl9ncF90dHJhY2U7CiAJc3RydWN0IHJjdV9oZWFkIHJjdV90dHJhY2U7CiAJYXRvbWljX3QgY2FsbF9yY3VfdHRyYWNlX2luX3Byb2dyZXNzOwomIzQzOwlyYXdfc3BpbmxvY2tfdCBsb2NrOwogfTsKIAogc3RydWN0IGJwZl9tZW1fY2FjaGVzIHsKQEAgLTIwNyw2ICYjNDM7MjA4LDcgQEAgc3RhdGljIHZvaWQgYWRkX29ial90b19mcmVlX2xpc3Qoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHZvaWQgKm9iaikKIHN0YXRpYyB2b2lkIGFsbG9jX2J1bGsoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjbnQsIGludCBub2RlLCBib29sIGF0b21pYykKIHsKIAlzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBOVUxMLCAqb2xkX21lbWNnOwomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWdmcF90IGdmcDsKIAl2b2lkICpvYmo7CiAJaW50IGk7CkBAIC0yMjgsMTIgJiM0MzsyMzAsMTQgQEAgc3RhdGljIHZvaWQgYWxsb2NfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNudCwgaW50IG5vZGUsIGJvb2wgYXRvbWljKQogCWlmIChpICZndDs9IGNudCkKIAkJcmV0dXJuOwogCiYjNDM7CXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2MtJmd0O2xvY2ssIGZsYWdzKTsKIAlmb3IgKDsgaSAmbHQ7IGNudDsgaSYjNDM7JiM0MzspIHsKLQkJb2JqID0gbGxpc3RfZGVsX2ZpcnN0KCZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKTsKJiM0MzsJCW9iaiA9IF9fbGxpc3RfZGVsX2ZpcnN0KCZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKTsKIAkJaWYgKCFvYmopCiAJCQlicmVhazsKIAkJYWRkX29ial90b19mcmVlX2xpc3QoYywgb2JqKTsKIAl9CiYjNDM7CXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7Yy0mZ3Q7bG9jaywgZmxhZ3MpOwogCWlmIChpICZndDs9IGNudCkKIAkJcmV0dXJuOwogCkBAIC0yNzksOCAmIzQzOzI4MywxNCBAQCBzdGF0aWMgaW50IGZyZWVfYWxsKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlLCBib29sIHBlcgogc3RhdGljIHZvaWQgX19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCiB7CiAJc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IGJwZl9tZW1fY2FjaGUsIHJjdV90dHJhY2UpOwomIzQzOwlzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlOwomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JZnJlZV9hbGwoYywgbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O3dhaXRpbmdfZm9yX2dwX3R0cmFjZSksICEhYy0mZ3Q7cGVyY3B1X3NpemUpOwomIzQzOwlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CWxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O3dhaXRpbmdfZm9yX2dwX3R0cmFjZSk7CiYjNDM7CXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7Yy0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwomIzQzOwlmcmVlX2FsbChjLCBsbG5vZGUsICEhYy0mZ3Q7cGVyY3B1X3NpemUpOwogCWF0b21pY19zZXQoJmFtcDtjLSZndDtjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3MsIDApOwogfQogCkBAIC0yOTcsNiAmIzQzOzMwNyw3IEBAIHN0YXRpYyB2b2lkIGVucXVlX3RvX2ZyZWUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHZvaWQgKm9iaikKIHN0YXRpYyB2b2lkIGRvX2NhbGxfcmN1X3R0cmFjZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYykKIHsKIAlzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlLCAqdDsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWlmIChhdG9taWNfeGNoZygmYW1wO2MtJmd0O2NhbGxfcmN1X3R0cmFjZV9pbl9wcm9ncmVzcywgMSkpIHsKIAkJaWYgKHVubGlrZWx5KFJFQURfT05DRShjLSZndDtkcmFpbmluZykpKSB7CkBAIC0zMDcsOCAmIzQzOzMxOCwxMCBAQCBzdGF0aWMgdm9pZCBkb19jYWxsX3JjdV90dHJhY2Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpCiAJfQogCiAJV0FSTl9PTl9PTkNFKCFsbGlzdF9lbXB0eSgmYW1wO2MtJmd0O3dhaXRpbmdfZm9yX2dwX3R0cmFjZSkpOwomIzQzOwlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjLSZndDtsb2NrLCBmbGFncyk7CiAJbGxpc3RfZm9yX2VhY2hfc2FmZShsbG5vZGUsIHQsIGxsaXN0X2RlbF9hbGwoJmFtcDtjLSZndDtmcmVlX2J5X3JjdV90dHJhY2UpKQotCQlsbGlzdF9hZGQobGxub2RlLCAmYW1wO2MtJmd0O3dhaXRpbmdfZm9yX2dwX3R0cmFjZSk7CiYjNDM7CQlfX2xsaXN0X2FkZChsbG5vZGUsICZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKTsKJiM0MzsJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtjLSZndDtsb2NrLCBmbGFncyk7CiAKIAlpZiAodW5saWtlbHkoUkVBRF9PTkNFKGMtJmd0O2RyYWluaW5nKSkpIHsKIAkJX19mcmVlX3JjdSgmYW1wO2MtJmd0O3JjdV90dHJhY2UpOwpAQCAtNTM1LDYgJiM0Mzs1NDgsNyBAQCBpbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KQogCQkJYy0mZ3Q7b2JqY2cgPSBvYmpjZzsKIAkJCWMtJmd0O3BlcmNwdV9zaXplID0gcGVyY3B1X3NpemU7CiAJCQljLSZndDt0Z3QgPSBjOwomIzQzOwkJCXJhd19zcGluX2xvY2tfaW5pdCgmYW1wO2MtJmd0O2xvY2spOwogCQkJaW5pdF9yZWZpbGxfd29yayhjKTsKIAkJCXByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7CiAJCX0KQEAgLTU1Nyw3ICYjNDM7NTcxLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSkKIAkJCWMtJmd0O29iamNnID0gb2JqY2c7CiAJCQljLSZndDtwZXJjcHVfc2l6ZSA9IHBlcmNwdV9zaXplOwogCQkJYy0mZ3Q7dGd0ID0gYzsKLQomIzQzOwkJCXJhd19zcGluX2xvY2tfaW5pdCgmYW1wO2MtJmd0O2xvY2spOwogCQkJaW5pdF9yZWZpbGxfd29yayhjKTsKIAkJCXByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7CiAJCX0KQEAgLTYwOSw3ICYjNDM7NjIzLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKQogCQljLSZndDtvYmpjZyA9IG9iamNnOwogCQljLSZndDtwZXJjcHVfc2l6ZSA9IHBlcmNwdV9zaXplOwogCQljLSZndDt0Z3QgPSBjOwotCiYjNDM7CQlyYXdfc3Bpbl9sb2NrX2luaXQoJmFtcDtjLSZndDtsb2NrKTsKIAkJaW5pdF9yZWZpbGxfd29yayhjKTsKIAkJcHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTsKIAl9CkBAIC02MjAsNiAmIzQzOzYzNCw4IEBAIGludCBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSkKIHN0YXRpYyB2b2lkIGRyYWluX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYykKIHsKIAlib29sIHBlcmNwdSA9ICEhYy0mZ3Q7cGVyY3B1X3NpemU7CiYjNDM7CXN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAkvKiBObyBwcm9ncyBhcmUgdXNpbmcgdGhpcyBicGZfbWVtX2NhY2hlLCBidXQgaHRhYl9tYXBfZnJlZSgpIGNhbGxlZAogCSAqIGJwZl9tZW1fY2FjaGVfZnJlZSgpIGZvciBhbGwgcmVtYWluaW5nIGVsZW1lbnRzIGFuZCB0aGV5IGNhbiBiZSBpbgpAQCAtNjI5LDcgJiM0Mzs2NDUsMTAgQEAgc3RhdGljIHZvaWQgZHJhaW5fbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKQogCSAqIG9uIHRoZXNlIGxpc3RzLCBzbyBpdCBpcyBzYWZlIHRvIHVzZSBfX2xsaXN0X2RlbF9hbGwoKS4KIAkgKi8KIAlmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7ZnJlZV9ieV9yY3VfdHRyYWNlKSwgcGVyY3B1KTsKLQlmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKSwgcGVyY3B1KTsKJiM0MzsJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZhbXA7Yy0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwlsbG5vZGUgPSBfX2xsaXN0X2RlbF9hbGwoJmFtcDtjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2UpOwomIzQzOwlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2MtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJZnJlZV9hbGwoYywgbGxub2RlLCBwZXJjcHUpOwogCWZyZWVfYWxsKGMsIF9fbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O2ZyZWVfbGxpc3QpLCBwZXJjcHUpOwogCWZyZWVfYWxsKGMsIF9fbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O2ZyZWVfbGxpc3RfZXh0cmEpLCBwZXJjcHUpOwogCWZyZWVfYWxsKGMsIF9fbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O2ZyZWVfYnlfcmN1KSwgcGVyY3B1KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxNQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgTWVtb3J5IEFsbG9jYXRvciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIG1ha2luZyBhIHNpZ25pZmljYW50IGNoYW5nZSB0byBga2VybmVsL2JwZi9tZW1hbGxvYy5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgYHJhd19zcGlubG9ja190IGxvY2tgIHdpdGhpbiB0aGUgYHN0cnVjdCBicGZfbWVtX2NhY2hlYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgaXQmIzM5O3MgYSBkaXJlY3QgYXR0ZW1wdCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIGBjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2VgLiBUaGV5JiMzOTt2ZSBzd2FwcGVkIG91dCB0aGUgYXRvbWljIGxpbmtlZCBsaXN0IG9wZXJhdGlvbnMgKGBsbGlzdF9kZWxfZmlyc3RgLCBgbGxpc3RfZGVsX2FsbGAsIGBsbGlzdF9hZGRgKSBmb3IgdGhlaXIgbm9uLWF0b21pYyBjb3VudGVycGFydHMgKGBfX2xsaXN0X2RlbF9maXJzdGAsIGBfX2xsaXN0X2RlbF9hbGxgLCBgX19sbGlzdF9hZGRgKSB1bmRlciB0aGUgcHJvdGVjdGlvbiBvZiB0aGlzIG5ldyBsb2NrLiBUaGlzIGlzIGEgc29saWQgYXBwcm9hY2ggdG8gcHJldmVudCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9uIGB3YWl0aW5nX2Zvcl9ncF90dHJhY2VgLCBhbmQgaXQgaXMgc2lnbmlmaWNhbnQsIGdpdmVuIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGlzIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGNvZGUuCgpUaGUgcXVlc3Rpb24gbm93IGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB3aXRob3V0IGEgZG91YnQuIEFueSBmdW5kYW1lbnRhbCBtb2RpZmljYXRpb24gdG8gbWVtb3J5IGFsbG9jYXRpb24gY29kZSBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUga2V5IHRhcmdldHM/IEkmIzM5O2QgaW5pdGlhbGx5IHplcm8gaW4gb24gYGFsbG9jX2J1bGtgLCBgX19mcmVlX3JjdWAsIGBkb19jYWxsX3JjdV90dHJhY2VgLCBhbmQgYGRyYWluX21lbV9jYWNoZWAuIEhvd2V2ZXIsIGEgcXVpY2sgY2hlY2sgcmVtaW5kcyBtZSB0aGF0IHRob3NlIGFyZSBhbGwgZGVjbGFyZWQgYHN0YXRpY2AuIFNvLCBsZXQmIzM5O3MgdHJhY2UgdGhlaXIgY2FsbGVycyB0byBmaW5kIHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgYnBmX21lbV9hbGxvY19pbml0YCwgYGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdGAsIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgLCBgYnBmX21lbV9jYWNoZV9hbGxvY2AsIGBicGZfbWVtX2NhY2hlX2ZyZWVgLCBhbmQgYGJwZl9tZW1fY2FjaGVfcmF3X2ZyZWVgIHRvIGZpbmQgYW55IGV4cG9ydGVkIG9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBrZXJuZWwvYnBmL21lbWFsbG9jLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oaW50fHZvaWR8c3RydWN0KS4qYnBmX21lbV8uKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvbWVtYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL21lbWFsbG9jLmM9NDk0PXN0YXRpYyB2b2lkIHByZWZpbGxfbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY3B1KVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTQtICovXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTE1OmludCBicGZfbWVtX2FsbG9jX2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSwgYm9vbCBwZXJjcHUpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNTE2LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNTgzLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjU4NDppbnQgYnBmX21lbV9hbGxvY19wZXJjcHVfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHN0cnVjdCBvYmpfY2dyb3VwICpvYmpjZylcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01ODUte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01OTctXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTk4OmludCBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01OTkte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYz03MzA9c3RhdGljIHZvaWQgZGVzdHJveV9tZW1fYWxsb2Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgcmN1X2luX3Byb2dyZXNzKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03NTQtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NzU1OnZvaWQgYnBmX21lbV9hbGxvY19kZXN0cm95KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03NTYte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYz04Nzg9c3RhdGljIHZvaWQgbm90cmFjZSB1bml0X2ZyZWVfcmN1KHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCB2b2lkICpwdHIpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTkwMS0gKi9cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5MDI6dm9pZCBub3RyYWNlICpicGZfbWVtX2FsbG9jKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc2l6ZV90IHNpemUpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTAzLXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTE5LVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjkyMDp2b2lkIG5vdHJhY2UgYnBmX21lbV9mcmVlKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgdm9pZCAqcHRyKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTkyMS17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTkzNS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5MzY6dm9pZCBub3RyYWNlIGJwZl9tZW1fZnJlZV9yY3Uoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTM3LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTUxLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk1Mjp2b2lkIG5vdHJhY2UgKmJwZl9tZW1fY2FjaGVfYWxsb2Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk1My17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk1OS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5NjA6dm9pZCBub3RyYWNlIGJwZl9tZW1fY2FjaGVfZnJlZShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKnB0cilcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NjEte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NjctXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTY4OnZvaWQgbm90cmFjZSBicGZfbWVtX2NhY2hlX2ZyZWVfcmN1KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgdm9pZCAqcHRyKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk2OS17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk4NS0gKi9cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5ODY6dm9pZCBicGZfbWVtX2NhY2hlX3Jhd19mcmVlKHZvaWQgKnB0cilcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05ODcte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05OTctICovXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTk4OnZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvY19mbGFncyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGdmcF90IGZsYWdzKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk5OS17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTEwMjAtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MTAyMTppbnQgYnBmX21lbV9hbGxvY19jaGVja19zaXplKGJvb2wgcGVyY3B1LCBzaXplX3Qgc2l6ZSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xMDIyLXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMTAzMC1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoxMDMxOnZvaWQgYnBmX21lbV9hbGxvY19zZXRfZHRvcihzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKCpkdG9yKSh2b2lkICpvYmosIHZvaWQgKmN0eCksXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMTAzMi1cdFx0XHQgICAgdm9pZCAoKmR0b3JfY3R4X2ZyZWUpKHZvaWQgKmN0eCksIHZvaWQgKmN0eClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzEzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIE1lbW9yeSBNYW5hZ2VtZW50IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gemVyb2VzIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGl0JiMzOTtzIHRvdWNoaW5nOiBgYWxsb2NfYnVsa2AsIGBfX2ZyZWVfcmN1YCwgYGRvX2NhbGxfcmN1X3R0cmFjZWAsIGBicGZfbWVtX2FsbG9jX2luaXRgLCBgYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0YCwgYW5kIGBkcmFpbl9tZW1fY2FjaGVgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4gUmlnaHQgYXdheSwgSSBzZWUgYGFsbG9jX2J1bGtgLCBhbmQgdGhhdCByaW5ncyBhbGFybSBiZWxscyDigJMgc3BlY2lmaWNhbGx5IGJlY2F1c2Ugb2YgaXRzIHJlbGF0aW9uc2hpcCB0byBgYnBmX21lbV9jYWNoZV9hbGxvY2AuIEl0IHNlZW1zIGxpa2UgYGFsbG9jX2J1bGtgIGlzIHVzZWQgd2hlbiB0aGUgbWVtb3J5IGNhY2hlIGlzIGVtcHR5LiBNYWtlcyBzZW5zZTsgeW91IG5lZWQgdG8gYnVsay1hbGxvY2F0ZSB3aGVuIHlvdSBoYXZlIHRvIHJlZmlsbCB0aGUgY2FjaGUuCgpOb3csIGBfX2ZyZWVfcmN1YCBqdW1wcyBvdXQgYXMgYW4gUkNVIGNhbGxiYWNrLiBPZiBjb3Vyc2UuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQsIHNvIFJDVSBtYWtlcyBwZXJmZWN0IHNlbnNlIGZvciBzYWZlIGZyZWVpbmcuIEFuZCB0aGF0IHB1bGxzIG15IGZvY3VzIHRvIGBkb19jYWxsX3JjdV90dHJhY2VgIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGBicGZfbWVtX2NhY2hlX2ZyZWVfcmN1YC4gU28sIGBkb19jYWxsX3JjdV90dHJhY2VgIGlzIGxpa2VseSBjYWxsZWQgYnkgc29tZXRoaW5nIHJlbGF0ZWQgdG8gZnJlZWluZyBjYWNoZSBpdGVtcywgbGlrZWx5IGluc2lkZSBvZiBhbiBSQ1UgY2FsbGJhY2suIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBleGFjdCBjYWxsIHBhdGhzLCBidXQgdGhhdCBzZWVtcyB0aGUgbW9zdCBsaWtlbHkgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9fY2FsbF9yY3VfdHRyYWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9tZW1hbGxvYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvbWVtYWxsb2MuYz0yOTc9c3RhdGljIHZvaWQgZW5xdWVfdG9fZnJlZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0zMDYtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MzA3OnN0YXRpYyB2b2lkIGRvX2NhbGxfcmN1X3R0cmFjZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0zMDgte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYz0zMzk9c3RhdGljIHZvaWQgZnJlZV9idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0zNjMtXHRcdGVucXVlX3RvX2ZyZWUodGd0LCBsbG5vZGUpO1xua2VybmVsL2JwZi9tZW1hbGxvYy5jOjM2NDpcdGRvX2NhbGxfcmN1X3R0cmFjZSh0Z3QpO1xua2VybmVsL2JwZi9tZW1hbGxvYy5jLTM2NS19XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTM2Nz1zdGF0aWMgdm9pZCBfX2ZyZWVfYnlfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMzgyLVx0LyogT2JqZWN0cyB3ZW50IHRocm91Z2ggcmVndWxhciBSQ1UgR1AuIFNlbmQgdGhlbSB0byBSQ1UgdGFza3MgdHJhY2UgKi9cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzozODM6XHRkb19jYWxsX3JjdV90dHJhY2UodGd0KTtcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0zODQtb3V0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NjQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTWVudGFsIFdhbGsgVGhyb3VnaCB0aGUgQlBGIE1lbW9yeSBNYW5hZ2VtZW50IENvZGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgZG9fY2FsbF9yY3VfdHRyYWNlYCBpcyBjYWxsZWQgZnJvbSB0d28ga2V5IGZ1bmN0aW9ucywgYGZyZWVfYnVsa2AgYW5kIGBfX2ZyZWVfYnlfcmN1YC4gYGZyZWVfYnVsa2AgaXMgdGhlbiB0cmlnZ2VyZWQgZWl0aGVyIHRocm91Z2ggYGJwZl9tZW1fY2FjaGVfZnJlZWAgb3IgYGJwZl9tZW1fZnJlZWAsIHNwZWNpZmljYWxseSB3aGVuIHRoZSBjYWNoZSByZWFjaGVzIGNhcGFjaXR5LiBJIG5lZWQgdG8ga2VlcCB0aGF0IGNhbGwgc3RhY2sgaW4gbWluZC4gVGhlIGluaXRpYWxpemF0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiB0aGlzIG1lbW9yeSBtYW5hZ2VtZW50IHN5c3RlbSBpcyBhbGwgbWFuYWdlZCB0aHJvdWdoIGBicGZfbWVtX2FsbG9jX2luaXRgLCBgYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0YCwgYW5kIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgLgoKVGhlIHJlYWxseSBjb3JlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlIHRoZXNlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucywgdGhlc2UgYXJlOgoqICAgYGJwZl9tZW1fYWxsb2NgCiogICBgYnBmX21lbV9mcmVlYAoqICAgYGJwZl9tZW1fZnJlZV9yY3VgCiogICBgYnBmX21lbV9jYWNoZV9hbGxvY2AKKiAgIGBicGZfbWVtX2NhY2hlX2ZyZWVgCiogICBgYnBmX21lbV9jYWNoZV9mcmVlX3JjdWAKKiAgIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgCgpOb3cgSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseS4gSXQgc2VlbXMgbGlrZSB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3ImIzM5O3MgYXZhaWxhYmlsaXR5IGlzIGNvbnRyb2xsZWQgYnkgdGhlIGBDT05GSUdfQlBGX1NZU0NBTExgIGNvbmZpZyBvcHRpb24uIEdvb2QgdG8ga25vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjE4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCByZWxhdGVzIHRvIHRoZSBrZXJuZWwgY29kZToKCioqQ2hlY2tpbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gb2YgYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AqKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZSBga2VybmVsL2JwZi9tZW1hbGxvYy5jYCBmaWxlIGluIHRoZSBrZXJuZWwgaXMgY29tcGlsZWQgY29uZGl0aW9uYWxseS4gSSBrbm93IHRoaXMgZmlsZSBpcyBjcml0aWNhbCBmb3IgQlBGIG1lbW9yeSBhbGxvY2F0aW9uLCBhbmQgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0cyBhdmFpbGFiaWxpdHkgbWlnaHQgYWZmZWN0IGEgZ2l2ZW4gc3lzdGVtIGNvbmZpZ3VyYXRpb24gb3IgcGVyZm9ybWFuY2UgcHJvZmlsZS4gSSYjMzk7bSB0aGlua2luZywgaXMgaXQgb25seSBpbmNsdWRlZCB3aGVuIGNlcnRhaW4gZmVhdHVyZXMgb3IgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQ/IElmIHNvLCB3aGljaCBvbmVzPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBncmVwcGluZyB0aGUga2VybmVsIHNvdXJjZSBmb3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIHJlbGF0ZWQgdG8gdGhpcyBzcGVjaWZpYyBmaWxlLCBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBgI2lmZGVmYCwgYCNpZmAsIGAjaWZuZGVmYCwgYW5kIGAjZW5kaWZgLiBJJiMzOTtsbCB3YW50IHRvIHF1aWNrbHkgc2VlIGlmIGl0JiMzOTtzIHdyYXBwZWQgaW4gYW55IHN1Y2ggYmxvY2tzIHRvIHRlbGwgbWUgd2hldGhlciBpdHMgaW5jbHVzaW9uIGlzIGRlcGVuZGVudCBvbiBwYXJ0aWN1bGFyIGJ1aWxkIGZsYWdzIG9yIGtlcm5lbCBtb2R1bGVzIGJlaW5nIGVuYWJsZWQuIFRoaXMgdW5kZXJzdGFuZGluZyBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyBmbGV4aWJsZSBhIHN5c3RlbSB3aWxsIGJlIGluIGl0cyB1c2FnZSBvZiBCUEYgbWVtb3J5IGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVtYWxsb2NcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gdHJhbXBvbGluZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE5LWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1ODUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgVGhpcyBCUEYgTWVtb3J5IEFsbG9jYXRvciBGaXgqKgoKT2theSwgc28gdGhpcyBwYXRjaCBjZW50ZXJzIGFyb3VuZCBgQlBGX1NZU0NBTExgIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtLiBUaGlzIGZpeCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiB3aXRoaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGJ5IGludHJvZHVjaW5nIGEgcmF3IHNwaW5sb2NrIHRvIHNhZmVndWFyZCBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYC4gTXkgZ3V0IHNheXMgdGhpcyBpcyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeSwgc28gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgcmlnaHQgYXBwcm9hY2guCgpGaXJzdCwgSSBuZWVkIHRvIGNob29zZSBteSBmb2N1cyBzeW1ib2xzLiBNeSBpbml0aWFsIGxpc3QgaW5jbHVkZXMgdGhlIGNvcmUgYWxsb2NhdG9yIGFuZCBmcmVlIGZ1bmN0aW9uczogYGJwZl9tZW1fYWxsb2NgLCBgYnBmX21lbV9mcmVlYCwgYGJwZl9tZW1fZnJlZV9yY3VgLCBgYnBmX21lbV9jYWNoZV9hbGxvY2AsIGBicGZfbWVtX2NhY2hlX2ZyZWVgLCBgYnBmX21lbV9jYWNoZV9mcmVlX3JjdWAsIGFuZCBgYnBmX21lbV9hbGxvY19kZXN0cm95YC4KCldhaXQgYSBtaW51dGUsIGBicGZfbWVtX2FsbG9jYCBhbmQgYGJwZl9tZW1fZnJlZWAgYXJlICpoZWF2aWx5KiBpbnZvbHZlZCBpbiBCUEYgbWFwcy4gSSBuZWVkIHRvIGJlIGNhcmVmdWwgaGVyZS4gSSByZW1lbWJlciB0aGUgZ29hbCBpcyB0byBhdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4gTXkgY29uY2VybiBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBtaWdodCBiZSBob3QgcGF0aHMgZm9yIEJQRiBwcm9ncmFtcywgYnV0IHRoZXkgYXJlIGFsc28gdGhlIG1haW4gZW50cnkgcG9pbnRzIGZvciB0aGUgbW9kaWZpZWQgY29kZS4gSSYjMzk7bSBnb2luZyB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLCBsb29raW5nIGZvciBzb21lIGZ1bmN0aW9ucyB0aGF0IGFyZSBkZWZpbml0ZWx5IG5vdCBob3QgcGF0aHMuCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLiBUaGVyZSYjMzk7cyBgYnBmX21lbV9hbGxvY19pbml0YCwgYGJwZl9tZW1fYWxsb2NfZGVzdHJveWAsIGBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0YCwgYW5kIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgLiBBaCwgdGhlc2UgYXJlIGRlZmluaXRlbHkgY2FsbGVkIHdoZW4gYSBCUEYgbWFwIGlzIGNyZWF0ZWQgb3IgZGVzdHJveWVkLCBub3QgZHVyaW5nIHRoZSBmcmVxdWVudCBleGVjdXRpb24gb2YgYSBCUEYgcHJvZ3JhbS4gVGhvc2UgYXJlIHBlcmZlY3QuIEJ1dCBsZXQgbWUgcXVpY2tseSBjaGVjayB3aGVyZSBgYnBmX21lbV9hbGxvY19pbml0YCBpcyBjYWxsZWQsIGp1c3QgdG8gYmUgc3VyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfbWVtX2FsbG9jX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2NvcmUuYz0zNDM2PXN0YXRpYyBpbnQgX19pbml0IGJwZl9nbG9iYWxfbWFfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTM0MzktXG5rZXJuZWwvYnBmL2NvcmUuYzozNDQwOlx0cmV0ID0gYnBmX21lbV9hbGxvY19pbml0KFx1MDAyNmJwZl9nbG9iYWxfbWEsIDAsIGZhbHNlKTtcbmtlcm5lbC9icGYvY29yZS5jLTM0NDEtXHRicGZfZ2xvYmFsX21hX3NldCA9ICFyZXQ7XG4tLVxua2VybmVsL2JwZi9jcHVtYXNrLmM9NTE1PXN0YXRpYyBpbnQgX19pbml0IGNwdW1hc2tfa2Z1bmNfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9icGYvY3B1bWFzay5jLTUyNC1cbmtlcm5lbC9icGYvY3B1bWFzay5jOjUyNTpcdHJldCA9IGJwZl9tZW1fYWxsb2NfaW5pdChcdTAwMjZicGZfY3B1bWFza19tYSwgc2l6ZW9mKHN0cnVjdCBicGZfY3B1bWFzayksIGZhbHNlKTtcbmtlcm5lbC9icGYvY3B1bWFzay5jLTUyNi1cdHJldCA9IHJldCA/OiByZWdpc3Rlcl9idGZfa2Z1bmNfaWRfc2V0KEJQRl9QUk9HX1RZUEVfVFJBQ0lORywgXHUwMDI2Y3B1bWFza19rZnVuY19zZXQpO1xuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTU0NT1zdGF0aWMgc3RydWN0IGJwZl9tYXAgKmh0YWJfbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTY0OC1cdH0gZWxzZSB7XG5rZXJuZWwvYnBmL2hhc2h0YWIuYzo2NDk6XHRcdGVyciA9IGJwZl9tZW1fYWxsb2NfaW5pdChcdTAwMjZodGFiLVx1MDAzZW1hLCBodGFiLVx1MDAzZWVsZW1fc2l6ZSwgZmFsc2UpO1xua2VybmVsL2JwZi9oYXNodGFiLmMtNjUwLVx0XHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTY1Mi1cdFx0aWYgKHBlcmNwdSkge1xua2VybmVsL2JwZi9oYXNodGFiLmM6NjUzOlx0XHRcdGVyciA9IGJwZl9tZW1fYWxsb2NfaW5pdChcdTAwMjZodGFiLVx1MDAzZXBjcHVfbWEsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy02NTQtXHRcdFx0XHRcdFx0IHJvdW5kX3VwKGh0YWItXHUwMDNlbWFwLnZhbHVlX3NpemUsIDgpLCB0cnVlKTtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNzk1PXN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqcmh0YWJfbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI4MzEtXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyODMyOlx0ZXJyID0gYnBmX21lbV9hbGxvY19pbml0KFx1MDAyNnJodGFiLVx1MDAzZW1hLCByaHRhYi1cdTAwM2VlbGVtX3NpemUsIGZhbHNlKTtcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI4MzMtXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvbHBtX3RyaWUuYz01NzE9c3RhdGljIHN0cnVjdCBicGZfbWFwICp0cmllX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuLS1cbmtlcm5lbC9icGYvbHBtX3RyaWUuYy02MDItXHRcdCAgICB0cmllLVx1MDAzZW1hcC52YWx1ZV9zaXplO1xua2VybmVsL2JwZi9scG1fdHJpZS5jOjYwMzpcdGVyciA9IGJwZl9tZW1fYWxsb2NfaW5pdChcdTAwMjZ0cmllLVx1MDAzZW1hLCBsZWFmX3NpemUsIGZhbHNlKTtcbmtlcm5lbC9icGYvbHBtX3RyaWUuYy02MDQtXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYz00OTQ9c3RhdGljIHZvaWQgcHJlZmlsbF9tZW1fY2FjaGUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjcHUpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTUxNC0gKi9cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo1MTU6aW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjI2CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNzg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzIFN5bWJvbCBTZWxlY3Rpb24gZm9yIEJQRiBNZW1vcnkgQWxsb2NhdG9yIFJhY2UgQ29uZGl0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIGNyaXRpY2FsIGtlcm5lbCBmdW5jdGlvbnMgZm9yIGZ1enppbmcgcmVsYXRlZCB0byB0aGlzIEJQRiBtZW1vcnkgYWxsb2NhdG9yIHJhY2UgY29uZGl0aW9uLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogdGFyZ2V0IHNwZWNpZmljLCBub24taG90cGF0aCBlbnRyeXBvaW50cyB0aGF0IGFyZSAqZGlyZWN0bHkqIGludm9sdmVkIGluIHRoZSBidWcmIzM5O3MgbW9kaWZpZWQgbG9naWMuIFdlIHdhbnQgdG8gYXZvaWQgc2tld2luZyB0aGUgZnV6emluZyBkaXN0cmlidXRpb24gd2l0aCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4KCkluaXRpYWxseSwgSSB0aG91Z2h0IGBicGZfbWVtX2FsbG9jYCBhbmQgYGJwZl9tZW1fZnJlZWAgd2VyZSBwcm9taXNpbmcsIGJlaW5nIGNhbGxlZCBkdXJpbmcgbWFwIHVwZGF0ZXMgYW5kIGRlbGV0ZXMsIHdoaWNoIGFyZSBob3QgcGF0aHMuIEhvd2V2ZXIsIHRoZSByb290IG9mIHRoZSBpc3N1ZSBsaWVzIGluIFJDVSBjYWxsYmFja3MgYW5kIGJ1bGsgYWxsb2NhdGlvbnMvZnJlZXMuIFRoZSBwcm9ibGVtIGlzIHdpdGggdGhlIG1hbmlwdWxhdGlvbiBvZiBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYCBpbiBmdW5jdGlvbnMgbGlrZSBgYWxsb2NfYnVsa2AsIGBfX2ZyZWVfcmN1YCwgYGRvX2NhbGxfcmN1X3R0cmFjZWAsIGFuZCBgZHJhaW5fbWVtX2NhY2hlYC4KCk15IGluaXRpYWwgaW50dWl0aW9uIHdhcyB0byBpbmNsdWRlIGBicGZfbWVtX2NhY2hlX2FsbG9jYCBhbmQgYGJwZl9tZW1fY2FjaGVfZnJlZWAsIHNpbmNlIHRoZXkgYXJlIHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgdGhlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcgb2YgQlBGIG1hcCBlbGVtZW50cy4gVGhleSBhcmUgdXNlZCBmcmVxdWVudGx5IGFuZCByZWxhdGVkIHRvIHRoZSBjb25jdXJyZW50IGFsbG9jYXRpb25zIGFuZCBmcmVlcyB0aGF0IHRyaWdnZXIgdGhlIHJhY2UuIEhvd2V2ZXIsIHRoZSBpbnN0cnVjdGlvbnMgY2F1dGlvbiBhZ2FpbnN0IGluY2x1ZGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gSW5jbHVkaW5nIHRoZXNlIG1pZ2h0IHNrZXcgdGhlIHRlc3QgZGlzdHJpYnV0aW9ucywgbGVhZGluZyB0byB0aGUgZnV6emVyIGZvY3VzaW5nIG9uIHRoZW0gZGlzcHJvcG9ydGlvbmF0ZWx5LgoKSW5zdGVhZCwgbGV0JiMzOTtzIGNvbnNpZGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSAqZGlyZWN0bHkqIGludm9sdmVkIGJ1dCBhcmUgbm90IGhvdCBwYXRocy4gYGJwZl9tZW1fYWxsb2NfaW5pdGAgYW5kIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgIGFyZSBjYWxsZWQgZHVyaW5nIG1hcCBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFdoaWxlIG5vdCBob3QgcGF0aHMgdGhlbXNlbHZlcywgdGhleSBpbml0aWFsaXplIGFuZCBkZXN0cm95IHRoZSBzdHJ1Y3R1cmVzIGltcGFjdGVkIGJ5IHRoZSBmaXguIENyaXRpY2FsbHksIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgIGNhbGxzIGBkcmFpbl9tZW1fY2FjaGVgLCB3aGljaCBkaXJlY3RseSBleGVjdXRlcyB0aGUgbW9kaWZpZWQgY29kZS4gVGhpcyBtYWtlcyB0aGVtIGdvb2QgY2FuZGlkYXRlcy4gYGJwZl9tZW1fYWxsb2NfaW5pdGAgaW5pdGlhbGl6ZXMgdGhlIGxvY2ssIHdoaWNoIGlzIGtleS4gQWxzbywgSSB3aWxsIGluY2x1ZGUgYGJwZl9tZW1fYWxsb2NfcGVyY3B1X2luaXRgIGFuZCBgYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0YCBzaW5jZSB0aGV5IGFyZSBlbnRyeSBwb2ludHMgdGhhdCBhcmUgbm90IGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIGFuZCBpbml0aWFsaXplIHN0cnVjdHVyZXMsIHJlbGF0ZWQgdG8gdGhlIGZpeGVkIGNvZGUuCgpTbywgSSYjMzk7bSBnb2luZyB3aXRoOgoKKiAgIGBicGZfbWVtX2FsbG9jX2luaXRgCiogICBgYnBmX21lbV9hbGxvY19wZXJjcHVfaW5pdGAKKiAgIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgCiogICBgYnBmX21lbV9hbGxvY19kZXN0cm95YAoKVGhlc2UgYXJlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gVGhleSBhcmUgbm90IGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBUaGlzIHNob3VsZCBnaXZlIHRoZSBmdXp6ZXIgYSBnb29kIGVudHJ5IHBvaW50IHRvIHRyaWdnZXIgdGhlIGJ1Zy4KCkkgc2hvdWxkIGFsc28gbm90ZSB0aGUgcmVsZXZhbnQgY29uZmlnIGlzOiBgQlBGX1NZU0NBTExgIGJlY2F1c2UgdGhpcyBwYXRjaCBtb2RpZmllcyBjb3JlIEJQRiBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlLgoKRmluYWwgUmV2aWV3OiBUaGlzIHNlbGVjdGlvbiBhbGlnbnMgd2l0aCB0aGUgaW5zdHJ1Y3Rpb25zLCBhbmQgdGFyZ2V0cyBmdW5jdGlvbnMgZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhlIGZpeCBidXQgbm90IHN1YmplY3QgdG8gZXhjZXNzaXZlIGhvdC1wYXRoIHVzYWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZz0xNz1pZiBSQ19DT1JFXG5kcml2ZXJzL21lZGlhL3JjL0tjb25maWctMTgtXG5kcml2ZXJzL21lZGlhL3JjL0tjb25maWc6MTk6Y29uZmlnIEJQRl9MSVJDX01PREUyXG5kcml2ZXJzL21lZGlhL3JjL0tjb25maWctMjAtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIGVCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gbGlyYyBkZXZpY2VzXCYjMzQ7XG4tLVxua2VybmVsL0tjb25maWcubG9ja3M9MjQ2PWNvbmZpZyBRVUVVRURfU1BJTkxPQ0tTX1RSQUNFX0NPTlRFTkRFRF9SRUxFQVNFXG4tLVxua2VybmVsL0tjb25maWcubG9ja3MtMjY1LVxua2VybmVsL0tjb25maWcubG9ja3M6MjY2OmNvbmZpZyBCUEZfQVJDSF9TUElOTE9DS1xua2VybmVsL0tjb25maWcubG9ja3MtMjY3LVx0Ym9vbFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy0zLSMgQlBGIGludGVycHJldGVyIHRoYXQsIGZvciBleGFtcGxlLCBjbGFzc2ljIHNvY2tldCBmaWx0ZXJzIGRlcGVuZCBvbi5cbmtlcm5lbC9icGYvS2NvbmZpZzo0OmNvbmZpZyBCUEZcbmtlcm5lbC9icGYvS2NvbmZpZy01LVx0Ym9vbFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTcyLVxua2VybmVsL2JwZi9LY29uZmlnOjczOmNvbmZpZyBCUEZfVU5QUklWX0RFRkFVTFRfT0ZGXG5rZXJuZWwvYnBmL0tjb25maWctNzQtXHRib29sIFwmIzM0O0Rpc2FibGUgdW5wcml2aWxlZ2VkIEJQRiBieSBkZWZhdWx0XCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTkwPXNvdXJjZSBcJiMzNDtrZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZ1wmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTkxLVxua2VybmVsL2JwZi9LY29uZmlnOjkyOmNvbmZpZyBCUEZfTFNNXG5rZXJuZWwvYnBmL0tjb25maWctOTMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgTFNNIEluc3RydW1lbnRhdGlvblwmIzM0O1xuLS1cbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZzoyOm1lbnVjb25maWcgQlBGX1BSRUxPQURcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnLTMtXHRib29sIFwmIzM0O1ByZWxvYWQgQlBGIGZpbGUgc3lzdGVtIHdpdGgga2VybmVsIHNwZWNpZmljIHByb2dyYW0gYW5kIG1hcCBpdGVyYXRvcnNcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZz0xND1pZiBCUEZfUFJFTE9BRFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWc6MTU6Y29uZmlnIEJQRl9QUkVMT0FEX1VNRFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDticGZfcHJlbG9hZCBrZXJuZWwgbW9kdWxlXCYjMzQ7XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWc9ODM5PWNvbmZpZyBFUFJPQkVfRVZFTlRTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxua2VybmVsL3RyYWNlL0tjb25maWc6ODUzOmNvbmZpZyBCUEZfRVZFTlRTXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTQtXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWc9ODY1PWNvbmZpZyBQUk9CRV9FVkVOVFNcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NjctXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4Njg6Y29uZmlnIEJQRl9LUFJPQkVfT1ZFUlJJREVcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg2OS1cdGJvb2wgXCYjMzQ7RW5hYmxlIEJQRiBwcm9ncmFtcyB0byBvdmVycmlkZSBhIGtwcm9iZWQgZnVuY3Rpb25cJiMzNDtcbi0tXG5uZXQvS2NvbmZpZz0zNTQ9Y29uZmlnIEJRTFxuLS1cbm5ldC9LY29uZmlnLTM2MC1cbm5ldC9LY29uZmlnOjM2MTpjb25maWcgQlBGX1NUUkVBTV9QQVJTRVJcbm5ldC9LY29uZmlnLTM2Mi1cdGJvb2wgXCYjMzQ7ZW5hYmxlIEJQRiBTVFJFQU1fUEFSU0VSXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjczCgkJCQkJCQlvdXRwdXQ6IDE0OAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkJQRiBDb25zaWRlcmF0aW9ucyBmb3IgUmVzdWx0IFNldHRpbmcqKgoKT2theSwgc28gSSYjMzk7bSBhc3Nlc3NpbmcgdGhlIGJlc3QgYXBwcm9hY2ggaGVyZS4gVGhpbmtpbmcgdGhyb3VnaCB0aGUgbWVjaGFuaWNzIG9mIHRoZSBkYXRhIGZsb3csIHRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBhbmQgZWZmaWNpZW50IHBhdGggaXMgY2xlYXJseSB0aGUgYEJQRl9TWVNDQUxMYCBpbnRlcmZhY2UuIEl0IHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgaG9vayBpbnRvIHRoZSBrZXJuZWwgYXQgdGhlIHJpZ2h0IHN0YWdlLiBObyBuZWVkIHRvIG92ZXJjb21wbGljYXRlIHRoaW5ncyB3aXRoIHNvbWUgY3VzdG9tIG9yIG1vcmUgaW52b2x2ZWQgbWV0aG9kLCB3aGVuIGEgZGVkaWNhdGVkIGFuZCB3ZWxsLWRlZmluZWQgc3lzY2FsbCBpbnRlcmZhY2UgaXMgYXZhaWxhYmxlLiBJdCYjMzk7cyB0aGUgcmlnaHQgdG9vbCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGpvYiwgZm9yIHN1cmUuCgpUaGVyZWZvcmUsIHRoZSBhY3Rpb24gYmVjb21lcyBjbGVhcjogSSYjMzk7bGwgZm9jdXMgb24gY3JhZnRpbmcgdGhlIG5lY2Vzc2FyeSBsb2dpYyB0byBlZmZlY3RpdmVseSBsZXZlcmFnZSBgQlBGX1NZU0NBTExgIHRvIHNldCB0aGUgcmVzdWx0cy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gY2FsbCwgb3IgaW1wbGVtZW50LCB0aGUgZnVuY3Rpb24gdGhhdCB3aWxsIGhhbmRsZSB0aGUgc2V0dGluZyBvZiB0aGVzZSByZXN1bHRzLiBMZXQmIzM5O3MgY2FsbCB0aGlzIHRoZSAqc2V0LXJlc3VsdHMqIGZ1bmN0aW9uLCBhbmQgYnVpbGQgaXQgdG8gaGFuZGxlIHdoYXRldmVyIGRhdGEgc3RydWN0dXJlIHRoZSByZXN1bHRzIG5lZWQgdG8gYmUgZmVkIGludG8gdGhlIHRhcmdldCBwcm9ncmFtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfbWVtX2FsbG9jX2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19wZXJjcHVfaW5pdCYjMzQ7LAogICAgJiMzNDticGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19kZXN0cm95JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGJ5IGludHJvZHVjaW5nIGEgcmF3IHNwaW5sb2NrIHRvIHByb3RlY3QgdGhlIGB3YWl0aW5nX2Zvcl9ncF90dHJhY2VgIGxvY2tsZXNzIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdmlhIEJQRiBtYXAgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfbWVtX2FsbG9jX2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19wZXJjcHVfaW5pdCYjMzQ7LAogICAgJiMzNDticGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQmIzM0OywKICAgICYjMzQ7YnBmX21lbV9hbGxvY19kZXN0cm95JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGJ5IGludHJvZHVjaW5nIGEgcmF3IHNwaW5sb2NrIHRvIHByb3RlY3QgdGhlIGB3YWl0aW5nX2Zvcl9ncF90dHJhY2VgIGxvY2tsZXNzIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdmlhIEJQRiBtYXAgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwOTozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgcmF3X3NwaW5sb2NrX3QgdG8gcHJvdGVjdCBjb25jdXJyZW50IGFjY2Vzc2VzIHRvIHRoZSBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYCBsaW5rZWQgbGlzdCBpbiB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3IuIEl0IHJlcGxhY2VzIGF0b21pYyBsb2NrbGVzcyBsaXN0IG9wZXJhdGlvbnMgKGxsaXN0X2RlbF9maXJzdCwgbGxpc3RfZGVsX2FsbCwgbGxpc3RfYWRkKSB3aXRoIHRoZWlyIG5vbi1hdG9taWMgY291bnRlcnBhcnRzIHByb3RlY3RlZCBieSB0aGUgbmV3IHNwaW5sb2NrLiBUaGlzIGlzIHB1cmVseSBhIGNvbmN1cnJlbmN5IGFuZCBzeW5jaHJvbml6YXRpb24gZml4IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFuZCBkYXRhIHJhY2VzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24gbG9naWMgb3IgYm91bmRzIGNoZWNraW5nLiBBbnkgYnVncyByZWxhdGVkIHRvIHRoaXMgY29kZSAoc3VjaCBhcyBsaXN0IGNvcnJ1cHRpb24gbGVhZGluZyB0byB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgS0NTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmFmMzA1NTg3OGI2Zjg3ZjgzMmFkZTlkYTk5YTIzZjFmM2M4YjBjNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDI3IDA5OjM4OjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9tZW1hbGxvYy5jIGIva2VybmVsL2JwZi9tZW1hbGxvYy5jCmluZGV4IGU5NjYyZGI3MTk4ZmUuLjU4Mjk2ZTkyYTRmZWQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvbWVtYWxsb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL21lbWFsbG9jLmMKQEAgLTExOSw2ICYjNDM7MTE5LDcgQEAgc3RydWN0IGJwZl9tZW1fY2FjaGUgewogCXN0cnVjdCBsbGlzdF9oZWFkIHdhaXRpbmdfZm9yX2dwX3R0cmFjZTsKIAlzdHJ1Y3QgcmN1X2hlYWQgcmN1X3R0cmFjZTsKIAlhdG9taWNfdCBjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3M7CiYjNDM7CXJhd19zcGlubG9ja190IGxvY2s7CiB9OwogCiBzdHJ1Y3QgYnBmX21lbV9jYWNoZXMgewpAQCAtMjA3LDYgJiM0MzsyMDgsNyBAQCBzdGF0aWMgdm9pZCBhZGRfb2JqX3RvX2ZyZWVfbGlzdChzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKQogc3RhdGljIHZvaWQgYWxsb2NfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNudCwgaW50IG5vZGUsIGJvb2wgYXRvbWljKQogewogCXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyA9IE5VTEwsICpvbGRfbWVtY2c7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJZ2ZwX3QgZ2ZwOwogCXZvaWQgKm9iajsKIAlpbnQgaTsKQEAgLTIyOCwxMiAmIzQzOzIzMCwxNCBAQCBzdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpCiAJaWYgKGkgJmd0Oz0gY250KQogCQlyZXR1cm47CiAKJiM0MzsJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZhbXA7Yy0mZ3Q7bG9jaywgZmxhZ3MpOwogCWZvciAoOyBpICZsdDsgY250OyBpJiM0MzsmIzQzOykgewotCQlvYmogPSBsbGlzdF9kZWxfZmlyc3QoJmFtcDtjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2UpOwomIzQzOwkJb2JqID0gX19sbGlzdF9kZWxfZmlyc3QoJmFtcDtjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2UpOwogCQlpZiAoIW9iaikKIAkJCWJyZWFrOwogCQlhZGRfb2JqX3RvX2ZyZWVfbGlzdChjLCBvYmopOwogCX0KJiM0MzsJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtjLSZndDtsb2NrLCBmbGFncyk7CiAJaWYgKGkgJmd0Oz0gY250KQogCQlyZXR1cm47CiAKQEAgLTI3OSw4ICYjNDM7MjgzLDE0IEBAIHN0YXRpYyBpbnQgZnJlZV9hbGwoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGUsIGJvb2wgcGVyCiBzdGF0aWMgdm9pZCBfX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZCkKIHsKIAlzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYyA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgYnBmX21lbV9jYWNoZSwgcmN1X3R0cmFjZSk7CiYjNDM7CXN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLQlmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKSwgISFjLSZndDtwZXJjcHVfc2l6ZSk7CiYjNDM7CXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2MtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJbGxub2RlID0gX19sbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKTsKJiM0MzsJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtjLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CiYjNDM7CWZyZWVfYWxsKGMsIGxsbm9kZSwgISFjLSZndDtwZXJjcHVfc2l6ZSk7CiAJYXRvbWljX3NldCgmYW1wO2MtJmd0O2NhbGxfcmN1X3R0cmFjZV9pbl9wcm9ncmVzcywgMCk7CiB9CiAKQEAgLTI5Nyw2ICYjNDM7MzA3LDcgQEAgc3RhdGljIHZvaWQgZW5xdWVfdG9fZnJlZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKQogc3RhdGljIHZvaWQgZG9fY2FsbF9yY3VfdHRyYWNlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKQogewogCXN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGUsICp0OwomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJaWYgKGF0b21pY194Y2hnKCZhbXA7Yy0mZ3Q7Y2FsbF9yY3VfdHRyYWNlX2luX3Byb2dyZXNzLCAxKSkgewogCQlpZiAodW5saWtlbHkoUkVBRF9PTkNFKGMtJmd0O2RyYWluaW5nKSkpIHsKQEAgLTMwNyw4ICYjNDM7MzE4LDEwIEBAIHN0YXRpYyB2b2lkIGRvX2NhbGxfcmN1X3R0cmFjZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYykKIAl9CiAKIAlXQVJOX09OX09OQ0UoIWxsaXN0X2VtcHR5KCZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKSk7CiYjNDM7CXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2MtJmd0O2xvY2ssIGZsYWdzKTsKIAlsbGlzdF9mb3JfZWFjaF9zYWZlKGxsbm9kZSwgdCwgbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O2ZyZWVfYnlfcmN1X3R0cmFjZSkpCi0JCWxsaXN0X2FkZChsbG5vZGUsICZhbXA7Yy0mZ3Q7d2FpdGluZ19mb3JfZ3BfdHRyYWNlKTsKJiM0MzsJCV9fbGxpc3RfYWRkKGxsbm9kZSwgJmFtcDtjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2UpOwomIzQzOwlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2MtJmd0O2xvY2ssIGZsYWdzKTsKIAogCWlmICh1bmxpa2VseShSRUFEX09OQ0UoYy0mZ3Q7ZHJhaW5pbmcpKSkgewogCQlfX2ZyZWVfcmN1KCZhbXA7Yy0mZ3Q7cmN1X3R0cmFjZSk7CkBAIC01MzUsNiAmIzQzOzU0OCw3IEBAIGludCBicGZfbWVtX2FsbG9jX2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSwgYm9vbCBwZXJjcHUpCiAJCQljLSZndDtvYmpjZyA9IG9iamNnOwogCQkJYy0mZ3Q7cGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTsKIAkJCWMtJmd0O3RndCA9IGM7CiYjNDM7CQkJcmF3X3NwaW5fbG9ja19pbml0KCZhbXA7Yy0mZ3Q7bG9jayk7CiAJCQlpbml0X3JlZmlsbF93b3JrKGMpOwogCQkJcHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTsKIAkJfQpAQCAtNTU3LDcgJiM0Mzs1NzEsNyBAQCBpbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KQogCQkJYy0mZ3Q7b2JqY2cgPSBvYmpjZzsKIAkJCWMtJmd0O3BlcmNwdV9zaXplID0gcGVyY3B1X3NpemU7CiAJCQljLSZndDt0Z3QgPSBjOwotCiYjNDM7CQkJcmF3X3NwaW5fbG9ja19pbml0KCZhbXA7Yy0mZ3Q7bG9jayk7CiAJCQlpbml0X3JlZmlsbF93b3JrKGMpOwogCQkJcHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTsKIAkJfQpAQCAtNjA5LDcgJiM0Mzs2MjMsNyBAQCBpbnQgYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUpCiAJCWMtJmd0O29iamNnID0gb2JqY2c7CiAJCWMtJmd0O3BlcmNwdV9zaXplID0gcGVyY3B1X3NpemU7CiAJCWMtJmd0O3RndCA9IGM7Ci0KJiM0MzsJCXJhd19zcGluX2xvY2tfaW5pdCgmYW1wO2MtJmd0O2xvY2spOwogCQlpbml0X3JlZmlsbF93b3JrKGMpOwogCQlwcmVmaWxsX21lbV9jYWNoZShjLCBjcHUpOwogCX0KQEAgLTYyMCw2ICYjNDM7NjM0LDggQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKQogc3RhdGljIHZvaWQgZHJhaW5fbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKQogewogCWJvb2wgcGVyY3B1ID0gISFjLSZndDtwZXJjcHVfc2l6ZTsKJiM0MzsJc3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZTsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCS8qIE5vIHByb2dzIGFyZSB1c2luZyB0aGlzIGJwZl9tZW1fY2FjaGUsIGJ1dCBodGFiX21hcF9mcmVlKCkgY2FsbGVkCiAJICogYnBmX21lbV9jYWNoZV9mcmVlKCkgZm9yIGFsbCByZW1haW5pbmcgZWxlbWVudHMgYW5kIHRoZXkgY2FuIGJlIGluCkBAIC02MjksNyAmIzQzOzY0NSwxMCBAQCBzdGF0aWMgdm9pZCBkcmFpbl9tZW1fY2FjaGUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpCiAJICogb24gdGhlc2UgbGlzdHMsIHNvIGl0IGlzIHNhZmUgdG8gdXNlIF9fbGxpc3RfZGVsX2FsbCgpLgogCSAqLwogCWZyZWVfYWxsKGMsIGxsaXN0X2RlbF9hbGwoJmFtcDtjLSZndDtmcmVlX2J5X3JjdV90dHJhY2UpLCBwZXJjcHUpOwotCWZyZWVfYWxsKGMsIGxsaXN0X2RlbF9hbGwoJmFtcDtjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2UpLCBwZXJjcHUpOwomIzQzOwlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjLSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CWxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbCgmYW1wO2MtJmd0O3dhaXRpbmdfZm9yX2dwX3R0cmFjZSk7CiYjNDM7CXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7Yy0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwlmcmVlX2FsbChjLCBsbG5vZGUsIHBlcmNwdSk7CiAJZnJlZV9hbGwoYywgX19sbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7ZnJlZV9sbGlzdCksIHBlcmNwdSk7CiAJZnJlZV9hbGwoYywgX19sbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7ZnJlZV9sbGlzdF9leHRyYSksIHBlcmNwdSk7CiAJZnJlZV9hbGwoYywgX19sbGlzdF9kZWxfYWxsKCZhbXA7Yy0mZ3Q7ZnJlZV9ieV9yY3UpLCBwZXJjcHUpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxMgoJCQkJCQkJb3V0cHV0OiAyMDUKCQkJCQkJCXRob3VnaHRzOiA0ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIE1lbW9yeSBBbGxvY2F0b3IgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBjb25jdXJyZW5jeSBmaXggaW4gYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AuIE15IGluaXRpYWwgcmVhZCB0ZWxscyBtZSBpdCYjMzk7cyBhZGRpbmcgYSBgcmF3X3NwaW5sb2NrX3QgbG9ja2AgdG8gdGhlIGBicGZfbWVtX2NhY2hlYCBzdHJ1Y3R1cmUuIFRoZSBtYWluIHRocnVzdCBpcyByZXBsYWNpbmcgdGhlIGF0b21pYyBsaXN0IG9wZXJhdGlvbnMgKGBsbGlzdF9kZWxfZmlyc3RgLCBgbGxpc3RfZGVsX2FsbGAsIGBsbGlzdF9hZGRgKSB3aXRoIHRoZWlyIG5vbi1hdG9taWMgY291bnRlcnBhcnRzIChgX19sbGlzdF9kZWxfZmlyc3RgLCBgX19sbGlzdF9kZWxfYWxsYCwgYF9fbGxpc3RfYWRkYCkgd2hlbiBkZWFsaW5nIHdpdGggYGMtJmd0O3dhaXRpbmdfZm9yX2dwX3R0cmFjZWAsIGFuZCB3cmFwcGluZyB0aG9zZSBvcGVyYXRpb25zIHdpdGggYHJhd19zcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2MtJmd0O2xvY2ssIGZsYWdzKWAuIFRoaXMgaXMgY2xlYXJseSBkZXNpZ25lZCB0byBwcm90ZWN0IHRoZSBsaXN0IGZyb20gcmFjZSBjb25kaXRpb25zIGFyaXNpbmcgZnJvbSBjb25jdXJyZW50IGFjY2VzcyBmcm9tIG11bHRpcGxlIENQVXMgb3IgY29udGV4dHMuCgpUaGUgcGF0Y2ggaXRzZWxmIGRvZXNuJiMzOTt0IHRvdWNoIGFueXRoaW5nIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcywgb3IgbWVtb3J5IGNvbnRlbnRzIGRpcmVjdGx5LiBUaGUgYnVncyB0aGlzIGFpbXMgdG8gZml4IGFyZSBhbGwgYWJvdXQgcmFjZSBjb25kaXRpb25zIG9yIGRhdGEgY29ycnVwdGlvbiB3aXRoaW4gdGhlIGxpc3QgaXRzZWxmLCB3aGljaCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gKHVzZS1hZnRlci1mcmVlLCBvdXQtb2YtYm91bmRzIGR1ZSB0byBsaXN0IGNvcnJ1cHRpb24pIG9yIEtDU0FOIChkYXRhIHJhY2VzKSwgb3IgbGVhZCB0byBzdHJhaWdodGZvcndhcmQga2VybmVsIHBhbmljcy4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHdhbGstdGhyb3VnaCB0byBjb25maXJtLiBgYWxsb2NfYnVsa2AsIGBfX2ZyZWVfcmN1YCwgYGRvX2NhbGxfcmN1X3R0cmFjZWAsIGFuZCBgZHJhaW5fbWVtX2NhY2hlYCBhbGwgbm93IGNvcnJlY3RseSBhY3F1aXJlIHRoZSBsb2NrIGBjLSZndDtsb2NrYCBiZWZvcmUgbWFuaXB1bGF0aW5nIGBjLSZndDt3YWl0aW5nX2Zvcl9ncF90dHJhY2VgIHVzaW5nIHRoZSBub24tYXRvbWljIGxpc3QgZnVuY3Rpb25zLiBgYnBmX21lbV9hbGxvY19pbml0YCBhbmQgYGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdGAgY29ycmVjdGx5IGluaXRpYWxpemUgdGhlIGxvY2suCgpJdCYjMzk7cyBwdXJlbHkgYSBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gY2hhbmdlIHRvIHByb3RlY3QgYSBsaW5rZWQgbGlzdC4gTm8gbmV3IHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIE15IGNvbmNsdXNpb24gaXMgdGhhdCBLTVNBTiBpcyBub3QgbmVjZXNzYXJ5IGhlcmUuIEkmIzM5O2xsIGRvY3VtZW50IG15IHJlYXNvbmluZyBhbmQgc2V0IGBOZWVkc0tNU0FOYCB0byBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHJhd19zcGlubG9ja190IHRvIHByb3RlY3QgY29uY3VycmVudCBhY2Nlc3NlcyB0byB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbGlua2VkIGxpc3QgaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yLiBJdCByZXBsYWNlcyBhdG9taWMgbG9ja2xlc3MgbGlzdCBvcGVyYXRpb25zIChsbGlzdF9kZWxfZmlyc3QsIGxsaXN0X2RlbF9hbGwsIGxsaXN0X2FkZCkgd2l0aCB0aGVpciBub24tYXRvbWljIGNvdW50ZXJwYXJ0cyBwcm90ZWN0ZWQgYnkgdGhlIG5ldyBzcGlubG9jay4gVGhpcyBpcyBwdXJlbHkgYSBjb25jdXJyZW5jeSBhbmQgc3luY2hyb25pemF0aW9uIGZpeCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhbmQgZGF0YSByYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uIGxvZ2ljIG9yIGJvdW5kcyBjaGVja2luZy4gQW55IGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNvZGUgKHN1Y2ggYXMgbGlzdCBjb3JydXB0aW9uIGxlYWRpbmcgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtDU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgcmF3X3NwaW5sb2NrX3QgdG8gcHJvdGVjdCBjb25jdXJyZW50IGFjY2Vzc2VzIHRvIHRoZSBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYCBsaW5rZWQgbGlzdCBpbiB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3IuIEl0IHJlcGxhY2VzIGF0b21pYyBsb2NrbGVzcyBsaXN0IG9wZXJhdGlvbnMgKGxsaXN0X2RlbF9maXJzdCwgbGxpc3RfZGVsX2FsbCwgbGxpc3RfYWRkKSB3aXRoIHRoZWlyIG5vbi1hdG9taWMgY291bnRlcnBhcnRzIHByb3RlY3RlZCBieSB0aGUgbmV3IHNwaW5sb2NrLiBUaGlzIGlzIHB1cmVseSBhIGNvbmN1cnJlbmN5IGFuZCBzeW5jaHJvbml6YXRpb24gZml4IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFuZCBkYXRhIHJhY2VzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24gbG9naWMgb3IgYm91bmRzIGNoZWNraW5nLiBBbnkgYnVncyByZWxhdGVkIHRvIHRoaXMgY29kZSAoc3VjaCBhcyBsaXN0IGNvcnJ1cHRpb24gbGVhZGluZyB0byB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgS0NTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDk6Mzg6NTEuMjI5NzI0MTk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MzQ2ODk4NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX21lbV9hbGxvY19pbml0XCIsXG4gICAgXCJicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0XCIsXG4gICAgXCJicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRcIixcbiAgICBcImJwZl9tZW1fYWxsb2NfZGVzdHJveVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHJhd19zcGlubG9ja190IHRvIHByb3RlY3QgY29uY3VycmVudCBhY2Nlc3NlcyB0byB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbGlua2VkIGxpc3QgaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yLiBJdCByZXBsYWNlcyBhdG9taWMgbG9ja2xlc3MgbGlzdCBvcGVyYXRpb25zIChsbGlzdF9kZWxfZmlyc3QsIGxsaXN0X2RlbF9hbGwsIGxsaXN0X2FkZCkgd2l0aCB0aGVpciBub24tYXRvbWljIGNvdW50ZXJwYXJ0cyBwcm90ZWN0ZWQgYnkgdGhlIG5ldyBzcGlubG9jay4gVGhpcyBpcyBwdXJlbHkgYSBjb25jdXJyZW5jeSBhbmQgc3luY2hyb25pemF0aW9uIGZpeCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhbmQgZGF0YSByYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uIGxvZ2ljIG9yIGJvdW5kcyBjaGVja2luZy4gQW55IGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNvZGUgKHN1Y2ggYXMgbGlzdCBjb3JydXB0aW9uIGxlYWRpbmcgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtDU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3IgYnkgaW50cm9kdWNpbmcgYSByYXcgc3BpbmxvY2sgdG8gcHJvdGVjdCB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbG9ja2xlc3MgbGlzdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlci1zcGFjZSB2aWEgQlBGIG1hcCBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozODo1MS4yMjk3Mjg0MjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjE5NTc2NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyYWYzMDU1ODc4YjZmODdmODMyYWRlOWRhOTlhMjNmMWYzYzhiMGM2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDI3IDA5OjM4OjQ5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvbWVtYWxsb2MuYyBiL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xcbmluZGV4IGU5NjYyZGI3MTk4ZmUuLjU4Mjk2ZTkyYTRmZWQgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi9tZW1hbGxvYy5jXFxuKysrIGIva2VybmVsL2JwZi9tZW1hbGxvYy5jXFxuQEAgLTExOSw2ICsxMTksNyBAQCBzdHJ1Y3QgYnBmX21lbV9jYWNoZSB7XFxuIFxcdHN0cnVjdCBsbGlzdF9oZWFkIHdhaXRpbmdfZm9yX2dwX3R0cmFjZTtcXG4gXFx0c3RydWN0IHJjdV9oZWFkIHJjdV90dHJhY2U7XFxuIFxcdGF0b21pY190IGNhbGxfcmN1X3R0cmFjZV9pbl9wcm9ncmVzcztcXG4rXFx0cmF3X3NwaW5sb2NrX3QgbG9jaztcXG4gfTtcXG4gXFxuIHN0cnVjdCBicGZfbWVtX2NhY2hlcyB7XFxuQEAgLTIwNyw2ICsyMDgsNyBAQCBzdGF0aWMgdm9pZCBhZGRfb2JqX3RvX2ZyZWVfbGlzdChzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKVxcbiBzdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpXFxuIHtcXG4gXFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnID0gTlVMTCwgKm9sZF9tZW1jZztcXG4rXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gXFx0Z2ZwX3QgZ2ZwO1xcbiBcXHR2b2lkICpvYmo7XFxuIFxcdGludCBpO1xcbkBAIC0yMjgsMTIgKzIzMCwxNCBAQCBzdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpXFxuIFxcdGlmIChpIFxcdTAwM2U9IGNudClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZjLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIFxcdGZvciAoOyBpIFxcdTAwM2MgY250OyBpKyspIHtcXG4tXFx0XFx0b2JqID0gbGxpc3RfZGVsX2ZpcnN0KFxcdTAwMjZjLVxcdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xcbitcXHRcXHRvYmogPSBfX2xsaXN0X2RlbF9maXJzdChcXHUwMDI2Yy1cXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcXG4gXFx0XFx0aWYgKCFvYmopXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRhZGRfb2JqX3RvX2ZyZWVfbGlzdChjLCBvYmopO1xcbiBcXHR9XFxuK1xcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZjLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIFxcdGlmIChpIFxcdTAwM2U9IGNudClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG5AQCAtMjc5LDggKzI4MywxNCBAQCBzdGF0aWMgaW50IGZyZWVfYWxsKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlLCBib29sIHBlclxcbiBzdGF0aWMgdm9pZCBfX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG4ge1xcbiBcXHRzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYyA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgYnBmX21lbV9jYWNoZSwgcmN1X3R0cmFjZSk7XFxuK1xcdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIFxcbi1cXHRmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKFxcdTAwMjZjLVxcdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpLCAhIWMtXFx1MDAzZXBlcmNwdV9zaXplKTtcXG4rXFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZjLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdGxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbChcXHUwMDI2Yy1cXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcXG4rXFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFxuK1xcdGZyZWVfYWxsKGMsIGxsbm9kZSwgISFjLVxcdTAwM2VwZXJjcHVfc2l6ZSk7XFxuIFxcdGF0b21pY19zZXQoXFx1MDAyNmMtXFx1MDAzZWNhbGxfcmN1X3R0cmFjZV9pbl9wcm9ncmVzcywgMCk7XFxuIH1cXG4gXFxuQEAgLTI5Nyw2ICszMDcsNyBAQCBzdGF0aWMgdm9pZCBlbnF1ZV90b19mcmVlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCB2b2lkICpvYmopXFxuIHN0YXRpYyB2b2lkIGRvX2NhbGxfcmN1X3R0cmFjZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcXG4ge1xcbiBcXHRzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlLCAqdDtcXG4rXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gXFxuIFxcdGlmIChhdG9taWNfeGNoZyhcXHUwMDI2Yy1cXHUwMDNlY2FsbF9yY3VfdHRyYWNlX2luX3Byb2dyZXNzLCAxKSkge1xcbiBcXHRcXHRpZiAodW5saWtlbHkoUkVBRF9PTkNFKGMtXFx1MDAzZWRyYWluaW5nKSkpIHtcXG5AQCAtMzA3LDggKzMxOCwxMCBAQCBzdGF0aWMgdm9pZCBkb19jYWxsX3JjdV90dHJhY2Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXFxuIFxcdH1cXG4gXFxuIFxcdFdBUk5fT05fT05DRSghbGxpc3RfZW1wdHkoXFx1MDAyNmMtXFx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSkpO1xcbitcXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFx0bGxpc3RfZm9yX2VhY2hfc2FmZShsbG5vZGUsIHQsIGxsaXN0X2RlbF9hbGwoXFx1MDAyNmMtXFx1MDAzZWZyZWVfYnlfcmN1X3R0cmFjZSkpXFxuLVxcdFxcdGxsaXN0X2FkZChsbG5vZGUsIFxcdTAwMjZjLVxcdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xcbitcXHRcXHRfX2xsaXN0X2FkZChsbG5vZGUsIFxcdTAwMjZjLVxcdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xcbitcXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2Yy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KFJFQURfT05DRShjLVxcdTAwM2VkcmFpbmluZykpKSB7XFxuIFxcdFxcdF9fZnJlZV9yY3UoXFx1MDAyNmMtXFx1MDAzZXJjdV90dHJhY2UpO1xcbkBAIC01MzUsNiArNTQ4LDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcXG4gXFx0XFx0XFx0Yy1cXHUwMDNlb2JqY2cgPSBvYmpjZztcXG4gXFx0XFx0XFx0Yy1cXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcXG4gXFx0XFx0XFx0Yy1cXHUwMDNldGd0ID0gYztcXG4rXFx0XFx0XFx0cmF3X3NwaW5fbG9ja19pbml0KFxcdTAwMjZjLVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0XFx0aW5pdF9yZWZpbGxfd29yayhjKTtcXG4gXFx0XFx0XFx0cHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTtcXG4gXFx0XFx0fVxcbkBAIC01NTcsNyArNTcxLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcXG4gXFx0XFx0XFx0Yy1cXHUwMDNlb2JqY2cgPSBvYmpjZztcXG4gXFx0XFx0XFx0Yy1cXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcXG4gXFx0XFx0XFx0Yy1cXHUwMDNldGd0ID0gYztcXG4tXFxuK1xcdFxcdFxcdHJhd19zcGluX2xvY2tfaW5pdChcXHUwMDI2Yy1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdFxcdGluaXRfcmVmaWxsX3dvcmsoYyk7XFxuIFxcdFxcdFxcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XFxuIFxcdFxcdH1cXG5AQCAtNjA5LDcgKzYyMyw3IEBAIGludCBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSlcXG4gXFx0XFx0Yy1cXHUwMDNlb2JqY2cgPSBvYmpjZztcXG4gXFx0XFx0Yy1cXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcXG4gXFx0XFx0Yy1cXHUwMDNldGd0ID0gYztcXG4tXFxuK1xcdFxcdHJhd19zcGluX2xvY2tfaW5pdChcXHUwMDI2Yy1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdGluaXRfcmVmaWxsX3dvcmsoYyk7XFxuIFxcdFxcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XFxuIFxcdH1cXG5AQCAtNjIwLDYgKzYzNCw4IEBAIGludCBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSlcXG4gc3RhdGljIHZvaWQgZHJhaW5fbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxcbiB7XFxuIFxcdGJvb2wgcGVyY3B1ID0gISFjLVxcdTAwM2VwZXJjcHVfc2l6ZTtcXG4rXFx0c3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZTtcXG4rXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gXFxuIFxcdC8qIE5vIHByb2dzIGFyZSB1c2luZyB0aGlzIGJwZl9tZW1fY2FjaGUsIGJ1dCBodGFiX21hcF9mcmVlKCkgY2FsbGVkXFxuIFxcdCAqIGJwZl9tZW1fY2FjaGVfZnJlZSgpIGZvciBhbGwgcmVtYWluaW5nIGVsZW1lbnRzIGFuZCB0aGV5IGNhbiBiZSBpblxcbkBAIC02MjksNyArNjQ1LDEwIEBAIHN0YXRpYyB2b2lkIGRyYWluX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcXG4gXFx0ICogb24gdGhlc2UgbGlzdHMsIHNvIGl0IGlzIHNhZmUgdG8gdXNlIF9fbGxpc3RfZGVsX2FsbCgpLlxcbiBcXHQgKi9cXG4gXFx0ZnJlZV9hbGwoYywgbGxpc3RfZGVsX2FsbChcXHUwMDI2Yy1cXHUwMDNlZnJlZV9ieV9yY3VfdHRyYWNlKSwgcGVyY3B1KTtcXG4tXFx0ZnJlZV9hbGwoYywgbGxpc3RfZGVsX2FsbChcXHUwMDI2Yy1cXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKSwgcGVyY3B1KTtcXG4rXFx0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZjLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdGxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbChcXHUwMDI2Yy1cXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcXG4rXFx0cmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0ZnJlZV9hbGwoYywgbGxub2RlLCBwZXJjcHUpO1xcbiBcXHRmcmVlX2FsbChjLCBfX2xsaXN0X2RlbF9hbGwoXFx1MDAyNmMtXFx1MDAzZWZyZWVfbGxpc3QpLCBwZXJjcHUpO1xcbiBcXHRmcmVlX2FsbChjLCBfX2xsaXN0X2RlbF9hbGwoXFx1MDAyNmMtXFx1MDAzZWZyZWVfbGxpc3RfZXh0cmEpLCBwZXJjcHUpO1xcbiBcXHRmcmVlX2FsbChjLCBfX2xsaXN0X2RlbF9hbGwoXFx1MDAyNmMtXFx1MDAzZWZyZWVfYnlfcmN1KSwgcGVyY3B1KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDk6Mzg6NTIuNjUyMzcwMjUyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTY5NjkwNDE5OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfbWVtX2FsbG9jX2luaXRcIixcbiAgICBcImJwZl9tZW1fYWxsb2NfcGVyY3B1X2luaXRcIixcbiAgICBcImJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdFwiLFxuICAgIFwiYnBmX21lbV9hbGxvY19kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3IgYnkgaW50cm9kdWNpbmcgYSByYXcgc3BpbmxvY2sgdG8gcHJvdGVjdCB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbG9ja2xlc3MgbGlzdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlci1zcGFjZSB2aWEgQlBGIG1hcCBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYWYzMDU1ODc4YjZmODdmODMyYWRlOWRhOTlhMjNmMWYzYzhiMGM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMDk6Mzg6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21lbWFsbG9jLmMgYi9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbmluZGV4IGU5NjYyZGI3MTk4ZmUuLjU4Mjk2ZTkyYTRmZWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbisrKyBiL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xuQEAgLTExOSw2ICsxMTksNyBAQCBzdHJ1Y3QgYnBmX21lbV9jYWNoZSB7XG4gXHRzdHJ1Y3QgbGxpc3RfaGVhZCB3YWl0aW5nX2Zvcl9ncF90dHJhY2U7XG4gXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1X3R0cmFjZTtcbiBcdGF0b21pY190IGNhbGxfcmN1X3R0cmFjZV9pbl9wcm9ncmVzcztcbitcdHJhd19zcGlubG9ja190IGxvY2s7XG4gfTtcbiBcbiBzdHJ1Y3QgYnBmX21lbV9jYWNoZXMge1xuQEAgLTIwNyw2ICsyMDgsNyBAQCBzdGF0aWMgdm9pZCBhZGRfb2JqX3RvX2ZyZWVfbGlzdChzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKVxuIHN0YXRpYyB2b2lkIGFsbG9jX2J1bGsoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjbnQsIGludCBub2RlLCBib29sIGF0b21pYylcbiB7XG4gXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBOVUxMLCAqb2xkX21lbWNnO1xuK1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdGdmcF90IGdmcDtcbiBcdHZvaWQgKm9iajtcbiBcdGludCBpO1xuQEAgLTIyOCwxMiArMjMwLDE0IEBAIHN0YXRpYyB2b2lkIGFsbG9jX2J1bGsoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjbnQsIGludCBub2RlLCBib29sIGF0b21pYylcbiBcdGlmIChpIFx1MDAzZT0gY250KVxuIFx0XHRyZXR1cm47XG4gXG4rXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRmb3IgKDsgaSBcdTAwM2MgY250OyBpKyspIHtcbi1cdFx0b2JqID0gbGxpc3RfZGVsX2ZpcnN0KFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbitcdFx0b2JqID0gX19sbGlzdF9kZWxfZmlyc3QoXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xuIFx0XHRpZiAoIW9iailcbiBcdFx0XHRicmVhaztcbiBcdFx0YWRkX29ial90b19mcmVlX2xpc3QoYywgb2JqKTtcbiBcdH1cbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0aWYgKGkgXHUwMDNlPSBjbnQpXG4gXHRcdHJldHVybjtcbiBcbkBAIC0yNzksOCArMjgzLDE0IEBAIHN0YXRpYyBpbnQgZnJlZV9hbGwoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGUsIGJvb2wgcGVyXG4gc3RhdGljIHZvaWQgX19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4ge1xuIFx0c3RydWN0IGJwZl9tZW1fY2FjaGUgKmMgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IGJwZl9tZW1fY2FjaGUsIHJjdV90dHJhY2UpO1xuK1x0c3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZTtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXG4tXHRmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKSwgISFjLVx1MDAzZXBlcmNwdV9zaXplKTtcbitcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdGxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSk7XG4rXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcbitcdGZyZWVfYWxsKGMsIGxsbm9kZSwgISFjLVx1MDAzZXBlcmNwdV9zaXplKTtcbiBcdGF0b21pY19zZXQoXHUwMDI2Yy1cdTAwM2VjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3MsIDApO1xuIH1cbiBcbkBAIC0yOTcsNiArMzA3LDcgQEAgc3RhdGljIHZvaWQgZW5xdWVfdG9fZnJlZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKVxuIHN0YXRpYyB2b2lkIGRvX2NhbGxfcmN1X3R0cmFjZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcbiB7XG4gXHRzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlLCAqdDtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXG4gXHRpZiAoYXRvbWljX3hjaGcoXHUwMDI2Yy1cdTAwM2VjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3MsIDEpKSB7XG4gXHRcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoYy1cdTAwM2VkcmFpbmluZykpKSB7XG5AQCAtMzA3LDggKzMxOCwxMCBAQCBzdGF0aWMgdm9pZCBkb19jYWxsX3JjdV90dHJhY2Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXG4gXHR9XG4gXG4gXHRXQVJOX09OX09OQ0UoIWxsaXN0X2VtcHR5KFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKSk7XG4rXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRsbGlzdF9mb3JfZWFjaF9zYWZlKGxsbm9kZSwgdCwgbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZWZyZWVfYnlfcmN1X3R0cmFjZSkpXG4tXHRcdGxsaXN0X2FkZChsbG5vZGUsIFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbitcdFx0X19sbGlzdF9hZGQobGxub2RlLCBcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSk7XG4rXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoYy1cdTAwM2VkcmFpbmluZykpKSB7XG4gXHRcdF9fZnJlZV9yY3UoXHUwMDI2Yy1cdTAwM2VyY3VfdHRyYWNlKTtcbkBAIC01MzUsNiArNTQ4LDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcbiBcdFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdFx0Yy1cdTAwM2VwZXJjcHVfc2l6ZSA9IHBlcmNwdV9zaXplO1xuIFx0XHRcdGMtXHUwMDNldGd0ID0gYztcbitcdFx0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRpbml0X3JlZmlsbF93b3JrKGMpO1xuIFx0XHRcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XG4gXHRcdH1cbkBAIC01NTcsNyArNTcxLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcbiBcdFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdFx0Yy1cdTAwM2VwZXJjcHVfc2l6ZSA9IHBlcmNwdV9zaXplO1xuIFx0XHRcdGMtXHUwMDNldGd0ID0gYztcbi1cbitcdFx0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRpbml0X3JlZmlsbF93b3JrKGMpO1xuIFx0XHRcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XG4gXHRcdH1cbkBAIC02MDksNyArNjIzLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKVxuIFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdGMtXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcbiBcdFx0Yy1cdTAwM2V0Z3QgPSBjO1xuLVxuK1x0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0aW5pdF9yZWZpbGxfd29yayhjKTtcbiBcdFx0cHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTtcbiBcdH1cbkBAIC02MjAsNiArNjM0LDggQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKVxuIHN0YXRpYyB2b2lkIGRyYWluX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcbiB7XG4gXHRib29sIHBlcmNwdSA9ICEhYy1cdTAwM2VwZXJjcHVfc2l6ZTtcbitcdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XG4rXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFxuIFx0LyogTm8gcHJvZ3MgYXJlIHVzaW5nIHRoaXMgYnBmX21lbV9jYWNoZSwgYnV0IGh0YWJfbWFwX2ZyZWUoKSBjYWxsZWRcbiBcdCAqIGJwZl9tZW1fY2FjaGVfZnJlZSgpIGZvciBhbGwgcmVtYWluaW5nIGVsZW1lbnRzIGFuZCB0aGV5IGNhbiBiZSBpblxuQEAgLTYyOSw3ICs2NDUsMTAgQEAgc3RhdGljIHZvaWQgZHJhaW5fbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxuIFx0ICogb24gdGhlc2UgbGlzdHMsIHNvIGl0IGlzIHNhZmUgdG8gdXNlIF9fbGxpc3RfZGVsX2FsbCgpLlxuIFx0ICovXG4gXHRmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNlZnJlZV9ieV9yY3VfdHRyYWNlKSwgcGVyY3B1KTtcbi1cdGZyZWVfYWxsKGMsIGxsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpLCBwZXJjcHUpO1xuK1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0bGxub2RlID0gX19sbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0ZnJlZV9hbGwoYywgbGxub2RlLCBwZXJjcHUpO1xuIFx0ZnJlZV9hbGwoYywgX19sbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNlZnJlZV9sbGlzdCksIHBlcmNwdSk7XG4gXHRmcmVlX2FsbChjLCBfX2xsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2VmcmVlX2xsaXN0X2V4dHJhKSwgcGVyY3B1KTtcbiBcdGZyZWVfYWxsKGMsIF9fbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZWZyZWVfYnlfcmN1KSwgcGVyY3B1KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjM4OjUyLjY1MjM3MTM5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MDY4MTUxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIE1lbW9yeSBBbGxvY2F0b3IgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBtYWtpbmcgYSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBpbnRyb2R1Y2VkIGEgYHJhd19zcGlubG9ja190IGxvY2tgIHdpdGhpbiB0aGUgYHN0cnVjdCBicGZfbWVtX2NhY2hlYC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgaXQncyBhIGRpcmVjdCBhdHRlbXB0IHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gYGMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlYC4gVGhleSd2ZSBzd2FwcGVkIG91dCB0aGUgYXRvbWljIGxpbmtlZCBsaXN0IG9wZXJhdGlvbnMgKGBsbGlzdF9kZWxfZmlyc3RgLCBgbGxpc3RfZGVsX2FsbGAsIGBsbGlzdF9hZGRgKSBmb3IgdGhlaXIgbm9uLWF0b21pYyBjb3VudGVycGFydHMgKGBfX2xsaXN0X2RlbF9maXJzdGAsIGBfX2xsaXN0X2RlbF9hbGxgLCBgX19sbGlzdF9hZGRgKSB1bmRlciB0aGUgcHJvdGVjdGlvbiBvZiB0aGlzIG5ldyBsb2NrLiBUaGlzIGlzIGEgc29saWQgYXBwcm9hY2ggdG8gcHJldmVudCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9uIGB3YWl0aW5nX2Zvcl9ncF90dHJhY2VgLCBhbmQgaXQgaXMgc2lnbmlmaWNhbnQsIGdpdmVuIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGlzIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGNvZGUuXG5cblRoZSBxdWVzdGlvbiBub3cgaXMsIGRvZXMgdGhpcyB3YXJyYW50IGZ1enppbmc/IEFic29sdXRlbHksIHdpdGhvdXQgYSBkb3VidC4gQW55IGZ1bmRhbWVudGFsIG1vZGlmaWNhdGlvbiB0byBtZW1vcnkgYWxsb2NhdGlvbiBjb2RlIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5Ob3csIHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIGtleSB0YXJnZXRzPyBJJ2QgaW5pdGlhbGx5IHplcm8gaW4gb24gYGFsbG9jX2J1bGtgLCBgX19mcmVlX3JjdWAsIGBkb19jYWxsX3JjdV90dHJhY2VgLCBhbmQgYGRyYWluX21lbV9jYWNoZWAuIEhvd2V2ZXIsIGEgcXVpY2sgY2hlY2sgcmVtaW5kcyBtZSB0aGF0IHRob3NlIGFyZSBhbGwgZGVjbGFyZWQgYHN0YXRpY2AuIFNvLCBsZXQncyB0cmFjZSB0aGVpciBjYWxsZXJzIHRvIGZpbmQgdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgYGJwZl9tZW1fYWxsb2NfaW5pdGAsIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgLCBgYnBmX21lbV9hbGxvY19kZXN0cm95YCwgYGJwZl9tZW1fY2FjaGVfYWxsb2NgLCBgYnBmX21lbV9jYWNoZV9mcmVlYCwgYW5kIGBicGZfbWVtX2NhY2hlX3Jhd19mcmVlYCB0byBmaW5kIGFueSBleHBvcnRlZCBvciBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiBga2VybmVsL2JwZi9tZW1hbGxvYy5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxNSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjM5OjAwLjA1OTE4ODQ5NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODExMzU5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKGludHx2b2lkfHN0cnVjdCkuKmJwZl9tZW1fLipcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL21lbWFsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9tZW1hbGxvYy5jPTQ5ND1zdGF0aWMgdm9pZCBwcmVmaWxsX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNwdSlcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTQtICovXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjUxNTppbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTYte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU4My1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTg0OmludCBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01ODUte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU5Ny1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTk4OmludCBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNTk5LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz03MzA9c3RhdGljIHZvaWQgZGVzdHJveV9tZW1fYWxsb2Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgcmN1X2luX3Byb2dyZXNzKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTc1NC1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NzU1OnZvaWQgYnBmX21lbV9hbGxvY19kZXN0cm95KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzU2LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz04Nzg9c3RhdGljIHZvaWQgbm90cmFjZSB1bml0X2ZyZWVfcmN1KHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCB2b2lkICpwdHIpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTAxLSAqL1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5MDI6dm9pZCBub3RyYWNlICpicGZfbWVtX2FsbG9jKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc2l6ZV90IHNpemUpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTkwMy17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTE5LVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5MjA6dm9pZCBub3RyYWNlIGJwZl9tZW1fZnJlZShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTIxLXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MzUtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjkzNjp2b2lkIG5vdHJhY2UgYnBmX21lbV9mcmVlX3JjdShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTM3LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NTEtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk1Mjp2b2lkIG5vdHJhY2UgKmJwZl9tZW1fY2FjaGVfYWxsb2Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NTMte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk1OS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTYwOnZvaWQgbm90cmFjZSBicGZfbWVtX2NhY2hlX2ZyZWUoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk2MS17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTY3LVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5Njg6dm9pZCBub3RyYWNlIGJwZl9tZW1fY2FjaGVfZnJlZV9yY3Uoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk2OS17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTg1LSAqL1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5ODY6dm9pZCBicGZfbWVtX2NhY2hlX3Jhd19mcmVlKHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTg3LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05OTctICovXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk5ODp2b2lkIG5vdHJhY2UgKmJwZl9tZW1fY2FjaGVfYWxsb2NfZmxhZ3Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBnZnBfdCBmbGFncylcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTk5LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xMDIwLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoxMDIxOmludCBicGZfbWVtX2FsbG9jX2NoZWNrX3NpemUoYm9vbCBwZXJjcHUsIHNpemVfdCBzaXplKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xMDIyLXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xMDMwLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoxMDMxOnZvaWQgYnBmX21lbV9hbGxvY19zZXRfZHRvcihzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKCpkdG9yKSh2b2lkICpvYmosIHZvaWQgKmN0eCksXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTEwMzItXFx0XFx0XFx0ICAgIHZvaWQgKCpkdG9yX2N0eF9mcmVlKSh2b2lkICpjdHgpLCB2b2lkICpjdHgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjM5OjAwLjEwNzMwNDYzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyOTkxMTgxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gemVyb2VzIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGl0J3MgdG91Y2hpbmc6IGBhbGxvY19idWxrYCwgYF9fZnJlZV9yY3VgLCBgZG9fY2FsbF9yY3VfdHRyYWNlYCwgYGJwZl9tZW1fYWxsb2NfaW5pdGAsIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgLCBhbmQgYGRyYWluX21lbV9jYWNoZWAuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBSaWdodCBhd2F5LCBJIHNlZSBgYWxsb2NfYnVsa2AsIGFuZCB0aGF0IHJpbmdzIGFsYXJtIGJlbGxzIOKAkyBzcGVjaWZpY2FsbHkgYmVjYXVzZSBvZiBpdHMgcmVsYXRpb25zaGlwIHRvIGBicGZfbWVtX2NhY2hlX2FsbG9jYC4gSXQgc2VlbXMgbGlrZSBgYWxsb2NfYnVsa2AgaXMgdXNlZCB3aGVuIHRoZSBtZW1vcnkgY2FjaGUgaXMgZW1wdHkuIE1ha2VzIHNlbnNlOyB5b3UgbmVlZCB0byBidWxrLWFsbG9jYXRlIHdoZW4geW91IGhhdmUgdG8gcmVmaWxsIHRoZSBjYWNoZS5cblxuTm93LCBgX19mcmVlX3JjdWAganVtcHMgb3V0IGFzIGFuIFJDVSBjYWxsYmFjay4gT2YgY291cnNlLiBXZSdyZSBkZWFsaW5nIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQsIHNvIFJDVSBtYWtlcyBwZXJmZWN0IHNlbnNlIGZvciBzYWZlIGZyZWVpbmcuIEFuZCB0aGF0IHB1bGxzIG15IGZvY3VzIHRvIGBkb19jYWxsX3JjdV90dHJhY2VgIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGBicGZfbWVtX2NhY2hlX2ZyZWVfcmN1YC4gU28sIGBkb19jYWxsX3JjdV90dHJhY2VgIGlzIGxpa2VseSBjYWxsZWQgYnkgc29tZXRoaW5nIHJlbGF0ZWQgdG8gZnJlZWluZyBjYWNoZSBpdGVtcywgbGlrZWx5IGluc2lkZSBvZiBhbiBSQ1UgY2FsbGJhY2suIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGV4YWN0IGNhbGwgcGF0aHMsIGJ1dCB0aGF0IHNlZW1zIHRoZSBtb3N0IGxpa2VseSB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcxMywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOTowNi40MDY0MjQ3OTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0MDQ4NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fY2FsbF9yY3VfdHRyYWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvbWVtYWxsb2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL21lbWFsbG9jLmM9Mjk3PXN0YXRpYyB2b2lkIGVucXVlX3RvX2ZyZWUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHZvaWQgKm9iailcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0zMDYtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjMwNzpzdGF0aWMgdm9pZCBkb19jYWxsX3JjdV90dHJhY2Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTMwOC17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9MzM5PXN0YXRpYyB2b2lkIGZyZWVfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0zNjMtXFx0XFx0ZW5xdWVfdG9fZnJlZSh0Z3QsIGxsbm9kZSk7XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjM2NDpcXHRkb19jYWxsX3JjdV90dHJhY2UodGd0KTtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMzY1LX1cXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz0zNjc9c3RhdGljIHZvaWQgX19mcmVlX2J5X3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMzgyLVxcdC8qIE9iamVjdHMgd2VudCB0aHJvdWdoIHJlZ3VsYXIgUkNVIEdQLiBTZW5kIHRoZW0gdG8gUkNVIHRhc2tzIHRyYWNlICovXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjM4MzpcXHRkb19jYWxsX3JjdV90dHJhY2UodGd0KTtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMzg0LW91dDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDk6Mzk6MDYuNDUzODMzMDUzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY0NTQ3ODUyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBNZW50YWwgV2FsayBUaHJvdWdoIHRoZSBCUEYgTWVtb3J5IE1hbmFnZW1lbnQgQ29kZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIGBkb19jYWxsX3JjdV90dHJhY2VgIGlzIGNhbGxlZCBmcm9tIHR3byBrZXkgZnVuY3Rpb25zLCBgZnJlZV9idWxrYCBhbmQgYF9fZnJlZV9ieV9yY3VgLiBgZnJlZV9idWxrYCBpcyB0aGVuIHRyaWdnZXJlZCBlaXRoZXIgdGhyb3VnaCBgYnBmX21lbV9jYWNoZV9mcmVlYCBvciBgYnBmX21lbV9mcmVlYCwgc3BlY2lmaWNhbGx5IHdoZW4gdGhlIGNhY2hlIHJlYWNoZXMgY2FwYWNpdHkuIEkgbmVlZCB0byBrZWVwIHRoYXQgY2FsbCBzdGFjayBpbiBtaW5kLiBUaGUgaW5pdGlhbGl6YXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIHRoaXMgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtIGlzIGFsbCBtYW5hZ2VkIHRocm91Z2ggYGJwZl9tZW1fYWxsb2NfaW5pdGAsIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgLCBhbmQgYGJwZl9tZW1fYWxsb2NfZGVzdHJveWAuXG5cblRoZSByZWFsbHkgY29yZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZSB0aGVzZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMsIHRoZXNlIGFyZTpcbiogICBgYnBmX21lbV9hbGxvY2BcbiogICBgYnBmX21lbV9mcmVlYFxuKiAgIGBicGZfbWVtX2ZyZWVfcmN1YFxuKiAgIGBicGZfbWVtX2NhY2hlX2FsbG9jYFxuKiAgIGBicGZfbWVtX2NhY2hlX2ZyZWVgXG4qICAgYGJwZl9tZW1fY2FjaGVfZnJlZV9yY3VgXG4qICAgYGJwZl9tZW1fYWxsb2NfZGVzdHJveWBcblxuTm93IEkgbmVlZCB0byBxdWlja2x5IGNoZWNrIGlmIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHkuIEl0IHNlZW1zIGxpa2UgdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yJ3MgYXZhaWxhYmlsaXR5IGlzIGNvbnRyb2xsZWQgYnkgdGhlIGBDT05GSUdfQlBGX1NZU0NBTExgIGNvbmZpZyBvcHRpb24uIEdvb2QgdG8ga25vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU2NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOToxMi4wOTkzMTM5ODJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0ODU1MTkwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDk6Mzk6MTQuMTQ3ODczNTc5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY3OTQyMDU1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgcmVsYXRlcyB0byB0aGUga2VybmVsIGNvZGU6XG5cbioqQ2hlY2tpbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gb2YgYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlIGBrZXJuZWwvYnBmL21lbWFsbG9jLmNgIGZpbGUgaW4gdGhlIGtlcm5lbCBpcyBjb21waWxlZCBjb25kaXRpb25hbGx5LiBJIGtub3cgdGhpcyBmaWxlIGlzIGNyaXRpY2FsIGZvciBCUEYgbWVtb3J5IGFsbG9jYXRpb24sIGFuZCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXRzIGF2YWlsYWJpbGl0eSBtaWdodCBhZmZlY3QgYSBnaXZlbiBzeXN0ZW0gY29uZmlndXJhdGlvbiBvciBwZXJmb3JtYW5jZSBwcm9maWxlLiBJJ20gdGhpbmtpbmcsIGlzIGl0IG9ubHkgaW5jbHVkZWQgd2hlbiBjZXJ0YWluIGZlYXR1cmVzIG9yIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkPyBJZiBzbywgd2hpY2ggb25lcz8gSSdsbCBwcm9iYWJseSBzdGFydCBieSBncmVwcGluZyB0aGUga2VybmVsIHNvdXJjZSBmb3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIHJlbGF0ZWQgdG8gdGhpcyBzcGVjaWZpYyBmaWxlLCBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBgI2lmZGVmYCwgYCNpZmAsIGAjaWZuZGVmYCwgYW5kIGAjZW5kaWZgLiBJJ2xsIHdhbnQgdG8gcXVpY2tseSBzZWUgaWYgaXQncyB3cmFwcGVkIGluIGFueSBzdWNoIGJsb2NrcyB0byB0ZWxsIG1lIHdoZXRoZXIgaXRzIGluY2x1c2lvbiBpcyBkZXBlbmRlbnQgb24gcGFydGljdWxhciBidWlsZCBmbGFncyBvciBrZXJuZWwgbW9kdWxlcyBiZWluZyBlbmFibGVkLiBUaGlzIHVuZGVyc3RhbmRpbmcgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgZmxleGlibGUgYSBzeXN0ZW0gd2lsbCBiZSBpbiBpdHMgdXNhZ2Ugb2YgQlBGIG1lbW9yeSBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMTgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOToxOC44MjcyOTYzODRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTAxMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbWFsbG9jXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT0xNz1vYmotJChDT05GSUdfQlBGX0pJVCkgKz0gdHJhbXBvbGluZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xOS1pZmVxICgkKENPTkZJR19NTVUpJChDT05GSUdfNjRCSVQpLHl5KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOToxOC44NzY0MDMzMDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ4NjU2OTIxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBUaGlzIEJQRiBNZW1vcnkgQWxsb2NhdG9yIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggY2VudGVycyBhcm91bmQgYEJQRl9TWVNDQUxMYCDigJMgdGhhdCdzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtLiBUaGlzIGZpeCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiB3aXRoaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGJ5IGludHJvZHVjaW5nIGEgcmF3IHNwaW5sb2NrIHRvIHNhZmVndWFyZCBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYC4gTXkgZ3V0IHNheXMgdGhpcyBpcyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeSwgc28gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgcmlnaHQgYXBwcm9hY2guXG5cbkZpcnN0LCBJIG5lZWQgdG8gY2hvb3NlIG15IGZvY3VzIHN5bWJvbHMuIE15IGluaXRpYWwgbGlzdCBpbmNsdWRlcyB0aGUgY29yZSBhbGxvY2F0b3IgYW5kIGZyZWUgZnVuY3Rpb25zOiBgYnBmX21lbV9hbGxvY2AsIGBicGZfbWVtX2ZyZWVgLCBgYnBmX21lbV9mcmVlX3JjdWAsIGBicGZfbWVtX2NhY2hlX2FsbG9jYCwgYGJwZl9tZW1fY2FjaGVfZnJlZWAsIGBicGZfbWVtX2NhY2hlX2ZyZWVfcmN1YCwgYW5kIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgLlxuXG5XYWl0IGEgbWludXRlLCBgYnBmX21lbV9hbGxvY2AgYW5kIGBicGZfbWVtX2ZyZWVgIGFyZSAqaGVhdmlseSogaW52b2x2ZWQgaW4gQlBGIG1hcHMuIEkgbmVlZCB0byBiZSBjYXJlZnVsIGhlcmUuIEkgcmVtZW1iZXIgdGhlIGdvYWwgaXMgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIE15IGNvbmNlcm4gaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgbWlnaHQgYmUgaG90IHBhdGhzIGZvciBCUEYgcHJvZ3JhbXMsIGJ1dCB0aGV5IGFyZSBhbHNvIHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgdGhlIG1vZGlmaWVkIGNvZGUuIEknbSBnb2luZyB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLCBsb29raW5nIGZvciBzb21lIGZ1bmN0aW9ucyB0aGF0IGFyZSBkZWZpbml0ZWx5IG5vdCBob3QgcGF0aHMuXG5cbk9rYXksIGxldCdzIHNlZS4gVGhlcmUncyBgYnBmX21lbV9hbGxvY19pbml0YCwgYGJwZl9tZW1fYWxsb2NfZGVzdHJveWAsIGBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0YCwgYW5kIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgLiBBaCwgdGhlc2UgYXJlIGRlZmluaXRlbHkgY2FsbGVkIHdoZW4gYSBCUEYgbWFwIGlzIGNyZWF0ZWQgb3IgZGVzdHJveWVkLCBub3QgZHVyaW5nIHRoZSBmcmVxdWVudCBleGVjdXRpb24gb2YgYSBCUEYgcHJvZ3JhbS4gVGhvc2UgYXJlIHBlcmZlY3QuIEJ1dCBsZXQgbWUgcXVpY2tseSBjaGVjayB3aGVyZSBgYnBmX21lbV9hbGxvY19pbml0YCBpcyBjYWxsZWQsIGp1c3QgdG8gYmUgc3VyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTg1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjM5OjI1LjM2Mjk3NTM4OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE4OTkxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX21lbV9hbGxvY19pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvY29yZS5jPTM0MzY9c3RhdGljIGludCBfX2luaXQgYnBmX2dsb2JhbF9tYV9pbml0KHZvaWQpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDM5LVxcbmtlcm5lbC9icGYvY29yZS5jOjM0NDA6XFx0cmV0ID0gYnBmX21lbV9hbGxvY19pbml0KFxcdTAwMjZicGZfZ2xvYmFsX21hLCAwLCBmYWxzZSk7XFxua2VybmVsL2JwZi9jb3JlLmMtMzQ0MS1cXHRicGZfZ2xvYmFsX21hX3NldCA9ICFyZXQ7XFxuLS1cXG5rZXJuZWwvYnBmL2NwdW1hc2suYz01MTU9c3RhdGljIGludCBfX2luaXQgY3B1bWFza19rZnVuY19pbml0KHZvaWQpXFxuLS1cXG5rZXJuZWwvYnBmL2NwdW1hc2suYy01MjQtXFxua2VybmVsL2JwZi9jcHVtYXNrLmM6NTI1OlxcdHJldCA9IGJwZl9tZW1fYWxsb2NfaW5pdChcXHUwMDI2YnBmX2NwdW1hc2tfbWEsIHNpemVvZihzdHJ1Y3QgYnBmX2NwdW1hc2spLCBmYWxzZSk7XFxua2VybmVsL2JwZi9jcHVtYXNrLmMtNTI2LVxcdHJldCA9IHJldCA/OiByZWdpc3Rlcl9idGZfa2Z1bmNfaWRfc2V0KEJQRl9QUk9HX1RZUEVfVFJBQ0lORywgXFx1MDAyNmNwdW1hc2tfa2Z1bmNfc2V0KTtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTU0NT1zdGF0aWMgc3RydWN0IGJwZl9tYXAgKmh0YWJfbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtNjQ4LVxcdH0gZWxzZSB7XFxua2VybmVsL2JwZi9oYXNodGFiLmM6NjQ5OlxcdFxcdGVyciA9IGJwZl9tZW1fYWxsb2NfaW5pdChcXHUwMDI2aHRhYi1cXHUwMDNlbWEsIGh0YWItXFx1MDAzZWVsZW1fc2l6ZSwgZmFsc2UpO1xcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTY1MC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtNjUyLVxcdFxcdGlmIChwZXJjcHUpIHtcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzo2NTM6XFx0XFx0XFx0ZXJyID0gYnBmX21lbV9hbGxvY19pbml0KFxcdTAwMjZodGFiLVxcdTAwM2VwY3B1X21hLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTY1NC1cXHRcXHRcXHRcXHRcXHRcXHQgcm91bmRfdXAoaHRhYi1cXHUwMDNlbWFwLnZhbHVlX3NpemUsIDgpLCB0cnVlKTtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI3OTU9c3RhdGljIHN0cnVjdCBicGZfbWFwICpyaHRhYl9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yODMxLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI4MzI6XFx0ZXJyID0gYnBmX21lbV9hbGxvY19pbml0KFxcdTAwMjZyaHRhYi1cXHUwMDNlbWEsIHJodGFiLVxcdTAwM2VlbGVtX3NpemUsIGZhbHNlKTtcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yODMzLVxcdGlmIChlcnIpXFxuLS1cXG5rZXJuZWwvYnBmL2xwbV90cmllLmM9NTcxPXN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqdHJpZV9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG4tLVxcbmtlcm5lbC9icGYvbHBtX3RyaWUuYy02MDItXFx0XFx0ICAgIHRyaWUtXFx1MDAzZW1hcC52YWx1ZV9zaXplO1xcbmtlcm5lbC9icGYvbHBtX3RyaWUuYzo2MDM6XFx0ZXJyID0gYnBmX21lbV9hbGxvY19pbml0KFxcdTAwMjZ0cmllLVxcdTAwM2VtYSwgbGVhZl9zaXplLCBmYWxzZSk7XFxua2VybmVsL2JwZi9scG1fdHJpZS5jLTYwNC1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTQ5ND1zdGF0aWMgdm9pZCBwcmVmaWxsX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNwdSlcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTQtICovXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjUxNTppbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOToyNS40MTQ4Nzg3NThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ2NDM2ODg3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXMgU3ltYm9sIFNlbGVjdGlvbiBmb3IgQlBGIE1lbW9yeSBBbGxvY2F0b3IgUmFjZSBDb25kaXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIGNyaXRpY2FsIGtlcm5lbCBmdW5jdGlvbnMgZm9yIGZ1enppbmcgcmVsYXRlZCB0byB0aGlzIEJQRiBtZW1vcnkgYWxsb2NhdG9yIHJhY2UgY29uZGl0aW9uLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogdGFyZ2V0IHNwZWNpZmljLCBub24taG90cGF0aCBlbnRyeXBvaW50cyB0aGF0IGFyZSAqZGlyZWN0bHkqIGludm9sdmVkIGluIHRoZSBidWcncyBtb2RpZmllZCBsb2dpYy4gV2Ugd2FudCB0byBhdm9pZCBza2V3aW5nIHRoZSBmdXp6aW5nIGRpc3RyaWJ1dGlvbiB3aXRoIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLlxuXG5Jbml0aWFsbHksIEkgdGhvdWdodCBgYnBmX21lbV9hbGxvY2AgYW5kIGBicGZfbWVtX2ZyZWVgIHdlcmUgcHJvbWlzaW5nLCBiZWluZyBjYWxsZWQgZHVyaW5nIG1hcCB1cGRhdGVzIGFuZCBkZWxldGVzLCB3aGljaCBhcmUgaG90IHBhdGhzLiBIb3dldmVyLCB0aGUgcm9vdCBvZiB0aGUgaXNzdWUgbGllcyBpbiBSQ1UgY2FsbGJhY2tzIGFuZCBidWxrIGFsbG9jYXRpb25zL2ZyZWVzLiBUaGUgcHJvYmxlbSBpcyB3aXRoIHRoZSBtYW5pcHVsYXRpb24gb2YgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgaW4gZnVuY3Rpb25zIGxpa2UgYGFsbG9jX2J1bGtgLCBgX19mcmVlX3JjdWAsIGBkb19jYWxsX3JjdV90dHJhY2VgLCBhbmQgYGRyYWluX21lbV9jYWNoZWAuXG5cbk15IGluaXRpYWwgaW50dWl0aW9uIHdhcyB0byBpbmNsdWRlIGBicGZfbWVtX2NhY2hlX2FsbG9jYCBhbmQgYGJwZl9tZW1fY2FjaGVfZnJlZWAsIHNpbmNlIHRoZXkgYXJlIHRoZSBtYWluIGVudHJ5IHBvaW50cyBmb3IgdGhlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcgb2YgQlBGIG1hcCBlbGVtZW50cy4gVGhleSBhcmUgdXNlZCBmcmVxdWVudGx5IGFuZCByZWxhdGVkIHRvIHRoZSBjb25jdXJyZW50IGFsbG9jYXRpb25zIGFuZCBmcmVlcyB0aGF0IHRyaWdnZXIgdGhlIHJhY2UuIEhvd2V2ZXIsIHRoZSBpbnN0cnVjdGlvbnMgY2F1dGlvbiBhZ2FpbnN0IGluY2x1ZGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gSW5jbHVkaW5nIHRoZXNlIG1pZ2h0IHNrZXcgdGhlIHRlc3QgZGlzdHJpYnV0aW9ucywgbGVhZGluZyB0byB0aGUgZnV6emVyIGZvY3VzaW5nIG9uIHRoZW0gZGlzcHJvcG9ydGlvbmF0ZWx5LlxuXG5JbnN0ZWFkLCBsZXQncyBjb25zaWRlciBmdW5jdGlvbnMgdGhhdCBhcmUgKmRpcmVjdGx5KiBpbnZvbHZlZCBidXQgYXJlIG5vdCBob3QgcGF0aHMuIGBicGZfbWVtX2FsbG9jX2luaXRgIGFuZCBgYnBmX21lbV9hbGxvY19kZXN0cm95YCBhcmUgY2FsbGVkIGR1cmluZyBtYXAgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uLiBXaGlsZSBub3QgaG90IHBhdGhzIHRoZW1zZWx2ZXMsIHRoZXkgaW5pdGlhbGl6ZSBhbmQgZGVzdHJveSB0aGUgc3RydWN0dXJlcyBpbXBhY3RlZCBieSB0aGUgZml4LiBDcml0aWNhbGx5LCBgYnBmX21lbV9hbGxvY19kZXN0cm95YCBjYWxscyBgZHJhaW5fbWVtX2NhY2hlYCwgd2hpY2ggZGlyZWN0bHkgZXhlY3V0ZXMgdGhlIG1vZGlmaWVkIGNvZGUuIFRoaXMgbWFrZXMgdGhlbSBnb29kIGNhbmRpZGF0ZXMuIGBicGZfbWVtX2FsbG9jX2luaXRgIGluaXRpYWxpemVzIHRoZSBsb2NrLCB3aGljaCBpcyBrZXkuIEFsc28sIEkgd2lsbCBpbmNsdWRlIGBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0YCBhbmQgYGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdGAgc2luY2UgdGhleSBhcmUgZW50cnkgcG9pbnRzIHRoYXQgYXJlIG5vdCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyBhbmQgaW5pdGlhbGl6ZSBzdHJ1Y3R1cmVzLCByZWxhdGVkIHRvIHRoZSBmaXhlZCBjb2RlLlxuXG5TbywgSSdtIGdvaW5nIHdpdGg6XG5cbiogICBgYnBmX21lbV9hbGxvY19pbml0YFxuKiAgIGBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0YFxuKiAgIGBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXRgXG4qICAgYGJwZl9tZW1fYWxsb2NfZGVzdHJveWBcblxuVGhlc2UgYXJlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gVGhleSBhcmUgbm90IGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBUaGlzIHNob3VsZCBnaXZlIHRoZSBmdXp6ZXIgYSBnb29kIGVudHJ5IHBvaW50IHRvIHRyaWdnZXIgdGhlIGJ1Zy5cblxuSSBzaG91bGQgYWxzbyBub3RlIHRoZSByZWxldmFudCBjb25maWcgaXM6IGBCUEZfU1lTQ0FMTGAgYmVjYXVzZSB0aGlzIHBhdGNoIG1vZGlmaWVzIGNvcmUgQlBGIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UuXG5cbkZpbmFsIFJldmlldzogVGhpcyBzZWxlY3Rpb24gYWxpZ25zIHdpdGggdGhlIGluc3RydWN0aW9ucywgYW5kIHRhcmdldHMgZnVuY3Rpb25zIGRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBmaXggYnV0IG5vdCBzdWJqZWN0IHRvIGV4Y2Vzc2l2ZSBob3QtcGF0aCB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIyNiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOTo0MC4wNTg1Njk2MjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDU1NjQ4NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnPTE3PWlmIFJDX0NPUkVcXG5kcml2ZXJzL21lZGlhL3JjL0tjb25maWctMTgtXFxuZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnOjE5OmNvbmZpZyBCUEZfTElSQ19NT0RFMlxcbmRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZy0yMC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBlQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIGxpcmMgZGV2aWNlc1xcXCJcXG4tLVxcbmtlcm5lbC9LY29uZmlnLmxvY2tzPTI0Nj1jb25maWcgUVVFVUVEX1NQSU5MT0NLU19UUkFDRV9DT05URU5ERURfUkVMRUFTRVxcbi0tXFxua2VybmVsL0tjb25maWcubG9ja3MtMjY1LVxcbmtlcm5lbC9LY29uZmlnLmxvY2tzOjI2Njpjb25maWcgQlBGX0FSQ0hfU1BJTkxPQ0tcXG5rZXJuZWwvS2NvbmZpZy5sb2Nrcy0yNjctXFx0Ym9vbFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTMtIyBCUEYgaW50ZXJwcmV0ZXIgdGhhdCwgZm9yIGV4YW1wbGUsIGNsYXNzaWMgc29ja2V0IGZpbHRlcnMgZGVwZW5kIG9uLlxcbmtlcm5lbC9icGYvS2NvbmZpZzo0OmNvbmZpZyBCUEZcXG5rZXJuZWwvYnBmL0tjb25maWctNS1cXHRib29sXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcXFwiQlBGIHN1YnN5c3RlbVxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctMjYtXFxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXFxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXFxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXFx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTcyLVxcbmtlcm5lbC9icGYvS2NvbmZpZzo3Mzpjb25maWcgQlBGX1VOUFJJVl9ERUZBVUxUX09GRlxcbmtlcm5lbC9icGYvS2NvbmZpZy03NC1cXHRib29sIFxcXCJEaXNhYmxlIHVucHJpdmlsZWdlZCBCUEYgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz05MD1zb3VyY2UgXFxcImtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy05MS1cXG5rZXJuZWwvYnBmL0tjb25maWc6OTI6Y29uZmlnIEJQRl9MU01cXG5rZXJuZWwvYnBmL0tjb25maWctOTMtXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBMU00gSW5zdHJ1bWVudGF0aW9uXFxcIlxcbi0tXFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZzoyOm1lbnVjb25maWcgQlBGX1BSRUxPQURcXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIlByZWxvYWQgQlBGIGZpbGUgc3lzdGVtIHdpdGgga2VybmVsIHNwZWNpZmljIHByb2dyYW0gYW5kIG1hcCBpdGVyYXRvcnNcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZz0xND1pZiBCUEZfUFJFTE9BRFxcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnOjE1OmNvbmZpZyBCUEZfUFJFTE9BRF9VTURcXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiYnBmX3ByZWxvYWQga2VybmVsIG1vZHVsZVxcXCJcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz04NjU9Y29uZmlnIFBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODY3LVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg2ODpjb25maWcgQlBGX0tQUk9CRV9PVkVSUklERVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg2OS1cXHRib29sIFxcXCJFbmFibGUgQlBGIHByb2dyYW1zIHRvIG92ZXJyaWRlIGEga3Byb2JlZCBmdW5jdGlvblxcXCJcXG4tLVxcbm5ldC9LY29uZmlnPTM1ND1jb25maWcgQlFMXFxuLS1cXG5uZXQvS2NvbmZpZy0zNjAtXFxubmV0L0tjb25maWc6MzYxOmNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxcbm5ldC9LY29uZmlnLTM2Mi1cXHRib29sIFxcXCJlbmFibGUgQlBGIFNUUkVBTV9QQVJTRVJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjM5OjQyLjI2NDEzODgwOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjIxNzA4MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipCUEYgQ29uc2lkZXJhdGlvbnMgZm9yIFJlc3VsdCBTZXR0aW5nKipcblxuT2theSwgc28gSSdtIGFzc2Vzc2luZyB0aGUgYmVzdCBhcHByb2FjaCBoZXJlLiBUaGlua2luZyB0aHJvdWdoIHRoZSBtZWNoYW5pY3Mgb2YgdGhlIGRhdGEgZmxvdywgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIGFuZCBlZmZpY2llbnQgcGF0aCBpcyBjbGVhcmx5IHRoZSBgQlBGX1NZU0NBTExgIGludGVyZmFjZS4gSXQgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBob29rIGludG8gdGhlIGtlcm5lbCBhdCB0aGUgcmlnaHQgc3RhZ2UuIE5vIG5lZWQgdG8gb3ZlcmNvbXBsaWNhdGUgdGhpbmdzIHdpdGggc29tZSBjdXN0b20gb3IgbW9yZSBpbnZvbHZlZCBtZXRob2QsIHdoZW4gYSBkZWRpY2F0ZWQgYW5kIHdlbGwtZGVmaW5lZCBzeXNjYWxsIGludGVyZmFjZSBpcyBhdmFpbGFibGUuIEl0J3MgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoaXMgcGFydGljdWxhciBqb2IsIGZvciBzdXJlLlxuXG5UaGVyZWZvcmUsIHRoZSBhY3Rpb24gYmVjb21lcyBjbGVhcjogSSdsbCBmb2N1cyBvbiBjcmFmdGluZyB0aGUgbmVjZXNzYXJ5IGxvZ2ljIHRvIGVmZmVjdGl2ZWx5IGxldmVyYWdlIGBCUEZfU1lTQ0FMTGAgdG8gc2V0IHRoZSByZXN1bHRzLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBjYWxsLCBvciBpbXBsZW1lbnQsIHRoZSBmdW5jdGlvbiB0aGF0IHdpbGwgaGFuZGxlIHRoZSBzZXR0aW5nIG9mIHRoZXNlIHJlc3VsdHMuIExldCdzIGNhbGwgdGhpcyB0aGUgKnNldC1yZXN1bHRzKiBmdW5jdGlvbiwgYW5kIGJ1aWxkIGl0IHRvIGhhbmRsZSB3aGF0ZXZlciBkYXRhIHN0cnVjdHVyZSB0aGUgcmVzdWx0cyBuZWVkIHRvIGJlIGZlZCBpbnRvIHRoZSB0YXJnZXQgcHJvZ3JhbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE2NzMsIk91dHB1dFRva2VucyI6MTQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDk6Mzk6NDkuNDg1ODQ5NjYzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1NTU4MzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9tZW1fYWxsb2NfaW5pdFwiLFxuICAgIFwiYnBmX21lbV9hbGxvY19wZXJjcHVfaW5pdFwiLFxuICAgIFwiYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0XCIsXG4gICAgXCJicGZfbWVtX2FsbG9jX2Rlc3Ryb3lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBCUEYgbWVtb3J5IGFsbG9jYXRvciBieSBpbnRyb2R1Y2luZyBhIHJhdyBzcGlubG9jayB0byBwcm90ZWN0IHRoZSBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYCBsb2NrbGVzcyBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBCUEYgbWFwIG9wZXJhdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfbWVtX2FsbG9jX2luaXRcIixcbiAgICBcImJwZl9tZW1fYWxsb2NfcGVyY3B1X2luaXRcIixcbiAgICBcImJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdFwiLFxuICAgIFwiYnBmX21lbV9hbGxvY19kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3IgYnkgaW50cm9kdWNpbmcgYSByYXcgc3BpbmxvY2sgdG8gcHJvdGVjdCB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbG9ja2xlc3MgbGlzdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlci1zcGFjZSB2aWEgQlBGIG1hcCBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwOTozOTo0OS42MjE0NDEwNzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwOTU1MTY2Nzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDk6Mzk6NDkuNjIyMzY1NzQxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUwOTU0MjM4OTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgcmF3X3NwaW5sb2NrX3QgdG8gcHJvdGVjdCBjb25jdXJyZW50IGFjY2Vzc2VzIHRvIHRoZSBgd2FpdGluZ19mb3JfZ3BfdHRyYWNlYCBsaW5rZWQgbGlzdCBpbiB0aGUgQlBGIG1lbW9yeSBhbGxvY2F0b3IuIEl0IHJlcGxhY2VzIGF0b21pYyBsb2NrbGVzcyBsaXN0IG9wZXJhdGlvbnMgKGxsaXN0X2RlbF9maXJzdCwgbGxpc3RfZGVsX2FsbCwgbGxpc3RfYWRkKSB3aXRoIHRoZWlyIG5vbi1hdG9taWMgY291bnRlcnBhcnRzIHByb3RlY3RlZCBieSB0aGUgbmV3IHNwaW5sb2NrLiBUaGlzIGlzIHB1cmVseSBhIGNvbmN1cnJlbmN5IGFuZCBzeW5jaHJvbml6YXRpb24gZml4IHRvIHByZXZlbnQgbGlzdCBjb3JydXB0aW9uIGFuZCBkYXRhIHJhY2VzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24gbG9naWMgb3IgYm91bmRzIGNoZWNraW5nLiBBbnkgYnVncyByZWxhdGVkIHRvIHRoaXMgY29kZSAoc3VjaCBhcyBsaXN0IGNvcnJ1cHRpb24gbGVhZGluZyB0byB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgS0NTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYWYzMDU1ODc4YjZmODdmODMyYWRlOWRhOTlhMjNmMWYzYzhiMGM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMDk6Mzg6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21lbWFsbG9jLmMgYi9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbmluZGV4IGU5NjYyZGI3MTk4ZmUuLjU4Mjk2ZTkyYTRmZWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbisrKyBiL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xuQEAgLTExOSw2ICsxMTksNyBAQCBzdHJ1Y3QgYnBmX21lbV9jYWNoZSB7XG4gXHRzdHJ1Y3QgbGxpc3RfaGVhZCB3YWl0aW5nX2Zvcl9ncF90dHJhY2U7XG4gXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1X3R0cmFjZTtcbiBcdGF0b21pY190IGNhbGxfcmN1X3R0cmFjZV9pbl9wcm9ncmVzcztcbitcdHJhd19zcGlubG9ja190IGxvY2s7XG4gfTtcbiBcbiBzdHJ1Y3QgYnBmX21lbV9jYWNoZXMge1xuQEAgLTIwNyw2ICsyMDgsNyBAQCBzdGF0aWMgdm9pZCBhZGRfb2JqX3RvX2ZyZWVfbGlzdChzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKVxuIHN0YXRpYyB2b2lkIGFsbG9jX2J1bGsoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjbnQsIGludCBub2RlLCBib29sIGF0b21pYylcbiB7XG4gXHRzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBOVUxMLCAqb2xkX21lbWNnO1xuK1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdGdmcF90IGdmcDtcbiBcdHZvaWQgKm9iajtcbiBcdGludCBpO1xuQEAgLTIyOCwxMiArMjMwLDE0IEBAIHN0YXRpYyB2b2lkIGFsbG9jX2J1bGsoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjbnQsIGludCBub2RlLCBib29sIGF0b21pYylcbiBcdGlmIChpIFx1MDAzZT0gY250KVxuIFx0XHRyZXR1cm47XG4gXG4rXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRmb3IgKDsgaSBcdTAwM2MgY250OyBpKyspIHtcbi1cdFx0b2JqID0gbGxpc3RfZGVsX2ZpcnN0KFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbitcdFx0b2JqID0gX19sbGlzdF9kZWxfZmlyc3QoXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpO1xuIFx0XHRpZiAoIW9iailcbiBcdFx0XHRicmVhaztcbiBcdFx0YWRkX29ial90b19mcmVlX2xpc3QoYywgb2JqKTtcbiBcdH1cbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0aWYgKGkgXHUwMDNlPSBjbnQpXG4gXHRcdHJldHVybjtcbiBcbkBAIC0yNzksOCArMjgzLDE0IEBAIHN0YXRpYyBpbnQgZnJlZV9hbGwoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGUsIGJvb2wgcGVyXG4gc3RhdGljIHZvaWQgX19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4ge1xuIFx0c3RydWN0IGJwZl9tZW1fY2FjaGUgKmMgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IGJwZl9tZW1fY2FjaGUsIHJjdV90dHJhY2UpO1xuK1x0c3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZTtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXG4tXHRmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKSwgISFjLVx1MDAzZXBlcmNwdV9zaXplKTtcbitcdHJhd19zcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdGxsbm9kZSA9IF9fbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSk7XG4rXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcbitcdGZyZWVfYWxsKGMsIGxsbm9kZSwgISFjLVx1MDAzZXBlcmNwdV9zaXplKTtcbiBcdGF0b21pY19zZXQoXHUwMDI2Yy1cdTAwM2VjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3MsIDApO1xuIH1cbiBcbkBAIC0yOTcsNiArMzA3LDcgQEAgc3RhdGljIHZvaWQgZW5xdWVfdG9fZnJlZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgdm9pZCAqb2JqKVxuIHN0YXRpYyB2b2lkIGRvX2NhbGxfcmN1X3R0cmFjZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcbiB7XG4gXHRzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxub2RlLCAqdDtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXG4gXHRpZiAoYXRvbWljX3hjaGcoXHUwMDI2Yy1cdTAwM2VjYWxsX3JjdV90dHJhY2VfaW5fcHJvZ3Jlc3MsIDEpKSB7XG4gXHRcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoYy1cdTAwM2VkcmFpbmluZykpKSB7XG5AQCAtMzA3LDggKzMxOCwxMCBAQCBzdGF0aWMgdm9pZCBkb19jYWxsX3JjdV90dHJhY2Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXG4gXHR9XG4gXG4gXHRXQVJOX09OX09OQ0UoIWxsaXN0X2VtcHR5KFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKSk7XG4rXHRyYXdfc3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRsbGlzdF9mb3JfZWFjaF9zYWZlKGxsbm9kZSwgdCwgbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZWZyZWVfYnlfcmN1X3R0cmFjZSkpXG4tXHRcdGxsaXN0X2FkZChsbG5vZGUsIFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbitcdFx0X19sbGlzdF9hZGQobGxub2RlLCBcdTAwMjZjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZSk7XG4rXHRyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdGlmICh1bmxpa2VseShSRUFEX09OQ0UoYy1cdTAwM2VkcmFpbmluZykpKSB7XG4gXHRcdF9fZnJlZV9yY3UoXHUwMDI2Yy1cdTAwM2VyY3VfdHRyYWNlKTtcbkBAIC01MzUsNiArNTQ4LDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcbiBcdFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdFx0Yy1cdTAwM2VwZXJjcHVfc2l6ZSA9IHBlcmNwdV9zaXplO1xuIFx0XHRcdGMtXHUwMDNldGd0ID0gYztcbitcdFx0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRpbml0X3JlZmlsbF93b3JrKGMpO1xuIFx0XHRcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XG4gXHRcdH1cbkBAIC01NTcsNyArNTcxLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcbiBcdFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdFx0Yy1cdTAwM2VwZXJjcHVfc2l6ZSA9IHBlcmNwdV9zaXplO1xuIFx0XHRcdGMtXHUwMDNldGd0ID0gYztcbi1cbitcdFx0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRpbml0X3JlZmlsbF93b3JrKGMpO1xuIFx0XHRcdHByZWZpbGxfbWVtX2NhY2hlKGMsIGNwdSk7XG4gXHRcdH1cbkBAIC02MDksNyArNjIzLDcgQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKVxuIFx0XHRjLVx1MDAzZW9iamNnID0gb2JqY2c7XG4gXHRcdGMtXHUwMDNlcGVyY3B1X3NpemUgPSBwZXJjcHVfc2l6ZTtcbiBcdFx0Yy1cdTAwM2V0Z3QgPSBjO1xuLVxuK1x0XHRyYXdfc3Bpbl9sb2NrX2luaXQoXHUwMDI2Yy1cdTAwM2Vsb2NrKTtcbiBcdFx0aW5pdF9yZWZpbGxfd29yayhjKTtcbiBcdFx0cHJlZmlsbF9tZW1fY2FjaGUoYywgY3B1KTtcbiBcdH1cbkBAIC02MjAsNiArNjM0LDggQEAgaW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKVxuIHN0YXRpYyB2b2lkIGRyYWluX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcbiB7XG4gXHRib29sIHBlcmNwdSA9ICEhYy1cdTAwM2VwZXJjcHVfc2l6ZTtcbitcdHN0cnVjdCBsbGlzdF9ub2RlICpsbG5vZGU7XG4rXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFxuIFx0LyogTm8gcHJvZ3MgYXJlIHVzaW5nIHRoaXMgYnBmX21lbV9jYWNoZSwgYnV0IGh0YWJfbWFwX2ZyZWUoKSBjYWxsZWRcbiBcdCAqIGJwZl9tZW1fY2FjaGVfZnJlZSgpIGZvciBhbGwgcmVtYWluaW5nIGVsZW1lbnRzIGFuZCB0aGV5IGNhbiBiZSBpblxuQEAgLTYyOSw3ICs2NDUsMTAgQEAgc3RhdGljIHZvaWQgZHJhaW5fbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxuIFx0ICogb24gdGhlc2UgbGlzdHMsIHNvIGl0IGlzIHNhZmUgdG8gdXNlIF9fbGxpc3RfZGVsX2FsbCgpLlxuIFx0ICovXG4gXHRmcmVlX2FsbChjLCBsbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNlZnJlZV9ieV9yY3VfdHRyYWNlKSwgcGVyY3B1KTtcbi1cdGZyZWVfYWxsKGMsIGxsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2V3YWl0aW5nX2Zvcl9ncF90dHJhY2UpLCBwZXJjcHUpO1xuK1x0cmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0bGxub2RlID0gX19sbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlKTtcbitcdHJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0ZnJlZV9hbGwoYywgbGxub2RlLCBwZXJjcHUpO1xuIFx0ZnJlZV9hbGwoYywgX19sbGlzdF9kZWxfYWxsKFx1MDAyNmMtXHUwMDNlZnJlZV9sbGlzdCksIHBlcmNwdSk7XG4gXHRmcmVlX2FsbChjLCBfX2xsaXN0X2RlbF9hbGwoXHUwMDI2Yy1cdTAwM2VmcmVlX2xsaXN0X2V4dHJhKSwgcGVyY3B1KTtcbiBcdGZyZWVfYWxsKGMsIF9fbGxpc3RfZGVsX2FsbChcdTAwMjZjLVx1MDAzZWZyZWVfYnlfcmN1KSwgcGVyY3B1KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjM5OjQ5LjYyMjM2Njk5MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDk1NDIxOTk4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgTWVtb3J5IEFsbG9jYXRvciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgY29uY3VycmVuY3kgZml4IGluIGBrZXJuZWwvYnBmL21lbWFsbG9jLmNgLiBNeSBpbml0aWFsIHJlYWQgdGVsbHMgbWUgaXQncyBhZGRpbmcgYSBgcmF3X3NwaW5sb2NrX3QgbG9ja2AgdG8gdGhlIGBicGZfbWVtX2NhY2hlYCBzdHJ1Y3R1cmUuIFRoZSBtYWluIHRocnVzdCBpcyByZXBsYWNpbmcgdGhlIGF0b21pYyBsaXN0IG9wZXJhdGlvbnMgKGBsbGlzdF9kZWxfZmlyc3RgLCBgbGxpc3RfZGVsX2FsbGAsIGBsbGlzdF9hZGRgKSB3aXRoIHRoZWlyIG5vbi1hdG9taWMgY291bnRlcnBhcnRzIChgX19sbGlzdF9kZWxfZmlyc3RgLCBgX19sbGlzdF9kZWxfYWxsYCwgYF9fbGxpc3RfYWRkYCkgd2hlbiBkZWFsaW5nIHdpdGggYGMtXHUwMDNld2FpdGluZ19mb3JfZ3BfdHRyYWNlYCwgYW5kIHdyYXBwaW5nIHRob3NlIG9wZXJhdGlvbnMgd2l0aCBgcmF3X3NwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmMtXHUwMDNlbG9jaywgZmxhZ3MpYC4gVGhpcyBpcyBjbGVhcmx5IGRlc2lnbmVkIHRvIHByb3RlY3QgdGhlIGxpc3QgZnJvbSByYWNlIGNvbmRpdGlvbnMgYXJpc2luZyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzIGZyb20gbXVsdGlwbGUgQ1BVcyBvciBjb250ZXh0cy5cblxuVGhlIHBhdGNoIGl0c2VsZiBkb2Vzbid0IHRvdWNoIGFueXRoaW5nIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnksIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcywgb3IgbWVtb3J5IGNvbnRlbnRzIGRpcmVjdGx5LiBUaGUgYnVncyB0aGlzIGFpbXMgdG8gZml4IGFyZSBhbGwgYWJvdXQgcmFjZSBjb25kaXRpb25zIG9yIGRhdGEgY29ycnVwdGlvbiB3aXRoaW4gdGhlIGxpc3QgaXRzZWxmLCB3aGljaCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gKHVzZS1hZnRlci1mcmVlLCBvdXQtb2YtYm91bmRzIGR1ZSB0byBsaXN0IGNvcnJ1cHRpb24pIG9yIEtDU0FOIChkYXRhIHJhY2VzKSwgb3IgbGVhZCB0byBzdHJhaWdodGZvcndhcmQga2VybmVsIHBhbmljcy5cblxuTGV0J3MgZG8gYSBxdWljayB3YWxrLXRocm91Z2ggdG8gY29uZmlybS4gYGFsbG9jX2J1bGtgLCBgX19mcmVlX3JjdWAsIGBkb19jYWxsX3JjdV90dHJhY2VgLCBhbmQgYGRyYWluX21lbV9jYWNoZWAgYWxsIG5vdyBjb3JyZWN0bHkgYWNxdWlyZSB0aGUgbG9jayBgYy1cdTAwM2Vsb2NrYCBiZWZvcmUgbWFuaXB1bGF0aW5nIGBjLVx1MDAzZXdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgdXNpbmcgdGhlIG5vbi1hdG9taWMgbGlzdCBmdW5jdGlvbnMuIGBicGZfbWVtX2FsbG9jX2luaXRgIGFuZCBgYnBmX21lbV9hbGxvY19wZXJjcHVfdW5pdF9pbml0YCBjb3JyZWN0bHkgaW5pdGlhbGl6ZSB0aGUgbG9jay5cblxuSXQncyBwdXJlbHkgYSBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gY2hhbmdlIHRvIHByb3RlY3QgYSBsaW5rZWQgbGlzdC4gTm8gbmV3IHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIE15IGNvbmNsdXNpb24gaXMgdGhhdCBLTVNBTiBpcyBub3QgbmVjZXNzYXJ5IGhlcmUuIEknbGwgZG9jdW1lbnQgbXkgcmVhc29uaW5nIGFuZCBzZXQgYE5lZWRzS01TQU5gIHRvIGZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzEyLCJPdXRwdXRUb2tlbnMiOjIwNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA5OjQwOjQwLjU3NjU4OTQ4NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHJhd19zcGlubG9ja190IHRvIHByb3RlY3QgY29uY3VycmVudCBhY2Nlc3NlcyB0byB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbGlua2VkIGxpc3QgaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yLiBJdCByZXBsYWNlcyBhdG9taWMgbG9ja2xlc3MgbGlzdCBvcGVyYXRpb25zIChsbGlzdF9kZWxfZmlyc3QsIGxsaXN0X2RlbF9hbGwsIGxsaXN0X2FkZCkgd2l0aCB0aGVpciBub24tYXRvbWljIGNvdW50ZXJwYXJ0cyBwcm90ZWN0ZWQgYnkgdGhlIG5ldyBzcGlubG9jay4gVGhpcyBpcyBwdXJlbHkgYSBjb25jdXJyZW5jeSBhbmQgc3luY2hyb25pemF0aW9uIGZpeCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhbmQgZGF0YSByYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uIGxvZ2ljIG9yIGJvdW5kcyBjaGVja2luZy4gQW55IGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNvZGUgKHN1Y2ggYXMgbGlzdCBjb3JydXB0aW9uIGxlYWRpbmcgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtDU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHJhd19zcGlubG9ja190IHRvIHByb3RlY3QgY29uY3VycmVudCBhY2Nlc3NlcyB0byB0aGUgYHdhaXRpbmdfZm9yX2dwX3R0cmFjZWAgbGlua2VkIGxpc3QgaW4gdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yLiBJdCByZXBsYWNlcyBhdG9taWMgbG9ja2xlc3MgbGlzdCBvcGVyYXRpb25zIChsbGlzdF9kZWxfZmlyc3QsIGxsaXN0X2RlbF9hbGwsIGxsaXN0X2FkZCkgd2l0aCB0aGVpciBub24tYXRvbWljIGNvdW50ZXJwYXJ0cyBwcm90ZWN0ZWQgYnkgdGhlIG5ldyBzcGlubG9jay4gVGhpcyBpcyBwdXJlbHkgYSBjb25jdXJyZW5jeSBhbmQgc3luY2hyb25pemF0aW9uIGZpeCB0byBwcmV2ZW50IGxpc3QgY29ycnVwdGlvbiBhbmQgZGF0YSByYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uIGxvZ2ljIG9yIGJvdW5kcyBjaGVja2luZy4gQW55IGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNvZGUgKHN1Y2ggYXMgbGlzdCBjb3JydXB0aW9uIGxlYWRpbmcgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIEtDU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7wlc[1] Phase: Succeeded StartedAt: 2026-08-27 09:40:51 +0000 UTC FinishedAt: 2026-08-27 09:40:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-27 09:40:51 +0000 UTC FinishedAt: 2026-08-27 09:40:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2] Phase: Succeeded StartedAt: 2026-08-27 09:40:51 +0000 UTC FinishedAt: 2026-08-27 13:23:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN) Phase: Succeeded StartedAt: 2026-08-27 09:40:51 +0000 UTC FinishedAt: 2026-08-27 13:23:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-27 09:40:51 +0000 UTC FinishedAt: 2026-08-27 09:41:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-27 09:40:51 +0000 UTC FinishedAt: 2026-08-27 09:40:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt7wlc/series-workflowt7wlc-convert-artifact-4149418777/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-27 09:41:02 +0000 UTC FinishedAt: 2026-08-27 09:56:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-27 09:41:02 +0000 UTC FinishedAt: 2026-08-27 09:56:59 +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:*cfb9c978-92e2-4560-99ce-e190400b8512,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-workflowt7wlc/series-workflowt7wlc-convert-artifact-4149418777/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": "cae6e21c-0f8e-4934-a4c1-a748861c5f33", "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-workflowt7wlc/series-workflowt7wlc-build-action-4031528631/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-27 09:41:02 +0000 UTC FinishedAt: 2026-08-27 09:56:49 +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:*cfb9c978-92e2-4560-99ce-e190400b8512,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-workflowt7wlc/series-workflowt7wlc-convert-artifact-4149418777/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": "cae6e21c-0f8e-4934-a4c1-a748861c5f33", "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-workflowt7wlc/series-workflowt7wlc-build-action-4031528631/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-27 09:56:59 +0000 UTC FinishedAt: 2026-08-27 09:56:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-27 09:56:59 +0000 UTC FinishedAt: 2026-08-27 09:56:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-27 09:56:59 +0000 UTC FinishedAt: 2026-08-27 09:57:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-27 09:56:59 +0000 UTC FinishedAt: 2026-08-27 09:57:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt7wlc/series-workflowt7wlc-convert-artifact-721673964/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-27 09:57:09 +0000 UTC FinishedAt: 2026-08-27 09:59:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-27 09:57:09 +0000 UTC FinishedAt: 2026-08-27 09:59:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cae6e21c-0f8e-4934-a4c1-a748861c5f33,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-workflowt7wlc/series-workflowt7wlc-build-action-4031528631/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-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-27 09:59:34 +0000 UTC FinishedAt: 2026-08-27 09:59:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-27 09:59:34 +0000 UTC FinishedAt: 2026-08-27 09:59:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-27 09:59:34 +0000 UTC FinishedAt: 2026-08-27 10:15:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-27 09:59:34 +0000 UTC FinishedAt: 2026-08-27 10:15:35 +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:*cfb9c978-92e2-4560-99ce-e190400b8512,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-workflowt7wlc/series-workflowt7wlc-convert-artifact-721673964/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": "e7c38d04-bef8-467d-9658-e1225cc5e32f", "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-workflowt7wlc/series-workflowt7wlc-build-action-965391752/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-27 09:59:34 +0000 UTC FinishedAt: 2026-08-27 10:15:25 +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:*cfb9c978-92e2-4560-99ce-e190400b8512,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-workflowt7wlc/series-workflowt7wlc-convert-artifact-721673964/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": "e7c38d04-bef8-467d-9658-e1225cc5e32f", "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-workflowt7wlc/series-workflowt7wlc-build-action-965391752/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-27 10:15:35 +0000 UTC FinishedAt: 2026-08-27 10:15:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-27 10:15:35 +0000 UTC FinishedAt: 2026-08-27 10:15:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-27 10:15:35 +0000 UTC FinishedAt: 2026-08-27 10:17:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-27 10:15:35 +0000 UTC FinishedAt: 2026-08-27 10:17:19 +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:*e7c38d04-bef8-467d-9658-e1225cc5e32f,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-workflowt7wlc/series-workflowt7wlc-build-action-965391752/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-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-27 10:17:29 +0000 UTC FinishedAt: 2026-08-27 13:23:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-27 10:17:29 +0000 UTC FinishedAt: 2026-08-27 13:23:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"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:*cae6e21c-0f8e-4934-a4c1-a748861c5f33,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e7c38d04-bef8-467d-9658-e1225cc5e32f,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-workflowt7wlc/series-workflowt7wlc-build-action-4031528631/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-workflowt7wlc/series-workflowt7wlc-build-action-965391752/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-27 10:17:29 +0000 UTC FinishedAt: 2026-08-27 10:17:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-27 10:17:29 +0000 UTC FinishedAt: 2026-08-27 10:17:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"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-workflowt7wlc/series-workflowt7wlc-convert-artifact-1890892501/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-27 10:17:29 +0000 UTC FinishedAt: 2026-08-27 10:17:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-27 10:17:29 +0000 UTC FinishedAt: 2026-08-27 10:17:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[10].run-retest Phase: Succeeded StartedAt: 2026-08-27 10:17:30 +0000 UTC FinishedAt: 2026-08-27 11:20:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:retest-data,Default:nil,Value:*{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*cae6e21c-0f8e-4934-a4c1-a748861c5f33,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e7c38d04-bef8-467d-9658-e1225cc5e32f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,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-workflowt7wlc/series-workflowt7wlc-build-action-4031528631/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-workflowt7wlc/series-workflowt7wlc-build-action-965391752/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[10].run-retest[0] Phase: Succeeded StartedAt: 2026-08-27 10:17:30 +0000 UTC FinishedAt: 2026-08-27 10:17:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[10].run-retest[0].save-retest-task Phase: Succeeded StartedAt: 2026-08-27 10:17:30 +0000 UTC FinishedAt: 2026-08-27 10:17:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},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-workflowt7wlc/series-workflowt7wlc-convert-artifact-964697034/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-27 10:17:40 +0000 UTC FinishedAt: 2026-08-27 13:23:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-27 10:17:40 +0000 UTC FinishedAt: 2026-08-27 13:23:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cae6e21c-0f8e-4934-a4c1-a748861c5f33,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e7c38d04-bef8-467d-9658-e1225cc5e32f,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-workflowt7wlc/series-workflowt7wlc-build-action-4031528631/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-workflowt7wlc/series-workflowt7wlc-build-action-965391752/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-workflowt7wlc/series-workflowt7wlc-convert-artifact-1890892501/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,} --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[10].run-retest[1] Phase: Succeeded StartedAt: 2026-08-27 10:17:40 +0000 UTC FinishedAt: 2026-08-27 11:20:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7wlc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_mem_alloc_init","bpf_mem_alloc_percpu_init","bpf_mem_alloc_percpu_unit_init","bpf_mem_alloc_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6dcd0aed185432d02cafc82b738318af257ccd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"f77e9c68-7d16-4a38-9550-e0437897671e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:{"findings":["5ac25989-0260-4506-a08a-25fa6e4957e7","d4bc6f3a-dacb-412b-ac9d-51a5c1dbc4a4","f322b4d1-7f66-454a-80ff-6ed13eb274aa","40ff44c7-989e-4e59-a57c-7d669c0abd76"]},track:KASAN)[10].run-retest[1].retest Phase: Succeeded StartedAt: 2026-08-27 10:17:40 +0000 UTC FinishedAt: 2026-08-27 11:19:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cae6e21c-0f8e-4934-a4c1-a748861c5f33,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e7c38d04-bef8-467d-9658-e1225cc5e32f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Previous reproducers,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-workflowt7wlc/series-workflowt7wlc-build-action-4031528631/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-workflowt7wlc/series-workflowt7wlc-build-action-965391752/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:retest-task,Path:/data/retest.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-workflowt7wlc/series-workflowt7wlc-convert-artifact-964697034/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,}