Name: series-workflowdj2bn Phase: Succeeded StartedAt: 2026-08-05 18:05:47 +0000 UTC FinishedAt: 2026-08-05 22:30:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[0] Phase: Succeeded StartedAt: 2026-08-05 18:05:47 +0000 UTC FinishedAt: 2026-08-05 18:47:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 18:05:47 +0000 UTC FinishedAt: 2026-08-05 18:47:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "6655c409707ec8ce9ce0850ffe4fe02331fd4d9c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "6655c409707ec8ce9ce0850ffe4fe02331fd4d9c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "0ccc69e7-5596-4ae0-8152-47d9cdbf1d33" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_check_attach_target", "bpf_check_attach_btf_id_multi" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF90YXJnZXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgdmVyaWZpZXIgdG8gcHJldmVudCBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG5vbi1rZXJuZWwgQlRGIG9iamVjdHMgKGUuZy4sIG90aGVyIEJQRiBwcm9ncmFtcykuIFRoaXMgYWZmZWN0cyB0aGUgQlBGIHByb2dyYW0gYXR0YWNobWVudCBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCB3aGVuIGxvYWRpbmcgb3IgYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBCUEYgYXR0YWNobWVudCB2ZXJpZmljYXRpb24gZnVuY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGJjZmZmZTY1ZjRlMWRiMzM2NjczNjU5Mjc2N2ZmOGExMDc0NWQyYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTg6NDY6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA3NDM5YWZkYzg1MWE3Li5mMzY0NDUzYTJlY2I3IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC0xOTAyMiw2ICYjNDM7MTkwMjIsOSBAQCBzdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYlxuIFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0O1xuIFx0Y29uc3QgY2hhciAqdG5hbWU7XG4gXG4mIzQzO1x0aWYgKCFidGZfaXNfa2VybmVsKGJ0ZikpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRzd2l0Y2ggKHByb2ctXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XG4gXHRcdHQgPSBidGZfdHlwZV9ieV9pZChidGYsIGJ0Zl9pZCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG5pbmRleCA0YTg3ZDcxNjNjOGM3Li4yNTIzYzA3YTE2YzY1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcbkBAIC01LDYgJiM0Mzs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnRmLmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDtiaW5kNF9wcm9nLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2ZyZXBsYWNlX3Byb2dtYXAuc2tlbC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2ZlbnRyeV9zbGVlcGFibGUuc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7eGRwX2R1bW15LnNrZWwuaFwmIzM0O1xuIFxuIHR5cGVkZWYgaW50ICgqdGVzdF9jYikoc3RydWN0IGJwZl9vYmplY3QgKm9iaik7XG5AQCAtNTc2LDYgJiM0Mzs1NzcsNjAgQEAgc3RhdGljIHZvaWQgdGVzdF9mdW5jX3JlcGxhY2VfcHJvZ21hcCh2b2lkKVxuIFx0ZnJlcGxhY2VfcHJvZ21hcF9fZGVzdHJveShza2VsKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHRlc3Rfc2xlZXBhYmxlX2ZlbnRyeV90b194ZHAodm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBmZW50cnlfc2xlZXBhYmxlICpza2VsID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgeGRwX2R1bW15ICpza2VsX3hkcCA9IE5VTEw7XG4mIzQzO1x0aW50IGlmaW5kZXgsIHByb2dfZmQsIGVycjtcbiYjNDM7XHRjaGFyIGJ1ZmZbNjRdID0ge307XG4mIzQzO1xuJiM0MzsjaWZuZGVmIF9feDg2XzY0X19cbiYjNDM7XHR0ZXN0X19za2lwKCk7XG4mIzQzO1x0cmV0dXJuO1xuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzO1x0aWZpbmRleCA9IGlmX25hbWV0b2luZGV4KFwmIzM0O2xvXCYjMzQ7KTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9HVChpZmluZGV4LCAwLCBcJiMzNDtpZl9uYW1ldG9pbmRleFwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdHNrZWxfeGRwID0geGRwX2R1bW15X19vcGVuX2FuZF9sb2FkKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLCBcJiMzNDt4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRza2VsID0gZmVudHJ5X3NsZWVwYWJsZV9fb3BlbigpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtmZW50cnlfc2xlZXBhYmxlX19vcGVuXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRza2VsLVx1MDAzZWJzcy1cdTAwM2V1c2VyX3B0ciA9IGJ1ZmY7XG4mIzQzO1xuJiM0MztcdHByb2dfZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbF94ZHAtXHUwMDNlcHJvZ3MuX194NjRfc3lzX25vcCk7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5X3hkcCwgcHJvZ19mZCwgXCYjMzQ7X194NjRfc3lzX25vcFwmIzM0Oyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDticGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXRcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IGZlbnRyeV9zbGVlcGFibGVfX2xvYWQoc2tlbCk7XG4mIzQzO1x0QVNTRVJUX0VSUihlcnIsIFwmIzM0O2ZlbnRyeV9zbGVlcGFibGVfX2xvYWRcJiMzNDspO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0c2tlbC1cdTAwM2VsaW5rcy5mZW50cnlfeGRwID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZShza2VsLVx1MDAzZXByb2dzLmZlbnRyeV94ZHApO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLVx1MDAzZWxpbmtzLmZlbnRyeV94ZHAsIFwmIzM0O2JwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2VcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdHNrZWxfeGRwLVx1MDAzZWxpbmtzLl9feDY0X3N5c19ub3AgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3hkcChza2VsX3hkcC1cdTAwM2Vwcm9ncy5fX3g2NF9zeXNfbm9wLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0aWZpbmRleCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLVx1MDAzZWxpbmtzLl9feDY0X3N5c19ub3AsIFwmIzM0O2JwZl9wcm9ncmFtX19hdHRhY2hfeGRwXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRlcnIgPSBzeXN0ZW0oXCYjMzQ7cGluZyAtcSAtYyAxIC1XIDEgMTI3LjAuMC4xIFx1MDAzZSAvZGV2L251bGxcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9PSyhlcnIsIFwmIzM0O3BpbmdcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUlIoc2tlbC1cdTAwM2Vic3MtXHUwMDNlcmV0dmFsLCBcJiMzNDtyZXR2YWxcJiMzNDspO1xuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdGZlbnRyeV9zbGVlcGFibGVfX2Rlc3Ryb3koc2tlbCk7XG4mIzQzO1x0eGRwX2R1bW15X19kZXN0cm95KHNrZWxfeGRwKTtcbiYjNDM7fVxuJiM0MztcbiAvKiBOT1RFOiBhZmZlY3Qgb3RoZXIgdGVzdHMsIG11c3QgcnVuIGluIHNlcmlhbCBtb2RlICovXG4gdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpXG4ge1xuQEAgLTYwNyw0ICYjNDM7NjYyLDYgQEAgdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpXG4gXHRcdHRlc3RfZnVuY19yZXBsYWNlX2ludF93aXRoX3ZvaWQoKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O2ZyZXBsYWNlX3ZvaWRcJiMzNDspKVxuIFx0XHR0ZXN0X2Z1bmNfcmVwbGFjZV92b2lkKCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c2xlZXBhYmxlX2ZlbnRyeV90b194ZHBcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9zbGVlcGFibGVfZmVudHJ5X3RvX3hkcCgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjhjMGZjNjkxZDMyOWRcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmNcbkBAIC0wLDAgJiM0MzsxLDE4IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNpbmNsdWRlIFwmIzM0O3ZtbGludXguaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFx1MDAzZVxuJiM0MztcbiYjNDM7Y2hhciBMSUNFTlNFW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiM0MztcbiYjNDM7dm9pZCAqdXNlcl9wdHI7XG4mIzQzO2ludCByZXR2YWw7XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7ZmVudHJ5LnNcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyhmZW50cnlfeGRwKVxuJiM0Mzt7XG4mIzQzO1x0Y2hhciBidWZmWzY0XTtcbiYjNDM7XG4mIzQzO1x0cmV0dmFsID0gYnBmX2NvcHlfZnJvbV91c2VyKGJ1ZmYsIHNpemVvZihidWZmKSwgdXNlcl9wdHIpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXG5pbmRleCBkOTg4YjJlMGNlZTg0Li41ZjFlMDc3MTAyMWRmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmNcbkBAIC0xMCw0ICYjNDM7MTAsMTAgQEAgaW50IHhkcF9kdW1teV9wcm9nKHN0cnVjdCB4ZHBfbWQgKmN0eClcbiBcdHJldHVybiBYRFBfUEFTUztcbiB9XG4gXG4mIzQzO1NFQyhcJiMzNDt4ZHBcJiMzNDspXG4mIzQzO2ludCBfX3g2NF9zeXNfbm9wKHN0cnVjdCB4ZHBfbWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBYRFBfUEFTUztcbiYjNDM7fVxuJiM0MztcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfdGFyZ2V0JiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRvIHByZXZlbnQgc2xlZXBhYmxlIEJQRiBwcm9ncmFtcyBmcm9tIGF0dGFjaGluZyB0byBub24ta2VybmVsIEJURiBvYmplY3RzIChlLmcuLCBvdGhlciBCUEYgcHJvZ3JhbXMpLiBUaGlzIGFmZmVjdHMgdGhlIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIG9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgQlBGIGF0dGFjaG1lbnQgdmVyaWZpY2F0aW9uIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhiY2ZmZmU2NWY0ZTFkYjMzNjY3MzY1OTI3NjdmZjhhMTA3NDVkMmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDE4OjQ2OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDc0MzlhZmRjODUxYTcuLmYzNjQ0NTNhMmVjYjcgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTE5MDIyLDYgJiM0MzsxOTAyMiw5IEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiCiAJY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0OwogCWNvbnN0IGNoYXIgKnRuYW1lOwogCiYjNDM7CWlmICghYnRmX2lzX2tlcm5lbChidGYpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJc3dpdGNoIChwcm9nLSZndDt0eXBlKSB7CiAJY2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6CiAJCXQgPSBidGZfdHlwZV9ieV9pZChidGYsIGJ0Zl9pZCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmMKaW5kZXggNGE4N2Q3MTYzYzhjNy4uMjUyM2MwN2ExNmM2NSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuYwpAQCAtNSw2ICYjNDM7NSw3IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2J0Zi5oJmd0OwogI2luY2x1ZGUgJiMzNDtiaW5kNF9wcm9nLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2ZyZXBsYWNlX3Byb2dtYXAuc2tlbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2ZlbnRyeV9zbGVlcGFibGUuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7eGRwX2R1bW15LnNrZWwuaCYjMzQ7CiAKIHR5cGVkZWYgaW50ICgqdGVzdF9jYikoc3RydWN0IGJwZl9vYmplY3QgKm9iaik7CkBAIC01NzYsNiAmIzQzOzU3Nyw2MCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Z1bmNfcmVwbGFjZV9wcm9nbWFwKHZvaWQpCiAJZnJlcGxhY2VfcHJvZ21hcF9fZGVzdHJveShza2VsKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHRlc3Rfc2xlZXBhYmxlX2ZlbnRyeV90b194ZHAodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBmZW50cnlfc2xlZXBhYmxlICpza2VsID0gTlVMTDsKJiM0MzsJc3RydWN0IHhkcF9kdW1teSAqc2tlbF94ZHAgPSBOVUxMOwomIzQzOwlpbnQgaWZpbmRleCwgcHJvZ19mZCwgZXJyOwomIzQzOwljaGFyIGJ1ZmZbNjRdID0ge307CiYjNDM7CiYjNDM7I2lmbmRlZiBfX3g4Nl82NF9fCiYjNDM7CXRlc3RfX3NraXAoKTsKJiM0MzsJcmV0dXJuOwomIzQzOyNlbmRpZgomIzQzOwomIzQzOwlpZmluZGV4ID0gaWZfbmFtZXRvaW5kZXgoJiMzNDtsbyYjMzQ7KTsKJiM0MzsJaWYgKCFBU1NFUlRfR1QoaWZpbmRleCwgMCwgJiMzNDtpZl9uYW1ldG9pbmRleCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJc2tlbF94ZHAgPSB4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWQoKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLCAmIzM0O3hkcF9kdW1teV9fb3Blbl9hbmRfbG9hZCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJc2tlbCA9IGZlbnRyeV9zbGVlcGFibGVfX29wZW4oKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsICYjMzQ7ZmVudHJ5X3NsZWVwYWJsZV9fb3BlbiYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsLSZndDtic3MtJmd0O3VzZXJfcHRyID0gYnVmZjsKJiM0MzsKJiM0MzsJcHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsX3hkcC0mZ3Q7cHJvZ3MuX194NjRfc3lzX25vcCk7CiYjNDM7CWVyciA9IGJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldChza2VsLSZndDtwcm9ncy5mZW50cnlfeGRwLCBwcm9nX2ZkLCAmIzM0O19feDY0X3N5c19ub3AmIzM0Oyk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXQmIzM0OykpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKJiM0MzsJZXJyID0gZmVudHJ5X3NsZWVwYWJsZV9fbG9hZChza2VsKTsKJiM0MzsJQVNTRVJUX0VSUihlcnIsICYjMzQ7ZmVudHJ5X3NsZWVwYWJsZV9fbG9hZCYjMzQ7KTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsLSZndDtsaW5rcy5mZW50cnlfeGRwID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZShza2VsLSZndDtwcm9ncy5mZW50cnlfeGRwKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtJmd0O2xpbmtzLmZlbnRyeV94ZHAsICYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsX3hkcC0mZ3Q7bGlua3MuX194NjRfc3lzX25vcCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfeGRwKHNrZWxfeGRwLSZndDtwcm9ncy5fX3g2NF9zeXNfbm9wLAomIzQzOwkJCQkJCQkJaWZpbmRleCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsX3hkcC0mZ3Q7bGlua3MuX194NjRfc3lzX25vcCwgJiMzNDticGZfcHJvZ3JhbV9fYXR0YWNoX3hkcCYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwllcnIgPSBzeXN0ZW0oJiMzNDtwaW5nIC1xIC1jIDEgLVcgMSAxMjcuMC4wLjEgJmd0OyAvZGV2L251bGwmIzM0Oyk7CiYjNDM7CUFTU0VSVF9PSyhlcnIsICYjMzQ7cGluZyYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VSUihza2VsLSZndDtic3MtJmd0O3JldHZhbCwgJiMzNDtyZXR2YWwmIzM0Oyk7CiYjNDM7CiYjNDM7b3V0OgomIzQzOwlmZW50cnlfc2xlZXBhYmxlX19kZXN0cm95KHNrZWwpOwomIzQzOwl4ZHBfZHVtbXlfX2Rlc3Ryb3koc2tlbF94ZHApOwomIzQzO30KJiM0MzsKIC8qIE5PVEU6IGFmZmVjdCBvdGhlciB0ZXN0cywgbXVzdCBydW4gaW4gc2VyaWFsIG1vZGUgKi8KIHZvaWQgc2VyaWFsX3Rlc3RfZmV4aXRfYnBmMmJwZih2b2lkKQogewpAQCAtNjA3LDQgJiM0Mzs2NjIsNiBAQCB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZCkKIAkJdGVzdF9mdW5jX3JlcGxhY2VfaW50X3dpdGhfdm9pZCgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7ZnJlcGxhY2Vfdm9pZCYjMzQ7KSkKIAkJdGVzdF9mdW5jX3JlcGxhY2Vfdm9pZCgpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NsZWVwYWJsZV9mZW50cnlfdG9feGRwJiMzNDspKQomIzQzOwkJdGVzdF9zbGVlcGFibGVfZmVudHJ5X3RvX3hkcCgpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uOGMwZmM2OTFkMzI5ZAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmMKQEAgLTAsMCAmIzQzOzEsMTggQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyNpbmNsdWRlICYjMzQ7dm1saW51eC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfdHJhY2luZy5oJmd0OwomIzQzOwomIzQzO2NoYXIgTElDRU5TRVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwomIzQzOwomIzQzO3ZvaWQgKnVzZXJfcHRyOwomIzQzO2ludCByZXR2YWw7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7ZmVudHJ5LnMmIzM0OykKJiM0MztpbnQgQlBGX1BST0coZmVudHJ5X3hkcCkKJiM0Mzt7CiYjNDM7CWNoYXIgYnVmZls2NF07CiYjNDM7CiYjNDM7CXJldHZhbCA9IGJwZl9jb3B5X2Zyb21fdXNlcihidWZmLCBzaXplb2YoYnVmZiksIHVzZXJfcHRyKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jCmluZGV4IGQ5ODhiMmUwY2VlODQuLjVmMWUwNzcxMDIxZGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmMKQEAgLTEwLDQgJiM0MzsxMCwxMCBAQCBpbnQgeGRwX2R1bW15X3Byb2coc3RydWN0IHhkcF9tZCAqY3R4KQogCXJldHVybiBYRFBfUEFTUzsKIH0KIAomIzQzO1NFQygmIzM0O3hkcCYjMzQ7KQomIzQzO2ludCBfX3g2NF9zeXNfbm9wKHN0cnVjdCB4ZHBfbWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiBYRFBfUEFTUzsKJiM0Mzt9CiYjNDM7CiBjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MjQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0IHRvdWNoZXMgYm90aCBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgYWRkcyBhIG5ldyB0ZXN0IGNhc2UgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIG1vZGlmaWNhdGlvbiwgYmVjYXVzZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGNoYW5nZSBpcyBoYXBwZW5pbmcuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBmdW5jdGlvbjoKCmBgYGMKCWlmICghYnRmX2lzX2tlcm5lbChidGYpKQoJCXJldHVybiAtRUlOVkFMOwpgYGAKClJpZ2h0LCBJIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVzaWduZWQgdG8gdGlnaHRlbiBzZWN1cml0eSBhcm91bmQgc2xlZXBhYmxlIEJQRiBwcm9ncmFtcy4gRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpcyBub3cgcHJldmVudGluZyBub24ta2VybmVsIEJURiAoQlBGIFR5cGUgRm9ybWF0KSBvYmplY3RzIGZyb20gYmVpbmcgdXNlZCBpbiBjb250ZXh0cyB3aGVyZSB0aGUgcHJvZ3JhbSBtaWdodCBzbGVlcC4gV2hpY2gsIG1ha2VzIHNlbnNlLiBXZSBkb24mIzM5O3Qgd2FudCBwb3RlbnRpYWxseSB1c2VyLXNwYWNlIEJURiBvYmplY3RzIGNhdXNpbmcgaXNzdWVzIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBwdXQgdG8gc2xlZXAgaW4gdGhlIGtlcm5lbC4gVGhpcyBpcyBnb29kIGhhcmRlbmluZywgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGlmIEJURiBpbmZvcm1hdGlvbiBpc24mIzM5O3QgcHJvcGVybHkgdmFsaWRhdGVkIGluIHRoZXNlIHNpdHVhdGlvbnMuCgpJIG5lZWQgdG8gY29uZmlybSB0aGlzIGNoYW5nZSBpcyBjb3JyZWN0LiBUaGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgYXJlIGFzc3VtZWQgdG8gb25seSB1c2UgQlRGIGluZm9ybWF0aW9uIGZyb20gdGhlIGtlcm5lbCBpdHNlbGYuIFdlIG5vdyBleHBsaWNpdGx5IGVuZm9yY2UgdGhhdCBhc3N1bXB0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGFuZCBjb250ZXh0IGZvciBhbGxvd2luZyAqYW55KiBzbGVlcGFibGUgb3BlcmF0aW9ucyB3aXRoIEJURiBpbiB0aGUgZmlyc3QgcGxhY2UsIGFuZCB0aGVuIGRldGVybWluZSBob3cgdGhpcyBjaGFuZ2UgYWxpZ25zIHdpdGggdGhlIGJyb2FkZXIgc2VjdXJpdHkgcG9zdHVyZSBvZiB0aGUgQlBGIHN1YnN5c3RlbS4gSSBzaG91bGQgYWxzbyBjaGVjayB0aGUgdGVzdCBjYXNlIHRvIHNlZSBob3cgdGhleSYjMzk7cmUgdmFsaWRhdGluZyB0aGlzIGNoYW5nZTsgaXQgc2hvdWxkIHByb3ZpZGUgdmFsdWFibGUgaW5zaWdodHMgaW50byB3aGF0IHRoZSBkZXZlbG9wZXJzIGFyZSB0cnlpbmcgdG8gYWNoaWV2ZSBhbmQgd2hhdCBwb3RlbnRpYWwgZmFpbHVyZSBzY2VuYXJpb3MgdGhleSYjMzk7cmUgY292ZXJpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRmX2lkX2FsbG93X3NsZWVwYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTkwMTQ9c3RhdGljIGJvb2wgaXNfdHJhY2luZ19tdWx0aV9pZChjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDE4LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MDE5OnN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTAyMC1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTEyNj1pbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MzMtXHRcdGlmIChwcm9nLVx1MDAzZXNsZWVwYWJsZSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NDM0Olx0XHRcdHJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDM1LVx0XHRcdGlmIChyZXQpIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2Mzk9aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTY4Ny1cdGlmIChwcm9nLVx1MDAzZXNsZWVwYWJsZSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5Njg4Olx0XHRlcnIgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTY4OS1cdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODA2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoaW5raW5nIGFib3V0IGl0cyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBCUEYgdmVyaWZpZXIuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBmdW5jdGlvbiwgd2hpY2ggaXMgY2FsbGVkIGZyb20gd2l0aGluIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuIFRoZXNlIGFyZSBpbXBvcnRhbnQgdmVyaWZpZXIgZnVuY3Rpb25zOyB0aGV5IGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgcGxheSBhIGNydWNpYWwgcm9sZSBpbiBCUEYgcHJvZ3JhbSB2YWxpZGF0aW9uLgoKSXQgc2VlbXMgdGhlIHBhdGNoIGlzIGRlc2lnbmVkIHRvIHByZXZlbnQgc2xlZXBhYmxlIEJQRiBwcm9ncmFtcyBmcm9tIGJlaW5nIGF0dGFjaGVkIHRvIEJURiBvYmplY3RzIHRoYXQgYXJlbiYjMzk7dCBwYXJ0IG9mIHRoZSBrZXJuZWwg4oCTIGxpa2Ugb3RoZXIgQlBGIHByb2dyYW1zLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhlIHRlc3QgY2FzZSwgYHRlc3Rfc2xlZXBhYmxlX2ZlbnRyeV90b194ZHBgLCBhaW1zIHRvIGVuZm9yY2UgdGhpcywgYXR0ZW1wdGluZyB0byBhdHRhY2ggYSBzbGVlcGFibGUgZmVudHJ5IHByb2dyYW0gdG8gYW4gWERQIHByb2dyYW0uIFhEUCBpcyBhIEJQRiBwcm9ncmFtIHNvIGl0IGNoZWNrcyB3aGV0aGVyIHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgY2FuIGJlIGF0dGFjaGVkIHRvIGl0JiMzOTtzIEJURi4gVGhlIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiB0aGUgYGZlbnRyeV9zbGVlcGFibGVfX2xvYWRgIGZ1bmN0aW9uIGZhaWxzIGFzIGV4cGVjdGVkLgoKSG1tLCB0aGUgdGVzdCBhc3NlcnRzIHRoYXQgYGZlbnRyeV9zbGVlcGFibGVfX2xvYWRgIHNob3VsZCByZXR1cm4gYW4gZXJyb3IsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGNhbiBzZWUgdGhpcyBjb2RlIGlzIHNwZWNpZmljYWxseSB0cnlpbmcgdG8gKnZhbGlkYXRlKiB0aGF0IHRoZSBmYWlsdXJlIG9jY3Vycy4KClRoaXMgc291bmRzIGxpa2Ugc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZy4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdmVyaWZpZXIsIGltcGFjdGluZyBob3cgcHJvZ3JhbXMgY2FuIGJlIGF0dGFjaGVkLCBzbyBpdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gcG90ZW50aWFsbHkgdW5jb3ZlciBpc3N1ZXMuIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCwgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYCwgYW5kIG1heWJlIHRoZSBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAgZnVuY3Rpb24gaXRzZWxmIChhbHRob3VnaCBpdCYjMzk7cyBzdGF0aWMsIHNvIHRoYXQgbWlnaHQgYmUgdHJpY2t5KS4gSSYjMzk7bGwgc3RhcnQgYnkgdGFraW5nIGEgY2xvc2VyIGxvb2sgYXQgdGhvc2UgdHdvIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTIwNzg9c3RhdGljIGludCBwcm9jZXNzX2tmX2FyZ19wdHJfdG9fcmJ0cmVlX25vZGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIwODktICogTFNNIGhvb2tzIGFuZCBpdGVycyAoYm90aCBzbGVlcGFibGUgYW5kIG5vbi1zbGVlcGFibGUpIGFyZSBzYWZlLlxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMDkwOiAqIEFueSBzbGVlcGFibGUgcHJvZ3MgYXJlIGFsc28gc2FmZSBzaW5jZSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCgpIGVuZm9yY2Vcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjA5MS0gKiB0aGVtIGNhbiBvbmx5IGJlIGF0dGFjaGVkIHRvIHNvbWUgc3BlY2lmaWMgaG9vayBwb2ludHMuXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MTEyPXN0YXRpYyBib29sIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MTI1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MTI2OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MTI3LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTM5PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTU2OS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTU3MDpcdHJldCA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KFx1MDAyNmVudi1cdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFx1MDAyNnRndF9pbmZvKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTU3MS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzIGZ1bmN0aW9uLCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgZUJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgYW5kIGhvdyBCVEYgSURzIGFyZSBtYW5hZ2VkIGluIHRoYXQgY29udGV4dC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3N1bWUgdGhpcyByZWxhdGVzIHRvIHNpdHVhdGlvbnMgd2hlcmUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBCVEYgSURzIG9yIHBlcmhhcHMgbXVsdGlwbGUgcHJvZ3JhbXMgYXR0YWNoaW5nIHRvIHRoZSBzYW1lIHRhcmdldCwgb3IgbWF5YmUgaGFuZGxpbmcgbXVsdGlwbGUgQlRGIG9iamVjdHMuIEkgZXhwZWN0IHRoZSAmIzM0O211bHRpJiMzNDsgc3VmZml4IGhpbnRzIGF0IGNvbXBsZXhpdHkgYmV5b25kIGEgc2ltcGxlIG9uZS10by1vbmUgYXR0YWNobWVudCBzY2VuYXJpby4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBmdW5jdGlvbiYjMzk7cyBhcmd1bWVudHM6IHdoaWNoIGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQ/IFdoYXQga2luZHMgb2YgY2hlY2tzIGFyZSBpdCBwZXJmb3JtaW5nPyBBbnkgcG90ZW50aWFsIGZvciBlcnJvciBjb25kaXRpb25zLCByYWNlIGNvbmRpdGlvbnMgb3IgaW5lZmZpY2llbmNpZXMgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gbmVlZCB0byBiZSBub3RlZCwgYW5kIEkmIzM5O2xsIHBheSBzcGVjaWZpYyBhdHRlbnRpb24gdG8gaG93IEJURiB0eXBlIGNvbXBhdGliaWxpdHkgaXMgZW5mb3JjZWQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTUzOT1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2Mzk6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjQwLVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM4MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdCBxdWVyeSwgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEJQRiBBdHRhY2htZW50IFRhcmdldHMqKgoKUmlnaHQsIHNvIHdlIG5lZWQgdG8gZmlndXJlIG91dCBob3cgQlBGIGF0dGFjaG1lbnQgdGFyZ2V0cyBhcmUgY2hlY2tlZC4gVGhhdCBzb3VuZHMgbGlrZSBzb21ldGhpbmcgdGhhdCB3b3VsZCBoYXBwZW4gZHVyaW5nIHRoZSBCUEYgdmVyaWZpY2F0aW9uIHByb2Nlc3MsIHNvIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIHZlcmlmaWNhdGlvbiBjb2RlIGl0c2VsZi4gIEkmIzM5O20gdGhpbmtpbmcgdGhlIGZ1bmN0aW9uIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgbGlrZWx5IHRoZSBrZXkgaGVyZSwgYW5kIEkmIzM5O2QgYmV0IGl0JiMzOTtzIGRlZmluZWQgb3IgYXQgbGVhc3QgZGVjbGFyZWQgaW4gZWl0aGVyIGBpbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oYCBvciwgbGVzcyBsaWtlbHkgYnV0IHN0aWxsIHBvc3NpYmxlLCBpbiBgaW5jbHVkZS9saW51eC9icGYuaGAuIEkmIzM5O2Qgc3RhcnQgd2l0aCBgYnBmX3ZlcmlmaWVyLmhgIGZpcnN0LCBnaXZlbiB0aGUgbmFtZSwgYnV0IEkmIzM5O2xsIGtlZXAgdGhlIG90aGVyIGFzIGEgcG90ZW50aWFsLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4YWN0IGhlYWRlciB0aGF0IGRlZmluZXMgaXQsIGFuZCB0aGVuIEkgY2FuIGRpZyBpbnRvIHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTE4Mj1pbnQgYnBmX2NoZWNrX2J0Zl9pbmZvKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xMTg0LVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaDoxMTg1OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xMTg2LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3ODkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgbXkgaW5pdGlhbCB0aGlua2luZyBpcyB0aGF0IEkgbmVlZCB0byB6b29tIGluIG9uIHRoZSBzeW1ib2xzIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuIFRoZXNlIHNlZW0gbGlrZSBleGNlbGxlbnQgc3RhcnRpbmcgcG9pbnRzLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwcm9ibGVtIEkmIzM5O20gdHJ5aW5nIHRvIHNvbHZlLiAKCioqSW5pdGlhbCBTeW1ib2wgQW5hbHlzaXMgYW5kIEZpbGUgTG9jYXRpb24gQ2hlY2sqKgoKSG93ZXZlciwgaGFuZyBvbiBhIHNlY29uZC4gSSByZW1lbWJlciBub3csIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgcmVzaWRlcyB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIEhtbW0sIEkgc2hvdWxkIGFsc28gZG91YmxlLWNoZWNrIHdoZXRoZXIgb3Igbm90IGBjaGVja19hdHRhY2hfYnRmX2lkYCBzaG91bGQgYmUgY29uc2lkZXJlZC4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGNvbnNpZGVyIGFueSBvdGhlciBjb2RlIHdoaWNoIGNvdWxkIGFjY29tcGxpc2ggdGhlIHNhbWUgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgbmVlZCB0byBleHBsb3JlIHRoYXQgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hlY2tfYXR0YWNoX2J0Zl9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1MTI9c3RhdGljIGJvb2wgY2FuX2JlX3NsZWVwYWJsZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTM4LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NTM5OnN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTQwLXtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2Mzk6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjQwLVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwMTY3PWludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDMxMi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDMxMzpcdHJldCA9IGNoZWNrX2F0dGFjaF9idGZfaWQoZW52KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDMxNC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIEF0dGFjaG1lbnQgVGFyZ2V0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIEJQRiBhdHRhY2htZW50IGxvZ2ljLCBhbmQgaXQgc2VlbXMgbGlrZSBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGlzIGFjY2Vzc2libGUgZnJvbSBvdXRzaWRlIGl0cyBkZWZpbmluZyBzY29wZSDigJMgaXQmIzM5O3MgZWl0aGVyIGV4cG9ydGVkIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgbm90IGRlY2xhcmVkIGFzIHN0YXRpYy4gR29vZCB0byBrbm93LiBBbmQgdGhlIHNhbWUgYXBwZWFycyB0byBiZSB0cnVlIGZvciBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLCB3aGljaCBpcyBhbHNvIG5vbi1zdGF0aWMuIFRoZSBmdW5jdGlvbiBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBkZWZpbmVkIGFzIHN0YXRpYywgc28gaXQmIzM5O3MgbGlrZWx5IG9ubHkgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiBpdHMgY29tcGlsYXRpb24gdW5pdC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AgYW5kIGNvbmZpcm0gbXkgY3VycmVudCBhc3N1bXB0aW9ucyBieSBjaGVja2luZyB0aGUgdXNlcyBvZiBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgQlBGIHN5c3RlbSBjYWxsIGhhbmRsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvc3lzY2FsbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvc3lzY2FsbC5jPTM2MjQ9c3RhdGljIGludCBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzc1Ni1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM3NTc6XHRcdGVyciA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KE5VTEwsIHByb2csIHRndF9wcm9nLCBidGZfaWQsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zNzU4LVx0XHRcdFx0XHQgICAgICBcdTAwMjZ0Z3RfaW5mbyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NzIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGRpc3RpbGxlZDoKCioqTmF2aWdhdGluZyB0aGUgQlBGIEF0dGFjaG1lbnQgTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aCBvZiBCUEYgcHJvZ3JhbSBhdHRhY2htZW50LiBJIGtub3cgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBpcyBkZWZpbml0ZWx5IGNhbGxlZCBmcm9tIHdpdGhpbiBgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2hgIOKAkyBmb3VuZCB0aGF0IGluIGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIHRhcmdldCBpcyBjaGVja2VkLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIEJURiBJRHMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBmdW5jdGlvbiBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBJdCYjMzk7cyBsaWtlbHkgbG9jYXRlZCBpbiBlaXRoZXIgYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBvciwgcGVyaGFwcyBtb3JlIGxvZ2ljYWxseSwgd2l0aGluIHRoZSBicm9hZGVyIHN0cnVjdHVyZSBvcGVyYXRpb25zIGRlZmluZWQgaW4gYGtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTYyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTYzNS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2MzY6XHRcdGVyciA9IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKGJ0ZiwgcHJvZywgaWRzW2ldLCBcdTAwMjZ0Z3RfaW5mbyk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjM3LVx0XHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTUzOT1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2Mzk6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjQwLVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0NTYKCQkJCQkJCW91dHB1dDogMTQwCgkJCQkJCQl0aG91Z2h0czogNTM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3k6IFZlcmlmeWluZyBTbGVlcGFibGUgQlBGIEF0dGFjaG1lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgemVyb2VkIGluIG9uIHRoZSByaWdodCBhcmVhcy4gSXQgbG9va3MgbGlrZSBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIGFyZSB0aGUga2V5IGZvY3VzIHN5bWJvbHMgZm9yIHRoaXMgZnV6emluZyBlZmZvcnQuIEkgYnJpZWZseSBjb25zaWRlcmVkIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCwgYnV0IHNpbmNlIGl0JiMzOTtzIHN0YXRpYywgaXQgd29uJiMzOTt0IGJlIGFzIGVmZmVjdGl2ZSB0byB0YXJnZXQgZGlyZWN0bHkuCgpOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCBjb25maWd1cmF0aW9ucy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGludm9sdmVzIHRoZSBCUEYgdmVyaWZpZXIsIGFuZCB0aGUgcHJlc2VuY2Ugb2YgYGZlbnRyeV9zbGVlcGFibGUuY2AgYW5kIGB4ZHBfZHVtbXkuY2AgaW4gdGhlIHRlc3RzIHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc2xlZXBhYmxlIHByb2dyYW1zIGFuZCBwb3RlbnRpYWxseSBYRFAtcmVsYXRlZCBpbnRlcmFjdGlvbnMgYXMgd2VsbCwgdGhvdWdoIHRoYXQmIzM5O3MgbGlrZWx5IGp1c3QgZm9yIHRoZSBleGFtcGxlIHNldHVwLiBTdGFuZGFyZCBCUEYgZnV6emluZyBjb25maWdzIGxpa2UgYENPTkZJR19CUEZfU1lTQ0FMTGAsIGBDT05GSUdfREVCVUdfSU5GT19CVEZgLCBhbmQgYENPTkZJR19CUEZfSklUYCBhcmUgcHJvYmFibHkgZ29vZCBlbm91Z2ggYXMgdGhlIGJhc2lzLiBBaCwgYnV0IHdhaXQg4oCTIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggQlBGIHN5c2NhbGxzLCBJIG5lZWQgdG8gZXhwbGljaXRseSBpbmNsdWRlIGBCUEZfU1lTQ0FMTGAgaW4gdGhlIGBFbmFibGVDb25maWdzYC4gSXQmIzM5O3MgZWFzeSB0byBvdmVybG9vayB0aGVzZSBiYXNpY3MuCgpMZXQmIzM5O3MgZG8gYSBxdWljayByZS1yZXZpZXcgb2YgdGhlIHBhdGNoIGl0c2VsZjoKCmBgYGMKQEAgLTE5MDIyLDYgJiM0MzsxOTAyMiw5IEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiCiAJY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0OwogCWNvbnN0IGNoYXIgKnRuYW1lOwogCiYjNDM7CWlmICghYnRmX2lzX2tlcm5lbChidGYpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJc3dpdGNoIChwcm9nLSZndDt0eXBlKSB7CiAJY2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6CiAJCXQgPSBidGZfdHlwZV9ieV9pZChidGYsIGJ0Zl9pZCk7CmBgYAoKUmlnaHQsIGl0JiMzOTtzIGEgcmVsYXRpdmVseSBzbWFsbCwgYnV0IGZ1bmN0aW9uYWxseSBpbXBvcnRhbnQgY2hhbmdlIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgcGF0Y2ggcmVzdHJpY3RzIHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgZnJvbSBhdHRhY2hpbmcgdG8gbm9uLWtlcm5lbCBCVEYgb2JqZWN0cywgcHJldmVudGluZyBhIGNsYXNzIG9mIGJ1Z3MuIEdpdmVuIHRoYXQgaXQgdG91Y2hlcyB0aGUgQlBGIHZlcmlmaWVyIGFuZCBpcyByZWxhdGVkIHRvIGhvdyBCUEYgcHJvZ3JhbXMgYXR0YWNoLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBpbiBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAuIFRoZSBgYnBmKClgIHN5c2NhbGwgcGF0aCBpcyByZWxldmFudCBmb3IgdGhpcyBuZXcgY2hlY2suCgoqKkZvY3VzIFN5bWJvbHM6KioKCiogICBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgCiogICBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgCgoqKkVuYWJsZUNvbmZpZ3M6KioKCiogICBgQlBGX1NZU0NBTExgCgpNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIHRvIGVuZm9yY2UgdGhhdCBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGNhbiBvbmx5IGF0dGFjaCB0byBrZXJuZWwgQlRGIG9iamVjdHMuIFRoaXMgaW1wYWN0cyB0aGUgQlBGIHByb2dyYW0gYXR0YWNobWVudCBsb2dpYy4gR2l2ZW4gdGhhdCB0aGUgY2hhbmdlcyBoYXBwZW4gZHVyaW5nIHRoZSBhdHRhY2htZW50LCBhbmQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgYSBzeXNjYWxsLCBmdXp6aW5nIHRoZSBhdHRhY2htZW50IHZlcmlmaWNhdGlvbiByb3V0aW5lcyBpcyB0aGUgcmlnaHQgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfdGFyZ2V0JiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRvIHByZXZlbnQgc2xlZXBhYmxlIEJQRiBwcm9ncmFtcyBmcm9tIGF0dGFjaGluZyB0byBub24ta2VybmVsIEJURiBvYmplY3RzIChlLmcuLCBvdGhlciBCUEYgcHJvZ3JhbXMpLiBUaGlzIGFmZmVjdHMgdGhlIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIG9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgQlBGIGF0dGFjaG1lbnQgdmVyaWZpY2F0aW9uIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciB0byBwcmV2ZW50IHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgZnJvbSBhdHRhY2hpbmcgdG8gbm9uLWtlcm5lbCBCVEYgb2JqZWN0cyAoZS5nLiwgb3RoZXIgQlBGIHByb2dyYW1zKS4gVGhpcyBhZmZlY3RzIHRoZSBCUEYgcHJvZ3JhbSBhdHRhY2htZW50IGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsIHdoZW4gbG9hZGluZyBvciBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIEJQRiBhdHRhY2htZW50IHZlcmlmaWNhdGlvbiBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODo0NjoxNi4xNzEwMjc1MjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTY1MjE3NjU0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja19hdHRhY2hfdGFyZ2V0XCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRvIHByZXZlbnQgc2xlZXBhYmxlIEJQRiBwcm9ncmFtcyBmcm9tIGF0dGFjaGluZyB0byBub24ta2VybmVsIEJURiBvYmplY3RzIChlLmcuLCBvdGhlciBCUEYgcHJvZ3JhbXMpLiBUaGlzIGFmZmVjdHMgdGhlIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIG9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgQlBGIGF0dGFjaG1lbnQgdmVyaWZpY2F0aW9uIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6MTYuMTcxMDM0MDc4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQxMjg3NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGJjZmZmZTY1ZjRlMWRiMzM2NjczNjU5Mjc2N2ZmOGExMDc0NWQyYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyA1IDE4OjQ2OjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDc0MzlhZmRjODUxYTcuLmYzNjQ0NTNhMmVjYjcgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTE5MDIyLDYgKzE5MDIyLDkgQEAgc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJcXG4gXFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0O1xcbiBcXHRjb25zdCBjaGFyICp0bmFtZTtcXG4gXFxuK1xcdGlmICghYnRmX2lzX2tlcm5lbChidGYpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdHN3aXRjaCAocHJvZy1cXHUwMDNldHlwZSkge1xcbiBcXHRjYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzpcXG4gXFx0XFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgYnRmX2lkKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXFxuaW5kZXggNGE4N2Q3MTYzYzhjNy4uMjUyM2MwN2ExNmM2NSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcXG5AQCAtNSw2ICs1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2JwZi9idGYuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcImJpbmQ0X3Byb2cuc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZnJlcGxhY2VfcHJvZ21hcC5za2VsLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJmZW50cnlfc2xlZXBhYmxlLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInhkcF9kdW1teS5za2VsLmhcXFwiXFxuIFxcbiB0eXBlZGVmIGludCAoKnRlc3RfY2IpKHN0cnVjdCBicGZfb2JqZWN0ICpvYmopO1xcbkBAIC01NzYsNiArNTc3LDYwIEBAIHN0YXRpYyB2b2lkIHRlc3RfZnVuY19yZXBsYWNlX3Byb2dtYXAodm9pZClcXG4gXFx0ZnJlcGxhY2VfcHJvZ21hcF9fZGVzdHJveShza2VsKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgdGVzdF9zbGVlcGFibGVfZmVudHJ5X3RvX3hkcCh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBmZW50cnlfc2xlZXBhYmxlICpza2VsID0gTlVMTDtcXG4rXFx0c3RydWN0IHhkcF9kdW1teSAqc2tlbF94ZHAgPSBOVUxMO1xcbitcXHRpbnQgaWZpbmRleCwgcHJvZ19mZCwgZXJyO1xcbitcXHRjaGFyIGJ1ZmZbNjRdID0ge307XFxuK1xcbisjaWZuZGVmIF9feDg2XzY0X19cXG4rXFx0dGVzdF9fc2tpcCgpO1xcbitcXHRyZXR1cm47XFxuKyNlbmRpZlxcbitcXG4rXFx0aWZpbmRleCA9IGlmX25hbWV0b2luZGV4KFxcXCJsb1xcXCIpO1xcbitcXHRpZiAoIUFTU0VSVF9HVChpZmluZGV4LCAwLCBcXFwiaWZfbmFtZXRvaW5kZXhcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0c2tlbF94ZHAgPSB4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWQoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLCBcXFwieGRwX2R1bW15X19vcGVuX2FuZF9sb2FkXFxcIikpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdHNrZWwgPSBmZW50cnlfc2xlZXBhYmxlX19vcGVuKCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwiZmVudHJ5X3NsZWVwYWJsZV9fb3BlblxcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNldXNlcl9wdHIgPSBidWZmO1xcbitcXG4rXFx0cHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsX3hkcC1cXHUwMDNlcHJvZ3MuX194NjRfc3lzX25vcCk7XFxuK1xcdGVyciA9IGJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldChza2VsLVxcdTAwM2Vwcm9ncy5mZW50cnlfeGRwLCBwcm9nX2ZkLCBcXFwiX194NjRfc3lzX25vcFxcXCIpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJicGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXRcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRlcnIgPSBmZW50cnlfc2xlZXBhYmxlX19sb2FkKHNrZWwpO1xcbitcXHRBU1NFUlRfRVJSKGVyciwgXFxcImZlbnRyeV9zbGVlcGFibGVfX2xvYWRcXFwiKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRza2VsLVxcdTAwM2VsaW5rcy5mZW50cnlfeGRwID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZShza2VsLVxcdTAwM2Vwcm9ncy5mZW50cnlfeGRwKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXFx1MDAzZWxpbmtzLmZlbnRyeV94ZHAsIFxcXCJicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0c2tlbF94ZHAtXFx1MDAzZWxpbmtzLl9feDY0X3N5c19ub3AgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3hkcChza2VsX3hkcC1cXHUwMDNlcHJvZ3MuX194NjRfc3lzX25vcCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aWZpbmRleCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsX3hkcC1cXHUwMDNlbGlua3MuX194NjRfc3lzX25vcCwgXFxcImJwZl9wcm9ncmFtX19hdHRhY2hfeGRwXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0ZXJyID0gc3lzdGVtKFxcXCJwaW5nIC1xIC1jIDEgLVcgMSAxMjcuMC4wLjEgXFx1MDAzZSAvZGV2L251bGxcXFwiKTtcXG4rXFx0QVNTRVJUX09LKGVyciwgXFxcInBpbmdcXFwiKTtcXG4rXFx0QVNTRVJUX0VSUihza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXJldHZhbCwgXFxcInJldHZhbFxcXCIpO1xcbitcXG4rb3V0OlxcbitcXHRmZW50cnlfc2xlZXBhYmxlX19kZXN0cm95KHNrZWwpO1xcbitcXHR4ZHBfZHVtbXlfX2Rlc3Ryb3koc2tlbF94ZHApO1xcbit9XFxuK1xcbiAvKiBOT1RFOiBhZmZlY3Qgb3RoZXIgdGVzdHMsIG11c3QgcnVuIGluIHNlcmlhbCBtb2RlICovXFxuIHZvaWQgc2VyaWFsX3Rlc3RfZmV4aXRfYnBmMmJwZih2b2lkKVxcbiB7XFxuQEAgLTYwNyw0ICs2NjIsNiBAQCB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZClcXG4gXFx0XFx0dGVzdF9mdW5jX3JlcGxhY2VfaW50X3dpdGhfdm9pZCgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwiZnJlcGxhY2Vfdm9pZFxcXCIpKVxcbiBcXHRcXHR0ZXN0X2Z1bmNfcmVwbGFjZV92b2lkKCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzbGVlcGFibGVfZmVudHJ5X3RvX3hkcFxcXCIpKVxcbitcXHRcXHR0ZXN0X3NsZWVwYWJsZV9mZW50cnlfdG9feGRwKCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjhjMGZjNjkxZDMyOWRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuY1xcbkBAIC0wLDAgKzEsMTggQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI2luY2x1ZGUgXFxcInZtbGludXguaFxcXCJcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcXHUwMDNlXFxuK1xcbitjaGFyIExJQ0VOU0VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbitcXG4rdm9pZCAqdXNlcl9wdHI7XFxuK2ludCByZXR2YWw7XFxuK1xcbitTRUMoXFxcImZlbnRyeS5zXFxcIilcXG4raW50IEJQRl9QUk9HKGZlbnRyeV94ZHApXFxuK3tcXG4rXFx0Y2hhciBidWZmWzY0XTtcXG4rXFxuK1xcdHJldHZhbCA9IGJwZl9jb3B5X2Zyb21fdXNlcihidWZmLCBzaXplb2YoYnVmZiksIHVzZXJfcHRyKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXFxuaW5kZXggZDk4OGIyZTBjZWU4NC4uNWYxZTA3NzEwMjFkZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmNcXG5AQCAtMTAsNCArMTAsMTAgQEAgaW50IHhkcF9kdW1teV9wcm9nKHN0cnVjdCB4ZHBfbWQgKmN0eClcXG4gXFx0cmV0dXJuIFhEUF9QQVNTO1xcbiB9XFxuIFxcbitTRUMoXFxcInhkcFxcXCIpXFxuK2ludCBfX3g2NF9zeXNfbm9wKHN0cnVjdCB4ZHBfbWQgKmN0eClcXG4re1xcbitcXHRyZXR1cm4gWERQX1BBU1M7XFxuK31cXG4rXFxuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODo0NjoxNy40MTMyNjc2OTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MDQwOTkyNjkyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja19hdHRhY2hfdGFyZ2V0XCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRvIHByZXZlbnQgc2xlZXBhYmxlIEJQRiBwcm9ncmFtcyBmcm9tIGF0dGFjaGluZyB0byBub24ta2VybmVsIEJURiBvYmplY3RzIChlLmcuLCBvdGhlciBCUEYgcHJvZ3JhbXMpLiBUaGlzIGFmZmVjdHMgdGhlIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIG9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgQlBGIGF0dGFjaG1lbnQgdmVyaWZpY2F0aW9uIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGJjZmZmZTY1ZjRlMWRiMzM2NjczNjU5Mjc2N2ZmOGExMDc0NWQyYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTg6NDY6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDc0MzlhZmRjODUxYTcuLmYzNjQ0NTNhMmVjYjcgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTE5MDIyLDYgKzE5MDIyLDkgQEAgc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJcbiBcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdDtcbiBcdGNvbnN0IGNoYXIgKnRuYW1lO1xuIFxuK1x0aWYgKCFidGZfaXNfa2VybmVsKGJ0ZikpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0c3dpdGNoIChwcm9nLVx1MDAzZXR5cGUpIHtcbiBcdGNhc2UgQlBGX1BST0dfVFlQRV9UUkFDSU5HOlxuIFx0XHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBidGZfaWQpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xuaW5kZXggNGE4N2Q3MTYzYzhjNy4uMjUyM2MwN2ExNmM2NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG5AQCAtNSw2ICs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnRmLmhcdTAwM2VcbiAjaW5jbHVkZSBcImJpbmQ0X3Byb2cuc2tlbC5oXCJcbiAjaW5jbHVkZSBcImZyZXBsYWNlX3Byb2dtYXAuc2tlbC5oXCJcbisjaW5jbHVkZSBcImZlbnRyeV9zbGVlcGFibGUuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInhkcF9kdW1teS5za2VsLmhcIlxuIFxuIHR5cGVkZWYgaW50ICgqdGVzdF9jYikoc3RydWN0IGJwZl9vYmplY3QgKm9iaik7XG5AQCAtNTc2LDYgKzU3Nyw2MCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Z1bmNfcmVwbGFjZV9wcm9nbWFwKHZvaWQpXG4gXHRmcmVwbGFjZV9wcm9nbWFwX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCB0ZXN0X3NsZWVwYWJsZV9mZW50cnlfdG9feGRwKHZvaWQpXG4re1xuK1x0c3RydWN0IGZlbnRyeV9zbGVlcGFibGUgKnNrZWwgPSBOVUxMO1xuK1x0c3RydWN0IHhkcF9kdW1teSAqc2tlbF94ZHAgPSBOVUxMO1xuK1x0aW50IGlmaW5kZXgsIHByb2dfZmQsIGVycjtcbitcdGNoYXIgYnVmZls2NF0gPSB7fTtcbitcbisjaWZuZGVmIF9feDg2XzY0X19cbitcdHRlc3RfX3NraXAoKTtcbitcdHJldHVybjtcbisjZW5kaWZcbitcbitcdGlmaW5kZXggPSBpZl9uYW1ldG9pbmRleChcImxvXCIpO1xuK1x0aWYgKCFBU1NFUlRfR1QoaWZpbmRleCwgMCwgXCJpZl9uYW1ldG9pbmRleFwiKSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0c2tlbF94ZHAgPSB4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWQoKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsX3hkcCwgXCJ4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWRcIikpXG4rXHRcdHJldHVybjtcbitcbitcdHNrZWwgPSBmZW50cnlfc2xlZXBhYmxlX19vcGVuKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJmZW50cnlfc2xlZXBhYmxlX19vcGVuXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZXVzZXJfcHRyID0gYnVmZjtcbitcbitcdHByb2dfZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbF94ZHAtXHUwMDNlcHJvZ3MuX194NjRfc3lzX25vcCk7XG4rXHRlcnIgPSBicGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXQoc2tlbC1cdTAwM2Vwcm9ncy5mZW50cnlfeGRwLCBwcm9nX2ZkLCBcIl9feDY0X3N5c19ub3BcIik7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwiYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0XCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdGVyciA9IGZlbnRyeV9zbGVlcGFibGVfX2xvYWQoc2tlbCk7XG4rXHRBU1NFUlRfRVJSKGVyciwgXCJmZW50cnlfc2xlZXBhYmxlX19sb2FkXCIpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRza2VsLVx1MDAzZWxpbmtzLmZlbnRyeV94ZHAgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5X3hkcCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbC1cdTAwM2VsaW5rcy5mZW50cnlfeGRwLCBcImJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2VcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0c2tlbF94ZHAtXHUwMDNlbGlua3MuX194NjRfc3lzX25vcCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfeGRwKHNrZWxfeGRwLVx1MDAzZXByb2dzLl9feDY0X3N5c19ub3AsXG4rXHRcdFx0XHRcdFx0XHRcdGlmaW5kZXgpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLVx1MDAzZWxpbmtzLl9feDY0X3N5c19ub3AsIFwiYnBmX3Byb2dyYW1fX2F0dGFjaF94ZHBcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0ZXJyID0gc3lzdGVtKFwicGluZyAtcSAtYyAxIC1XIDEgMTI3LjAuMC4xIFx1MDAzZSAvZGV2L251bGxcIik7XG4rXHRBU1NFUlRfT0soZXJyLCBcInBpbmdcIik7XG4rXHRBU1NFUlRfRVJSKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXJldHZhbCwgXCJyZXR2YWxcIik7XG4rXG4rb3V0OlxuK1x0ZmVudHJ5X3NsZWVwYWJsZV9fZGVzdHJveShza2VsKTtcbitcdHhkcF9kdW1teV9fZGVzdHJveShza2VsX3hkcCk7XG4rfVxuK1xuIC8qIE5PVEU6IGFmZmVjdCBvdGhlciB0ZXN0cywgbXVzdCBydW4gaW4gc2VyaWFsIG1vZGUgKi9cbiB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZClcbiB7XG5AQCAtNjA3LDQgKzY2Miw2IEBAIHZvaWQgc2VyaWFsX3Rlc3RfZmV4aXRfYnBmMmJwZih2b2lkKVxuIFx0XHR0ZXN0X2Z1bmNfcmVwbGFjZV9pbnRfd2l0aF92b2lkKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcImZyZXBsYWNlX3ZvaWRcIikpXG4gXHRcdHRlc3RfZnVuY19yZXBsYWNlX3ZvaWQoKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic2xlZXBhYmxlX2ZlbnRyeV90b194ZHBcIikpXG4rXHRcdHRlc3Rfc2xlZXBhYmxlX2ZlbnRyeV90b194ZHAoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44YzBmYzY5MWQzMjlkXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jXG5AQCAtMCwwICsxLDE4IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjaW5jbHVkZSBcInZtbGludXguaFwiXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFx1MDAzZVxuK1xuK2NoYXIgTElDRU5TRVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuK1xuK3ZvaWQgKnVzZXJfcHRyO1xuK2ludCByZXR2YWw7XG4rXG4rU0VDKFwiZmVudHJ5LnNcIilcbitpbnQgQlBGX1BST0coZmVudHJ5X3hkcClcbit7XG4rXHRjaGFyIGJ1ZmZbNjRdO1xuK1xuK1x0cmV0dmFsID0gYnBmX2NvcHlfZnJvbV91c2VyKGJ1ZmYsIHNpemVvZihidWZmKSwgdXNlcl9wdHIpO1xuK1x0cmV0dXJuIDA7XG4rfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuY1xuaW5kZXggZDk4OGIyZTBjZWU4NC4uNWYxZTA3NzEwMjFkZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXG5AQCAtMTAsNCArMTAsMTAgQEAgaW50IHhkcF9kdW1teV9wcm9nKHN0cnVjdCB4ZHBfbWQgKmN0eClcbiBcdHJldHVybiBYRFBfUEFTUztcbiB9XG4gXG4rU0VDKFwieGRwXCIpXG4raW50IF9feDY0X3N5c19ub3Aoc3RydWN0IHhkcF9tZCAqY3R4KVxuK3tcbitcdHJldHVybiBYRFBfUEFTUztcbit9XG4rXG4gY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6MTcuNDEzMjY4NzQ0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYzNzg0Njg0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0IHRvdWNoZXMgYm90aCBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgYWRkcyBhIG5ldyB0ZXN0IGNhc2UgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIG1vZGlmaWNhdGlvbiwgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgY2hhbmdlIGlzIGhhcHBlbmluZy4gU3BlY2lmaWNhbGx5LCB0aGV5J3ZlIGFkZGVkIGEgY2hlY2sgd2l0aGluIHRoZSBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAgZnVuY3Rpb246XG5cbmBgYGNcblx0aWYgKCFidGZfaXNfa2VybmVsKGJ0ZikpXG5cdFx0cmV0dXJuIC1FSU5WQUw7XG5gYGBcblxuUmlnaHQsIEkgc2VlIHdoYXQncyBnb2luZyBvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlc2lnbmVkIHRvIHRpZ2h0ZW4gc2VjdXJpdHkgYXJvdW5kIHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMuIEVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggaXMgbm93IHByZXZlbnRpbmcgbm9uLWtlcm5lbCBCVEYgKEJQRiBUeXBlIEZvcm1hdCkgb2JqZWN0cyBmcm9tIGJlaW5nIHVzZWQgaW4gY29udGV4dHMgd2hlcmUgdGhlIHByb2dyYW0gbWlnaHQgc2xlZXAuIFdoaWNoLCBtYWtlcyBzZW5zZS4gV2UgZG9uJ3Qgd2FudCBwb3RlbnRpYWxseSB1c2VyLXNwYWNlIEJURiBvYmplY3RzIGNhdXNpbmcgaXNzdWVzIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBwdXQgdG8gc2xlZXAgaW4gdGhlIGtlcm5lbC4gVGhpcyBpcyBnb29kIGhhcmRlbmluZywgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGlmIEJURiBpbmZvcm1hdGlvbiBpc24ndCBwcm9wZXJseSB2YWxpZGF0ZWQgaW4gdGhlc2Ugc2l0dWF0aW9ucy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBjaGFuZ2UgaXMgY29ycmVjdC4gVGhlIGltcGxpY2F0aW9uIGhlcmUgaXMgdGhhdCBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGFyZSBhc3N1bWVkIHRvIG9ubHkgdXNlIEJURiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBrZXJuZWwgaXRzZWxmLiBXZSBub3cgZXhwbGljaXRseSBlbmZvcmNlIHRoYXQgYXNzdW1wdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGFuZCBjb250ZXh0IGZvciBhbGxvd2luZyAqYW55KiBzbGVlcGFibGUgb3BlcmF0aW9ucyB3aXRoIEJURiBpbiB0aGUgZmlyc3QgcGxhY2UsIGFuZCB0aGVuIGRldGVybWluZSBob3cgdGhpcyBjaGFuZ2UgYWxpZ25zIHdpdGggdGhlIGJyb2FkZXIgc2VjdXJpdHkgcG9zdHVyZSBvZiB0aGUgQlBGIHN1YnN5c3RlbS4gSSBzaG91bGQgYWxzbyBjaGVjayB0aGUgdGVzdCBjYXNlIHRvIHNlZSBob3cgdGhleSdyZSB2YWxpZGF0aW5nIHRoaXMgY2hhbmdlOyBpdCBzaG91bGQgcHJvdmlkZSB2YWx1YWJsZSBpbnNpZ2h0cyBpbnRvIHdoYXQgdGhlIGRldmVsb3BlcnMgYXJlIHRyeWluZyB0byBhY2hpZXZlIGFuZCB3aGF0IHBvdGVudGlhbCBmYWlsdXJlIHNjZW5hcmlvcyB0aGV5J3JlIGNvdmVyaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6MjMuMDUxMTE3NjA0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzY4MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJ0Zl9pZF9hbGxvd19zbGVlcGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTAxND1zdGF0aWMgYm9vbCBpc190cmFjaW5nX211bHRpX2lkKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTAxOC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkwMTk6c3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTAyMC1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBidGYgKmJ0ZilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTEyNj1pbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzMy1cXHRcXHRpZiAocHJvZy1cXHUwMDNlc2xlZXBhYmxlKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NDM0OlxcdFxcdFxcdHJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzNS1cXHRcXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2Mzk9aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5Njg3LVxcdGlmIChwcm9nLVxcdTAwM2VzbGVlcGFibGUpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2ODg6XFx0XFx0ZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0Zik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5Njg5LVxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjQ2OjIzLjA5NzQ4OTI1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMjcwNDM4MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoaW5raW5nIGFib3V0IGl0cyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBCUEYgdmVyaWZpZXIuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBmdW5jdGlvbiwgd2hpY2ggaXMgY2FsbGVkIGZyb20gd2l0aGluIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuIFRoZXNlIGFyZSBpbXBvcnRhbnQgdmVyaWZpZXIgZnVuY3Rpb25zOyB0aGV5IGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgcGxheSBhIGNydWNpYWwgcm9sZSBpbiBCUEYgcHJvZ3JhbSB2YWxpZGF0aW9uLlxuXG5JdCBzZWVtcyB0aGUgcGF0Y2ggaXMgZGVzaWduZWQgdG8gcHJldmVudCBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGZyb20gYmVpbmcgYXR0YWNoZWQgdG8gQlRGIG9iamVjdHMgdGhhdCBhcmVuJ3QgcGFydCBvZiB0aGUga2VybmVsIOKAkyBsaWtlIG90aGVyIEJQRiBwcm9ncmFtcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSB0ZXN0IGNhc2UsIGB0ZXN0X3NsZWVwYWJsZV9mZW50cnlfdG9feGRwYCwgYWltcyB0byBlbmZvcmNlIHRoaXMsIGF0dGVtcHRpbmcgdG8gYXR0YWNoIGEgc2xlZXBhYmxlIGZlbnRyeSBwcm9ncmFtIHRvIGFuIFhEUCBwcm9ncmFtLiBYRFAgaXMgYSBCUEYgcHJvZ3JhbSBzbyBpdCBjaGVja3Mgd2hldGhlciBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGNhbiBiZSBhdHRhY2hlZCB0byBpdCdzIEJURi4gVGhlIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiB0aGUgYGZlbnRyeV9zbGVlcGFibGVfX2xvYWRgIGZ1bmN0aW9uIGZhaWxzIGFzIGV4cGVjdGVkLlxuXG5IbW0sIHRoZSB0ZXN0IGFzc2VydHMgdGhhdCBgZmVudHJ5X3NsZWVwYWJsZV9fbG9hZGAgc2hvdWxkIHJldHVybiBhbiBlcnJvciwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgY2FuIHNlZSB0aGlzIGNvZGUgaXMgc3BlY2lmaWNhbGx5IHRyeWluZyB0byAqdmFsaWRhdGUqIHRoYXQgdGhlIGZhaWx1cmUgb2NjdXJzLlxuXG5UaGlzIHNvdW5kcyBsaWtlIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmcuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdmVyaWZpZXIsIGltcGFjdGluZyBob3cgcHJvZ3JhbXMgY2FuIGJlIGF0dGFjaGVkLCBzbyBpdCdzIGEgZ29vZCBwbGFjZSB0byBwb3RlbnRpYWxseSB1bmNvdmVyIGlzc3Vlcy4gSSdsbCBuZWVkIHRvIGZvY3VzIG9uIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAsIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAsIGFuZCBtYXliZSB0aGUgYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgIGZ1bmN0aW9uIGl0c2VsZiAoYWx0aG91Z2ggaXQncyBzdGF0aWMsIHNvIHRoYXQgbWlnaHQgYmUgdHJpY2t5KS4gSSdsbCBzdGFydCBieSB0YWtpbmcgYSBjbG9zZXIgbG9vayBhdCB0aG9zZSB0d28gZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODA2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjQ2OjI5LjIyNDUzNDc4OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjE0MTM5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTEyMDc4PXN0YXRpYyBpbnQgcHJvY2Vzc19rZl9hcmdfcHRyX3RvX3JidHJlZV9ub2RlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIwODktICogTFNNIGhvb2tzIGFuZCBpdGVycyAoYm90aCBzbGVlcGFibGUgYW5kIG5vbi1zbGVlcGFibGUpIGFyZSBzYWZlLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjA5MDogKiBBbnkgc2xlZXBhYmxlIHByb2dzIGFyZSBhbHNvIHNhZmUgc2luY2UgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoKSBlbmZvcmNlXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMDkxLSAqIHRoZW0gY2FuIG9ubHkgYmUgYXR0YWNoZWQgdG8gc29tZSBzcGVjaWZpYyBob29rIHBvaW50cy5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTExMj1zdGF0aWMgYm9vbCBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbChlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MTI1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTEyNjppbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkxMjctXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTUzOT1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTU2OS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1NzA6XFx0cmV0ID0gYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoXFx1MDAyNmVudi1cXHUwMDNlbG9nLCBwcm9nLCB0Z3RfcHJvZywgYnRmX2lkLCBcXHUwMDI2dGd0X2luZm8pO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTU3MS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODo0NjoyOS4yNzA2ODExMTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY0MDYyMDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzIGZ1bmN0aW9uLCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgZUJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgYW5kIGhvdyBCVEYgSURzIGFyZSBtYW5hZ2VkIGluIHRoYXQgY29udGV4dC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3N1bWUgdGhpcyByZWxhdGVzIHRvIHNpdHVhdGlvbnMgd2hlcmUgd2UncmUgZGVhbGluZyB3aXRoIG11bHRpcGxlIEJURiBJRHMgb3IgcGVyaGFwcyBtdWx0aXBsZSBwcm9ncmFtcyBhdHRhY2hpbmcgdG8gdGhlIHNhbWUgdGFyZ2V0LCBvciBtYXliZSBoYW5kbGluZyBtdWx0aXBsZSBCVEYgb2JqZWN0cy4gSSBleHBlY3QgdGhlIFwibXVsdGlcIiBzdWZmaXggaGludHMgYXQgY29tcGxleGl0eSBiZXlvbmQgYSBzaW1wbGUgb25lLXRvLW9uZSBhdHRhY2htZW50IHNjZW5hcmlvLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudHM6IHdoaWNoIGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQ/IFdoYXQga2luZHMgb2YgY2hlY2tzIGFyZSBpdCBwZXJmb3JtaW5nPyBBbnkgcG90ZW50aWFsIGZvciBlcnJvciBjb25kaXRpb25zLCByYWNlIGNvbmRpdGlvbnMgb3IgaW5lZmZpY2llbmNpZXMgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gbmVlZCB0byBiZSBub3RlZCwgYW5kIEknbGwgcGF5IHNwZWNpZmljIGF0dGVudGlvbiB0byBob3cgQlRGIHR5cGUgY29tcGF0aWJpbGl0eSBpcyBlbmZvcmNlZC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk0NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjQ2OjMyLjYzNDc0NTA2OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTAyNDAxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTM5PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjM4LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYzOTppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjQwLVxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODo0NjozMi42ODM3NzExNjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODA4OTM1NzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhhdCBxdWVyeSwgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgQlBGIEF0dGFjaG1lbnQgVGFyZ2V0cyoqXG5cblJpZ2h0LCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IEJQRiBhdHRhY2htZW50IHRhcmdldHMgYXJlIGNoZWNrZWQuIFRoYXQgc291bmRzIGxpa2Ugc29tZXRoaW5nIHRoYXQgd291bGQgaGFwcGVuIGR1cmluZyB0aGUgQlBGIHZlcmlmaWNhdGlvbiBwcm9jZXNzLCBzbyBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBsb29rIGF0IHRoZSB2ZXJpZmljYXRpb24gY29kZSBpdHNlbGYuICBJJ20gdGhpbmtpbmcgdGhlIGZ1bmN0aW9uIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgbGlrZWx5IHRoZSBrZXkgaGVyZSwgYW5kIEknZCBiZXQgaXQncyBkZWZpbmVkIG9yIGF0IGxlYXN0IGRlY2xhcmVkIGluIGVpdGhlciBgaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaGAgb3IsIGxlc3MgbGlrZWx5IGJ1dCBzdGlsbCBwb3NzaWJsZSwgaW4gYGluY2x1ZGUvbGludXgvYnBmLmhgLiBJJ2Qgc3RhcnQgd2l0aCBgYnBmX3ZlcmlmaWVyLmhgIGZpcnN0LCBnaXZlbiB0aGUgbmFtZSwgYnV0IEknbGwga2VlcCB0aGUgb3RoZXIgYXMgYSBwb3RlbnRpYWwuIEknbGwgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBoZWFkZXIgdGhhdCBkZWZpbmVzIGl0LCBhbmQgdGhlbiBJIGNhbiBkaWcgaW50byB0aGUgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4MiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjQ2OjM2LjQ5MjcwOTgxOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM2NzE4OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaD0xMTgyPWludCBicGZfY2hlY2tfYnRmX2luZm8oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgtMTE4NC1cXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oOjExODU6aW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xMTg2LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjQ2OjM2LjU3NjM4NjkwM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzI3MTYyNzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIG15IGluaXRpYWwgdGhpbmtpbmcgaXMgdGhhdCBJIG5lZWQgdG8gem9vbSBpbiBvbiB0aGUgc3ltYm9scyBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBUaGVzZSBzZWVtIGxpa2UgZXhjZWxsZW50IHN0YXJ0aW5nIHBvaW50cywgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcHJvYmxlbSBJJ20gdHJ5aW5nIHRvIHNvbHZlLiBcblxuKipJbml0aWFsIFN5bWJvbCBBbmFseXNpcyBhbmQgRmlsZSBMb2NhdGlvbiBDaGVjayoqXG5cbkhvd2V2ZXIsIGhhbmcgb24gYSBzZWNvbmQuIEkgcmVtZW1iZXIgbm93LCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIHJlc2lkZXMgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBIbW1tLCBJIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB3aGV0aGVyIG9yIG5vdCBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAgc2hvdWxkIGJlIGNvbnNpZGVyZWQuIEl0J3MgaW1wb3J0YW50IHRvIGNvbnNpZGVyIGFueSBvdGhlciBjb2RlIHdoaWNoIGNvdWxkIGFjY29tcGxpc2ggdGhlIHNhbWUgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIGV4cGxvcmUgdGhhdCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Nzg5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6NDAuMzAzNTUyOTcxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTk3Njk1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19hdHRhY2hfYnRmX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1MTI9c3RhdGljIGJvb2wgY2FuX2JlX3NsZWVwYWJsZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1MzgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NTM5OnN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTU0MC17XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjM5OmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2NDAtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAxNjc9aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAzMTItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMzEzOlxcdHJldCA9IGNoZWNrX2F0dGFjaF9idGZfaWQoZW52KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAzMTQtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6NDAuMzQ5NTM3NTQ4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3Nzg3MjcxMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJQRiBBdHRhY2htZW50IFRhcmdldHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgQlBGIGF0dGFjaG1lbnQgbG9naWMsIGFuZCBpdCBzZWVtcyBsaWtlIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgaXRzIGRlZmluaW5nIHNjb3BlIOKAkyBpdCdzIGVpdGhlciBleHBvcnRlZCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIG5vdCBkZWNsYXJlZCBhcyBzdGF0aWMuIEdvb2QgdG8ga25vdy4gQW5kIHRoZSBzYW1lIGFwcGVhcnMgdG8gYmUgdHJ1ZSBmb3IgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYCwgd2hpY2ggaXMgYWxzbyBub24tc3RhdGljLiBUaGUgZnVuY3Rpb24gYGNoZWNrX2F0dGFjaF9idGZfaWRgLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgZGVmaW5lZCBhcyBzdGF0aWMsIHNvIGl0J3MgbGlrZWx5IG9ubHkgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiBpdHMgY29tcGlsYXRpb24gdW5pdC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AgYW5kIGNvbmZpcm0gbXkgY3VycmVudCBhc3N1bXB0aW9ucyBieSBjaGVja2luZyB0aGUgdXNlcyBvZiBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgQlBGIHN5c3RlbSBjYWxsIGhhbmRsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDA2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6NDQuMTI4MjY3OTgzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc2MDg4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3N5c2NhbGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3N5c2NhbGwuYz0zNjI0PXN0YXRpYyBpbnQgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzc1Ni1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozNzU3OlxcdFxcdGVyciA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KE5VTEwsIHByb2csIHRndF9wcm9nLCBidGZfaWQsXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzc1OC1cXHRcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2dGd0X2luZm8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODo0Njo0NC4xNzQwMzY1NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk2Mzg5NjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBkaXN0aWxsZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgQlBGIEF0dGFjaG1lbnQgTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGggb2YgQlBGIHByb2dyYW0gYXR0YWNobWVudC4gSSBrbm93IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSB3aXRoaW4gYGJwZl90cmFjaW5nX3Byb2dfYXR0YWNoYCDigJMgZm91bmQgdGhhdCBpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoZSB0YXJnZXQgaXMgY2hlY2tlZCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBCVEYgSURzLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb24gYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYC4gSXQncyBsaWtlbHkgbG9jYXRlZCBpbiBlaXRoZXIgYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBvciwgcGVyaGFwcyBtb3JlIGxvZ2ljYWxseSwgd2l0aGluIHRoZSBicm9hZGVyIHN0cnVjdHVyZSBvcGVyYXRpb25zIGRlZmluZWQgaW4gYGtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg3MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjQ2OjQ3Ljk3MDQyODM2NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxMDg1MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTYyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjM1LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2MzY6XFx0XFx0ZXJyID0gYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoYnRmLCBwcm9nLCBpZHNbaV0sIFxcdTAwMjZ0Z3RfaW5mbyk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTYzNy1cXHRcXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTM5PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjM4LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYzOTppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjQwLVxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODo0Njo0OC4wMTg1NDAwNzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTcyMTEwMTE1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5OiBWZXJpZnlpbmcgU2xlZXBhYmxlIEJQRiBBdHRhY2htZW50KipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIHJpZ2h0IGFyZWFzLiBJdCBsb29rcyBsaWtlIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgYXJlIHRoZSBrZXkgZm9jdXMgc3ltYm9scyBmb3IgdGhpcyBmdXp6aW5nIGVmZm9ydC4gSSBicmllZmx5IGNvbnNpZGVyZWQgYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgLCBidXQgc2luY2UgaXQncyBzdGF0aWMsIGl0IHdvbid0IGJlIGFzIGVmZmVjdGl2ZSB0byB0YXJnZXQgZGlyZWN0bHkuXG5cbk5vdywgbGV0J3MgdGhpbmsgYWJvdXQgY29uZmlndXJhdGlvbnMuIFRoZSBwYXRjaCBtb2RpZmllcyBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgd2hpY2ggdGVsbHMgbWUgdGhpcyBpbnZvbHZlcyB0aGUgQlBGIHZlcmlmaWVyLCBhbmQgdGhlIHByZXNlbmNlIG9mIGBmZW50cnlfc2xlZXBhYmxlLmNgIGFuZCBgeGRwX2R1bW15LmNgIGluIHRoZSB0ZXN0cyBzdWdnZXN0cyB3ZSdyZSBkZWFsaW5nIHdpdGggc2xlZXBhYmxlIHByb2dyYW1zIGFuZCBwb3RlbnRpYWxseSBYRFAtcmVsYXRlZCBpbnRlcmFjdGlvbnMgYXMgd2VsbCwgdGhvdWdoIHRoYXQncyBsaWtlbHkganVzdCBmb3IgdGhlIGV4YW1wbGUgc2V0dXAuIFN0YW5kYXJkIEJQRiBmdXp6aW5nIGNvbmZpZ3MgbGlrZSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19ERUJVR19JTkZPX0JURmAsIGFuZCBgQ09ORklHX0JQRl9KSVRgIGFyZSBwcm9iYWJseSBnb29kIGVub3VnaCBhcyB0aGUgYmFzaXMuIEFoLCBidXQgd2FpdCDigJMgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIEJQRiBzeXNjYWxscywgSSBuZWVkIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBgQlBGX1NZU0NBTExgIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AuIEl0J3MgZWFzeSB0byBvdmVybG9vayB0aGVzZSBiYXNpY3MuXG5cbkxldCdzIGRvIGEgcXVpY2sgcmUtcmV2aWV3IG9mIHRoZSBwYXRjaCBpdHNlbGY6XG5cbmBgYGNcbkBAIC0xOTAyMiw2ICsxOTAyMiw5IEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiXG4gXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQ7XG4gXHRjb25zdCBjaGFyICp0bmFtZTtcbiBcbitcdGlmICghYnRmX2lzX2tlcm5lbChidGYpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdHN3aXRjaCAocHJvZy1cdTAwM2V0eXBlKSB7XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzpcbiBcdFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgYnRmX2lkKTtcbmBgYFxuXG5SaWdodCwgaXQncyBhIHJlbGF0aXZlbHkgc21hbGwsIGJ1dCBmdW5jdGlvbmFsbHkgaW1wb3J0YW50IGNoYW5nZSB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlIHBhdGNoIHJlc3RyaWN0cyBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG5vbi1rZXJuZWwgQlRGIG9iamVjdHMsIHByZXZlbnRpbmcgYSBjbGFzcyBvZiBidWdzLiBHaXZlbiB0aGF0IGl0IHRvdWNoZXMgdGhlIEJQRiB2ZXJpZmllciBhbmQgaXMgcmVsYXRlZCB0byBob3cgQlBGIHByb2dyYW1zIGF0dGFjaCwgaXQncyBkZWZpbml0ZWx5IHdvcnRoIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBpbiBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAuIFRoZSBgYnBmKClgIHN5c2NhbGwgcGF0aCBpcyByZWxldmFudCBmb3IgdGhpcyBuZXcgY2hlY2suXG5cbioqRm9jdXMgU3ltYm9sczoqKlxuXG4qICAgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YFxuKiAgIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWBcblxuKipFbmFibGVDb25maWdzOioqXG5cbiogICBgQlBGX1NZU0NBTExgXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgdG8gZW5mb3JjZSB0aGF0IHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgY2FuIG9ubHkgYXR0YWNoIHRvIGtlcm5lbCBCVEYgb2JqZWN0cy4gVGhpcyBpbXBhY3RzIHRoZSBCUEYgcHJvZ3JhbSBhdHRhY2htZW50IGxvZ2ljLiBHaXZlbiB0aGF0IHRoZSBjaGFuZ2VzIGhhcHBlbiBkdXJpbmcgdGhlIGF0dGFjaG1lbnQsIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBhIHN5c2NhbGwsIGZ1enppbmcgdGhlIGF0dGFjaG1lbnQgdmVyaWZpY2F0aW9uIHJvdXRpbmVzIGlzIHRoZSByaWdodCBhcHByb2FjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ1NiwiT3V0cHV0VG9rZW5zIjoxNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6NTcuNzM5NjQ0Mzg3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM1NDU0MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgdmVyaWZpZXIgdG8gcHJldmVudCBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG5vbi1rZXJuZWwgQlRGIG9iamVjdHMgKGUuZy4sIG90aGVyIEJQRiBwcm9ncmFtcykuIFRoaXMgYWZmZWN0cyB0aGUgQlBGIHByb2dyYW0gYXR0YWNobWVudCBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCB3aGVuIGxvYWRpbmcgb3IgYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBCUEYgYXR0YWNobWVudCB2ZXJpZmljYXRpb24gZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgdmVyaWZpZXIgdG8gcHJldmVudCBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG5vbi1rZXJuZWwgQlRGIG9iamVjdHMgKGUuZy4sIG90aGVyIEJQRiBwcm9ncmFtcykuIFRoaXMgYWZmZWN0cyB0aGUgQlBGIHByb2dyYW0gYXR0YWNobWVudCBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCB3aGVuIGxvYWRpbmcgb3IgYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBCUEYgYXR0YWNobWVudCB2ZXJpZmljYXRpb24gZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdj2bn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 18:05:47 +0000 UTC FinishedAt: 2026-08-05 18:46:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "6655c409707ec8ce9ce0850ffe4fe02331fd4d9c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "6655c409707ec8ce9ce0850ffe4fe02331fd4d9c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "0ccc69e7-5596-4ae0-8152-47d9cdbf1d33" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_check_attach_target", "bpf_check_attach_btf_id_multi" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF90YXJnZXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgdmVyaWZpZXIgdG8gcHJldmVudCBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG5vbi1rZXJuZWwgQlRGIG9iamVjdHMgKGUuZy4sIG90aGVyIEJQRiBwcm9ncmFtcykuIFRoaXMgYWZmZWN0cyB0aGUgQlBGIHByb2dyYW0gYXR0YWNobWVudCBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCB3aGVuIGxvYWRpbmcgb3IgYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBCUEYgYXR0YWNobWVudCB2ZXJpZmljYXRpb24gZnVuY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGJjZmZmZTY1ZjRlMWRiMzM2NjczNjU5Mjc2N2ZmOGExMDc0NWQyYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTg6NDY6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA3NDM5YWZkYzg1MWE3Li5mMzY0NDUzYTJlY2I3IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC0xOTAyMiw2ICYjNDM7MTkwMjIsOSBAQCBzdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYlxuIFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0O1xuIFx0Y29uc3QgY2hhciAqdG5hbWU7XG4gXG4mIzQzO1x0aWYgKCFidGZfaXNfa2VybmVsKGJ0ZikpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRzd2l0Y2ggKHByb2ctXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XG4gXHRcdHQgPSBidGZfdHlwZV9ieV9pZChidGYsIGJ0Zl9pZCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG5pbmRleCA0YTg3ZDcxNjNjOGM3Li4yNTIzYzA3YTE2YzY1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcbkBAIC01LDYgJiM0Mzs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnRmLmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDtiaW5kNF9wcm9nLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2ZyZXBsYWNlX3Byb2dtYXAuc2tlbC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2ZlbnRyeV9zbGVlcGFibGUuc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7eGRwX2R1bW15LnNrZWwuaFwmIzM0O1xuIFxuIHR5cGVkZWYgaW50ICgqdGVzdF9jYikoc3RydWN0IGJwZl9vYmplY3QgKm9iaik7XG5AQCAtNTc2LDYgJiM0Mzs1NzcsNjAgQEAgc3RhdGljIHZvaWQgdGVzdF9mdW5jX3JlcGxhY2VfcHJvZ21hcCh2b2lkKVxuIFx0ZnJlcGxhY2VfcHJvZ21hcF9fZGVzdHJveShza2VsKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHRlc3Rfc2xlZXBhYmxlX2ZlbnRyeV90b194ZHAodm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBmZW50cnlfc2xlZXBhYmxlICpza2VsID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgeGRwX2R1bW15ICpza2VsX3hkcCA9IE5VTEw7XG4mIzQzO1x0aW50IGlmaW5kZXgsIHByb2dfZmQsIGVycjtcbiYjNDM7XHRjaGFyIGJ1ZmZbNjRdID0ge307XG4mIzQzO1xuJiM0MzsjaWZuZGVmIF9feDg2XzY0X19cbiYjNDM7XHR0ZXN0X19za2lwKCk7XG4mIzQzO1x0cmV0dXJuO1xuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzO1x0aWZpbmRleCA9IGlmX25hbWV0b2luZGV4KFwmIzM0O2xvXCYjMzQ7KTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9HVChpZmluZGV4LCAwLCBcJiMzNDtpZl9uYW1ldG9pbmRleFwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdHNrZWxfeGRwID0geGRwX2R1bW15X19vcGVuX2FuZF9sb2FkKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLCBcJiMzNDt4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRza2VsID0gZmVudHJ5X3NsZWVwYWJsZV9fb3BlbigpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtmZW50cnlfc2xlZXBhYmxlX19vcGVuXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRza2VsLVx1MDAzZWJzcy1cdTAwM2V1c2VyX3B0ciA9IGJ1ZmY7XG4mIzQzO1xuJiM0MztcdHByb2dfZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbF94ZHAtXHUwMDNlcHJvZ3MuX194NjRfc3lzX25vcCk7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5X3hkcCwgcHJvZ19mZCwgXCYjMzQ7X194NjRfc3lzX25vcFwmIzM0Oyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDticGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXRcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IGZlbnRyeV9zbGVlcGFibGVfX2xvYWQoc2tlbCk7XG4mIzQzO1x0QVNTRVJUX0VSUihlcnIsIFwmIzM0O2ZlbnRyeV9zbGVlcGFibGVfX2xvYWRcJiMzNDspO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0c2tlbC1cdTAwM2VsaW5rcy5mZW50cnlfeGRwID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZShza2VsLVx1MDAzZXByb2dzLmZlbnRyeV94ZHApO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLVx1MDAzZWxpbmtzLmZlbnRyeV94ZHAsIFwmIzM0O2JwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2VcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdHNrZWxfeGRwLVx1MDAzZWxpbmtzLl9feDY0X3N5c19ub3AgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3hkcChza2VsX3hkcC1cdTAwM2Vwcm9ncy5fX3g2NF9zeXNfbm9wLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0aWZpbmRleCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLVx1MDAzZWxpbmtzLl9feDY0X3N5c19ub3AsIFwmIzM0O2JwZl9wcm9ncmFtX19hdHRhY2hfeGRwXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRlcnIgPSBzeXN0ZW0oXCYjMzQ7cGluZyAtcSAtYyAxIC1XIDEgMTI3LjAuMC4xIFx1MDAzZSAvZGV2L251bGxcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9PSyhlcnIsIFwmIzM0O3BpbmdcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUlIoc2tlbC1cdTAwM2Vic3MtXHUwMDNlcmV0dmFsLCBcJiMzNDtyZXR2YWxcJiMzNDspO1xuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdGZlbnRyeV9zbGVlcGFibGVfX2Rlc3Ryb3koc2tlbCk7XG4mIzQzO1x0eGRwX2R1bW15X19kZXN0cm95KHNrZWxfeGRwKTtcbiYjNDM7fVxuJiM0MztcbiAvKiBOT1RFOiBhZmZlY3Qgb3RoZXIgdGVzdHMsIG11c3QgcnVuIGluIHNlcmlhbCBtb2RlICovXG4gdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpXG4ge1xuQEAgLTYwNyw0ICYjNDM7NjYyLDYgQEAgdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpXG4gXHRcdHRlc3RfZnVuY19yZXBsYWNlX2ludF93aXRoX3ZvaWQoKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O2ZyZXBsYWNlX3ZvaWRcJiMzNDspKVxuIFx0XHR0ZXN0X2Z1bmNfcmVwbGFjZV92b2lkKCk7XG4mIzQzO1x0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7c2xlZXBhYmxlX2ZlbnRyeV90b194ZHBcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9zbGVlcGFibGVfZmVudHJ5X3RvX3hkcCgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjhjMGZjNjkxZDMyOWRcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmNcbkBAIC0wLDAgJiM0MzsxLDE4IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNpbmNsdWRlIFwmIzM0O3ZtbGludXguaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFx1MDAzZVxuJiM0MztcbiYjNDM7Y2hhciBMSUNFTlNFW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiM0MztcbiYjNDM7dm9pZCAqdXNlcl9wdHI7XG4mIzQzO2ludCByZXR2YWw7XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7ZmVudHJ5LnNcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyhmZW50cnlfeGRwKVxuJiM0Mzt7XG4mIzQzO1x0Y2hhciBidWZmWzY0XTtcbiYjNDM7XG4mIzQzO1x0cmV0dmFsID0gYnBmX2NvcHlfZnJvbV91c2VyKGJ1ZmYsIHNpemVvZihidWZmKSwgdXNlcl9wdHIpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXG5pbmRleCBkOTg4YjJlMGNlZTg0Li41ZjFlMDc3MTAyMWRmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmNcbkBAIC0xMCw0ICYjNDM7MTAsMTAgQEAgaW50IHhkcF9kdW1teV9wcm9nKHN0cnVjdCB4ZHBfbWQgKmN0eClcbiBcdHJldHVybiBYRFBfUEFTUztcbiB9XG4gXG4mIzQzO1NFQyhcJiMzNDt4ZHBcJiMzNDspXG4mIzQzO2ludCBfX3g2NF9zeXNfbm9wKHN0cnVjdCB4ZHBfbWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBYRFBfUEFTUztcbiYjNDM7fVxuJiM0MztcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfdGFyZ2V0JiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRvIHByZXZlbnQgc2xlZXBhYmxlIEJQRiBwcm9ncmFtcyBmcm9tIGF0dGFjaGluZyB0byBub24ta2VybmVsIEJURiBvYmplY3RzIChlLmcuLCBvdGhlciBCUEYgcHJvZ3JhbXMpLiBUaGlzIGFmZmVjdHMgdGhlIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIG9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgQlBGIGF0dGFjaG1lbnQgdmVyaWZpY2F0aW9uIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhiY2ZmZmU2NWY0ZTFkYjMzNjY3MzY1OTI3NjdmZjhhMTA3NDVkMmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDE4OjQ2OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDc0MzlhZmRjODUxYTcuLmYzNjQ0NTNhMmVjYjcgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTE5MDIyLDYgJiM0MzsxOTAyMiw5IEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiCiAJY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0OwogCWNvbnN0IGNoYXIgKnRuYW1lOwogCiYjNDM7CWlmICghYnRmX2lzX2tlcm5lbChidGYpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJc3dpdGNoIChwcm9nLSZndDt0eXBlKSB7CiAJY2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6CiAJCXQgPSBidGZfdHlwZV9ieV9pZChidGYsIGJ0Zl9pZCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmMKaW5kZXggNGE4N2Q3MTYzYzhjNy4uMjUyM2MwN2ExNmM2NSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuYwpAQCAtNSw2ICYjNDM7NSw3IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2J0Zi5oJmd0OwogI2luY2x1ZGUgJiMzNDtiaW5kNF9wcm9nLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2ZyZXBsYWNlX3Byb2dtYXAuc2tlbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2ZlbnRyeV9zbGVlcGFibGUuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7eGRwX2R1bW15LnNrZWwuaCYjMzQ7CiAKIHR5cGVkZWYgaW50ICgqdGVzdF9jYikoc3RydWN0IGJwZl9vYmplY3QgKm9iaik7CkBAIC01NzYsNiAmIzQzOzU3Nyw2MCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Z1bmNfcmVwbGFjZV9wcm9nbWFwKHZvaWQpCiAJZnJlcGxhY2VfcHJvZ21hcF9fZGVzdHJveShza2VsKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHRlc3Rfc2xlZXBhYmxlX2ZlbnRyeV90b194ZHAodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBmZW50cnlfc2xlZXBhYmxlICpza2VsID0gTlVMTDsKJiM0MzsJc3RydWN0IHhkcF9kdW1teSAqc2tlbF94ZHAgPSBOVUxMOwomIzQzOwlpbnQgaWZpbmRleCwgcHJvZ19mZCwgZXJyOwomIzQzOwljaGFyIGJ1ZmZbNjRdID0ge307CiYjNDM7CiYjNDM7I2lmbmRlZiBfX3g4Nl82NF9fCiYjNDM7CXRlc3RfX3NraXAoKTsKJiM0MzsJcmV0dXJuOwomIzQzOyNlbmRpZgomIzQzOwomIzQzOwlpZmluZGV4ID0gaWZfbmFtZXRvaW5kZXgoJiMzNDtsbyYjMzQ7KTsKJiM0MzsJaWYgKCFBU1NFUlRfR1QoaWZpbmRleCwgMCwgJiMzNDtpZl9uYW1ldG9pbmRleCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJc2tlbF94ZHAgPSB4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWQoKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLCAmIzM0O3hkcF9kdW1teV9fb3Blbl9hbmRfbG9hZCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJc2tlbCA9IGZlbnRyeV9zbGVlcGFibGVfX29wZW4oKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsICYjMzQ7ZmVudHJ5X3NsZWVwYWJsZV9fb3BlbiYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsLSZndDtic3MtJmd0O3VzZXJfcHRyID0gYnVmZjsKJiM0MzsKJiM0MzsJcHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsX3hkcC0mZ3Q7cHJvZ3MuX194NjRfc3lzX25vcCk7CiYjNDM7CWVyciA9IGJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldChza2VsLSZndDtwcm9ncy5mZW50cnlfeGRwLCBwcm9nX2ZkLCAmIzM0O19feDY0X3N5c19ub3AmIzM0Oyk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXQmIzM0OykpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKJiM0MzsJZXJyID0gZmVudHJ5X3NsZWVwYWJsZV9fbG9hZChza2VsKTsKJiM0MzsJQVNTRVJUX0VSUihlcnIsICYjMzQ7ZmVudHJ5X3NsZWVwYWJsZV9fbG9hZCYjMzQ7KTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsLSZndDtsaW5rcy5mZW50cnlfeGRwID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZShza2VsLSZndDtwcm9ncy5mZW50cnlfeGRwKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtJmd0O2xpbmtzLmZlbnRyeV94ZHAsICYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsX3hkcC0mZ3Q7bGlua3MuX194NjRfc3lzX25vcCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfeGRwKHNrZWxfeGRwLSZndDtwcm9ncy5fX3g2NF9zeXNfbm9wLAomIzQzOwkJCQkJCQkJaWZpbmRleCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsX3hkcC0mZ3Q7bGlua3MuX194NjRfc3lzX25vcCwgJiMzNDticGZfcHJvZ3JhbV9fYXR0YWNoX3hkcCYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwllcnIgPSBzeXN0ZW0oJiMzNDtwaW5nIC1xIC1jIDEgLVcgMSAxMjcuMC4wLjEgJmd0OyAvZGV2L251bGwmIzM0Oyk7CiYjNDM7CUFTU0VSVF9PSyhlcnIsICYjMzQ7cGluZyYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VSUihza2VsLSZndDtic3MtJmd0O3JldHZhbCwgJiMzNDtyZXR2YWwmIzM0Oyk7CiYjNDM7CiYjNDM7b3V0OgomIzQzOwlmZW50cnlfc2xlZXBhYmxlX19kZXN0cm95KHNrZWwpOwomIzQzOwl4ZHBfZHVtbXlfX2Rlc3Ryb3koc2tlbF94ZHApOwomIzQzO30KJiM0MzsKIC8qIE5PVEU6IGFmZmVjdCBvdGhlciB0ZXN0cywgbXVzdCBydW4gaW4gc2VyaWFsIG1vZGUgKi8KIHZvaWQgc2VyaWFsX3Rlc3RfZmV4aXRfYnBmMmJwZih2b2lkKQogewpAQCAtNjA3LDQgJiM0Mzs2NjIsNiBAQCB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZCkKIAkJdGVzdF9mdW5jX3JlcGxhY2VfaW50X3dpdGhfdm9pZCgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7ZnJlcGxhY2Vfdm9pZCYjMzQ7KSkKIAkJdGVzdF9mdW5jX3JlcGxhY2Vfdm9pZCgpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NsZWVwYWJsZV9mZW50cnlfdG9feGRwJiMzNDspKQomIzQzOwkJdGVzdF9zbGVlcGFibGVfZmVudHJ5X3RvX3hkcCgpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uOGMwZmM2OTFkMzI5ZAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmMKQEAgLTAsMCAmIzQzOzEsMTggQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyNpbmNsdWRlICYjMzQ7dm1saW51eC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfdHJhY2luZy5oJmd0OwomIzQzOwomIzQzO2NoYXIgTElDRU5TRVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwomIzQzOwomIzQzO3ZvaWQgKnVzZXJfcHRyOwomIzQzO2ludCByZXR2YWw7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7ZmVudHJ5LnMmIzM0OykKJiM0MztpbnQgQlBGX1BST0coZmVudHJ5X3hkcCkKJiM0Mzt7CiYjNDM7CWNoYXIgYnVmZls2NF07CiYjNDM7CiYjNDM7CXJldHZhbCA9IGJwZl9jb3B5X2Zyb21fdXNlcihidWZmLCBzaXplb2YoYnVmZiksIHVzZXJfcHRyKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jCmluZGV4IGQ5ODhiMmUwY2VlODQuLjVmMWUwNzcxMDIxZGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmMKQEAgLTEwLDQgJiM0MzsxMCwxMCBAQCBpbnQgeGRwX2R1bW15X3Byb2coc3RydWN0IHhkcF9tZCAqY3R4KQogCXJldHVybiBYRFBfUEFTUzsKIH0KIAomIzQzO1NFQygmIzM0O3hkcCYjMzQ7KQomIzQzO2ludCBfX3g2NF9zeXNfbm9wKHN0cnVjdCB4ZHBfbWQgKmN0eCkKJiM0Mzt7CiYjNDM7CXJldHVybiBYRFBfUEFTUzsKJiM0Mzt9CiYjNDM7CiBjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MjQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0IHRvdWNoZXMgYm90aCBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgYWRkcyBhIG5ldyB0ZXN0IGNhc2UgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIG1vZGlmaWNhdGlvbiwgYmVjYXVzZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGNoYW5nZSBpcyBoYXBwZW5pbmcuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBmdW5jdGlvbjoKCmBgYGMKCWlmICghYnRmX2lzX2tlcm5lbChidGYpKQoJCXJldHVybiAtRUlOVkFMOwpgYGAKClJpZ2h0LCBJIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVzaWduZWQgdG8gdGlnaHRlbiBzZWN1cml0eSBhcm91bmQgc2xlZXBhYmxlIEJQRiBwcm9ncmFtcy4gRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpcyBub3cgcHJldmVudGluZyBub24ta2VybmVsIEJURiAoQlBGIFR5cGUgRm9ybWF0KSBvYmplY3RzIGZyb20gYmVpbmcgdXNlZCBpbiBjb250ZXh0cyB3aGVyZSB0aGUgcHJvZ3JhbSBtaWdodCBzbGVlcC4gV2hpY2gsIG1ha2VzIHNlbnNlLiBXZSBkb24mIzM5O3Qgd2FudCBwb3RlbnRpYWxseSB1c2VyLXNwYWNlIEJURiBvYmplY3RzIGNhdXNpbmcgaXNzdWVzIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBwdXQgdG8gc2xlZXAgaW4gdGhlIGtlcm5lbC4gVGhpcyBpcyBnb29kIGhhcmRlbmluZywgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGlmIEJURiBpbmZvcm1hdGlvbiBpc24mIzM5O3QgcHJvcGVybHkgdmFsaWRhdGVkIGluIHRoZXNlIHNpdHVhdGlvbnMuCgpJIG5lZWQgdG8gY29uZmlybSB0aGlzIGNoYW5nZSBpcyBjb3JyZWN0LiBUaGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgYXJlIGFzc3VtZWQgdG8gb25seSB1c2UgQlRGIGluZm9ybWF0aW9uIGZyb20gdGhlIGtlcm5lbCBpdHNlbGYuIFdlIG5vdyBleHBsaWNpdGx5IGVuZm9yY2UgdGhhdCBhc3N1bXB0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGFuZCBjb250ZXh0IGZvciBhbGxvd2luZyAqYW55KiBzbGVlcGFibGUgb3BlcmF0aW9ucyB3aXRoIEJURiBpbiB0aGUgZmlyc3QgcGxhY2UsIGFuZCB0aGVuIGRldGVybWluZSBob3cgdGhpcyBjaGFuZ2UgYWxpZ25zIHdpdGggdGhlIGJyb2FkZXIgc2VjdXJpdHkgcG9zdHVyZSBvZiB0aGUgQlBGIHN1YnN5c3RlbS4gSSBzaG91bGQgYWxzbyBjaGVjayB0aGUgdGVzdCBjYXNlIHRvIHNlZSBob3cgdGhleSYjMzk7cmUgdmFsaWRhdGluZyB0aGlzIGNoYW5nZTsgaXQgc2hvdWxkIHByb3ZpZGUgdmFsdWFibGUgaW5zaWdodHMgaW50byB3aGF0IHRoZSBkZXZlbG9wZXJzIGFyZSB0cnlpbmcgdG8gYWNoaWV2ZSBhbmQgd2hhdCBwb3RlbnRpYWwgZmFpbHVyZSBzY2VuYXJpb3MgdGhleSYjMzk7cmUgY292ZXJpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRmX2lkX2FsbG93X3NsZWVwYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTkwMTQ9c3RhdGljIGJvb2wgaXNfdHJhY2luZ19tdWx0aV9pZChjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDE4LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MDE5OnN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTAyMC1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTEyNj1pbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MzMtXHRcdGlmIChwcm9nLVx1MDAzZXNsZWVwYWJsZSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NDM0Olx0XHRcdHJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDM1LVx0XHRcdGlmIChyZXQpIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2Mzk9aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTY4Ny1cdGlmIChwcm9nLVx1MDAzZXNsZWVwYWJsZSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5Njg4Olx0XHRlcnIgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTY4OS1cdFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODA2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoaW5raW5nIGFib3V0IGl0cyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBCUEYgdmVyaWZpZXIuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBmdW5jdGlvbiwgd2hpY2ggaXMgY2FsbGVkIGZyb20gd2l0aGluIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuIFRoZXNlIGFyZSBpbXBvcnRhbnQgdmVyaWZpZXIgZnVuY3Rpb25zOyB0aGV5IGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgcGxheSBhIGNydWNpYWwgcm9sZSBpbiBCUEYgcHJvZ3JhbSB2YWxpZGF0aW9uLgoKSXQgc2VlbXMgdGhlIHBhdGNoIGlzIGRlc2lnbmVkIHRvIHByZXZlbnQgc2xlZXBhYmxlIEJQRiBwcm9ncmFtcyBmcm9tIGJlaW5nIGF0dGFjaGVkIHRvIEJURiBvYmplY3RzIHRoYXQgYXJlbiYjMzk7dCBwYXJ0IG9mIHRoZSBrZXJuZWwg4oCTIGxpa2Ugb3RoZXIgQlBGIHByb2dyYW1zLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhlIHRlc3QgY2FzZSwgYHRlc3Rfc2xlZXBhYmxlX2ZlbnRyeV90b194ZHBgLCBhaW1zIHRvIGVuZm9yY2UgdGhpcywgYXR0ZW1wdGluZyB0byBhdHRhY2ggYSBzbGVlcGFibGUgZmVudHJ5IHByb2dyYW0gdG8gYW4gWERQIHByb2dyYW0uIFhEUCBpcyBhIEJQRiBwcm9ncmFtIHNvIGl0IGNoZWNrcyB3aGV0aGVyIHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgY2FuIGJlIGF0dGFjaGVkIHRvIGl0JiMzOTtzIEJURi4gVGhlIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiB0aGUgYGZlbnRyeV9zbGVlcGFibGVfX2xvYWRgIGZ1bmN0aW9uIGZhaWxzIGFzIGV4cGVjdGVkLgoKSG1tLCB0aGUgdGVzdCBhc3NlcnRzIHRoYXQgYGZlbnRyeV9zbGVlcGFibGVfX2xvYWRgIHNob3VsZCByZXR1cm4gYW4gZXJyb3IsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGNhbiBzZWUgdGhpcyBjb2RlIGlzIHNwZWNpZmljYWxseSB0cnlpbmcgdG8gKnZhbGlkYXRlKiB0aGF0IHRoZSBmYWlsdXJlIG9jY3Vycy4KClRoaXMgc291bmRzIGxpa2Ugc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZy4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdmVyaWZpZXIsIGltcGFjdGluZyBob3cgcHJvZ3JhbXMgY2FuIGJlIGF0dGFjaGVkLCBzbyBpdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gcG90ZW50aWFsbHkgdW5jb3ZlciBpc3N1ZXMuIEkmIzM5O2xsIG5lZWQgdG8gZm9jdXMgb24gYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCwgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYCwgYW5kIG1heWJlIHRoZSBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAgZnVuY3Rpb24gaXRzZWxmIChhbHRob3VnaCBpdCYjMzk7cyBzdGF0aWMsIHNvIHRoYXQgbWlnaHQgYmUgdHJpY2t5KS4gSSYjMzk7bGwgc3RhcnQgYnkgdGFraW5nIGEgY2xvc2VyIGxvb2sgYXQgdGhvc2UgdHdvIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTIwNzg9c3RhdGljIGludCBwcm9jZXNzX2tmX2FyZ19wdHJfdG9fcmJ0cmVlX25vZGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIwODktICogTFNNIGhvb2tzIGFuZCBpdGVycyAoYm90aCBzbGVlcGFibGUgYW5kIG5vbi1zbGVlcGFibGUpIGFyZSBzYWZlLlxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMDkwOiAqIEFueSBzbGVlcGFibGUgcHJvZ3MgYXJlIGFsc28gc2FmZSBzaW5jZSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCgpIGVuZm9yY2Vcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjA5MS0gKiB0aGVtIGNhbiBvbmx5IGJlIGF0dGFjaGVkIHRvIHNvbWUgc3BlY2lmaWMgaG9vayBwb2ludHMuXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MTEyPXN0YXRpYyBib29sIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MTI1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MTI2OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MTI3LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTM5PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTU2OS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTU3MDpcdHJldCA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KFx1MDAyNmVudi1cdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFx1MDAyNnRndF9pbmZvKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTU3MS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzIGZ1bmN0aW9uLCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgZUJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgYW5kIGhvdyBCVEYgSURzIGFyZSBtYW5hZ2VkIGluIHRoYXQgY29udGV4dC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3N1bWUgdGhpcyByZWxhdGVzIHRvIHNpdHVhdGlvbnMgd2hlcmUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBCVEYgSURzIG9yIHBlcmhhcHMgbXVsdGlwbGUgcHJvZ3JhbXMgYXR0YWNoaW5nIHRvIHRoZSBzYW1lIHRhcmdldCwgb3IgbWF5YmUgaGFuZGxpbmcgbXVsdGlwbGUgQlRGIG9iamVjdHMuIEkgZXhwZWN0IHRoZSAmIzM0O211bHRpJiMzNDsgc3VmZml4IGhpbnRzIGF0IGNvbXBsZXhpdHkgYmV5b25kIGEgc2ltcGxlIG9uZS10by1vbmUgYXR0YWNobWVudCBzY2VuYXJpby4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBmdW5jdGlvbiYjMzk7cyBhcmd1bWVudHM6IHdoaWNoIGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQ/IFdoYXQga2luZHMgb2YgY2hlY2tzIGFyZSBpdCBwZXJmb3JtaW5nPyBBbnkgcG90ZW50aWFsIGZvciBlcnJvciBjb25kaXRpb25zLCByYWNlIGNvbmRpdGlvbnMgb3IgaW5lZmZpY2llbmNpZXMgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gbmVlZCB0byBiZSBub3RlZCwgYW5kIEkmIzM5O2xsIHBheSBzcGVjaWZpYyBhdHRlbnRpb24gdG8gaG93IEJURiB0eXBlIGNvbXBhdGliaWxpdHkgaXMgZW5mb3JjZWQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTUzOT1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2Mzk6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjQwLVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM4MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdCBxdWVyeSwgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEJQRiBBdHRhY2htZW50IFRhcmdldHMqKgoKUmlnaHQsIHNvIHdlIG5lZWQgdG8gZmlndXJlIG91dCBob3cgQlBGIGF0dGFjaG1lbnQgdGFyZ2V0cyBhcmUgY2hlY2tlZC4gVGhhdCBzb3VuZHMgbGlrZSBzb21ldGhpbmcgdGhhdCB3b3VsZCBoYXBwZW4gZHVyaW5nIHRoZSBCUEYgdmVyaWZpY2F0aW9uIHByb2Nlc3MsIHNvIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIHZlcmlmaWNhdGlvbiBjb2RlIGl0c2VsZi4gIEkmIzM5O20gdGhpbmtpbmcgdGhlIGZ1bmN0aW9uIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgbGlrZWx5IHRoZSBrZXkgaGVyZSwgYW5kIEkmIzM5O2QgYmV0IGl0JiMzOTtzIGRlZmluZWQgb3IgYXQgbGVhc3QgZGVjbGFyZWQgaW4gZWl0aGVyIGBpbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oYCBvciwgbGVzcyBsaWtlbHkgYnV0IHN0aWxsIHBvc3NpYmxlLCBpbiBgaW5jbHVkZS9saW51eC9icGYuaGAuIEkmIzM5O2Qgc3RhcnQgd2l0aCBgYnBmX3ZlcmlmaWVyLmhgIGZpcnN0LCBnaXZlbiB0aGUgbmFtZSwgYnV0IEkmIzM5O2xsIGtlZXAgdGhlIG90aGVyIGFzIGEgcG90ZW50aWFsLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4YWN0IGhlYWRlciB0aGF0IGRlZmluZXMgaXQsIGFuZCB0aGVuIEkgY2FuIGRpZyBpbnRvIHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTE4Mj1pbnQgYnBmX2NoZWNrX2J0Zl9pbmZvKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xMTg0LVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaDoxMTg1OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xMTg2LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3ODkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgbXkgaW5pdGlhbCB0aGlua2luZyBpcyB0aGF0IEkgbmVlZCB0byB6b29tIGluIG9uIHRoZSBzeW1ib2xzIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuIFRoZXNlIHNlZW0gbGlrZSBleGNlbGxlbnQgc3RhcnRpbmcgcG9pbnRzLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwcm9ibGVtIEkmIzM5O20gdHJ5aW5nIHRvIHNvbHZlLiAKCioqSW5pdGlhbCBTeW1ib2wgQW5hbHlzaXMgYW5kIEZpbGUgTG9jYXRpb24gQ2hlY2sqKgoKSG93ZXZlciwgaGFuZyBvbiBhIHNlY29uZC4gSSByZW1lbWJlciBub3csIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgcmVzaWRlcyB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIEhtbW0sIEkgc2hvdWxkIGFsc28gZG91YmxlLWNoZWNrIHdoZXRoZXIgb3Igbm90IGBjaGVja19hdHRhY2hfYnRmX2lkYCBzaG91bGQgYmUgY29uc2lkZXJlZC4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGNvbnNpZGVyIGFueSBvdGhlciBjb2RlIHdoaWNoIGNvdWxkIGFjY29tcGxpc2ggdGhlIHNhbWUgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgbmVlZCB0byBleHBsb3JlIHRoYXQgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hlY2tfYXR0YWNoX2J0Zl9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1MTI9c3RhdGljIGJvb2wgY2FuX2JlX3NsZWVwYWJsZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTM4LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NTM5OnN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTQwLXtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2Mzk6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjQwLVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwMTY3PWludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDMxMi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDMxMzpcdHJldCA9IGNoZWNrX2F0dGFjaF9idGZfaWQoZW52KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDMxNC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIEF0dGFjaG1lbnQgVGFyZ2V0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIEJQRiBhdHRhY2htZW50IGxvZ2ljLCBhbmQgaXQgc2VlbXMgbGlrZSBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGlzIGFjY2Vzc2libGUgZnJvbSBvdXRzaWRlIGl0cyBkZWZpbmluZyBzY29wZSDigJMgaXQmIzM5O3MgZWl0aGVyIGV4cG9ydGVkIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgbm90IGRlY2xhcmVkIGFzIHN0YXRpYy4gR29vZCB0byBrbm93LiBBbmQgdGhlIHNhbWUgYXBwZWFycyB0byBiZSB0cnVlIGZvciBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLCB3aGljaCBpcyBhbHNvIG5vbi1zdGF0aWMuIFRoZSBmdW5jdGlvbiBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBkZWZpbmVkIGFzIHN0YXRpYywgc28gaXQmIzM5O3MgbGlrZWx5IG9ubHkgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiBpdHMgY29tcGlsYXRpb24gdW5pdC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AgYW5kIGNvbmZpcm0gbXkgY3VycmVudCBhc3N1bXB0aW9ucyBieSBjaGVja2luZyB0aGUgdXNlcyBvZiBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgQlBGIHN5c3RlbSBjYWxsIGhhbmRsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvc3lzY2FsbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvc3lzY2FsbC5jPTM2MjQ9c3RhdGljIGludCBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzc1Ni1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM3NTc6XHRcdGVyciA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KE5VTEwsIHByb2csIHRndF9wcm9nLCBidGZfaWQsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zNzU4LVx0XHRcdFx0XHQgICAgICBcdTAwMjZ0Z3RfaW5mbyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NzIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGRpc3RpbGxlZDoKCioqTmF2aWdhdGluZyB0aGUgQlBGIEF0dGFjaG1lbnQgTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aCBvZiBCUEYgcHJvZ3JhbSBhdHRhY2htZW50LiBJIGtub3cgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBpcyBkZWZpbml0ZWx5IGNhbGxlZCBmcm9tIHdpdGhpbiBgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2hgIOKAkyBmb3VuZCB0aGF0IGluIGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIHRhcmdldCBpcyBjaGVja2VkLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIEJURiBJRHMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBmdW5jdGlvbiBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBJdCYjMzk7cyBsaWtlbHkgbG9jYXRlZCBpbiBlaXRoZXIgYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBvciwgcGVyaGFwcyBtb3JlIGxvZ2ljYWxseSwgd2l0aGluIHRoZSBicm9hZGVyIHN0cnVjdHVyZSBvcGVyYXRpb25zIGRlZmluZWQgaW4gYGtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTYyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTYzNS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2MzY6XHRcdGVyciA9IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKGJ0ZiwgcHJvZywgaWRzW2ldLCBcdTAwMjZ0Z3RfaW5mbyk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjM3LVx0XHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTUzOT1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2Mzk6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjQwLVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0NTYKCQkJCQkJCW91dHB1dDogMTQwCgkJCQkJCQl0aG91Z2h0czogNTM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3k6IFZlcmlmeWluZyBTbGVlcGFibGUgQlBGIEF0dGFjaG1lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgemVyb2VkIGluIG9uIHRoZSByaWdodCBhcmVhcy4gSXQgbG9va3MgbGlrZSBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIGFyZSB0aGUga2V5IGZvY3VzIHN5bWJvbHMgZm9yIHRoaXMgZnV6emluZyBlZmZvcnQuIEkgYnJpZWZseSBjb25zaWRlcmVkIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCwgYnV0IHNpbmNlIGl0JiMzOTtzIHN0YXRpYywgaXQgd29uJiMzOTt0IGJlIGFzIGVmZmVjdGl2ZSB0byB0YXJnZXQgZGlyZWN0bHkuCgpOb3csIGxldCYjMzk7cyB0aGluayBhYm91dCBjb25maWd1cmF0aW9ucy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGludm9sdmVzIHRoZSBCUEYgdmVyaWZpZXIsIGFuZCB0aGUgcHJlc2VuY2Ugb2YgYGZlbnRyeV9zbGVlcGFibGUuY2AgYW5kIGB4ZHBfZHVtbXkuY2AgaW4gdGhlIHRlc3RzIHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc2xlZXBhYmxlIHByb2dyYW1zIGFuZCBwb3RlbnRpYWxseSBYRFAtcmVsYXRlZCBpbnRlcmFjdGlvbnMgYXMgd2VsbCwgdGhvdWdoIHRoYXQmIzM5O3MgbGlrZWx5IGp1c3QgZm9yIHRoZSBleGFtcGxlIHNldHVwLiBTdGFuZGFyZCBCUEYgZnV6emluZyBjb25maWdzIGxpa2UgYENPTkZJR19CUEZfU1lTQ0FMTGAsIGBDT05GSUdfREVCVUdfSU5GT19CVEZgLCBhbmQgYENPTkZJR19CUEZfSklUYCBhcmUgcHJvYmFibHkgZ29vZCBlbm91Z2ggYXMgdGhlIGJhc2lzLiBBaCwgYnV0IHdhaXQg4oCTIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggQlBGIHN5c2NhbGxzLCBJIG5lZWQgdG8gZXhwbGljaXRseSBpbmNsdWRlIGBCUEZfU1lTQ0FMTGAgaW4gdGhlIGBFbmFibGVDb25maWdzYC4gSXQmIzM5O3MgZWFzeSB0byBvdmVybG9vayB0aGVzZSBiYXNpY3MuCgpMZXQmIzM5O3MgZG8gYSBxdWljayByZS1yZXZpZXcgb2YgdGhlIHBhdGNoIGl0c2VsZjoKCmBgYGMKQEAgLTE5MDIyLDYgJiM0MzsxOTAyMiw5IEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiCiAJY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0OwogCWNvbnN0IGNoYXIgKnRuYW1lOwogCiYjNDM7CWlmICghYnRmX2lzX2tlcm5lbChidGYpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJc3dpdGNoIChwcm9nLSZndDt0eXBlKSB7CiAJY2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6CiAJCXQgPSBidGZfdHlwZV9ieV9pZChidGYsIGJ0Zl9pZCk7CmBgYAoKUmlnaHQsIGl0JiMzOTtzIGEgcmVsYXRpdmVseSBzbWFsbCwgYnV0IGZ1bmN0aW9uYWxseSBpbXBvcnRhbnQgY2hhbmdlIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgcGF0Y2ggcmVzdHJpY3RzIHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgZnJvbSBhdHRhY2hpbmcgdG8gbm9uLWtlcm5lbCBCVEYgb2JqZWN0cywgcHJldmVudGluZyBhIGNsYXNzIG9mIGJ1Z3MuIEdpdmVuIHRoYXQgaXQgdG91Y2hlcyB0aGUgQlBGIHZlcmlmaWVyIGFuZCBpcyByZWxhdGVkIHRvIGhvdyBCUEYgcHJvZ3JhbXMgYXR0YWNoLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBpbiBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAuIFRoZSBgYnBmKClgIHN5c2NhbGwgcGF0aCBpcyByZWxldmFudCBmb3IgdGhpcyBuZXcgY2hlY2suCgoqKkZvY3VzIFN5bWJvbHM6KioKCiogICBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgCiogICBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgCgoqKkVuYWJsZUNvbmZpZ3M6KioKCiogICBgQlBGX1NZU0NBTExgCgpNeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIHRvIGVuZm9yY2UgdGhhdCBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGNhbiBvbmx5IGF0dGFjaCB0byBrZXJuZWwgQlRGIG9iamVjdHMuIFRoaXMgaW1wYWN0cyB0aGUgQlBGIHByb2dyYW0gYXR0YWNobWVudCBsb2dpYy4gR2l2ZW4gdGhhdCB0aGUgY2hhbmdlcyBoYXBwZW4gZHVyaW5nIHRoZSBhdHRhY2htZW50LCBhbmQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgYSBzeXNjYWxsLCBmdXp6aW5nIHRoZSBhdHRhY2htZW50IHZlcmlmaWNhdGlvbiByb3V0aW5lcyBpcyB0aGUgcmlnaHQgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDE4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfdGFyZ2V0JiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRvIHByZXZlbnQgc2xlZXBhYmxlIEJQRiBwcm9ncmFtcyBmcm9tIGF0dGFjaGluZyB0byBub24ta2VybmVsIEJURiBvYmplY3RzIChlLmcuLCBvdGhlciBCUEYgcHJvZ3JhbXMpLiBUaGlzIGFmZmVjdHMgdGhlIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIG9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgQlBGIGF0dGFjaG1lbnQgdmVyaWZpY2F0aW9uIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEJQRiB2ZXJpZmllciB0byBwcmV2ZW50IHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgZnJvbSBhdHRhY2hpbmcgdG8gbm9uLWtlcm5lbCBCVEYgb2JqZWN0cyAoZS5nLiwgb3RoZXIgQlBGIHByb2dyYW1zKS4gVGhpcyBhZmZlY3RzIHRoZSBCUEYgcHJvZ3JhbSBhdHRhY2htZW50IGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsIHdoZW4gbG9hZGluZyBvciBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIEJQRiBhdHRhY2htZW50IHZlcmlmaWNhdGlvbiBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODo0NjoxNi4xNzEwMjc1MjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTY1MjE3NjU0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja19hdHRhY2hfdGFyZ2V0XCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRvIHByZXZlbnQgc2xlZXBhYmxlIEJQRiBwcm9ncmFtcyBmcm9tIGF0dGFjaGluZyB0byBub24ta2VybmVsIEJURiBvYmplY3RzIChlLmcuLCBvdGhlciBCUEYgcHJvZ3JhbXMpLiBUaGlzIGFmZmVjdHMgdGhlIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIG9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgQlBGIGF0dGFjaG1lbnQgdmVyaWZpY2F0aW9uIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6MTYuMTcxMDM0MDc4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQxMjg3NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGJjZmZmZTY1ZjRlMWRiMzM2NjczNjU5Mjc2N2ZmOGExMDc0NWQyYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyA1IDE4OjQ2OjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDc0MzlhZmRjODUxYTcuLmYzNjQ0NTNhMmVjYjcgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTE5MDIyLDYgKzE5MDIyLDkgQEAgc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJcXG4gXFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0O1xcbiBcXHRjb25zdCBjaGFyICp0bmFtZTtcXG4gXFxuK1xcdGlmICghYnRmX2lzX2tlcm5lbChidGYpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdHN3aXRjaCAocHJvZy1cXHUwMDNldHlwZSkge1xcbiBcXHRjYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzpcXG4gXFx0XFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgYnRmX2lkKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXFxuaW5kZXggNGE4N2Q3MTYzYzhjNy4uMjUyM2MwN2ExNmM2NSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcXG5AQCAtNSw2ICs1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2JwZi9idGYuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcImJpbmQ0X3Byb2cuc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZnJlcGxhY2VfcHJvZ21hcC5za2VsLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJmZW50cnlfc2xlZXBhYmxlLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInhkcF9kdW1teS5za2VsLmhcXFwiXFxuIFxcbiB0eXBlZGVmIGludCAoKnRlc3RfY2IpKHN0cnVjdCBicGZfb2JqZWN0ICpvYmopO1xcbkBAIC01NzYsNiArNTc3LDYwIEBAIHN0YXRpYyB2b2lkIHRlc3RfZnVuY19yZXBsYWNlX3Byb2dtYXAodm9pZClcXG4gXFx0ZnJlcGxhY2VfcHJvZ21hcF9fZGVzdHJveShza2VsKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgdGVzdF9zbGVlcGFibGVfZmVudHJ5X3RvX3hkcCh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBmZW50cnlfc2xlZXBhYmxlICpza2VsID0gTlVMTDtcXG4rXFx0c3RydWN0IHhkcF9kdW1teSAqc2tlbF94ZHAgPSBOVUxMO1xcbitcXHRpbnQgaWZpbmRleCwgcHJvZ19mZCwgZXJyO1xcbitcXHRjaGFyIGJ1ZmZbNjRdID0ge307XFxuK1xcbisjaWZuZGVmIF9feDg2XzY0X19cXG4rXFx0dGVzdF9fc2tpcCgpO1xcbitcXHRyZXR1cm47XFxuKyNlbmRpZlxcbitcXG4rXFx0aWZpbmRleCA9IGlmX25hbWV0b2luZGV4KFxcXCJsb1xcXCIpO1xcbitcXHRpZiAoIUFTU0VSVF9HVChpZmluZGV4LCAwLCBcXFwiaWZfbmFtZXRvaW5kZXhcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0c2tlbF94ZHAgPSB4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWQoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLCBcXFwieGRwX2R1bW15X19vcGVuX2FuZF9sb2FkXFxcIikpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdHNrZWwgPSBmZW50cnlfc2xlZXBhYmxlX19vcGVuKCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwiZmVudHJ5X3NsZWVwYWJsZV9fb3BlblxcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNldXNlcl9wdHIgPSBidWZmO1xcbitcXG4rXFx0cHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsX3hkcC1cXHUwMDNlcHJvZ3MuX194NjRfc3lzX25vcCk7XFxuK1xcdGVyciA9IGJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldChza2VsLVxcdTAwM2Vwcm9ncy5mZW50cnlfeGRwLCBwcm9nX2ZkLCBcXFwiX194NjRfc3lzX25vcFxcXCIpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJicGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXRcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRlcnIgPSBmZW50cnlfc2xlZXBhYmxlX19sb2FkKHNrZWwpO1xcbitcXHRBU1NFUlRfRVJSKGVyciwgXFxcImZlbnRyeV9zbGVlcGFibGVfX2xvYWRcXFwiKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRza2VsLVxcdTAwM2VsaW5rcy5mZW50cnlfeGRwID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZShza2VsLVxcdTAwM2Vwcm9ncy5mZW50cnlfeGRwKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXFx1MDAzZWxpbmtzLmZlbnRyeV94ZHAsIFxcXCJicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0c2tlbF94ZHAtXFx1MDAzZWxpbmtzLl9feDY0X3N5c19ub3AgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3hkcChza2VsX3hkcC1cXHUwMDNlcHJvZ3MuX194NjRfc3lzX25vcCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aWZpbmRleCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsX3hkcC1cXHUwMDNlbGlua3MuX194NjRfc3lzX25vcCwgXFxcImJwZl9wcm9ncmFtX19hdHRhY2hfeGRwXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0ZXJyID0gc3lzdGVtKFxcXCJwaW5nIC1xIC1jIDEgLVcgMSAxMjcuMC4wLjEgXFx1MDAzZSAvZGV2L251bGxcXFwiKTtcXG4rXFx0QVNTRVJUX09LKGVyciwgXFxcInBpbmdcXFwiKTtcXG4rXFx0QVNTRVJUX0VSUihza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXJldHZhbCwgXFxcInJldHZhbFxcXCIpO1xcbitcXG4rb3V0OlxcbitcXHRmZW50cnlfc2xlZXBhYmxlX19kZXN0cm95KHNrZWwpO1xcbitcXHR4ZHBfZHVtbXlfX2Rlc3Ryb3koc2tlbF94ZHApO1xcbit9XFxuK1xcbiAvKiBOT1RFOiBhZmZlY3Qgb3RoZXIgdGVzdHMsIG11c3QgcnVuIGluIHNlcmlhbCBtb2RlICovXFxuIHZvaWQgc2VyaWFsX3Rlc3RfZmV4aXRfYnBmMmJwZih2b2lkKVxcbiB7XFxuQEAgLTYwNyw0ICs2NjIsNiBAQCB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZClcXG4gXFx0XFx0dGVzdF9mdW5jX3JlcGxhY2VfaW50X3dpdGhfdm9pZCgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwiZnJlcGxhY2Vfdm9pZFxcXCIpKVxcbiBcXHRcXHR0ZXN0X2Z1bmNfcmVwbGFjZV92b2lkKCk7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJzbGVlcGFibGVfZmVudHJ5X3RvX3hkcFxcXCIpKVxcbitcXHRcXHR0ZXN0X3NsZWVwYWJsZV9mZW50cnlfdG9feGRwKCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjhjMGZjNjkxZDMyOWRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuY1xcbkBAIC0wLDAgKzEsMTggQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI2luY2x1ZGUgXFxcInZtbGludXguaFxcXCJcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcXHUwMDNlXFxuK1xcbitjaGFyIExJQ0VOU0VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbitcXG4rdm9pZCAqdXNlcl9wdHI7XFxuK2ludCByZXR2YWw7XFxuK1xcbitTRUMoXFxcImZlbnRyeS5zXFxcIilcXG4raW50IEJQRl9QUk9HKGZlbnRyeV94ZHApXFxuK3tcXG4rXFx0Y2hhciBidWZmWzY0XTtcXG4rXFxuK1xcdHJldHZhbCA9IGJwZl9jb3B5X2Zyb21fdXNlcihidWZmLCBzaXplb2YoYnVmZiksIHVzZXJfcHRyKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXFxuaW5kZXggZDk4OGIyZTBjZWU4NC4uNWYxZTA3NzEwMjFkZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmNcXG5AQCAtMTAsNCArMTAsMTAgQEAgaW50IHhkcF9kdW1teV9wcm9nKHN0cnVjdCB4ZHBfbWQgKmN0eClcXG4gXFx0cmV0dXJuIFhEUF9QQVNTO1xcbiB9XFxuIFxcbitTRUMoXFxcInhkcFxcXCIpXFxuK2ludCBfX3g2NF9zeXNfbm9wKHN0cnVjdCB4ZHBfbWQgKmN0eClcXG4re1xcbitcXHRyZXR1cm4gWERQX1BBU1M7XFxuK31cXG4rXFxuIGNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODo0NjoxNy40MTMyNjc2OTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0MDQwOTkyNjkyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja19hdHRhY2hfdGFyZ2V0XCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgQlBGIHZlcmlmaWVyIHRvIHByZXZlbnQgc2xlZXBhYmxlIEJQRiBwcm9ncmFtcyBmcm9tIGF0dGFjaGluZyB0byBub24ta2VybmVsIEJURiBvYmplY3RzIChlLmcuLCBvdGhlciBCUEYgcHJvZ3JhbXMpLiBUaGlzIGFmZmVjdHMgdGhlIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIG9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgQlBGIGF0dGFjaG1lbnQgdmVyaWZpY2F0aW9uIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGJjZmZmZTY1ZjRlMWRiMzM2NjczNjU5Mjc2N2ZmOGExMDc0NWQyYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTg6NDY6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDc0MzlhZmRjODUxYTcuLmYzNjQ0NTNhMmVjYjcgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTE5MDIyLDYgKzE5MDIyLDkgQEAgc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJcbiBcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdDtcbiBcdGNvbnN0IGNoYXIgKnRuYW1lO1xuIFxuK1x0aWYgKCFidGZfaXNfa2VybmVsKGJ0ZikpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0c3dpdGNoIChwcm9nLVx1MDAzZXR5cGUpIHtcbiBcdGNhc2UgQlBGX1BST0dfVFlQRV9UUkFDSU5HOlxuIFx0XHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBidGZfaWQpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xuaW5kZXggNGE4N2Q3MTYzYzhjNy4uMjUyM2MwN2ExNmM2NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG5AQCAtNSw2ICs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnRmLmhcdTAwM2VcbiAjaW5jbHVkZSBcImJpbmQ0X3Byb2cuc2tlbC5oXCJcbiAjaW5jbHVkZSBcImZyZXBsYWNlX3Byb2dtYXAuc2tlbC5oXCJcbisjaW5jbHVkZSBcImZlbnRyeV9zbGVlcGFibGUuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInhkcF9kdW1teS5za2VsLmhcIlxuIFxuIHR5cGVkZWYgaW50ICgqdGVzdF9jYikoc3RydWN0IGJwZl9vYmplY3QgKm9iaik7XG5AQCAtNTc2LDYgKzU3Nyw2MCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Z1bmNfcmVwbGFjZV9wcm9nbWFwKHZvaWQpXG4gXHRmcmVwbGFjZV9wcm9nbWFwX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbitzdGF0aWMgdm9pZCB0ZXN0X3NsZWVwYWJsZV9mZW50cnlfdG9feGRwKHZvaWQpXG4re1xuK1x0c3RydWN0IGZlbnRyeV9zbGVlcGFibGUgKnNrZWwgPSBOVUxMO1xuK1x0c3RydWN0IHhkcF9kdW1teSAqc2tlbF94ZHAgPSBOVUxMO1xuK1x0aW50IGlmaW5kZXgsIHByb2dfZmQsIGVycjtcbitcdGNoYXIgYnVmZls2NF0gPSB7fTtcbitcbisjaWZuZGVmIF9feDg2XzY0X19cbitcdHRlc3RfX3NraXAoKTtcbitcdHJldHVybjtcbisjZW5kaWZcbitcbitcdGlmaW5kZXggPSBpZl9uYW1ldG9pbmRleChcImxvXCIpO1xuK1x0aWYgKCFBU1NFUlRfR1QoaWZpbmRleCwgMCwgXCJpZl9uYW1ldG9pbmRleFwiKSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0c2tlbF94ZHAgPSB4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWQoKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsX3hkcCwgXCJ4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWRcIikpXG4rXHRcdHJldHVybjtcbitcbitcdHNrZWwgPSBmZW50cnlfc2xlZXBhYmxlX19vcGVuKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJmZW50cnlfc2xlZXBhYmxlX19vcGVuXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZXVzZXJfcHRyID0gYnVmZjtcbitcbitcdHByb2dfZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbF94ZHAtXHUwMDNlcHJvZ3MuX194NjRfc3lzX25vcCk7XG4rXHRlcnIgPSBicGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXQoc2tlbC1cdTAwM2Vwcm9ncy5mZW50cnlfeGRwLCBwcm9nX2ZkLCBcIl9feDY0X3N5c19ub3BcIik7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwiYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0XCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdGVyciA9IGZlbnRyeV9zbGVlcGFibGVfX2xvYWQoc2tlbCk7XG4rXHRBU1NFUlRfRVJSKGVyciwgXCJmZW50cnlfc2xlZXBhYmxlX19sb2FkXCIpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRza2VsLVx1MDAzZWxpbmtzLmZlbnRyeV94ZHAgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5X3hkcCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbC1cdTAwM2VsaW5rcy5mZW50cnlfeGRwLCBcImJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2VcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0c2tlbF94ZHAtXHUwMDNlbGlua3MuX194NjRfc3lzX25vcCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfeGRwKHNrZWxfeGRwLVx1MDAzZXByb2dzLl9feDY0X3N5c19ub3AsXG4rXHRcdFx0XHRcdFx0XHRcdGlmaW5kZXgpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLVx1MDAzZWxpbmtzLl9feDY0X3N5c19ub3AsIFwiYnBmX3Byb2dyYW1fX2F0dGFjaF94ZHBcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0ZXJyID0gc3lzdGVtKFwicGluZyAtcSAtYyAxIC1XIDEgMTI3LjAuMC4xIFx1MDAzZSAvZGV2L251bGxcIik7XG4rXHRBU1NFUlRfT0soZXJyLCBcInBpbmdcIik7XG4rXHRBU1NFUlRfRVJSKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXJldHZhbCwgXCJyZXR2YWxcIik7XG4rXG4rb3V0OlxuK1x0ZmVudHJ5X3NsZWVwYWJsZV9fZGVzdHJveShza2VsKTtcbitcdHhkcF9kdW1teV9fZGVzdHJveShza2VsX3hkcCk7XG4rfVxuK1xuIC8qIE5PVEU6IGFmZmVjdCBvdGhlciB0ZXN0cywgbXVzdCBydW4gaW4gc2VyaWFsIG1vZGUgKi9cbiB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZClcbiB7XG5AQCAtNjA3LDQgKzY2Miw2IEBAIHZvaWQgc2VyaWFsX3Rlc3RfZmV4aXRfYnBmMmJwZih2b2lkKVxuIFx0XHR0ZXN0X2Z1bmNfcmVwbGFjZV9pbnRfd2l0aF92b2lkKCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcImZyZXBsYWNlX3ZvaWRcIikpXG4gXHRcdHRlc3RfZnVuY19yZXBsYWNlX3ZvaWQoKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic2xlZXBhYmxlX2ZlbnRyeV90b194ZHBcIikpXG4rXHRcdHRlc3Rfc2xlZXBhYmxlX2ZlbnRyeV90b194ZHAoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44YzBmYzY5MWQzMjlkXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jXG5AQCAtMCwwICsxLDE4IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjaW5jbHVkZSBcInZtbGludXguaFwiXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFx1MDAzZVxuK1xuK2NoYXIgTElDRU5TRVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuK1xuK3ZvaWQgKnVzZXJfcHRyO1xuK2ludCByZXR2YWw7XG4rXG4rU0VDKFwiZmVudHJ5LnNcIilcbitpbnQgQlBGX1BST0coZmVudHJ5X3hkcClcbit7XG4rXHRjaGFyIGJ1ZmZbNjRdO1xuK1xuK1x0cmV0dmFsID0gYnBmX2NvcHlfZnJvbV91c2VyKGJ1ZmYsIHNpemVvZihidWZmKSwgdXNlcl9wdHIpO1xuK1x0cmV0dXJuIDA7XG4rfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuY1xuaW5kZXggZDk4OGIyZTBjZWU4NC4uNWYxZTA3NzEwMjFkZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXG5AQCAtMTAsNCArMTAsMTAgQEAgaW50IHhkcF9kdW1teV9wcm9nKHN0cnVjdCB4ZHBfbWQgKmN0eClcbiBcdHJldHVybiBYRFBfUEFTUztcbiB9XG4gXG4rU0VDKFwieGRwXCIpXG4raW50IF9feDY0X3N5c19ub3Aoc3RydWN0IHhkcF9tZCAqY3R4KVxuK3tcbitcdHJldHVybiBYRFBfUEFTUztcbit9XG4rXG4gY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6MTcuNDEzMjY4NzQ0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYzNzg0Njg0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0IHRvdWNoZXMgYm90aCBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgYWRkcyBhIG5ldyB0ZXN0IGNhc2UgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIG1vZGlmaWNhdGlvbiwgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgY2hhbmdlIGlzIGhhcHBlbmluZy4gU3BlY2lmaWNhbGx5LCB0aGV5J3ZlIGFkZGVkIGEgY2hlY2sgd2l0aGluIHRoZSBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAgZnVuY3Rpb246XG5cbmBgYGNcblx0aWYgKCFidGZfaXNfa2VybmVsKGJ0ZikpXG5cdFx0cmV0dXJuIC1FSU5WQUw7XG5gYGBcblxuUmlnaHQsIEkgc2VlIHdoYXQncyBnb2luZyBvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlc2lnbmVkIHRvIHRpZ2h0ZW4gc2VjdXJpdHkgYXJvdW5kIHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMuIEVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggaXMgbm93IHByZXZlbnRpbmcgbm9uLWtlcm5lbCBCVEYgKEJQRiBUeXBlIEZvcm1hdCkgb2JqZWN0cyBmcm9tIGJlaW5nIHVzZWQgaW4gY29udGV4dHMgd2hlcmUgdGhlIHByb2dyYW0gbWlnaHQgc2xlZXAuIFdoaWNoLCBtYWtlcyBzZW5zZS4gV2UgZG9uJ3Qgd2FudCBwb3RlbnRpYWxseSB1c2VyLXNwYWNlIEJURiBvYmplY3RzIGNhdXNpbmcgaXNzdWVzIHdoZW4gYSBCUEYgcHJvZ3JhbSBpcyBwdXQgdG8gc2xlZXAgaW4gdGhlIGtlcm5lbC4gVGhpcyBpcyBnb29kIGhhcmRlbmluZywgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGlmIEJURiBpbmZvcm1hdGlvbiBpc24ndCBwcm9wZXJseSB2YWxpZGF0ZWQgaW4gdGhlc2Ugc2l0dWF0aW9ucy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBjaGFuZ2UgaXMgY29ycmVjdC4gVGhlIGltcGxpY2F0aW9uIGhlcmUgaXMgdGhhdCBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGFyZSBhc3N1bWVkIHRvIG9ubHkgdXNlIEJURiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBrZXJuZWwgaXRzZWxmLiBXZSBub3cgZXhwbGljaXRseSBlbmZvcmNlIHRoYXQgYXNzdW1wdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGFuZCBjb250ZXh0IGZvciBhbGxvd2luZyAqYW55KiBzbGVlcGFibGUgb3BlcmF0aW9ucyB3aXRoIEJURiBpbiB0aGUgZmlyc3QgcGxhY2UsIGFuZCB0aGVuIGRldGVybWluZSBob3cgdGhpcyBjaGFuZ2UgYWxpZ25zIHdpdGggdGhlIGJyb2FkZXIgc2VjdXJpdHkgcG9zdHVyZSBvZiB0aGUgQlBGIHN1YnN5c3RlbS4gSSBzaG91bGQgYWxzbyBjaGVjayB0aGUgdGVzdCBjYXNlIHRvIHNlZSBob3cgdGhleSdyZSB2YWxpZGF0aW5nIHRoaXMgY2hhbmdlOyBpdCBzaG91bGQgcHJvdmlkZSB2YWx1YWJsZSBpbnNpZ2h0cyBpbnRvIHdoYXQgdGhlIGRldmVsb3BlcnMgYXJlIHRyeWluZyB0byBhY2hpZXZlIGFuZCB3aGF0IHBvdGVudGlhbCBmYWlsdXJlIHNjZW5hcmlvcyB0aGV5J3JlIGNvdmVyaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzI0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6MjMuMDUxMTE3NjA0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzY4MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJ0Zl9pZF9hbGxvd19zbGVlcGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTAxND1zdGF0aWMgYm9vbCBpc190cmFjaW5nX211bHRpX2lkKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTAxOC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkwMTk6c3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTAyMC1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBidGYgKmJ0ZilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTEyNj1pbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzMy1cXHRcXHRpZiAocHJvZy1cXHUwMDNlc2xlZXBhYmxlKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NDM0OlxcdFxcdFxcdHJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzNS1cXHRcXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2Mzk9aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5Njg3LVxcdGlmIChwcm9nLVxcdTAwM2VzbGVlcGFibGUpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk2ODg6XFx0XFx0ZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0Zik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5Njg5LVxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjQ2OjIzLjA5NzQ4OTI1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMjcwNDM4MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFZlcmlmaWVyIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoaW5raW5nIGFib3V0IGl0cyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBCUEYgdmVyaWZpZXIuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBmdW5jdGlvbiwgd2hpY2ggaXMgY2FsbGVkIGZyb20gd2l0aGluIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuIFRoZXNlIGFyZSBpbXBvcnRhbnQgdmVyaWZpZXIgZnVuY3Rpb25zOyB0aGV5IGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgcGxheSBhIGNydWNpYWwgcm9sZSBpbiBCUEYgcHJvZ3JhbSB2YWxpZGF0aW9uLlxuXG5JdCBzZWVtcyB0aGUgcGF0Y2ggaXMgZGVzaWduZWQgdG8gcHJldmVudCBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGZyb20gYmVpbmcgYXR0YWNoZWQgdG8gQlRGIG9iamVjdHMgdGhhdCBhcmVuJ3QgcGFydCBvZiB0aGUga2VybmVsIOKAkyBsaWtlIG90aGVyIEJQRiBwcm9ncmFtcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSB0ZXN0IGNhc2UsIGB0ZXN0X3NsZWVwYWJsZV9mZW50cnlfdG9feGRwYCwgYWltcyB0byBlbmZvcmNlIHRoaXMsIGF0dGVtcHRpbmcgdG8gYXR0YWNoIGEgc2xlZXBhYmxlIGZlbnRyeSBwcm9ncmFtIHRvIGFuIFhEUCBwcm9ncmFtLiBYRFAgaXMgYSBCUEYgcHJvZ3JhbSBzbyBpdCBjaGVja3Mgd2hldGhlciBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGNhbiBiZSBhdHRhY2hlZCB0byBpdCdzIEJURi4gVGhlIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiB0aGUgYGZlbnRyeV9zbGVlcGFibGVfX2xvYWRgIGZ1bmN0aW9uIGZhaWxzIGFzIGV4cGVjdGVkLlxuXG5IbW0sIHRoZSB0ZXN0IGFzc2VydHMgdGhhdCBgZmVudHJ5X3NsZWVwYWJsZV9fbG9hZGAgc2hvdWxkIHJldHVybiBhbiBlcnJvciwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgY2FuIHNlZSB0aGlzIGNvZGUgaXMgc3BlY2lmaWNhbGx5IHRyeWluZyB0byAqdmFsaWRhdGUqIHRoYXQgdGhlIGZhaWx1cmUgb2NjdXJzLlxuXG5UaGlzIHNvdW5kcyBsaWtlIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmcuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdmVyaWZpZXIsIGltcGFjdGluZyBob3cgcHJvZ3JhbXMgY2FuIGJlIGF0dGFjaGVkLCBzbyBpdCdzIGEgZ29vZCBwbGFjZSB0byBwb3RlbnRpYWxseSB1bmNvdmVyIGlzc3Vlcy4gSSdsbCBuZWVkIHRvIGZvY3VzIG9uIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAsIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAsIGFuZCBtYXliZSB0aGUgYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgIGZ1bmN0aW9uIGl0c2VsZiAoYWx0aG91Z2ggaXQncyBzdGF0aWMsIHNvIHRoYXQgbWlnaHQgYmUgdHJpY2t5KS4gSSdsbCBzdGFydCBieSB0YWtpbmcgYSBjbG9zZXIgbG9vayBhdCB0aG9zZSB0d28gZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODA2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjQ2OjI5LjIyNDUzNDc4OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjE0MTM5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTEyMDc4PXN0YXRpYyBpbnQgcHJvY2Vzc19rZl9hcmdfcHRyX3RvX3JidHJlZV9ub2RlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIwODktICogTFNNIGhvb2tzIGFuZCBpdGVycyAoYm90aCBzbGVlcGFibGUgYW5kIG5vbi1zbGVlcGFibGUpIGFyZSBzYWZlLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjA5MDogKiBBbnkgc2xlZXBhYmxlIHByb2dzIGFyZSBhbHNvIHNhZmUgc2luY2UgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoKSBlbmZvcmNlXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMDkxLSAqIHRoZW0gY2FuIG9ubHkgYmUgYXR0YWNoZWQgdG8gc29tZSBzcGVjaWZpYyBob29rIHBvaW50cy5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTExMj1zdGF0aWMgYm9vbCBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbChlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MTI1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTEyNjppbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkxMjctXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTUzOT1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTU2OS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1NzA6XFx0cmV0ID0gYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoXFx1MDAyNmVudi1cXHUwMDNlbG9nLCBwcm9nLCB0Z3RfcHJvZywgYnRmX2lkLCBcXHUwMDI2dGd0X2luZm8pO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTU3MS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODo0NjoyOS4yNzA2ODExMTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY0MDYyMDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzIGZ1bmN0aW9uLCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgZUJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgYW5kIGhvdyBCVEYgSURzIGFyZSBtYW5hZ2VkIGluIHRoYXQgY29udGV4dC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3N1bWUgdGhpcyByZWxhdGVzIHRvIHNpdHVhdGlvbnMgd2hlcmUgd2UncmUgZGVhbGluZyB3aXRoIG11bHRpcGxlIEJURiBJRHMgb3IgcGVyaGFwcyBtdWx0aXBsZSBwcm9ncmFtcyBhdHRhY2hpbmcgdG8gdGhlIHNhbWUgdGFyZ2V0LCBvciBtYXliZSBoYW5kbGluZyBtdWx0aXBsZSBCVEYgb2JqZWN0cy4gSSBleHBlY3QgdGhlIFwibXVsdGlcIiBzdWZmaXggaGludHMgYXQgY29tcGxleGl0eSBiZXlvbmQgYSBzaW1wbGUgb25lLXRvLW9uZSBhdHRhY2htZW50IHNjZW5hcmlvLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudHM6IHdoaWNoIGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQ/IFdoYXQga2luZHMgb2YgY2hlY2tzIGFyZSBpdCBwZXJmb3JtaW5nPyBBbnkgcG90ZW50aWFsIGZvciBlcnJvciBjb25kaXRpb25zLCByYWNlIGNvbmRpdGlvbnMgb3IgaW5lZmZpY2llbmNpZXMgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gbmVlZCB0byBiZSBub3RlZCwgYW5kIEknbGwgcGF5IHNwZWNpZmljIGF0dGVudGlvbiB0byBob3cgQlRGIHR5cGUgY29tcGF0aWJpbGl0eSBpcyBlbmZvcmNlZC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk0NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjQ2OjMyLjYzNDc0NTA2OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTAyNDAxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTM5PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjM4LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYzOTppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjQwLVxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODo0NjozMi42ODM3NzExNjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODA4OTM1NzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhhdCBxdWVyeSwgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgQlBGIEF0dGFjaG1lbnQgVGFyZ2V0cyoqXG5cblJpZ2h0LCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IEJQRiBhdHRhY2htZW50IHRhcmdldHMgYXJlIGNoZWNrZWQuIFRoYXQgc291bmRzIGxpa2Ugc29tZXRoaW5nIHRoYXQgd291bGQgaGFwcGVuIGR1cmluZyB0aGUgQlBGIHZlcmlmaWNhdGlvbiBwcm9jZXNzLCBzbyBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBsb29rIGF0IHRoZSB2ZXJpZmljYXRpb24gY29kZSBpdHNlbGYuICBJJ20gdGhpbmtpbmcgdGhlIGZ1bmN0aW9uIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgbGlrZWx5IHRoZSBrZXkgaGVyZSwgYW5kIEknZCBiZXQgaXQncyBkZWZpbmVkIG9yIGF0IGxlYXN0IGRlY2xhcmVkIGluIGVpdGhlciBgaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaGAgb3IsIGxlc3MgbGlrZWx5IGJ1dCBzdGlsbCBwb3NzaWJsZSwgaW4gYGluY2x1ZGUvbGludXgvYnBmLmhgLiBJJ2Qgc3RhcnQgd2l0aCBgYnBmX3ZlcmlmaWVyLmhgIGZpcnN0LCBnaXZlbiB0aGUgbmFtZSwgYnV0IEknbGwga2VlcCB0aGUgb3RoZXIgYXMgYSBwb3RlbnRpYWwuIEknbGwgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBoZWFkZXIgdGhhdCBkZWZpbmVzIGl0LCBhbmQgdGhlbiBJIGNhbiBkaWcgaW50byB0aGUgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4MiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjQ2OjM2LjQ5MjcwOTgxOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM2NzE4OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaD0xMTgyPWludCBicGZfY2hlY2tfYnRmX2luZm8oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgtMTE4NC1cXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oOjExODU6aW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xMTg2LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjQ2OjM2LjU3NjM4NjkwM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzI3MTYyNzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIG15IGluaXRpYWwgdGhpbmtpbmcgaXMgdGhhdCBJIG5lZWQgdG8gem9vbSBpbiBvbiB0aGUgc3ltYm9scyBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBUaGVzZSBzZWVtIGxpa2UgZXhjZWxsZW50IHN0YXJ0aW5nIHBvaW50cywgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcHJvYmxlbSBJJ20gdHJ5aW5nIHRvIHNvbHZlLiBcblxuKipJbml0aWFsIFN5bWJvbCBBbmFseXNpcyBhbmQgRmlsZSBMb2NhdGlvbiBDaGVjayoqXG5cbkhvd2V2ZXIsIGhhbmcgb24gYSBzZWNvbmQuIEkgcmVtZW1iZXIgbm93LCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIHJlc2lkZXMgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBIbW1tLCBJIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB3aGV0aGVyIG9yIG5vdCBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAgc2hvdWxkIGJlIGNvbnNpZGVyZWQuIEl0J3MgaW1wb3J0YW50IHRvIGNvbnNpZGVyIGFueSBvdGhlciBjb2RlIHdoaWNoIGNvdWxkIGFjY29tcGxpc2ggdGhlIHNhbWUgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIGV4cGxvcmUgdGhhdCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Nzg5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6NDAuMzAzNTUyOTcxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTk3Njk1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19hdHRhY2hfYnRmX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1MTI9c3RhdGljIGJvb2wgY2FuX2JlX3NsZWVwYWJsZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1MzgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NTM5OnN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTU0MC17XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2MzgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NjM5OmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk2NDAtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAxNjc9aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAzMTItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMzEzOlxcdHJldCA9IGNoZWNrX2F0dGFjaF9idGZfaWQoZW52KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAzMTQtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6NDAuMzQ5NTM3NTQ4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3Nzg3MjcxMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJQRiBBdHRhY2htZW50IFRhcmdldHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgQlBGIGF0dGFjaG1lbnQgbG9naWMsIGFuZCBpdCBzZWVtcyBsaWtlIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgaXRzIGRlZmluaW5nIHNjb3BlIOKAkyBpdCdzIGVpdGhlciBleHBvcnRlZCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIG5vdCBkZWNsYXJlZCBhcyBzdGF0aWMuIEdvb2QgdG8ga25vdy4gQW5kIHRoZSBzYW1lIGFwcGVhcnMgdG8gYmUgdHJ1ZSBmb3IgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYCwgd2hpY2ggaXMgYWxzbyBub24tc3RhdGljLiBUaGUgZnVuY3Rpb24gYGNoZWNrX2F0dGFjaF9idGZfaWRgLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgZGVmaW5lZCBhcyBzdGF0aWMsIHNvIGl0J3MgbGlrZWx5IG9ubHkgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiBpdHMgY29tcGlsYXRpb24gdW5pdC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AgYW5kIGNvbmZpcm0gbXkgY3VycmVudCBhc3N1bXB0aW9ucyBieSBjaGVja2luZyB0aGUgdXNlcyBvZiBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHV0aWxpemVkIHdpdGhpbiB0aGUgQlBGIHN5c3RlbSBjYWxsIGhhbmRsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDA2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6NDQuMTI4MjY3OTgzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc2MDg4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3N5c2NhbGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3N5c2NhbGwuYz0zNjI0PXN0YXRpYyBpbnQgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzc1Ni1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozNzU3OlxcdFxcdGVyciA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KE5VTEwsIHByb2csIHRndF9wcm9nLCBidGZfaWQsXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzc1OC1cXHRcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2dGd0X2luZm8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODo0Njo0NC4xNzQwMzY1NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk2Mzg5NjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBkaXN0aWxsZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgQlBGIEF0dGFjaG1lbnQgTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGggb2YgQlBGIHByb2dyYW0gYXR0YWNobWVudC4gSSBrbm93IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSB3aXRoaW4gYGJwZl90cmFjaW5nX3Byb2dfYXR0YWNoYCDigJMgZm91bmQgdGhhdCBpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoZSB0YXJnZXQgaXMgY2hlY2tlZCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBCVEYgSURzLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb24gYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYC4gSXQncyBsaWtlbHkgbG9jYXRlZCBpbiBlaXRoZXIgYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBvciwgcGVyaGFwcyBtb3JlIGxvZ2ljYWxseSwgd2l0aGluIHRoZSBicm9hZGVyIHN0cnVjdHVyZSBvcGVyYXRpb25zIGRlZmluZWQgaW4gYGtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg3MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDE4OjQ2OjQ3Ljk3MDQyODM2NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxMDg1MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTYyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjM1LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2MzY6XFx0XFx0ZXJyID0gYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoYnRmLCBwcm9nLCBpZHNbaV0sIFxcdTAwMjZ0Z3RfaW5mbyk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTYzNy1cXHRcXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTM5PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjM4LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTYzOTppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NjQwLVxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxODo0Njo0OC4wMTg1NDAwNzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTcyMTEwMTE1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5OiBWZXJpZnlpbmcgU2xlZXBhYmxlIEJQRiBBdHRhY2htZW50KipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIHJpZ2h0IGFyZWFzLiBJdCBsb29rcyBsaWtlIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgYXJlIHRoZSBrZXkgZm9jdXMgc3ltYm9scyBmb3IgdGhpcyBmdXp6aW5nIGVmZm9ydC4gSSBicmllZmx5IGNvbnNpZGVyZWQgYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgLCBidXQgc2luY2UgaXQncyBzdGF0aWMsIGl0IHdvbid0IGJlIGFzIGVmZmVjdGl2ZSB0byB0YXJnZXQgZGlyZWN0bHkuXG5cbk5vdywgbGV0J3MgdGhpbmsgYWJvdXQgY29uZmlndXJhdGlvbnMuIFRoZSBwYXRjaCBtb2RpZmllcyBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgd2hpY2ggdGVsbHMgbWUgdGhpcyBpbnZvbHZlcyB0aGUgQlBGIHZlcmlmaWVyLCBhbmQgdGhlIHByZXNlbmNlIG9mIGBmZW50cnlfc2xlZXBhYmxlLmNgIGFuZCBgeGRwX2R1bW15LmNgIGluIHRoZSB0ZXN0cyBzdWdnZXN0cyB3ZSdyZSBkZWFsaW5nIHdpdGggc2xlZXBhYmxlIHByb2dyYW1zIGFuZCBwb3RlbnRpYWxseSBYRFAtcmVsYXRlZCBpbnRlcmFjdGlvbnMgYXMgd2VsbCwgdGhvdWdoIHRoYXQncyBsaWtlbHkganVzdCBmb3IgdGhlIGV4YW1wbGUgc2V0dXAuIFN0YW5kYXJkIEJQRiBmdXp6aW5nIGNvbmZpZ3MgbGlrZSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19ERUJVR19JTkZPX0JURmAsIGFuZCBgQ09ORklHX0JQRl9KSVRgIGFyZSBwcm9iYWJseSBnb29kIGVub3VnaCBhcyB0aGUgYmFzaXMuIEFoLCBidXQgd2FpdCDigJMgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIEJQRiBzeXNjYWxscywgSSBuZWVkIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBgQlBGX1NZU0NBTExgIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AuIEl0J3MgZWFzeSB0byBvdmVybG9vayB0aGVzZSBiYXNpY3MuXG5cbkxldCdzIGRvIGEgcXVpY2sgcmUtcmV2aWV3IG9mIHRoZSBwYXRjaCBpdHNlbGY6XG5cbmBgYGNcbkBAIC0xOTAyMiw2ICsxOTAyMiw5IEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiXG4gXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQ7XG4gXHRjb25zdCBjaGFyICp0bmFtZTtcbiBcbitcdGlmICghYnRmX2lzX2tlcm5lbChidGYpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdHN3aXRjaCAocHJvZy1cdTAwM2V0eXBlKSB7XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzpcbiBcdFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgYnRmX2lkKTtcbmBgYFxuXG5SaWdodCwgaXQncyBhIHJlbGF0aXZlbHkgc21hbGwsIGJ1dCBmdW5jdGlvbmFsbHkgaW1wb3J0YW50IGNoYW5nZSB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlIHBhdGNoIHJlc3RyaWN0cyBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG5vbi1rZXJuZWwgQlRGIG9iamVjdHMsIHByZXZlbnRpbmcgYSBjbGFzcyBvZiBidWdzLiBHaXZlbiB0aGF0IGl0IHRvdWNoZXMgdGhlIEJQRiB2ZXJpZmllciBhbmQgaXMgcmVsYXRlZCB0byBob3cgQlBGIHByb2dyYW1zIGF0dGFjaCwgaXQncyBkZWZpbml0ZWx5IHdvcnRoIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjaGVjayBpbiBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAuIFRoZSBgYnBmKClgIHN5c2NhbGwgcGF0aCBpcyByZWxldmFudCBmb3IgdGhpcyBuZXcgY2hlY2suXG5cbioqRm9jdXMgU3ltYm9sczoqKlxuXG4qICAgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YFxuKiAgIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWBcblxuKipFbmFibGVDb25maWdzOioqXG5cbiogICBgQlBGX1NZU0NBTExgXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgdG8gZW5mb3JjZSB0aGF0IHNsZWVwYWJsZSBCUEYgcHJvZ3JhbXMgY2FuIG9ubHkgYXR0YWNoIHRvIGtlcm5lbCBCVEYgb2JqZWN0cy4gVGhpcyBpbXBhY3RzIHRoZSBCUEYgcHJvZ3JhbSBhdHRhY2htZW50IGxvZ2ljLiBHaXZlbiB0aGF0IHRoZSBjaGFuZ2VzIGhhcHBlbiBkdXJpbmcgdGhlIGF0dGFjaG1lbnQsIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBhIHN5c2NhbGwsIGZ1enppbmcgdGhlIGF0dGFjaG1lbnQgdmVyaWZpY2F0aW9uIHJvdXRpbmVzIGlzIHRoZSByaWdodCBhcHByb2FjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ1NiwiT3V0cHV0VG9rZW5zIjoxNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTg6NDY6NTcuNzM5NjQ0Mzg3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM1NDU0MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgdmVyaWZpZXIgdG8gcHJldmVudCBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG5vbi1rZXJuZWwgQlRGIG9iamVjdHMgKGUuZy4sIG90aGVyIEJQRiBwcm9ncmFtcykuIFRoaXMgYWZmZWN0cyB0aGUgQlBGIHByb2dyYW0gYXR0YWNobWVudCBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCB3aGVuIGxvYWRpbmcgb3IgYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBCUEYgYXR0YWNobWVudCB2ZXJpZmljYXRpb24gZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBCUEYgdmVyaWZpZXIgdG8gcHJldmVudCBzbGVlcGFibGUgQlBGIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG5vbi1rZXJuZWwgQlRGIG9iamVjdHMgKGUuZy4sIG90aGVyIEJQRiBwcm9ncmFtcykuIFRoaXMgYWZmZWN0cyB0aGUgQlBGIHByb2dyYW0gYXR0YWNobWVudCBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCB3aGVuIGxvYWRpbmcgb3IgYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBCUEYgYXR0YWNobWVudCB2ZXJpZmljYXRpb24gZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdj2bn[1] Phase: Succeeded StartedAt: 2026-08-05 18:47:47 +0000 UTC FinishedAt: 2026-08-05 18:47:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 18:47:47 +0000 UTC FinishedAt: 2026-08-05 18:47:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2] Phase: Succeeded StartedAt: 2026-08-05 18:47:47 +0000 UTC FinishedAt: 2026-08-05 22:30:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 18:47:47 +0000 UTC FinishedAt: 2026-08-05 22:30:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 18:47:47 +0000 UTC FinishedAt: 2026-08-05 18:47:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 18:47:47 +0000 UTC FinishedAt: 2026-08-05 18:47:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdj2bn/series-workflowdj2bn-convert-artifact-2751649799/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 18:47:57 +0000 UTC FinishedAt: 2026-08-05 19:04:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 18:47:57 +0000 UTC FinishedAt: 2026-08-05 19:04:19 +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:*fc773582-d21b-4f36-9c0e-a55ec7f42396,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-workflowdj2bn/series-workflowdj2bn-convert-artifact-2751649799/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": "117fe44c-8eab-456d-ad86-7bc5ecc2411e", "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-workflowdj2bn/series-workflowdj2bn-build-action-1811162781/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 18:47:57 +0000 UTC FinishedAt: 2026-08-05 19:04:09 +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:*fc773582-d21b-4f36-9c0e-a55ec7f42396,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-workflowdj2bn/series-workflowdj2bn-convert-artifact-2751649799/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": "117fe44c-8eab-456d-ad86-7bc5ecc2411e", "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-workflowdj2bn/series-workflowdj2bn-build-action-1811162781/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 19:04:19 +0000 UTC FinishedAt: 2026-08-05 19:04:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 19:04:19 +0000 UTC FinishedAt: 2026-08-05 19:04:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 19:04:19 +0000 UTC FinishedAt: 2026-08-05 19:04:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 19:04:19 +0000 UTC FinishedAt: 2026-08-05 19:04:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdj2bn/series-workflowdj2bn-convert-artifact-3825606198/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 19:04:29 +0000 UTC FinishedAt: 2026-08-05 19:06:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 19:04:29 +0000 UTC FinishedAt: 2026-08-05 19:06:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*117fe44c-8eab-456d-ad86-7bc5ecc2411e,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-workflowdj2bn/series-workflowdj2bn-build-action-1811162781/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-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 19:06:19 +0000 UTC FinishedAt: 2026-08-05 19:06:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 19:06:19 +0000 UTC FinishedAt: 2026-08-05 19:06:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 19:06:19 +0000 UTC FinishedAt: 2026-08-05 19:25:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 19:06:19 +0000 UTC FinishedAt: 2026-08-05 19:25:17 +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:*fc773582-d21b-4f36-9c0e-a55ec7f42396,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-workflowdj2bn/series-workflowdj2bn-convert-artifact-3825606198/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": "948bb963-85ce-4701-bf1c-8a678abc18d0", "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-workflowdj2bn/series-workflowdj2bn-build-action-1174299450/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 19:06:19 +0000 UTC FinishedAt: 2026-08-05 19:25:02 +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:*fc773582-d21b-4f36-9c0e-a55ec7f42396,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-workflowdj2bn/series-workflowdj2bn-convert-artifact-3825606198/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": "948bb963-85ce-4701-bf1c-8a678abc18d0", "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-workflowdj2bn/series-workflowdj2bn-build-action-1174299450/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 19:25:17 +0000 UTC FinishedAt: 2026-08-05 19:25:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 19:25:17 +0000 UTC FinishedAt: 2026-08-05 19:25:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 19:25:17 +0000 UTC FinishedAt: 2026-08-05 19:27:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 19:25:18 +0000 UTC FinishedAt: 2026-08-05 19:27:17 +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:*948bb963-85ce-4701-bf1c-8a678abc18d0,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-workflowdj2bn/series-workflowdj2bn-build-action-1174299450/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-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 19:27:28 +0000 UTC FinishedAt: 2026-08-05 22:30:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 19:27:28 +0000 UTC FinishedAt: 2026-08-05 22:30:16 +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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"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:*117fe44c-8eab-456d-ad86-7bc5ecc2411e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*948bb963-85ce-4701-bf1c-8a678abc18d0,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-workflowdj2bn/series-workflowdj2bn-build-action-1811162781/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-workflowdj2bn/series-workflowdj2bn-build-action-1174299450/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 19:27:28 +0000 UTC FinishedAt: 2026-08-05 19:27:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 19:27:28 +0000 UTC FinishedAt: 2026-08-05 19:27:33 +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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"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-workflowdj2bn/series-workflowdj2bn-convert-artifact-2646456923/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 19:27:28 +0000 UTC FinishedAt: 2026-08-05 19:27:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 19:27:28 +0000 UTC FinishedAt: 2026-08-05 19:27:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 19:27:28 +0000 UTC FinishedAt: 2026-08-05 19:27:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 19:27:41 +0000 UTC FinishedAt: 2026-08-05 22:30:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdj2bn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6655c409707ec8ce9ce0850ffe4fe02331fd4d9c","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"0ccc69e7-5596-4ae0-8152-47d9cdbf1d33","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 19:27:41 +0000 UTC FinishedAt: 2026-08-05 22:30:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*117fe44c-8eab-456d-ad86-7bc5ecc2411e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*948bb963-85ce-4701-bf1c-8a678abc18d0,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-workflowdj2bn/series-workflowdj2bn-build-action-1811162781/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-workflowdj2bn/series-workflowdj2bn-build-action-1174299450/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-workflowdj2bn/series-workflowdj2bn-convert-artifact-2646456923/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,}