Name: series-workflowmh456 Phase: Succeeded StartedAt: 2026-08-14 01:34:35 +0000 UTC FinishedAt: 2026-08-14 02:16:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[0] Phase: Succeeded StartedAt: 2026-08-14 01:34:35 +0000 UTC FinishedAt: 2026-08-14 01:37:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 01:34:35 +0000 UTC FinishedAt: 2026-08-14 01:37:18 +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": "d114bb98936770c501c958bf2bc5fb6b7c0bad7b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "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": "d114bb98936770c501c958bf2bc5fb6b7c0bad7b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "d63abff8-7dd2-475a-939b-2782560fc191" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_jit_emit_insn", "bpf_jit_build_prologue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7LAogICAgJiMzNDticGZfaml0X2J1aWxkX3Byb2xvZ3VlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyBCUEYgc3RhY2sgYXJndW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBSSVNDLVYgNjQtYml0IEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIHRyYW5zbGF0aW9uIG9mIEJQRiBpbnN0cnVjdGlvbnMgdG8gUklTQy1WIG1hY2hpbmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHN0YWNrIG9mZnNldHMgZm9yIGZ1bmN0aW9uIGFyZ3VtZW50cy4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBuZXcga2VybmVsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkbyB0aGV5IGFkZCBjb21wbGV4IEMgZGF0YSBzdHJ1Y3R1cmVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGUga2VybmVsJiMzOTtzIEMgY29kZS4gQW55IGJ1Z3MgaW4gdGhlIEpJVCBjb21waWxlciB3b3VsZCByZXN1bHQgaW4gaW5jb3JyZWN0IGNvZGUgZ2VuZXJhdGlvbiAoZS5nLiwgY3Jhc2hlcywgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgcmVnaXN0ZXIgY29ycnVwdGlvbiksIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgQlBGIHNlbGZ0ZXN0cyBhbmQgc3RhbmRhcmQgS0FTQU4uIEZ1cnRoZXJtb3JlLCBLTVNBTiBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBvbiB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZSwgbWFraW5nIGEgS01TQU4gcnVuIGluYXBwbGljYWJsZSBmb3IgdGhpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgcGF0Y2guJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgQlBGIHN0YWNrIGFyZ3VtZW50cyBpbiB0aGUgUklTQy1WIDY0LWJpdCBCUEYgSklUIGNvbXBpbGVyLCBtb2RpZnlpbmcgY29yZSBKSVQgZnVuY3Rpb25zIGxpa2UgYnBmX2ppdF9lbWl0X2luc24gYW5kIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDE6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4YzAzYjUzMWNkYzYyZDdiZjMxYTBjMjExOTFkMGQ0ZTQ2MjA1ZGM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMDE6MzY6MjkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5pbmRleCA0MTliOWQ3OTVmMmE3Li45ZWI0ZTE0OTUwNWQ1IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbkBAIC04Miw2ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdGludCBzdGFja19zaXplO1xuIFx0aW50IHRjY19vZmZzZXQ7XG4mIzQzO1x0dTE2IHN0YWNrX2FyZ19zaXplO1xuIFx0dTY0IGFyZW5hX3ZtX3N0YXJ0O1xuIFx0dTY0IHVzZXJfdm1fc3RhcnQ7XG4gfTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggNmI5OTcyYjA3YzFiMC4uNThjYjNlNWZmNmI0ZCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xODE1LDE4ICYjNDM7MTgxNSw0MyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcbiBcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwpIHtcbiBcdFx0XHRjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKmZtO1xuLVx0XHRcdGludCBpZHg7XG4mIzQzO1x0XHRcdGludCBpZHgsIG5hcmdzO1xuIFxuIFx0XHRcdGZtID0gYnBmX2ppdF9maW5kX2tmdW5jX21vZGVsKGN0eC1cdTAwM2Vwcm9nLCBpbnNuKTtcbiBcdFx0XHRpZiAoIWZtKVxuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRcdFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIGZtLVx1MDAzZW5yX2FyZ3M7IGlkeCYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdFx0bmFyZ3MgPSBtaW5fdChpbnQsIGZtLVx1MDAzZW5yX2FyZ3MsIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7XG4mIzQzO1x0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBuYXJnczsgaWR4JiM0MzsmIzQzOykge1xuIFx0XHRcdFx0dTggcmVnID0gYnBmX3RvX3J2X3JlZyhCUEZfUkVHXzEgJiM0MzsgaWR4LCBjdHgpO1xuIFxuIFx0XHRcdFx0aWYgKGZtLVx1MDAzZWFyZ19zaXplW2lkeF0gPT0gc2l6ZW9mKGludCkpXG4gXHRcdFx0XHRcdGVtaXRfc2V4dHcocmVnLCByZWcsIGN0eCk7XG4gXHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0LyogQlBGIHN0YWNrIGFyZ3MgLVx1MDAzZSBSSVNDLVYgQUJJOiBhcmdzIDYtOCBpbiBBNS1BNywgOSYjNDM7IGF0IFNQJiM0MzswICovXG4mIzQzO1x0XHRcdGlmIChmbS1cdTAwM2Vucl9hcmdzIFx1MDAzZSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpIHtcbiYjNDM7XHRcdFx0XHRpbnQgbl9zdGFjayA9IGZtLVx1MDAzZW5yX2FyZ3MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1M7XG4mIzQzO1x0XHRcdFx0aW50IG5fcmVnID0gbWluX3QoaW50LCBuX3N0YWNrLFxuJiM0MztcdFx0XHRcdFx0XHQgIFJWX01BWF9SRUdfQVJHUyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7XG4mIzQzO1xuJiM0MztcdFx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBuX3JlZzsgaWR4JiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRcdFx0aW50IHN6ID0gZm0tXHUwMDNlYXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICYjNDM7IGlkeF07XG4mIzQzO1xuJiM0MztcdFx0XHRcdFx0ZW1pdF9sZChSVl9SRUdfQTUgJiM0MzsgaWR4LCBpZHggKiA4LCBSVl9SRUdfU1AsIGN0eCk7XG4mIzQzO1x0XHRcdFx0XHRpZiAoc3ogPT0gc2l6ZW9mKGludCkpXG4mIzQzO1x0XHRcdFx0XHRcdGVtaXRfc2V4dHcoUlZfUkVHX0E1ICYjNDM7IGlkeCwgUlZfUkVHX0E1ICYjNDM7IGlkeCwgY3R4KTtcbiYjNDM7XHRcdFx0XHR9XG4mIzQzO1xuJiM0MztcdFx0XHRcdGZvciAoaWR4ID0gbl9yZWc7IGlkeCBcdTAwM2Mgbl9zdGFjazsgaWR4JiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRcdFx0aW50IHN6ID0gZm0tXHUwMDNlYXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICYjNDM7IGlkeF07XG4mIzQzO1xuJiM0MztcdFx0XHRcdFx0ZW1pdF9sZChSVl9SRUdfVDEsIGlkeCAqIDgsIFJWX1JFR19TUCwgY3R4KTtcbiYjNDM7XHRcdFx0XHRcdGlmIChzeiA9PSBzaXplb2YoaW50KSlcbiYjNDM7XHRcdFx0XHRcdFx0ZW1pdF9zZXh0dyhSVl9SRUdfVDEsIFJWX1JFR19UMSwgY3R4KTtcbiYjNDM7XHRcdFx0XHRcdGVtaXRfc2QoUlZfUkVHX1NQLCAoaWR4IC0gbl9yZWcpICogOCwgUlZfUkVHX1QxLCBjdHgpO1xuJiM0MztcdFx0XHRcdH1cbiYjNDM7XHRcdFx0fVxuIFx0XHR9XG4gXG4gXHRcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqL1xuQEAgLTE4OTEsNiAmIzQzOzE5MTYsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX1c6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0RXOlxuJiM0MztcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuJiM0MztcdFx0XHRpbnQgaWR4ID0gb2ZmIC8gOCAtIDE7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuJiM0MztcdFx0XHRcdGVtaXRfbGR4X2luc24ocmQsIGlkeCAqIDgsIFJWX1JFR19GUCwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTtcbiYjNDM7XHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgUlZfUkVHX0ZQLCBjdHgpO1xuJiM0MztcdFx0XHRcdGVtaXRfbGR4X2luc24ocmQsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGlmIChCUEZfU0laRShjb2RlKSAhPSBCUEZfRFcgXHUwMDI2XHUwMDI2IGluc25faXNfemV4dChcdTAwMjZpbnNuWzFdKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gMTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRmYWxsdGhyb3VnaDtcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfQjpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfVzpcbkBAIC0xOTM4LDYgJiM0MzsxOTc4LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzpcbiYjNDM7XHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbiYjNDM7XHRcdFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbiYjNDM7XG4mIzQzO1x0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpO1xuJiM0MztcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuJiM0MztcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMiwgaWR4ICogOCwgY3R4KTtcbiYjNDM7XHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDIsIFJWX1JFR19TUCwgUlZfUkVHX1QyLCBjdHgpO1xuJiM0MztcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1QyLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICYjNDM7IFJWX1JFR19BUkVOQSAmIzQzOyBvZmYpID0gaW1tICovXG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcbkBAIC0xOTYwLDYgJiM0MzsyMDE0LDE5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9XOlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9EVzpcbiYjNDM7XHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbiYjNDM7XHRcdFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XG4mIzQzO1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7XG4mIzQzO1x0XHRcdFx0ZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfU1AsIFJWX1JFR19UMSwgY3R4KTtcbiYjNDM7XHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19UMSwgMCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCAmIzQzOyBSVl9SRUdfQVJFTkEgJiM0Mzsgb2ZmKSA9IHNyYyAqL1xuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcbkBAIC0yMDM2LDYgJiM0MzsyMTAzLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcbiBcdHN0YWNrX2FkanVzdCAmIzQzOz0gYnBmX3N0YWNrX2FkanVzdDtcbiYjNDM7XHRzdGFja19hZGp1c3QgJiM0Mzs9IGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZTtcbiBcbiBcdHN0b3JlX29mZnNldCA9IHN0YWNrX2FkanVzdCAtIDg7XG4gXG5AQCAtMjA5Myw3ICYjNDM7MjE2MSw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0ZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXG4gXHRpZiAoYnBmX3N0YWNrX2FkanVzdClcbi1cdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBicGZfc3RhY2tfYWRqdXN0LCBjdHgpO1xuJiM0MztcdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgJiM0MzsgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcbiBcbiBcdGN0eC1cdTAwM2VzdGFja19zaXplID0gc3RhY2tfYWRqdXN0O1xuIFxuQEAgLTIxNzEsMyAmIzQzOzIyMzksOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbiB7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4mIzQzO1xuJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtNzIsNiAmIzQzOzcyLDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXVzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXByb2cgPSBwcm9nO1xuJiM0MztcbiYjNDM7XHRjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgPSByb3VuZF91cChicGZfb3V0X3N0YWNrX2FyZ19jbnQoZW52LCBwcm9nKSAqXG4mIzQzO1x0XHRcdFx0ICAgICAgIHNpemVvZih1NjQpLCBTVEFDS19BTElHTik7XG4mIzQzO1xuIFx0Y3R4LVx1MDAzZW9mZnNldCA9IGt2emFsbG9jX29ianMoaW50LCBwcm9nLVx1MDAzZWxlbik7XG4gXHRpZiAoIWN0eC1cdTAwM2VvZmZzZXQpXG4gXHRcdGdvdG8gb3V0X29mZnNldDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbmluZGV4IDhkMzhhYWZlNjZhMjguLmFiMTIzOTdhOWI1MmEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTQsNyAmIzQzOzQsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCYjMzQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4mIzQzO1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbmluZGV4IDk5YmMxMTVmODM4MGEuLmE5ODBhM2EzOTlkM2YgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbkBAIC0zLDcgJiM0MzszLDggQEBcbiAjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuJiM0MztcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcbmluZGV4IDk0NGUzYmI2MDNlN2UuLjNlOWVkMzdjNTdiYjkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuQEAgLTIxLDcgJiM0MzsyMSw4IEBAIHN0cnVjdCB7XG4gXG4gaW50IHRpbWVyX3Jlc3VsdDtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbiYjNDM7XHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbmluZGV4IDM0NWYyZGEyZTM2MWIuLmI2YjFhOGFhN2Y0NGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuQEAgLTYsNyAmIzQzOzYsOCBAQFxuICNpbmNsdWRlIFwmIzM0O2JwZl9rZnVuY3MuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwmIzM0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuJiM0MztcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5pbmRleCBiZWUyZWVlYzAyMWQ3Li42ZWViYWZlN2YyZjg3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTYsNyAmIzQzOzYsOCBAQFxuICNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2JwZl9taXNjLmhcJiMzNDtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbiYjNDM7XHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gLyogRm9yY2Uga2Z1bmMgZXh0ZXJuIEJURiBnZW5lcmF0aW9uIGZvciBpbmxpbmUgYXNtIGNhbGwgYmVsb3cuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG5pbmRleCA3ZTBjZTVkYjI4YTBkLi5lOGNkMjk2ZmU3NjMxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbkBAIC0xMiw3ICYjNDM7MTIsOCBAQCBzdHJ1Y3Qge1xuIFx0X190eXBlKHZhbHVlLCBsb25nIGxvbmcpO1xuIH0gbWFwX2hhc2hfOGIgU0VDKFwmIzM0Oy5tYXBzXCYjMzQ7KTtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbiYjNDM7XHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gX19ub2lubGluZSBfX3VzZWRcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbmluZGV4IGM5ZmU0ODU3ZGEzZjUuLjU2MmU4MzE5ZmZjMjIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTUsNyAmIzQzOzUsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuJiM0MztcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBfX25vaW5saW5lIF9fdXNlZCBfX25ha2VkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDE6MzY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7LAogICAgJiMzNDticGZfaml0X2J1aWxkX3Byb2xvZ3VlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgQlBGIHN0YWNrIGFyZ3VtZW50cyBpbiB0aGUgUklTQy1WIDY0LWJpdCBCUEYgSklUIGNvbXBpbGVyLCBtb2RpZnlpbmcgY29yZSBKSVQgZnVuY3Rpb25zIGxpa2UgYnBmX2ppdF9lbWl0X2luc24gYW5kIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4YzAzYjUzMWNkYzYyZDdiZjMxYTBjMjExOTFkMGQ0ZTQ2MjA1ZGM4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMDE6MzY6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmggYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgKaW5kZXggNDE5YjlkNzk1ZjJhNy4uOWViNGUxNDk1MDVkNSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaApAQCAtODIsNiAmIzQzOzgyLDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBzdGFja19zaXplOwogCWludCB0Y2Nfb2Zmc2V0OwomIzQzOwl1MTYgc3RhY2tfYXJnX3NpemU7CiAJdTY0IGFyZW5hX3ZtX3N0YXJ0OwogCXU2NCB1c2VyX3ZtX3N0YXJ0OwogfTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCmluZGV4IDZiOTk3MmIwN2MxYjAuLjU4Y2IzZTVmZjZiNGQgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYwpAQCAtMTgxNSwxOCAmIzQzOzE4MTUsNDMgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAKIAkJaWYgKGluc24tJmd0O3NyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMKSB7CiAJCQljb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKmZtOwotCQkJaW50IGlkeDsKJiM0MzsJCQlpbnQgaWR4LCBuYXJnczsKIAogCQkJZm0gPSBicGZfaml0X2ZpbmRfa2Z1bmNfbW9kZWwoY3R4LSZndDtwcm9nLCBpbnNuKTsKIAkJCWlmICghZm0pCiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAKLQkJCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgZm0tJmd0O25yX2FyZ3M7IGlkeCYjNDM7JiM0MzspIHsKJiM0MzsJCQluYXJncyA9IG1pbl90KGludCwgZm0tJmd0O25yX2FyZ3MsIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7CiYjNDM7CQkJZm9yIChpZHggPSAwOyBpZHggJmx0OyBuYXJnczsgaWR4JiM0MzsmIzQzOykgewogCQkJCXU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICYjNDM7IGlkeCwgY3R4KTsKIAogCQkJCWlmIChmbS0mZ3Q7YXJnX3NpemVbaWR4XSA9PSBzaXplb2YoaW50KSkKIAkJCQkJZW1pdF9zZXh0dyhyZWcsIHJlZywgY3R4KTsKIAkJCX0KJiM0MzsKJiM0MzsJCQkvKiBCUEYgc3RhY2sgYXJncyAtJmd0OyBSSVNDLVYgQUJJOiBhcmdzIDYtOCBpbiBBNS1BNywgOSYjNDM7IGF0IFNQJiM0MzswICovCiYjNDM7CQkJaWYgKGZtLSZndDtucl9hcmdzICZndDsgTUFYX0JQRl9GVU5DX1JFR19BUkdTKSB7CiYjNDM7CQkJCWludCBuX3N0YWNrID0gZm0tJmd0O25yX2FyZ3MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1M7CiYjNDM7CQkJCWludCBuX3JlZyA9IG1pbl90KGludCwgbl9zdGFjaywKJiM0MzsJCQkJCQkgIFJWX01BWF9SRUdfQVJHUyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7CiYjNDM7CiYjNDM7CQkJCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgbl9yZWc7IGlkeCYjNDM7JiM0MzspIHsKJiM0MzsJCQkJCWludCBzeiA9IGZtLSZndDthcmdfc2l6ZVtNQVhfQlBGX0ZVTkNfUkVHX0FSR1MgJiM0MzsgaWR4XTsKJiM0MzsKJiM0MzsJCQkJCWVtaXRfbGQoUlZfUkVHX0E1ICYjNDM7IGlkeCwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpOwomIzQzOwkJCQkJaWYgKHN6ID09IHNpemVvZihpbnQpKQomIzQzOwkJCQkJCWVtaXRfc2V4dHcoUlZfUkVHX0E1ICYjNDM7IGlkeCwgUlZfUkVHX0E1ICYjNDM7IGlkeCwgY3R4KTsKJiM0MzsJCQkJfQomIzQzOwomIzQzOwkJCQlmb3IgKGlkeCA9IG5fcmVnOyBpZHggJmx0OyBuX3N0YWNrOyBpZHgmIzQzOyYjNDM7KSB7CiYjNDM7CQkJCQlpbnQgc3ogPSBmbS0mZ3Q7YXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICYjNDM7IGlkeF07CiYjNDM7CiYjNDM7CQkJCQllbWl0X2xkKFJWX1JFR19UMSwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpOwomIzQzOwkJCQkJaWYgKHN6ID09IHNpemVvZihpbnQpKQomIzQzOwkJCQkJCWVtaXRfc2V4dHcoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIGN0eCk7CiYjNDM7CQkJCQllbWl0X3NkKFJWX1JFR19TUCwgKGlkeCAtIG5fcmVnKSAqIDgsIFJWX1JFR19UMSwgY3R4KTsKJiM0MzsJCQkJfQomIzQzOwkJCX0KIAkJfQogCiAJCS8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqLwpAQCAtMTg5MSw2ICYjNDM7MTkxNiwyMSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAljYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0g6CiAJY2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9XOgogCWNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfRFc6CiYjNDM7CQlpZiAoaW5zbi0mZ3Q7c3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykgewomIzQzOwkJCWludCBpZHggPSBvZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJCQlpZiAoaXNfMTJiX2ludChpZHggKiA4KSkgewomIzQzOwkJCQllbWl0X2xkeF9pbnNuKHJkLCBpZHggKiA4LCBSVl9SRUdfRlAsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7CiYjNDM7CQkJCWVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfRlAsIGN0eCk7CiYjNDM7CQkJCWVtaXRfbGR4X2luc24ocmQsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpOwomIzQzOwkJCX0KJiM0MzsJCQlpZiAoQlBGX1NJWkUoY29kZSkgIT0gQlBGX0RXICZhbXA7JmFtcDsgaW5zbl9pc196ZXh0KCZhbXA7aW5zblsxXSkpCiYjNDM7CQkJCXJldHVybiAxOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwkJZmFsbHRocm91Z2g7CiAJY2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9COgogCWNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfSDoKIAljYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX1c6CkBAIC0xOTM4LDYgJiM0MzsxOTc4LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCWNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9IOgogCWNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9XOgogCWNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzoKJiM0MzsJCWlmIChpbnNuLSZndDtkc3RfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7CiYjNDM7CQkJaW50IGlkeCA9IC1vZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJCQllbWl0X2ltbShSVl9SRUdfVDEsIGltbSwgY3R4KTsKJiM0MzsJCQlpZiAoaXNfMTJiX2ludChpZHggKiA4KSkgewomIzQzOwkJCQllbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0X2ltbShSVl9SRUdfVDIsIGlkeCAqIDgsIGN0eCk7CiYjNDM7CQkJCWVtaXRfYWRkKFJWX1JFR19UMiwgUlZfUkVHX1NQLCBSVl9SRUdfVDIsIGN0eCk7CiYjNDM7CQkJCWVtaXRfc3R4X2luc24oUlZfUkVHX1QyLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwomIzQzOwkJCX0KJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsJCWZhbGx0aHJvdWdoOwogCS8qIFNUIHwgUFJPQkVfTUVNMzI6ICooc2l6ZSAqKShkc3QgJiM0MzsgUlZfUkVHX0FSRU5BICYjNDM7IG9mZikgPSBpbW0gKi8KIAljYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COgogCWNhc2UgQlBGX1NUIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0g6CkBAIC0xOTYwLDYgJiM0MzsyMDE0LDE5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCWNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfSDoKIAljYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX1c6CiAJY2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9EVzoKJiM0MzsJCWlmIChpbnNuLSZndDtkc3RfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7CiYjNDM7CQkJaW50IGlkeCA9IC1vZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJCQlpZiAoaXNfMTJiX2ludChpZHggKiA4KSkgewomIzQzOwkJCQllbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTsKJiM0MzsJCQkJZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfU1AsIFJWX1JFR19UMSwgY3R4KTsKJiM0MzsJCQkJZW1pdF9zdHhfaW5zbihSVl9SRUdfVDEsIDAsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCQl9CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CQlmYWxsdGhyb3VnaDsKIAkvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCAmIzQzOyBSVl9SRUdfQVJFTkEgJiM0Mzsgb2ZmKSA9IHNyYyAqLwogCWNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COgogCWNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOgpAQCAtMjAzNiw2ICYjNDM7MjEwMyw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKQogCiAJc3RhY2tfYWRqdXN0ID0gcm91bmRfdXAoc3RhY2tfYWRqdXN0LCBTVEFDS19BTElHTik7CiAJc3RhY2tfYWRqdXN0ICYjNDM7PSBicGZfc3RhY2tfYWRqdXN0OwomIzQzOwlzdGFja19hZGp1c3QgJiM0Mzs9IGN0eC0mZ3Q7c3RhY2tfYXJnX3NpemU7CiAKIAlzdG9yZV9vZmZzZXQgPSBzdGFja19hZGp1c3QgLSA4OwogCkBAIC0yMDkzLDcgJiM0MzsyMTYxLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpCiAJZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7CiAKIAlpZiAoYnBmX3N0YWNrX2FkanVzdCkKLQkJZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBicGZfc3RhY2tfYWRqdXN0LCBjdHgpOwomIzQzOwkJZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBjdHgtJmd0O3N0YWNrX2FyZ19zaXplICYjNDM7IGJwZl9zdGFja19hZGp1c3QsIGN0eCk7CiAKIAljdHgtJmd0O3N0YWNrX3NpemUgPSBzdGFja19hZGp1c3Q7CiAKQEAgLTIxNzEsMyAmIzQzOzIyMzksOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZCkKIHsKIAlyZXR1cm4gdHJ1ZTsKIH0KJiM0MzsKJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKQomIzQzO3sKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwppbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwpAQCAtNzIsNiAmIzQzOzcyLDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJY3R4LSZndDthcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLSZndDthdXgtJmd0O2FyZW5hKTsKIAljdHgtJmd0O3VzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy0mZ3Q7YXV4LSZndDthcmVuYSk7CiAJY3R4LSZndDtwcm9nID0gcHJvZzsKJiM0MzsKJiM0MzsJY3R4LSZndDtzdGFja19hcmdfc2l6ZSA9IHJvdW5kX3VwKGJwZl9vdXRfc3RhY2tfYXJnX2NudChlbnYsIHByb2cpICoKJiM0MzsJCQkJICAgICAgIHNpemVvZih1NjQpLCBTVEFDS19BTElHTik7CiYjNDM7CiAJY3R4LSZndDtvZmZzZXQgPSBrdnphbGxvY19vYmpzKGludCwgcHJvZy0mZ3Q7bGVuKTsKIAlpZiAoIWN0eC0mZ3Q7b2Zmc2V0KQogCQlnb3RvIG91dF9vZmZzZXQ7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMKaW5kZXggOGQzOGFhZmU2NmEyOC4uYWIxMjM5N2E5YjUyYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYwpAQCAtNCw3ICYjNDM7NCw4IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCA5OWJjMTE1ZjgzODBhLi5hOTgwYTNhMzk5ZDNmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwpAQCAtMyw3ICYjNDM7Myw4IEBACiAjaW5jbHVkZSAmbHQ7dm1saW51eC5oJmd0OwogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZikKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYwppbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jCkBAIC0yMSw3ICYjNDM7MjEsOCBAQCBzdHJ1Y3QgewogCiBpbnQgdGltZXJfcmVzdWx0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jCmluZGV4IDM0NWYyZGEyZTM2MWIuLmI2YjFhOGFhN2Y0NGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMKQEAgLTYsNyAmIzQzOzYsOCBAQAogI2luY2x1ZGUgJiMzNDticGZfa2Z1bmNzLmgmIzM0OwogI2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMKaW5kZXggYmVlMmVlZWMwMjFkNy4uNmVlYmFmZTdmMmY4NyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jCkBAIC02LDcgJiM0Mzs2LDggQEAKICNpbmNsdWRlICYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jCmluZGV4IDdlMGNlNWRiMjhhMGQuLmU4Y2QyOTZmZTc2MzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMKQEAgLTEyLDcgJiM0MzsxMiw4IEBAIHN0cnVjdCB7CiAJX190eXBlKHZhbHVlLCBsb25nIGxvbmcpOwogfSBtYXBfaGFzaF84YiBTRUMoJiMzNDsubWFwcyYjMzQ7KTsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXAomIzQzOwkoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSAmYW1wOyZhbXA7IF9fcmlzY3ZfeGxlbiA9PSA2NCkpICZhbXA7JmFtcDsgXAogCWRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVCkKIAogX19ub2lubGluZSBfX3VzZWQKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCBjOWZlNDg1N2RhM2Y1Li41NjJlODMxOWZmYzIyIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jCkBAIC01LDcgJiM0Mzs1LDggQEAKICNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIF9fbm9pbmxpbmUgX191c2VkIF9fbmFrZWQKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDE6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcwMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSSVNDLVYgQlBGIEpJVCBQYXRjaCoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBzb21lIHByZXR0eSBmdW5kYW1lbnRhbCBjaGFuZ2VzIHRvIHRoZSBSSVNDLVYgQlBGIEpJVCBjb21waWxlciDigJMgbmFtZWx5LCBhZGRpbmcgc3VwcG9ydCBmb3Igc3RhY2sgYXJndW1lbnRzIGluIEJQRiBmdW5jdGlvbnMuIFRoaXMgaXMgc2lnbmlmaWNhbnQsIGl0IHRvdWNoZXMgY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0eSwgYW5kIGltbWVkaWF0ZWx5IHRyaWdnZXJzIHNvbWUgdGhvdWdodHMgYWJvdXQgaG93IHRvIHZhbGlkYXRlIGl0LgoKSSBzZWUgdGhlIG1vZGlmaWVkIGZpbGVzOiBgYnBmX2ppdC5oYCwgYGJwZl9qaXRfY29tcDY0LmNgLCBgYnBmX2ppdF9jb3JlLmNgLCBhbmQgc29tZSBCUEYgc2VsZnRlc3RzLiBUaGF0JiMzOTtzIGEgZ29vZCBzaWduLCBzZWxmdGVzdHMgYXJlIGNydWNpYWwgZm9yIHRoaXMga2luZCBvZiBsb3ctbGV2ZWwgY2hhbmdlLiBEZWZpbml0ZWx5IG5lZWQgdG8gcnVuIHRob3NlIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgdGVzdHMgd2UgaGF2ZS4gRnV6emluZyBpcyBhIG11c3Qg4oCTIHRoaXMgaXMgYSBwcmltZSB0YXJnZXQgZm9yIHBvdGVudGlhbCBleHBsb2l0cy4KCkxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUuIGBicGZfaml0X2NvbXA2NC5jYCBsb29rcyBpbnRlcmVzdGluZy4gVGhlIGtleSBmdW5jdGlvbnMgSSYjMzk7bGwgZXhhbWluZSBhcmUgYGJwZl9qaXRfZW1pdF9pbnNuYCwgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgLCBhbmQgdGhlIG5ldyBgYnBmX2ppdF9zdXBwb3J0c19zdGFja19hcmdzYC4gVGhvc2Ugc2hvdWxkIGlsbHVtaW5hdGUgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHRoZSBzdGFjayBvcGVyYXRpb25zIGFuZCBhcmd1bWVudCBwYXNzaW5nLgoKTm93LCBpbiBgYnBmX2ppdF9jb3JlLmNgLCBJIHNlZSBgYnBmX2ludF9qaXRfY29tcGlsZWAuIFdhaXQgYSBtaW51dGUuLi4gdGhhdCYjMzk7cyBhbiAqZW50cnkgcG9pbnQqIGZvciB0aGUgSklUIGNvbXBpbGVyLCBhIGNyaXRpY2FsIEFQSSBmdW5jdGlvbi4gVGhhdCYjMzk7cyBhICptYWpvciogZm9jdXMgZm9yIHRlc3RpbmcuIFdlIG5lZWQgdG8gbWV0aWN1bG91c2x5IGFuYWx5emUgaG93IHN0YWNrIGFyZ3VtZW50cyBhcmUgaGFuZGxlZCBoZXJlLCBlc3BlY2lhbGx5IGFyb3VuZCBhbnkgcG90ZW50aWFsIGJvdW5kYXJ5IGNvbmRpdGlvbnMgb3IgZXJyb3IgaGFuZGxpbmcuCgpgYnBmX2ppdF9lbWl0X2luc25gIGFsc28ganVtcHMgb3V0OyBJIHNob3VsZCBjaGVjayBpZiBpdCYjMzk7cyBleHRlcm5hbCBvciBzdGF0aWMsIGFuZCB3aGV0aGVyIGl0JiMzOTtzIGNhbGxlZCBmcm9tIG90aGVyIHBsYWNlcyBiZXNpZGVzIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgaG93LiBXZSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIHBhcnRzIG9mIHRoZSBwYXRjaCBoYXZlIGV4dGVybmFsIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L25ldC9icGZfaml0Lmg9MTMyNz12b2lkIGJwZl9qaXRfYnVpbGRfZXBpbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpO1xuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oLTEzMjgtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0Lmg6MTMyOTppbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaC0xMzMwLVx0XHQgICAgICBib29sIGV4dHJhX3Bhc3MpO1xuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDMyLmM9OTkyPXN0YXRpYyB2b2lkIGVtaXRfemV4dDY0KGNvbnN0IHM4ICpkc3QsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTAwMS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTAwMjppbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTAwMy1cdFx0ICAgICAgYm9vbCBleHRyYV9wYXNzKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MTMyND1pbnQgYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICpyb19pbWFnZSxcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNjAtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEzNjE6aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNjItXHRcdCAgICAgIGJvb2wgZXh0cmFfcGFzcylcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0xOT1zdGF0aWMgaW50IGJ1aWxkX2JvZHkoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgZXh0cmFfcGFzcywgaW50ICpvZmZzZXQpXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMjctXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoyODpcdFx0cmV0ID0gYnBmX2ppdF9lbWl0X2luc24oaW5zbiwgY3R4LCBleHRyYV9wYXNzKTtcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTI5LVx0XHRpZiAocmV0IFx1MDAzZSAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwNjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEJQRiBKSVQgQ29tcGlsYXRpb24gVGhvdWdodHMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIEJQRiBKSVQgY29tcGlsYXRpb24gZmxvdy4gVGhlIGZ1bmN0aW9uIGBicGZfaml0X2VtaXRfaW5zbmAgaXNuJiMzOTt0IHN0YXRpYywgaXQmIzM5O3MgZGVjbGFyZWQgaW4gYGJwZl9qaXQuaGAuIFRoYXQmIzM5O3MgZ29vZCwgaXQmIzM5O3MgdmlzaWJsZS4gQnV0IHRoZSBjb2RlIGZsb3cgaXMgaW50ZXJlc3Rpbmc6IEkgc2VlIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYGJ1aWxkX2JvZHlgLCBhbmQgYGJ1aWxkX2JvZHlgIGlzLCBpbiB0dXJuLCBjYWxsZWQgZnJvbSBgYnBmX2ludF9qaXRfY29tcGlsZWAuICBgYnBmX2ludF9qaXRfY29tcGlsZWAgc2VlbXMgdG8gYmUgdGhlIGNlbnRyYWwgZW50cnkgcG9pbnQgaGVyZSwgdGhlIGJpZyBrYWh1bmEuCgpSaWdodCwgc28gdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29tcGlsYXRpb24gcmVhbGx5IGtpY2tzIG9mZi4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgaW50byBgYnBmX2ludF9qaXRfY29tcGlsZWAgYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCB0aGUgY29yZS4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0zOT1ib29sIGJwZl9qaXRfbmVlZHNfemV4dCh2b2lkKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTQzLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6NDQ6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTQ1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTEwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQlBGIEpJVCBDb21waWxhdGlvbiBDb25maWd1cmF0aW9uIG9uIFJJU0MtVioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IEJQRiBKSVQgY29tcGlsYXRpb24gd29ya3Mgb24gUklTQy1WLiBNeSBnby10byBpcyBhbHdheXMgdGhlIGBicGZfaW50X2ppdF9jb21waWxlYCBmdW5jdGlvbjsgdGhhdCYjMzk7cyB0aGUgc3RhbmRhcmQgZW50cnkgcG9pbnQuIE5vdywgd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgd2UgdGFsa2luZyBhYm91dCBoZXJlPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGVuYWJsZWQuIGBDT05GSUdfQlBGX0pJVGAgaXMgdGhlIG9idmlvdXMgb25lLCBhbmQgc2luY2Ugd2UmIzM5O3JlIG9uIFJJU0MtViwgYENPTkZJR19SSVNDVmAgaXMgY2VydGFpbmx5IHJlbGV2YW50LiBXaGVyZSBjYW4gSSBmaW5kIHRoZSBkZXRhaWxzIG9uIHRoZSBpbnRlcmFjdGlvbiBvZiB0aGVzZSBjb25maWd1cmF0aW9ucz8gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtjb25maWcgYW5kIE1ha2VmaWxlcy4gSSYjMzk7bGwgc3RhcnQgd2l0aCBgYXJjaC9yaXNjdi9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBvcHRpb25zIGRlZmluZWQsIGFuZCBpZiB0aGF0IGRvZXNuJiMzOTt0IGhvbGQgdGhlIGluZm8sIEkmIzM5O2xsIG1vdmUgb24gdG8gYGFyY2gvcmlzY3YvbmV0L01ha2VmaWxlYCAtIHNvbWV0aW1lcyB0aG9zZSBuZXQtc3BlY2lmaWMgZGV0YWlscyBoYXZlIG1vcmUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTttIGFmdGVyIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBCUEYsIEpJVCwgYW5kIFJJU0MtVi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X2NvbXA2NC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L01ha2VmaWxlPTU9aWZlcSAoJChDT05GSUdfQVJDSF9SVjY0SSkseSlcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlOjY6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDY0Lm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTctZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NDIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcywgZGlzdGlsbGVkIGludG8gYSBmaXJzdC1wZXJzb24gYWNjb3VudCBhcyByZXF1ZXN0ZWQuCgoqKkJQRiBKSVQgQ29tcGlsYXRpb24gRXhwbG9yYXRpb24qKgoKQWxyaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIHNlZSB0aGF0IHdlIG5lZWQgYENPTkZJR19CUEZfSklUYCBlbmFibGVkLiBUaGF0JiMzOTtzIHRoZSBmb3VuZGF0aW9uLiBOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIEJQRiBKSVQgY29tcGlsYXRpb24gcHJvY2VzcyBpdHNlbGYsIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBicGZfaW50X2ppdF9jb21waWxlYC4gSXQmIzM5O3MgYSBwcmV0dHkgZ2VuZXJpYyBuYW1lLCB3aGljaCBzdWdnZXN0cyBpdOKAmXMgbGlrZWx5IGEgY3JpdGljYWwgaG90LXBhdGggZnVuY3Rpb24gZm9yIEJQRiBKSVQgZXhlY3V0aW9uLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHN1cHBvcnRpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHdvcnRoIGludmVzdGlnYXRpbmcgYWxvbmdzaWRlIGl0PyBMZXQgbWUgdGFrZSBhIG1vbWVudCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgdGhpbmsgdGhyb3VnaCB0aGUgcHJvY2Vzcy4gQWgsIHllcywgdGhlcmUgYXJlIGEgZmV3IG90aGVyIG9uZXMgdGhhdCBpbW1lZGlhdGVseSBjb21lIHRvIG1pbmQgLSBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAgYW5kIGBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3NgLi4uCgpTaW5jZSBJIGFtIHRoaW5raW5nIGFib3V0IGZ1bmN0aW9uIHN1cHBvcnQsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAgbmV4dC4gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gYmVnaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfYnVpbGRfcHJvbG9ndWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oPTEyOTU9c3RhdGljIGlubGluZSB2b2lkIGVtaXRfY21weGNoZyh1OCByZCwgdTggcnMsIHU4IHIwLCBib29sIGlzNjQsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaC0xMzI1LVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oOjEzMjY6dm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpO1xuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oLTEzMjctdm9pZCBicGZfaml0X2J1aWxkX2VwaWxvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXAzMi5jPTEwMDI9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wMzIuYy0xMzgxLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wMzIuYzoxMzgyOnZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wMzIuYy0xMzgzLXtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEzNjE9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMDc4LVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoyMDc5OnZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMDgwLXtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz00ND1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTk0LVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6OTU6XHRcdGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoY3R4LCBicGZfaXNfc3VicHJvZyhwcm9nKSk7XG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy05Ni1cdFx0Y3R4LVx1MDAzZXByb2xvZ3VlX2xlbiA9IGN0eC1cdTAwM2VuaW5zbnM7XG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTUwLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6MTUxOlx0YnBmX2ppdF9idWlsZF9wcm9sb2d1ZShjdHgsIGJwZl9pc19zdWJwcm9nKHByb2cpKTtcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTE1Mi1cdGlmIChidWlsZF9ib2R5KGN0eCwgZXh0cmFfcGFzcywgTlVMTCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDU5CgkJCQkJCQlvdXRwdXQ6IDEyNAoJCQkJCQkJdGhvdWdodHM6IDYyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSSVNDLVYgQlBGIEpJVCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgZm9jdXNlZCBvbiBicmluZ2luZyBzdGFjayBhcmd1bWVudCBzdXBwb3J0IHRvIHRoZSBSSVNDLVYgNjQtYml0IEJQRiBKSVQgY29tcGlsZXIuIEkgc2VlIHRoYXQgYGJwZl9qaXRfZW1pdF9pbnNuYCBhbmQgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBiZWluZyBtb2RpZmllZC4gVGhleSYjMzk7cmUgZGVmaW5pdGVseSBnb29kIHRhcmdldHMgdG8gc3RhcnQgd2l0aCwgZXNwZWNpYWxseSBzaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlbSB0byBoYW5kbGUgYEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTGAsIGBCUEZfUkVHX1BBUkFNU2AgaW4gdGhlIGNvbnRleHQgb2YgYEJQRl9MRFhgIGFuZCBgQlBGX1NUWGAuIEkgbm90aWNlZCB0aGF0IGBicGZfaW50X2ppdF9jb21waWxlYCBhbHNvIGlzIGNoYW5nZWQuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCBpcyB0aGUgb25lIGFsbG9jYXRpbmcgc3BhY2UgZm9yIHN0YWNrIGFyZ3VtZW50cy4gQW5kIGBicGZfaW50X2ppdF9jb21waWxlYCBjYWxjdWxhdGVzIGBjdHgtJmd0O3N0YWNrX2FyZ19zaXplYC4gU2luY2UgYGJwZl9pbnRfaml0X2NvbXBpbGVgIHNlZW1zIHRvIGJlIHRoYXQgaG90IHBhdGggZW50cnkgZnVuY3Rpb24sIHRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIGluY2x1ZGUgdG9vLgoKVGhlIGNvZGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byB0aGUgUklTQy1WIHNwZWNpZmljIGNvZGUsIHNvIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYCBhbmQgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jYCBhcmUgd2hlcmUgdGhlIGFjdGlvbiBpcy4gSSB2ZXJpZmllZCB0aGF0IHRob3NlIGZ1bmN0aW9ucyBhcmUgbm90IHN0YXRpYywgd2hpY2ggbWVhbnMgdGhhdCB0aGV5IGFyZSBkaXJlY3RseSBjYWxsYWJsZS4KClRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSBpcyBgQlBGX0pJVGAsIHNpbmNlIHdlIGFyZSBkZWFsaW5nIHdpdGggSklULiBPZiBjb3Vyc2UsIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgcHJlcmVxdWlzaXRlLCBzbyBsZXQmIzM5O3MgbWFrZSBzdXJlIHRoYXQmIzM5O3MgaW5jbHVkZWQuCgpUaGVyZWZvcmUsIG15IHBsYW4gaXM6CgoqICAgKipXb3J0aEZ1enppbmc6IHRydWUqKiAtIERlZmluaXRlbHkgd29ydGggZnV6emluZywgdGhpcyBpcyBhbiBpbXBvcnRhbnQgYXJlYS4KKiAgICoqRm9jdXNTeW1ib2xzOiBbJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7LCAmIzM0O2JwZl9qaXRfYnVpbGRfcHJvbG9ndWUmIzM0OywgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDtdKiogLSBUaG9zZSBmdW5jdGlvbnMgYXJlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzLgoqICAgKipFbmFibGVDb25maWdzOiBbJiMzNDtCUEZfSklUJiMzNDssICYjMzQ7QlBGX1NZU0NBTEwmIzM0O10qKiAtIFRoZXNlIGFyZSB0aGUgcmVxdWlyZWQgY29uZmlncy4KKiAgICoqUmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEJQRiBzdGFjayBhcmd1bWVudHMgaW4gdGhlIFJJU0MtViA2NC1iaXQgQlBGIEpJVCBjb21waWxlciwgbW9kaWZ5aW5nIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIGJwZl9qaXRfZW1pdF9pbnNuLCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlLCBhbmQgYnBmX2ludF9qaXRfY29tcGlsZS4mIzM0OyoqIC0gVGhpcyBleHBsYWlucyBteSBzZWxlY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ppdF9lbWl0X2luc24mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9idWlsZF9wcm9sb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEJQRiBzdGFjayBhcmd1bWVudHMgaW4gdGhlIFJJU0MtViA2NC1iaXQgQlBGIEpJVCBjb21waWxlciwgbW9kaWZ5aW5nIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIGJwZl9qaXRfZW1pdF9pbnNuIGFuZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ppdF9lbWl0X2luc24mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9idWlsZF9wcm9sb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEJQRiBzdGFjayBhcmd1bWVudHMgaW4gdGhlIFJJU0MtViA2NC1iaXQgQlBGIEpJVCBjb21waWxlciwgbW9kaWZ5aW5nIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIGJwZl9qaXRfZW1pdF9pbnNuIGFuZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMTozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIDY0LWJpdCBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSB0cmFuc2xhdGlvbiBvZiBCUEYgaW5zdHJ1Y3Rpb25zIHRvIFJJU0MtViBtYWNoaW5lIGNvZGUsIHNwZWNpZmljYWxseSBoYW5kbGluZyBzdGFjayBvZmZzZXRzIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgbmV3IGtlcm5lbCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG8gdGhleSBhZGQgY29tcGxleCBDIGRhdGEgc3RydWN0dXJlcyBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gdGhlIGtlcm5lbCYjMzk7cyBDIGNvZGUuIEFueSBidWdzIGluIHRoZSBKSVQgY29tcGlsZXIgd291bGQgcmVzdWx0IGluIGluY29ycmVjdCBjb2RlIGdlbmVyYXRpb24gKGUuZy4sIGNyYXNoZXMsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIHJlZ2lzdGVyIGNvcnJ1cHRpb24pLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEJQRiBzZWxmdGVzdHMgYW5kIHN0YW5kYXJkIEtBU0FOLiBGdXJ0aGVybW9yZSwgS01TQU4gaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgb24gdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUsIG1ha2luZyBhIEtNU0FOIHJ1biBpbmFwcGxpY2FibGUgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4YzAzYjUzMWNkYzYyZDdiZjMxYTBjMjExOTFkMGQ0ZTQ2MjA1ZGM4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMDE6MzY6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmggYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgKaW5kZXggNDE5YjlkNzk1ZjJhNy4uOWViNGUxNDk1MDVkNSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaApAQCAtODIsNiAmIzQzOzgyLDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBzdGFja19zaXplOwogCWludCB0Y2Nfb2Zmc2V0OwomIzQzOwl1MTYgc3RhY2tfYXJnX3NpemU7CiAJdTY0IGFyZW5hX3ZtX3N0YXJ0OwogCXU2NCB1c2VyX3ZtX3N0YXJ0OwogfTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCmluZGV4IDZiOTk3MmIwN2MxYjAuLjU4Y2IzZTVmZjZiNGQgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYwpAQCAtMTgxNSwxOCAmIzQzOzE4MTUsNDMgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAKIAkJaWYgKGluc24tJmd0O3NyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMKSB7CiAJCQljb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKmZtOwotCQkJaW50IGlkeDsKJiM0MzsJCQlpbnQgaWR4LCBuYXJnczsKIAogCQkJZm0gPSBicGZfaml0X2ZpbmRfa2Z1bmNfbW9kZWwoY3R4LSZndDtwcm9nLCBpbnNuKTsKIAkJCWlmICghZm0pCiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAKLQkJCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgZm0tJmd0O25yX2FyZ3M7IGlkeCYjNDM7JiM0MzspIHsKJiM0MzsJCQluYXJncyA9IG1pbl90KGludCwgZm0tJmd0O25yX2FyZ3MsIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7CiYjNDM7CQkJZm9yIChpZHggPSAwOyBpZHggJmx0OyBuYXJnczsgaWR4JiM0MzsmIzQzOykgewogCQkJCXU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICYjNDM7IGlkeCwgY3R4KTsKIAogCQkJCWlmIChmbS0mZ3Q7YXJnX3NpemVbaWR4XSA9PSBzaXplb2YoaW50KSkKIAkJCQkJZW1pdF9zZXh0dyhyZWcsIHJlZywgY3R4KTsKIAkJCX0KJiM0MzsKJiM0MzsJCQkvKiBCUEYgc3RhY2sgYXJncyAtJmd0OyBSSVNDLVYgQUJJOiBhcmdzIDYtOCBpbiBBNS1BNywgOSYjNDM7IGF0IFNQJiM0MzswICovCiYjNDM7CQkJaWYgKGZtLSZndDtucl9hcmdzICZndDsgTUFYX0JQRl9GVU5DX1JFR19BUkdTKSB7CiYjNDM7CQkJCWludCBuX3N0YWNrID0gZm0tJmd0O25yX2FyZ3MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1M7CiYjNDM7CQkJCWludCBuX3JlZyA9IG1pbl90KGludCwgbl9zdGFjaywKJiM0MzsJCQkJCQkgIFJWX01BWF9SRUdfQVJHUyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7CiYjNDM7CiYjNDM7CQkJCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgbl9yZWc7IGlkeCYjNDM7JiM0MzspIHsKJiM0MzsJCQkJCWludCBzeiA9IGZtLSZndDthcmdfc2l6ZVtNQVhfQlBGX0ZVTkNfUkVHX0FSR1MgJiM0MzsgaWR4XTsKJiM0MzsKJiM0MzsJCQkJCWVtaXRfbGQoUlZfUkVHX0E1ICYjNDM7IGlkeCwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpOwomIzQzOwkJCQkJaWYgKHN6ID09IHNpemVvZihpbnQpKQomIzQzOwkJCQkJCWVtaXRfc2V4dHcoUlZfUkVHX0E1ICYjNDM7IGlkeCwgUlZfUkVHX0E1ICYjNDM7IGlkeCwgY3R4KTsKJiM0MzsJCQkJfQomIzQzOwomIzQzOwkJCQlmb3IgKGlkeCA9IG5fcmVnOyBpZHggJmx0OyBuX3N0YWNrOyBpZHgmIzQzOyYjNDM7KSB7CiYjNDM7CQkJCQlpbnQgc3ogPSBmbS0mZ3Q7YXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICYjNDM7IGlkeF07CiYjNDM7CiYjNDM7CQkJCQllbWl0X2xkKFJWX1JFR19UMSwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpOwomIzQzOwkJCQkJaWYgKHN6ID09IHNpemVvZihpbnQpKQomIzQzOwkJCQkJCWVtaXRfc2V4dHcoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIGN0eCk7CiYjNDM7CQkJCQllbWl0X3NkKFJWX1JFR19TUCwgKGlkeCAtIG5fcmVnKSAqIDgsIFJWX1JFR19UMSwgY3R4KTsKJiM0MzsJCQkJfQomIzQzOwkJCX0KIAkJfQogCiAJCS8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqLwpAQCAtMTg5MSw2ICYjNDM7MTkxNiwyMSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAljYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0g6CiAJY2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9XOgogCWNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfRFc6CiYjNDM7CQlpZiAoaW5zbi0mZ3Q7c3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykgewomIzQzOwkJCWludCBpZHggPSBvZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJCQlpZiAoaXNfMTJiX2ludChpZHggKiA4KSkgewomIzQzOwkJCQllbWl0X2xkeF9pbnNuKHJkLCBpZHggKiA4LCBSVl9SRUdfRlAsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7CiYjNDM7CQkJCWVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfRlAsIGN0eCk7CiYjNDM7CQkJCWVtaXRfbGR4X2luc24ocmQsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpOwomIzQzOwkJCX0KJiM0MzsJCQlpZiAoQlBGX1NJWkUoY29kZSkgIT0gQlBGX0RXICZhbXA7JmFtcDsgaW5zbl9pc196ZXh0KCZhbXA7aW5zblsxXSkpCiYjNDM7CQkJCXJldHVybiAxOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwkJZmFsbHRocm91Z2g7CiAJY2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9COgogCWNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfSDoKIAljYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX1c6CkBAIC0xOTM4LDYgJiM0MzsxOTc4LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCWNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9IOgogCWNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9XOgogCWNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzoKJiM0MzsJCWlmIChpbnNuLSZndDtkc3RfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7CiYjNDM7CQkJaW50IGlkeCA9IC1vZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJCQllbWl0X2ltbShSVl9SRUdfVDEsIGltbSwgY3R4KTsKJiM0MzsJCQlpZiAoaXNfMTJiX2ludChpZHggKiA4KSkgewomIzQzOwkJCQllbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0X2ltbShSVl9SRUdfVDIsIGlkeCAqIDgsIGN0eCk7CiYjNDM7CQkJCWVtaXRfYWRkKFJWX1JFR19UMiwgUlZfUkVHX1NQLCBSVl9SRUdfVDIsIGN0eCk7CiYjNDM7CQkJCWVtaXRfc3R4X2luc24oUlZfUkVHX1QyLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwomIzQzOwkJCX0KJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsJCWZhbGx0aHJvdWdoOwogCS8qIFNUIHwgUFJPQkVfTUVNMzI6ICooc2l6ZSAqKShkc3QgJiM0MzsgUlZfUkVHX0FSRU5BICYjNDM7IG9mZikgPSBpbW0gKi8KIAljYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COgogCWNhc2UgQlBGX1NUIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0g6CkBAIC0xOTYwLDYgJiM0MzsyMDE0LDE5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCWNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfSDoKIAljYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX1c6CiAJY2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9EVzoKJiM0MzsJCWlmIChpbnNuLSZndDtkc3RfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7CiYjNDM7CQkJaW50IGlkeCA9IC1vZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJCQlpZiAoaXNfMTJiX2ludChpZHggKiA4KSkgewomIzQzOwkJCQllbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTsKJiM0MzsJCQkJZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfU1AsIFJWX1JFR19UMSwgY3R4KTsKJiM0MzsJCQkJZW1pdF9zdHhfaW5zbihSVl9SRUdfVDEsIDAsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCQl9CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CQlmYWxsdGhyb3VnaDsKIAkvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCAmIzQzOyBSVl9SRUdfQVJFTkEgJiM0Mzsgb2ZmKSA9IHNyYyAqLwogCWNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COgogCWNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOgpAQCAtMjAzNiw2ICYjNDM7MjEwMyw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKQogCiAJc3RhY2tfYWRqdXN0ID0gcm91bmRfdXAoc3RhY2tfYWRqdXN0LCBTVEFDS19BTElHTik7CiAJc3RhY2tfYWRqdXN0ICYjNDM7PSBicGZfc3RhY2tfYWRqdXN0OwomIzQzOwlzdGFja19hZGp1c3QgJiM0Mzs9IGN0eC0mZ3Q7c3RhY2tfYXJnX3NpemU7CiAKIAlzdG9yZV9vZmZzZXQgPSBzdGFja19hZGp1c3QgLSA4OwogCkBAIC0yMDkzLDcgJiM0MzsyMTYxLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpCiAJZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7CiAKIAlpZiAoYnBmX3N0YWNrX2FkanVzdCkKLQkJZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBicGZfc3RhY2tfYWRqdXN0LCBjdHgpOwomIzQzOwkJZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBjdHgtJmd0O3N0YWNrX2FyZ19zaXplICYjNDM7IGJwZl9zdGFja19hZGp1c3QsIGN0eCk7CiAKIAljdHgtJmd0O3N0YWNrX3NpemUgPSBzdGFja19hZGp1c3Q7CiAKQEAgLTIxNzEsMyAmIzQzOzIyMzksOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZCkKIHsKIAlyZXR1cm4gdHJ1ZTsKIH0KJiM0MzsKJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKQomIzQzO3sKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwppbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwpAQCAtNzIsNiAmIzQzOzcyLDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJY3R4LSZndDthcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLSZndDthdXgtJmd0O2FyZW5hKTsKIAljdHgtJmd0O3VzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy0mZ3Q7YXV4LSZndDthcmVuYSk7CiAJY3R4LSZndDtwcm9nID0gcHJvZzsKJiM0MzsKJiM0MzsJY3R4LSZndDtzdGFja19hcmdfc2l6ZSA9IHJvdW5kX3VwKGJwZl9vdXRfc3RhY2tfYXJnX2NudChlbnYsIHByb2cpICoKJiM0MzsJCQkJICAgICAgIHNpemVvZih1NjQpLCBTVEFDS19BTElHTik7CiYjNDM7CiAJY3R4LSZndDtvZmZzZXQgPSBrdnphbGxvY19vYmpzKGludCwgcHJvZy0mZ3Q7bGVuKTsKIAlpZiAoIWN0eC0mZ3Q7b2Zmc2V0KQogCQlnb3RvIG91dF9vZmZzZXQ7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMKaW5kZXggOGQzOGFhZmU2NmEyOC4uYWIxMjM5N2E5YjUyYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYwpAQCAtNCw3ICYjNDM7NCw4IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCA5OWJjMTE1ZjgzODBhLi5hOTgwYTNhMzk5ZDNmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwpAQCAtMyw3ICYjNDM7Myw4IEBACiAjaW5jbHVkZSAmbHQ7dm1saW51eC5oJmd0OwogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZikKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYwppbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jCkBAIC0yMSw3ICYjNDM7MjEsOCBAQCBzdHJ1Y3QgewogCiBpbnQgdGltZXJfcmVzdWx0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jCmluZGV4IDM0NWYyZGEyZTM2MWIuLmI2YjFhOGFhN2Y0NGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMKQEAgLTYsNyAmIzQzOzYsOCBAQAogI2luY2x1ZGUgJiMzNDticGZfa2Z1bmNzLmgmIzM0OwogI2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMKaW5kZXggYmVlMmVlZWMwMjFkNy4uNmVlYmFmZTdmMmY4NyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jCkBAIC02LDcgJiM0Mzs2LDggQEAKICNpbmNsdWRlICYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jCmluZGV4IDdlMGNlNWRiMjhhMGQuLmU4Y2QyOTZmZTc2MzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMKQEAgLTEyLDcgJiM0MzsxMiw4IEBAIHN0cnVjdCB7CiAJX190eXBlKHZhbHVlLCBsb25nIGxvbmcpOwogfSBtYXBfaGFzaF84YiBTRUMoJiMzNDsubWFwcyYjMzQ7KTsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXAomIzQzOwkoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSAmYW1wOyZhbXA7IF9fcmlzY3ZfeGxlbiA9PSA2NCkpICZhbXA7JmFtcDsgXAogCWRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVCkKIAogX19ub2lubGluZSBfX3VzZWQKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCBjOWZlNDg1N2RhM2Y1Li41NjJlODMxOWZmYzIyIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jCkBAIC01LDcgJiM0Mzs1LDggQEAKICNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIF9fbm9pbmxpbmUgX191c2VkIF9fbmFrZWQKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2OTkKCQkJCQkJCW91dHB1dDogMTg2CgkJCQkJCQl0aG91Z2h0czogODI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vIEtNU0FOIE5lZWRlZCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBvcHRpbWl6aW5nIHRoZSBSSVNDLVYgQlBGIEpJVCBjb21waWxlci4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgc3RhY2sgYXJndW1lbnQgc3VwcG9ydCBmb3IgQlBGIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBsb3Qgb2YgYXJndW1lbnRzIOKAkyBtb3JlIHRoYW4gdGhlIHJlZ2lzdGVyIGNvdW50IGFsbG93cyDigJMgYnkgbW9kaWZ5aW5nIHRoZSBjb2RlIGdlbmVyYXRpb24gdG8gaGFuZGxlIGxvYWRpbmcgYW5kIHN0b3JpbmcgdGhlbSBvbiB0aGUgc3RhY2suIE15IGluaXRpYWwgY29uY2VybiB3YXMgYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUsIGEgY2xhc3NpYyBpc3N1ZS4gQnV0IGFmdGVyIGRpZ2dpbmcgaW4sIEkmIzM5O20gcHJldHR5IGNvbmZpZGVudCB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZSBoZXJlLgoKVGhpcyBwYXRjaCBpcyAqc29sZWx5KiBjb25jZXJuZWQgd2l0aCB0aGUgSklUIGNvbXBpbGVyLCB3aGljaCB0cmFuc2xhdGVzIEJQRiBpbnN0cnVjdGlvbnMgaW50byBSSVNDLVYgbWFjaGluZSBjb2RlLiBBbnkgYnVncyBpbnRyb2R1Y2VkIGhlcmUgd291bGQgbWFuaWZlc3QgYXMgZmxhd2VkIG1hY2hpbmUgY29kZSwgbGVhZGluZyB0byBwb3RlbnRpYWxseSBpbmNvcnJlY3QgYmVoYXZpb3IsIGNyYXNoZXMsIG9yIG1lbW9yeSBjb3JydXB0aW9uLiBCUEYgc2VsZnRlc3RzIGFyZSBhIHNvbGlkIGRlZmVuc2UgaW4gdGhpcyBjYXNlLCBhbmQgdGhlIHVzdWFsIEtBU0FOIG1lY2hhbmlzbXMgd291bGQgbGlrZWx5IGNhdGNoIGFueSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIHNpbWlsYXIgaXNzdWVzLiBUaGUga2V5IHRoaW5nIGlzIHRoYXQgdGhlICpwYXRjaCBpdHNlbGYqIGlzbiYjMzk7dCBpbnRyb2R1Y2luZyB1bmluaXRpYWxpemVkICprZXJuZWwqIG1lbW9yeSBvciBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgYmUgc3VzY2VwdGlibGUgdG8gS01TQU4mIzM5O3MgaW5zdHJ1bWVudGF0aW9uIG9mIEMgY29kZS4KCkxldCBtZSBjbGFyaWZ5OiBLTVNBTiBpc24mIzM5O3QgZXZlbiByZWxldmFudCBoZXJlLiBLTVNBTiBpcyBmb3IgeDg2XzY0IGFuZCBzMzkweCwgYW5kIHBvdGVudGlhbGx5IGFybTY0LCBub3QgUklTQy1WLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIFJJU0MtVi1zcGVjaWZpYyBjaGFuZ2UuIEV2ZW4gaWYgS01TQU4gKndlcmUqIGF2YWlsYWJsZSwgaXQgaW5zdHJ1bWVudHMgdGhlIEMgY29kZS4gQSBKSVQgc3RhY2sgYXJndW1lbnQgYnVnIGlzIGEgKmxvZ2ljKiBidWcgaW4gY29kZSBnZW5lcmF0aW9uLCBpdCBtaWdodCByZXN1bHQgaW4gdGhlIEJQRiBwcm9ncmFtIGFjY2Vzc2luZyB1bmluaXRpYWxpemVkIHN0YWNrIG1lbW9yeSwgYnV0IEtNU0FOIGRvZXNuJiMzOTt0IChhcyBmYXIgYXMgSSBrbm93KSBpbnN0cnVtZW50IEJQRiBKSVQgY29kZSBpbiB0aGlzIHdheSwgZXNwZWNpYWxseSBzaW5jZSB0aGlzIGlzIFJJU0MtViBzcGVjaWZpYy4gVGhlIEJQRiBLTVNBTiBpbnN0cnVtZW50YXRpb24gaXMgYSBzZXBhcmF0ZSB0aGluZy4KClRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSB3ZW50IGJhY2sgYW5kIHJlLWV4YW1pbmVkIHRoZSBjb2RlLiBUaGUgYGN0eGAgdmFyaWFibGUsIHVzZWQgdGhyb3VnaG91dCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLCBnZXRzIHplcm9lZCB3aGVuIGFsbG9jYXRlZCB2aWEgYGt2emFsbG9jX29ianNgLiBUaGUgY2hhbmdlcyBhZmZlY3QgdGhlIGluc3RydWN0aW9uIGVtaXNzaW9uIGxvZ2ljIChgYnBmX2ppdF9lbWl0X2luc25gKSBhbmQgcHJvbG9ndWUgY29uc3RydWN0aW9uIChgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWApIGJ1dCBkb24mIzM5O3QgaW50cm9kdWNlIGNvbXBsZXggbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBjb3BpZWQgdG8gdXNlcnNwYWNlIG9yIGFueXRoaW5nIHRoYXQgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgQyB2YXJpYWJsZXMuIFNvIHRoZSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQgaXMgcHJhY3RpY2FsbHkgbmlsLgoKVGhlcmVmb3JlLCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gVGhpcyBwYXRjaCBpcyBhIEpJVCBjb21waWxhdGlvbiBvcHRpbWl6YXRpb24gYW5kIGRvZXNuJiMzOTt0IHdhcnJhbnQgYSBLTVNBTiBydW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIDY0LWJpdCBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSB0cmFuc2xhdGlvbiBvZiBCUEYgaW5zdHJ1Y3Rpb25zIHRvIFJJU0MtViBtYWNoaW5lIGNvZGUsIHNwZWNpZmljYWxseSBoYW5kbGluZyBzdGFjayBvZmZzZXRzIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgbmV3IGtlcm5lbCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG8gdGhleSBhZGQgY29tcGxleCBDIGRhdGEgc3RydWN0dXJlcyBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gdGhlIGtlcm5lbCYjMzk7cyBDIGNvZGUuIEFueSBidWdzIGluIHRoZSBKSVQgY29tcGlsZXIgd291bGQgcmVzdWx0IGluIGluY29ycmVjdCBjb2RlIGdlbmVyYXRpb24gKGUuZy4sIGNyYXNoZXMsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIHJlZ2lzdGVyIGNvcnJ1cHRpb24pLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEJQRiBzZWxmdGVzdHMgYW5kIHN0YW5kYXJkIEtBU0FOLiBGdXJ0aGVybW9yZSwgS01TQU4gaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgb24gdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUsIG1ha2luZyBhIEtNU0FOIHJ1biBpbmFwcGxpY2FibGUgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyBCUEYgc3RhY2sgYXJndW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBSSVNDLVYgNjQtYml0IEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIHRyYW5zbGF0aW9uIG9mIEJQRiBpbnN0cnVjdGlvbnMgdG8gUklTQy1WIG1hY2hpbmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHN0YWNrIG9mZnNldHMgZm9yIGZ1bmN0aW9uIGFyZ3VtZW50cy4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBuZXcga2VybmVsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkbyB0aGV5IGFkZCBjb21wbGV4IEMgZGF0YSBzdHJ1Y3R1cmVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGUga2VybmVsJiMzOTtzIEMgY29kZS4gQW55IGJ1Z3MgaW4gdGhlIEpJVCBjb21waWxlciB3b3VsZCByZXN1bHQgaW4gaW5jb3JyZWN0IGNvZGUgZ2VuZXJhdGlvbiAoZS5nLiwgY3Jhc2hlcywgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgcmVnaXN0ZXIgY29ycnVwdGlvbiksIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgQlBGIHNlbGZ0ZXN0cyBhbmQgc3RhbmRhcmQgS0FTQU4uIEZ1cnRoZXJtb3JlLCBLTVNBTiBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBvbiB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZSwgbWFraW5nIGEgS01TQU4gcnVuIGluYXBwbGljYWJsZSBmb3IgdGhpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgcGF0Y2guJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjMwLjM5NTE4NTczNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NjM2MDAxMjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgICBcImJwZl9qaXRfYnVpbGRfcHJvbG9ndWVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIDY0LWJpdCBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSB0cmFuc2xhdGlvbiBvZiBCUEYgaW5zdHJ1Y3Rpb25zIHRvIFJJU0MtViBtYWNoaW5lIGNvZGUsIHNwZWNpZmljYWxseSBoYW5kbGluZyBzdGFjayBvZmZzZXRzIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgbmV3IGtlcm5lbCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG8gdGhleSBhZGQgY29tcGxleCBDIGRhdGEgc3RydWN0dXJlcyBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gdGhlIGtlcm5lbCdzIEMgY29kZS4gQW55IGJ1Z3MgaW4gdGhlIEpJVCBjb21waWxlciB3b3VsZCByZXN1bHQgaW4gaW5jb3JyZWN0IGNvZGUgZ2VuZXJhdGlvbiAoZS5nLiwgY3Jhc2hlcywgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgcmVnaXN0ZXIgY29ycnVwdGlvbiksIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgQlBGIHNlbGZ0ZXN0cyBhbmQgc3RhbmRhcmQgS0FTQU4uIEZ1cnRoZXJtb3JlLCBLTVNBTiBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBvbiB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZSwgbWFraW5nIGEgS01TQU4gcnVuIGluYXBwbGljYWJsZSBmb3IgdGhpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyBzdXBwb3J0IGZvciBCUEYgc3RhY2sgYXJndW1lbnRzIGluIHRoZSBSSVNDLVYgNjQtYml0IEJQRiBKSVQgY29tcGlsZXIsIG1vZGlmeWluZyBjb3JlIEpJVCBmdW5jdGlvbnMgbGlrZSBicGZfaml0X2VtaXRfaW5zbiBhbmQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDE6MzY6MzAuMzk1MTkyODA2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzYyMTUyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YzAzYjUzMWNkYzYyZDdiZjMxYTBjMjExOTFkMGQ0ZTQ2MjA1ZGM4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDE0IDAxOjM2OjI5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxcbmluZGV4IDQxOWI5ZDc5NWYyYTcuLjllYjRlMTQ5NTA1ZDUgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXFxuQEAgLTgyLDYgKzgyLDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHtcXG4gXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gXFx0aW50IHN0YWNrX3NpemU7XFxuIFxcdGludCB0Y2Nfb2Zmc2V0O1xcbitcXHR1MTYgc3RhY2tfYXJnX3NpemU7XFxuIFxcdHU2NCBhcmVuYV92bV9zdGFydDtcXG4gXFx0dTY0IHVzZXJfdm1fc3RhcnQ7XFxuIH07XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggNmI5OTcyYjA3YzFiMC4uNThjYjNlNWZmNmI0ZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbkBAIC0xODE1LDE4ICsxODE1LDQzIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbiBcXG4gXFx0XFx0aWYgKGluc24tXFx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMKSB7XFxuIFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqZm07XFxuLVxcdFxcdFxcdGludCBpZHg7XFxuK1xcdFxcdFxcdGludCBpZHgsIG5hcmdzO1xcbiBcXG4gXFx0XFx0XFx0Zm0gPSBicGZfaml0X2ZpbmRfa2Z1bmNfbW9kZWwoY3R4LVxcdTAwM2Vwcm9nLCBpbnNuKTtcXG4gXFx0XFx0XFx0aWYgKCFmbSlcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbi1cXHRcXHRcXHRmb3IgKGlkeCA9IDA7IGlkeCBcXHUwMDNjIGZtLVxcdTAwM2Vucl9hcmdzOyBpZHgrKykge1xcbitcXHRcXHRcXHRuYXJncyA9IG1pbl90KGludCwgZm0tXFx1MDAzZW5yX2FyZ3MsIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7XFxuK1xcdFxcdFxcdGZvciAoaWR4ID0gMDsgaWR4IFxcdTAwM2MgbmFyZ3M7IGlkeCsrKSB7XFxuIFxcdFxcdFxcdFxcdHU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICsgaWR4LCBjdHgpO1xcbiBcXG4gXFx0XFx0XFx0XFx0aWYgKGZtLVxcdTAwM2Vhcmdfc2l6ZVtpZHhdID09IHNpemVvZihpbnQpKVxcbiBcXHRcXHRcXHRcXHRcXHRlbWl0X3NleHR3KHJlZywgcmVnLCBjdHgpO1xcbiBcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHQvKiBCUEYgc3RhY2sgYXJncyAtXFx1MDAzZSBSSVNDLVYgQUJJOiBhcmdzIDYtOCBpbiBBNS1BNywgOSsgYXQgU1ArMCAqL1xcbitcXHRcXHRcXHRpZiAoZm0tXFx1MDAzZW5yX2FyZ3MgXFx1MDAzZSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpIHtcXG4rXFx0XFx0XFx0XFx0aW50IG5fc3RhY2sgPSBmbS1cXHUwMDNlbnJfYXJncyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUztcXG4rXFx0XFx0XFx0XFx0aW50IG5fcmVnID0gbWluX3QoaW50LCBuX3N0YWNrLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIFJWX01BWF9SRUdfQVJHUyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7XFxuK1xcbitcXHRcXHRcXHRcXHRmb3IgKGlkeCA9IDA7IGlkeCBcXHUwMDNjIG5fcmVnOyBpZHgrKykge1xcbitcXHRcXHRcXHRcXHRcXHRpbnQgc3ogPSBmbS1cXHUwMDNlYXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICsgaWR4XTtcXG4rXFxuK1xcdFxcdFxcdFxcdFxcdGVtaXRfbGQoUlZfUkVHX0E1ICsgaWR4LCBpZHggKiA4LCBSVl9SRUdfU1AsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdFxcdGlmIChzeiA9PSBzaXplb2YoaW50KSlcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ZW1pdF9zZXh0dyhSVl9SRUdfQTUgKyBpZHgsIFJWX1JFR19BNSArIGlkeCwgY3R4KTtcXG4rXFx0XFx0XFx0XFx0fVxcbitcXG4rXFx0XFx0XFx0XFx0Zm9yIChpZHggPSBuX3JlZzsgaWR4IFxcdTAwM2Mgbl9zdGFjazsgaWR4KyspIHtcXG4rXFx0XFx0XFx0XFx0XFx0aW50IHN6ID0gZm0tXFx1MDAzZWFyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyArIGlkeF07XFxuK1xcbitcXHRcXHRcXHRcXHRcXHRlbWl0X2xkKFJWX1JFR19UMSwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpO1xcbitcXHRcXHRcXHRcXHRcXHRpZiAoc3ogPT0gc2l6ZW9mKGludCkpXFxuK1xcdFxcdFxcdFxcdFxcdFxcdGVtaXRfc2V4dHcoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdFxcdGVtaXRfc2QoUlZfUkVHX1NQLCAoaWR4IC0gbl9yZWcpICogOCwgUlZfUkVHX1QxLCBjdHgpO1xcbitcXHRcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0LyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgYnBmMmJwZiBjYWxsICovXFxuQEAgLTE4OTEsNiArMTkxNiwyMSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9IOlxcbiBcXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX1c6XFxuIFxcdGNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfRFc6XFxuK1xcdFxcdGlmIChpbnNuLVxcdTAwM2VzcmNfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7XFxuK1xcdFxcdFxcdGludCBpZHggPSBvZmYgLyA4IC0gMTtcXG4rXFxuK1xcdFxcdFxcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XFxuK1xcdFxcdFxcdFxcdGVtaXRfbGR4X2luc24ocmQsIGlkeCAqIDgsIFJWX1JFR19GUCwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRlbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdGVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfRlAsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdGVtaXRfbGR4X2luc24ocmQsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdGlmIChCUEZfU0laRShjb2RlKSAhPSBCUEZfRFcgXFx1MDAyNlxcdTAwMjYgaW5zbl9pc196ZXh0KFxcdTAwMjZpbnNuWzFdKSlcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIDE7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdFxcdGZhbGx0aHJvdWdoO1xcbiBcXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0I6XFxuIFxcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfSDpcXG4gXFx0Y2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9XOlxcbkBAIC0xOTM4LDYgKzE5NzgsMjAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9IOlxcbiBcXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfVzpcXG4gXFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0RXOlxcbitcXHRcXHRpZiAoaW5zbi1cXHUwMDNlZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xcbitcXHRcXHRcXHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xcbitcXG4rXFx0XFx0XFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XFxuK1xcdFxcdFxcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XFxuK1xcdFxcdFxcdFxcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRlbWl0X2ltbShSVl9SRUdfVDIsIGlkeCAqIDgsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdGVtaXRfYWRkKFJWX1JFR19UMiwgUlZfUkVHX1NQLCBSVl9SRUdfVDIsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdGVtaXRfc3R4X2luc24oUlZfUkVHX1QyLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdFxcdGZhbGx0aHJvdWdoO1xcbiBcXHQvKiBTVCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICsgUlZfUkVHX0FSRU5BICsgb2ZmKSA9IGltbSAqL1xcbiBcXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxcbiBcXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOlxcbkBAIC0xOTYwLDYgKzIwMTQsMTkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfSDpcXG4gXFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9XOlxcbiBcXHRjYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX0RXOlxcbitcXHRcXHRpZiAoaW5zbi1cXHUwMDNlZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xcbitcXHRcXHRcXHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xcbitcXG4rXFx0XFx0XFx0aWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpZHggKiA4LCBjdHgpO1xcbitcXHRcXHRcXHRcXHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19TUCwgUlZfUkVHX1QxLCBjdHgpO1xcbitcXHRcXHRcXHRcXHRlbWl0X3N0eF9pbnNuKFJWX1JFR19UMSwgMCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdFxcdGZhbGx0aHJvdWdoO1xcbiBcXHQvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCArIFJWX1JFR19BUkVOQSArIG9mZikgPSBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6XFxuIFxcdGNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOlxcbkBAIC0yMDM2LDYgKzIxMDMsNyBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcXG4gXFxuIFxcdHN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgU1RBQ0tfQUxJR04pO1xcbiBcXHRzdGFja19hZGp1c3QgKz0gYnBmX3N0YWNrX2FkanVzdDtcXG4rXFx0c3RhY2tfYWRqdXN0ICs9IGN0eC1cXHUwMDNlc3RhY2tfYXJnX3NpemU7XFxuIFxcbiBcXHRzdG9yZV9vZmZzZXQgPSBzdGFja19hZGp1c3QgLSA4O1xcbiBcXG5AQCAtMjA5Myw3ICsyMTYxLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXFxuIFxcdGVtaXRfYWRkaShSVl9SRUdfRlAsIFJWX1JFR19TUCwgc3RhY2tfYWRqdXN0LCBjdHgpO1xcbiBcXG4gXFx0aWYgKGJwZl9zdGFja19hZGp1c3QpXFxuLVxcdFxcdGVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcXG4rXFx0XFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBjdHgtXFx1MDAzZXN0YWNrX2FyZ19zaXplICsgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcXG4gXFxuIFxcdGN0eC1cXHUwMDNlc3RhY2tfc2l6ZSA9IHN0YWNrX2FkanVzdDtcXG4gXFxuQEAgLTIxNzEsMyArMjIzOSw4IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKVxcbiB7XFxuIFxcdHJldHVybiB0cnVlO1xcbiB9XFxuK1xcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKVxcbit7XFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcXG5pbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcXG5AQCAtNzIsNiArNzIsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gXFx0Y3R4LVxcdTAwM2VhcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZWFyZW5hKTtcXG4gXFx0Y3R4LVxcdTAwM2V1c2VyX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF91c2VyX3ZtX3N0YXJ0KHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlYXJlbmEpO1xcbiBcXHRjdHgtXFx1MDAzZXByb2cgPSBwcm9nO1xcbitcXG4rXFx0Y3R4LVxcdTAwM2VzdGFja19hcmdfc2l6ZSA9IHJvdW5kX3VwKGJwZl9vdXRfc3RhY2tfYXJnX2NudChlbnYsIHByb2cpICpcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHNpemVvZih1NjQpLCBTVEFDS19BTElHTik7XFxuK1xcbiBcXHRjdHgtXFx1MDAzZW9mZnNldCA9IGt2emFsbG9jX29ianMoaW50LCBwcm9nLVxcdTAwM2VsZW4pO1xcbiBcXHRpZiAoIWN0eC1cXHUwMDNlb2Zmc2V0KVxcbiBcXHRcXHRnb3RvIG91dF9vZmZzZXQ7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xcbmluZGV4IDhkMzhhYWZlNjZhMjguLmFiMTIzOTdhOWI1MmEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuQEAgLTQsNyArNCw4IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXFxuaW5kZXggOTliYzExNWY4MzgwYS4uYTk4MGEzYTM5OWQzZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXFxuQEAgLTMsNyArMyw4IEBAXFxuICNpbmNsdWRlIFxcdTAwM2N2bWxpbnV4LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcXG5pbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xcbkBAIC0yMSw3ICsyMSw4IEBAIHN0cnVjdCB7XFxuIFxcbiBpbnQgdGltZXJfcmVzdWx0O1xcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxcXFxuK1xcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFxcdTAwMjZcXHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXFxuaW5kZXggMzQ1ZjJkYTJlMzYxYi4uYjZiMWE4YWE3ZjQ0YSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcXG5AQCAtNiw3ICs2LDggQEBcXG4gI2luY2x1ZGUgXFxcImJwZl9rZnVuY3MuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuaW5kZXggYmVlMmVlZWMwMjFkNy4uNmVlYmFmZTdmMmY4NyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xcbkBAIC02LDcgKzYsOCBAQFxcbiAjaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcXG5pbmRleCA3ZTBjZTVkYjI4YTBkLi5lOGNkMjk2ZmU3NjMxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xcbkBAIC0xMiw3ICsxMiw4IEBAIHN0cnVjdCB7XFxuIFxcdF9fdHlwZSh2YWx1ZSwgbG9uZyBsb25nKTtcXG4gfSBtYXBfaGFzaF84YiBTRUMoXFxcIi5tYXBzXFxcIik7XFxuIFxcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXFxcXG4rXFx0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXFx1MDAyNlxcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiBcXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXFxuIFxcbiBfX25vaW5saW5lIF9fdXNlZFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcXG5pbmRleCBjOWZlNDg1N2RhM2Y1Li41NjJlODMxOWZmYzIyIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xcbkBAIC01LDcgKzUsOCBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxcXFxuK1xcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFxcdTAwMjZcXHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gX19ub2lubGluZSBfX3VzZWQgX19uYWtlZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMTozNjozMC44NzIyMjkwODVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNjQ3ODQyODUwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9qaXRfZW1pdF9pbnNuXCIsXG4gICAgXCJicGZfaml0X2J1aWxkX3Byb2xvZ3VlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyBzdXBwb3J0IGZvciBCUEYgc3RhY2sgYXJndW1lbnRzIGluIHRoZSBSSVNDLVYgNjQtYml0IEJQRiBKSVQgY29tcGlsZXIsIG1vZGlmeWluZyBjb3JlIEpJVCBmdW5jdGlvbnMgbGlrZSBicGZfaml0X2VtaXRfaW5zbiBhbmQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGMwM2I1MzFjZGM2MmQ3YmYzMWEwYzIxMTkxZDBkNGU0NjIwNWRjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDAxOjM2OjI5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5pbmRleCA0MTliOWQ3OTVmMmE3Li45ZWI0ZTE0OTUwNWQ1IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbkBAIC04Miw2ICs4Miw3IEBAIHN0cnVjdCBydl9qaXRfY29udGV4dCB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0aW50IHN0YWNrX3NpemU7XG4gXHRpbnQgdGNjX29mZnNldDtcbitcdHUxNiBzdGFja19hcmdfc2l6ZTtcbiBcdHU2NCBhcmVuYV92bV9zdGFydDtcbiBcdHU2NCB1c2VyX3ZtX3N0YXJ0O1xuIH07XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IDZiOTk3MmIwN2MxYjAuLjU4Y2IzZTVmZjZiNGQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtMTgxNSwxOCArMTgxNSw0MyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcbiBcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwpIHtcbiBcdFx0XHRjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKmZtO1xuLVx0XHRcdGludCBpZHg7XG4rXHRcdFx0aW50IGlkeCwgbmFyZ3M7XG4gXG4gXHRcdFx0Zm0gPSBicGZfaml0X2ZpbmRfa2Z1bmNfbW9kZWwoY3R4LVx1MDAzZXByb2csIGluc24pO1xuIFx0XHRcdGlmICghZm0pXG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgZm0tXHUwMDNlbnJfYXJnczsgaWR4KyspIHtcbitcdFx0XHRuYXJncyA9IG1pbl90KGludCwgZm0tXHUwMDNlbnJfYXJncywgTUFYX0JQRl9GVU5DX1JFR19BUkdTKTtcbitcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgbmFyZ3M7IGlkeCsrKSB7XG4gXHRcdFx0XHR1OCByZWcgPSBicGZfdG9fcnZfcmVnKEJQRl9SRUdfMSArIGlkeCwgY3R4KTtcbiBcbiBcdFx0XHRcdGlmIChmbS1cdTAwM2Vhcmdfc2l6ZVtpZHhdID09IHNpemVvZihpbnQpKVxuIFx0XHRcdFx0XHRlbWl0X3NleHR3KHJlZywgcmVnLCBjdHgpO1xuIFx0XHRcdH1cbitcbitcdFx0XHQvKiBCUEYgc3RhY2sgYXJncyAtXHUwMDNlIFJJU0MtViBBQkk6IGFyZ3MgNi04IGluIEE1LUE3LCA5KyBhdCBTUCswICovXG4rXHRcdFx0aWYgKGZtLVx1MDAzZW5yX2FyZ3MgXHUwMDNlIE1BWF9CUEZfRlVOQ19SRUdfQVJHUykge1xuK1x0XHRcdFx0aW50IG5fc3RhY2sgPSBmbS1cdTAwM2Vucl9hcmdzIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTO1xuK1x0XHRcdFx0aW50IG5fcmVnID0gbWluX3QoaW50LCBuX3N0YWNrLFxuK1x0XHRcdFx0XHRcdCAgUlZfTUFYX1JFR19BUkdTIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTKTtcbitcbitcdFx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBuX3JlZzsgaWR4KyspIHtcbitcdFx0XHRcdFx0aW50IHN6ID0gZm0tXHUwMDNlYXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICsgaWR4XTtcbitcbitcdFx0XHRcdFx0ZW1pdF9sZChSVl9SRUdfQTUgKyBpZHgsIGlkeCAqIDgsIFJWX1JFR19TUCwgY3R4KTtcbitcdFx0XHRcdFx0aWYgKHN6ID09IHNpemVvZihpbnQpKVxuK1x0XHRcdFx0XHRcdGVtaXRfc2V4dHcoUlZfUkVHX0E1ICsgaWR4LCBSVl9SRUdfQTUgKyBpZHgsIGN0eCk7XG4rXHRcdFx0XHR9XG4rXG4rXHRcdFx0XHRmb3IgKGlkeCA9IG5fcmVnOyBpZHggXHUwMDNjIG5fc3RhY2s7IGlkeCsrKSB7XG4rXHRcdFx0XHRcdGludCBzeiA9IGZtLVx1MDAzZWFyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyArIGlkeF07XG4rXG4rXHRcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX1QxLCBpZHggKiA4LCBSVl9SRUdfU1AsIGN0eCk7XG4rXHRcdFx0XHRcdGlmIChzeiA9PSBzaXplb2YoaW50KSlcbitcdFx0XHRcdFx0XHRlbWl0X3NleHR3KFJWX1JFR19UMSwgUlZfUkVHX1QxLCBjdHgpO1xuK1x0XHRcdFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgKGlkeCAtIG5fcmVnKSAqIDgsIFJWX1JFR19UMSwgY3R4KTtcbitcdFx0XHRcdH1cbitcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdFx0LyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgYnBmMmJwZiBjYWxsICovXG5AQCAtMTg5MSw2ICsxOTE2LDIxIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9XOlxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9EVzpcbitcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuK1x0XHRcdGludCBpZHggPSBvZmYgLyA4IC0gMTtcbitcbitcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuK1x0XHRcdFx0ZW1pdF9sZHhfaW5zbihyZCwgaWR4ICogOCwgUlZfUkVHX0ZQLCBCUEZfU0laRShjb2RlKSwgZmFsc2UsIGN0eCk7XG4rXHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTtcbitcdFx0XHRcdGVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfRlAsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2xkeF9pbnNuKHJkLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTtcbitcdFx0XHR9XG4rXHRcdFx0aWYgKEJQRl9TSVpFKGNvZGUpICE9IEJQRl9EVyBcdTAwMjZcdTAwMjYgaW5zbl9pc196ZXh0KFx1MDAyNmluc25bMV0pKVxuK1x0XHRcdFx0cmV0dXJuIDE7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX1c6XG5AQCAtMTkzOCw2ICsxOTc4LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzpcbitcdFx0aWYgKGluc24tXHUwMDNlZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuK1x0XHRcdGludCBpZHggPSAtb2ZmIC8gOCAtIDE7XG4rXG4rXHRcdFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XG4rXHRcdFx0aWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHtcbitcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDIsIGlkeCAqIDgsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDIsIFJWX1JFR19TUCwgUlZfUkVHX1QyLCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfVDIsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4rXHRcdFx0fVxuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHRcdGZhbGx0aHJvdWdoO1xuIFx0LyogU1QgfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCArIFJWX1JFR19BUkVOQSArIG9mZikgPSBpbW0gKi9cbiBcdGNhc2UgQlBGX1NUIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOlxuQEAgLTE5NjAsNiArMjAxNCwxOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfRFc6XG4rXHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbitcdFx0XHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xuK1xuK1x0XHRcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XG4rXHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19TUCwgUlZfUkVHX1QxLCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfVDEsIDAsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbitcdFx0XHR9XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCArIFJWX1JFR19BUkVOQSArIG9mZikgPSBzcmMgKi9cbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0g6XG5AQCAtMjAzNiw2ICsyMTAzLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcbiBcdHN0YWNrX2FkanVzdCArPSBicGZfc3RhY2tfYWRqdXN0O1xuK1x0c3RhY2tfYWRqdXN0ICs9IGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZTtcbiBcbiBcdHN0b3JlX29mZnNldCA9IHN0YWNrX2FkanVzdCAtIDg7XG4gXG5AQCAtMjA5Myw3ICsyMTYxLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXHRlbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX2FkanVzdCwgY3R4KTtcbiBcbiBcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxuLVx0XHRlbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7XG4rXHRcdGVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgY3R4LVx1MDAzZXN0YWNrX2FyZ19zaXplICsgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcbiBcbiBcdGN0eC1cdTAwM2VzdGFja19zaXplID0gc3RhY2tfYWRqdXN0O1xuIFxuQEAgLTIxNzEsMyArMjIzOSw4IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKVxuIHtcbiBcdHJldHVybiB0cnVlO1xuIH1cbitcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKVxuK3tcbitcdHJldHVybiB0cnVlO1xuK31cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtNzIsNiArNzIsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhcmVuYSk7XG4gXHRjdHgtXHUwMDNldXNlcl92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhcmVuYSk7XG4gXHRjdHgtXHUwMDNlcHJvZyA9IHByb2c7XG4rXG4rXHRjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgPSByb3VuZF91cChicGZfb3V0X3N0YWNrX2FyZ19jbnQoZW52LCBwcm9nKSAqXG4rXHRcdFx0XHQgICAgICAgc2l6ZW9mKHU2NCksIFNUQUNLX0FMSUdOKTtcbitcbiBcdGN0eC1cdTAwM2VvZmZzZXQgPSBrdnphbGxvY19vYmpzKGludCwgcHJvZy1cdTAwM2VsZW4pO1xuIFx0aWYgKCFjdHgtXHUwMDNlb2Zmc2V0KVxuIFx0XHRnb3RvIG91dF9vZmZzZXQ7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5pbmRleCA4ZDM4YWFmZTY2YTI4Li5hYjEyMzk3YTliNTJhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC00LDcgKzQsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gbG9uZyBzdWJwcm9nX2NhbGxfbWVtX2tmdW5jKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMsIGxvbmcgZCwgbG9uZyBlLCBsb25nIHNpemUpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuaW5kZXggOTliYzExNWY4MzgwYS4uYTk4MGEzYTM5OWQzZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTMsNyArMyw4IEBAXG4gI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuaW5kZXggOTQ0ZTNiYjYwM2U3ZS4uM2U5ZWQzN2M1N2JiOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG5AQCAtMjEsNyArMjEsOCBAQCBzdHJ1Y3Qge1xuIFxuIGludCB0aW1lcl9yZXN1bHQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbitcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuaW5kZXggMzQ1ZjJkYTJlMzYxYi4uYjZiMWE4YWE3ZjQ0YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG5AQCAtNiw3ICs2LDggQEBcbiAjaW5jbHVkZSBcImJwZl9rZnVuY3MuaFwiXG4gI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuaW5kZXggYmVlMmVlZWMwMjFkNy4uNmVlYmFmZTdmMmY4NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC02LDcgKzYsOCBAQFxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiAjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gLyogRm9yY2Uga2Z1bmMgZXh0ZXJuIEJURiBnZW5lcmF0aW9uIGZvciBpbmxpbmUgYXNtIGNhbGwgYmVsb3cuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG5pbmRleCA3ZTBjZTVkYjI4YTBkLi5lOGNkMjk2ZmU3NjMxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbkBAIC0xMiw3ICsxMiw4IEBAIHN0cnVjdCB7XG4gXHRfX3R5cGUodmFsdWUsIGxvbmcgbG9uZyk7XG4gfSBtYXBfaGFzaF84YiBTRUMoXCIubWFwc1wiKTtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIF9fbm9pbmxpbmUgX191c2VkXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5pbmRleCBjOWZlNDg1N2RhM2Y1Li41NjJlODMxOWZmYzIyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbkBAIC01LDcgKzUsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIF9fbm9pbmxpbmUgX191c2VkIF9fbmFrZWRcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjMwLjg3MjIzMjM0NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NzcwNjcyNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUklTQy1WIEJQRiBKSVQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgc29tZSBwcmV0dHkgZnVuZGFtZW50YWwgY2hhbmdlcyB0byB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIg4oCTIG5hbWVseSwgYWRkaW5nIHN1cHBvcnQgZm9yIHN0YWNrIGFyZ3VtZW50cyBpbiBCUEYgZnVuY3Rpb25zLiBUaGlzIGlzIHNpZ25pZmljYW50LCBpdCB0b3VjaGVzIGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdHksIGFuZCBpbW1lZGlhdGVseSB0cmlnZ2VycyBzb21lIHRob3VnaHRzIGFib3V0IGhvdyB0byB2YWxpZGF0ZSBpdC5cblxuSSBzZWUgdGhlIG1vZGlmaWVkIGZpbGVzOiBgYnBmX2ppdC5oYCwgYGJwZl9qaXRfY29tcDY0LmNgLCBgYnBmX2ppdF9jb3JlLmNgLCBhbmQgc29tZSBCUEYgc2VsZnRlc3RzLiBUaGF0J3MgYSBnb29kIHNpZ24sIHNlbGZ0ZXN0cyBhcmUgY3J1Y2lhbCBmb3IgdGhpcyBraW5kIG9mIGxvdy1sZXZlbCBjaGFuZ2UuIERlZmluaXRlbHkgbmVlZCB0byBydW4gdGhvc2UgYW5kIGFueSBvdGhlciByZWxldmFudCB0ZXN0cyB3ZSBoYXZlLiBGdXp6aW5nIGlzIGEgbXVzdCDigJMgdGhpcyBpcyBhIHByaW1lIHRhcmdldCBmb3IgcG90ZW50aWFsIGV4cGxvaXRzLlxuXG5MZXQncyBkaXZlIGludG8gdGhlIGNvZGUuIGBicGZfaml0X2NvbXA2NC5jYCBsb29rcyBpbnRlcmVzdGluZy4gVGhlIGtleSBmdW5jdGlvbnMgSSdsbCBleGFtaW5lIGFyZSBgYnBmX2ppdF9lbWl0X2luc25gLCBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAsIGFuZCB0aGUgbmV3IGBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3NgLiBUaG9zZSBzaG91bGQgaWxsdW1pbmF0ZSBob3cgdGhleSdyZSBoYW5kbGluZyB0aGUgc3RhY2sgb3BlcmF0aW9ucyBhbmQgYXJndW1lbnQgcGFzc2luZy5cblxuTm93LCBpbiBgYnBmX2ppdF9jb3JlLmNgLCBJIHNlZSBgYnBmX2ludF9qaXRfY29tcGlsZWAuIFdhaXQgYSBtaW51dGUuLi4gdGhhdCdzIGFuICplbnRyeSBwb2ludCogZm9yIHRoZSBKSVQgY29tcGlsZXIsIGEgY3JpdGljYWwgQVBJIGZ1bmN0aW9uLiBUaGF0J3MgYSAqbWFqb3IqIGZvY3VzIGZvciB0ZXN0aW5nLiBXZSBuZWVkIHRvIG1ldGljdWxvdXNseSBhbmFseXplIGhvdyBzdGFjayBhcmd1bWVudHMgYXJlIGhhbmRsZWQgaGVyZSwgZXNwZWNpYWxseSBhcm91bmQgYW55IHBvdGVudGlhbCBib3VuZGFyeSBjb25kaXRpb25zIG9yIGVycm9yIGhhbmRsaW5nLlxuXG5gYnBmX2ppdF9lbWl0X2luc25gIGFsc28ganVtcHMgb3V0OyBJIHNob3VsZCBjaGVjayBpZiBpdCdzIGV4dGVybmFsIG9yIHN0YXRpYywgYW5kIHdoZXRoZXIgaXQncyBjYWxsZWQgZnJvbSBvdGhlciBwbGFjZXMgYmVzaWRlcyBgYnBmX2ludF9qaXRfY29tcGlsZWAgYW5kIGhvdy4gV2UnbGwgbmVlZCB0byBrbm93IHdoaWNoIHBhcnRzIG9mIHRoZSBwYXRjaCBoYXZlIGV4dGVybmFsIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcwMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjM2LjM0OTMwMTk0NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDcyMDYyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0X2VtaXRfaW5zblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oPTEzMjc9dm9pZCBicGZfaml0X2J1aWxkX2VwaWxvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KTtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgtMTMyOC1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0Lmg6MTMyOTppbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgtMTMzMC1cXHRcXHQgICAgICBib29sIGV4dHJhX3Bhc3MpO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wMzIuYz05OTI9c3RhdGljIHZvaWQgZW1pdF96ZXh0NjQoY29uc3QgczggKmRzdCwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXAzMi5jLTEwMDEtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wMzIuYzoxMDAyOmludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTAwMy1cXHRcXHQgICAgICBib29sIGV4dHJhX3Bhc3MpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEzMjQ9aW50IGFyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcm9faW1hZ2UsXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNjAtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMzYxOmludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTM2Mi1cXHRcXHQgICAgICBib29sIGV4dHJhX3Bhc3MpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0xOT1zdGF0aWMgaW50IGJ1aWxkX2JvZHkoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgZXh0cmFfcGFzcywgaW50ICpvZmZzZXQpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0yNy1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoyODpcXHRcXHRyZXQgPSBicGZfaml0X2VtaXRfaW5zbihpbnNuLCBjdHgsIGV4dHJhX3Bhc3MpO1xcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTI5LVxcdFxcdGlmIChyZXQgXFx1MDAzZSAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMTozNjozNi40MDQwMzMxMTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTAyMzg3NDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQlBGIEpJVCBDb21waWxhdGlvbiBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIEJQRiBKSVQgY29tcGlsYXRpb24gZmxvdy4gVGhlIGZ1bmN0aW9uIGBicGZfaml0X2VtaXRfaW5zbmAgaXNuJ3Qgc3RhdGljLCBpdCdzIGRlY2xhcmVkIGluIGBicGZfaml0LmhgLiBUaGF0J3MgZ29vZCwgaXQncyB2aXNpYmxlLiBCdXQgdGhlIGNvZGUgZmxvdyBpcyBpbnRlcmVzdGluZzogSSBzZWUgdGhhdCBpdCdzIGNhbGxlZCBmcm9tIGBidWlsZF9ib2R5YCwgYW5kIGBidWlsZF9ib2R5YCBpcywgaW4gdHVybiwgY2FsbGVkIGZyb20gYGJwZl9pbnRfaml0X2NvbXBpbGVgLiAgYGJwZl9pbnRfaml0X2NvbXBpbGVgIHNlZW1zIHRvIGJlIHRoZSBjZW50cmFsIGVudHJ5IHBvaW50IGhlcmUsIHRoZSBiaWcga2FodW5hLlxuXG5SaWdodCwgc28gdGhhdCdzIHdoZXJlIHRoZSBjb21waWxhdGlvbiByZWFsbHkga2lja3Mgb2ZmLiBMZXQncyBkaWcgZGVlcGVyIGludG8gYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFuZCBzZWUgd2hhdCdzIGhhcHBlbmluZyBhdCB0aGUgY29yZS4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODA2MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjQwLjkwNjQyMjQyMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc1NDA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3YvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0zOT1ib29sIGJwZl9qaXRfbmVlZHNfemV4dCh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtNDMtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6NDQ6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy00NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjQwLjk1MjE4MDc0N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjE5NjE5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQlBGIEpJVCBDb21waWxhdGlvbiBDb25maWd1cmF0aW9uIG9uIFJJU0MtVioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBCUEYgSklUIGNvbXBpbGF0aW9uIHdvcmtzIG9uIFJJU0MtVi4gTXkgZ28tdG8gaXMgYWx3YXlzIHRoZSBgYnBmX2ludF9qaXRfY29tcGlsZWAgZnVuY3Rpb247IHRoYXQncyB0aGUgc3RhbmRhcmQgZW50cnkgcG9pbnQuIE5vdywgd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgd2UgdGFsa2luZyBhYm91dCBoZXJlPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZW5hYmxlZC4gYENPTkZJR19CUEZfSklUYCBpcyB0aGUgb2J2aW91cyBvbmUsIGFuZCBzaW5jZSB3ZSdyZSBvbiBSSVNDLVYsIGBDT05GSUdfUklTQ1ZgIGlzIGNlcnRhaW5seSByZWxldmFudC4gV2hlcmUgY2FuIEkgZmluZCB0aGUgZGV0YWlscyBvbiB0aGUgaW50ZXJhY3Rpb24gb2YgdGhlc2UgY29uZmlndXJhdGlvbnM/IE15IGZpcnN0IHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBLY29uZmlnIGFuZCBNYWtlZmlsZXMuIEknbGwgc3RhcnQgd2l0aCBgYXJjaC9yaXNjdi9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBvcHRpb25zIGRlZmluZWQsIGFuZCBpZiB0aGF0IGRvZXNuJ3QgaG9sZCB0aGUgaW5mbywgSSdsbCBtb3ZlIG9uIHRvIGBhcmNoL3Jpc2N2L25ldC9NYWtlZmlsZWAgLSBzb21ldGltZXMgdGhvc2UgbmV0LXNwZWNpZmljIGRldGFpbHMgaGF2ZSBtb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdtIGFmdGVyIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBCUEYsIEpJVCwgYW5kIFJJU0MtVi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUxMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjQ0LjUxNDE0NTk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDk3Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9qaXRfY29tcDY0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3YvbmV0L01ha2VmaWxlPTU9aWZlcSAoJChDT05GSUdfQVJDSF9SVjY0SSkseSlcXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo2OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXA2NC5vIGJwZl90aW1lZF9tYXlfZ290by5vXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtNy1lbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjQ0LjU2MTY0NzUwNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2OTQ2MDY2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcywgZGlzdGlsbGVkIGludG8gYSBmaXJzdC1wZXJzb24gYWNjb3VudCBhcyByZXF1ZXN0ZWQuXG5cbioqQlBGIEpJVCBDb21waWxhdGlvbiBFeHBsb3JhdGlvbioqXG5cbkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBzZWUgdGhhdCB3ZSBuZWVkIGBDT05GSUdfQlBGX0pJVGAgZW5hYmxlZC4gVGhhdCdzIHRoZSBmb3VuZGF0aW9uLiBOb3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzIGl0c2VsZiwgYW5kIHNwZWNpZmljYWxseSwgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYGJwZl9pbnRfaml0X2NvbXBpbGVgLiBJdCdzIGEgcHJldHR5IGdlbmVyaWMgbmFtZSwgd2hpY2ggc3VnZ2VzdHMgaXTigJlzIGxpa2VseSBhIGNyaXRpY2FsIGhvdC1wYXRoIGZ1bmN0aW9uIGZvciBCUEYgSklUIGV4ZWN1dGlvbi4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzdXBwb3J0aW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSB3b3J0aCBpbnZlc3RpZ2F0aW5nIGFsb25nc2lkZSBpdD8gTGV0IG1lIHRha2UgYSBtb21lbnQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHRoaW5rIHRocm91Z2ggdGhlIHByb2Nlc3MuIEFoLCB5ZXMsIHRoZXJlIGFyZSBhIGZldyBvdGhlciBvbmVzIHRoYXQgaW1tZWRpYXRlbHkgY29tZSB0byBtaW5kIC0gYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgIGFuZCBgYnBmX2ppdF9zdXBwb3J0c19zdGFja19hcmdzYC4uLlxuXG5TaW5jZSBJIGFtIHRoaW5raW5nIGFib3V0IGZ1bmN0aW9uIHN1cHBvcnQsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAgbmV4dC4gVGhhdCdzIGEgZ29vZCBwbGFjZSB0byBiZWdpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk0MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjQ4LjI1NjI1Njg4NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1NDI0MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oPTEyOTU9c3RhdGljIGlubGluZSB2b2lkIGVtaXRfY21weGNoZyh1OCByZCwgdTggcnMsIHU4IHIwLCBib29sIGlzNjQsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oLTEzMjUtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oOjEzMjY6dm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpO1xcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaC0xMzI3LXZvaWQgYnBmX2ppdF9idWlsZF9lcGlsb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCk7XFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXAzMi5jPTEwMDI9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXAzMi5jLTEzODEtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wMzIuYzoxMzgyOnZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTM4My17XFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEzNjE9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIwNzgtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoyMDc5OnZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjA4MC17XFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz00ND1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtOTQtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6OTU6XFx0XFx0YnBmX2ppdF9idWlsZF9wcm9sb2d1ZShjdHgsIGJwZl9pc19zdWJwcm9nKHByb2cpKTtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy05Ni1cXHRcXHRjdHgtXFx1MDAzZXByb2xvZ3VlX2xlbiA9IGN0eC1cXHUwMDNlbmluc25zO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTUwLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jOjE1MTpcXHRicGZfaml0X2J1aWxkX3Byb2xvZ3VlKGN0eCwgYnBmX2lzX3N1YnByb2cocHJvZykpO1xcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTE1Mi1cXHRpZiAoYnVpbGRfYm9keShjdHgsIGV4dHJhX3Bhc3MsIE5VTEwpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMTozNjo0OC4zMDE4MDUyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTY3NTEzNTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFJJU0MtViBCUEYgSklUIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gYnJpbmdpbmcgc3RhY2sgYXJndW1lbnQgc3VwcG9ydCB0byB0aGUgUklTQy1WIDY0LWJpdCBCUEYgSklUIGNvbXBpbGVyLiBJIHNlZSB0aGF0IGBicGZfaml0X2VtaXRfaW5zbmAgYW5kIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCBhcmUgdGhlIGtleSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuIFRoZXkncmUgZGVmaW5pdGVseSBnb29kIHRhcmdldHMgdG8gc3RhcnQgd2l0aCwgZXNwZWNpYWxseSBzaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlbSB0byBoYW5kbGUgYEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTGAsIGBCUEZfUkVHX1BBUkFNU2AgaW4gdGhlIGNvbnRleHQgb2YgYEJQRl9MRFhgIGFuZCBgQlBGX1NUWGAuIEkgbm90aWNlZCB0aGF0IGBicGZfaW50X2ppdF9jb21waWxlYCBhbHNvIGlzIGNoYW5nZWQuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IGxvb2tzIGxpa2UgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgIGlzIHRoZSBvbmUgYWxsb2NhdGluZyBzcGFjZSBmb3Igc3RhY2sgYXJndW1lbnRzLiBBbmQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGNhbGN1bGF0ZXMgYGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZWAuIFNpbmNlIGBicGZfaW50X2ppdF9jb21waWxlYCBzZWVtcyB0byBiZSB0aGF0IGhvdCBwYXRoIGVudHJ5IGZ1bmN0aW9uLCB0aGF0J3MgaW1wb3J0YW50IHRvIGluY2x1ZGUgdG9vLlxuXG5UaGUgY29kZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIHRoZSBSSVNDLVYgc3BlY2lmaWMgY29kZSwgc28gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGFuZCBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNgIGFyZSB3aGVyZSB0aGUgYWN0aW9uIGlzLiBJIHZlcmlmaWVkIHRoYXQgdGhvc2UgZnVuY3Rpb25zIGFyZSBub3Qgc3RhdGljLCB3aGljaCBtZWFucyB0aGF0IHRoZXkgYXJlIGRpcmVjdGx5IGNhbGxhYmxlLlxuXG5UaGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgYEJQRl9KSVRgLCBzaW5jZSB3ZSBhcmUgZGVhbGluZyB3aXRoIEpJVC4gT2YgY291cnNlLCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBhIHByZXJlcXVpc2l0ZSwgc28gbGV0J3MgbWFrZSBzdXJlIHRoYXQncyBpbmNsdWRlZC5cblxuVGhlcmVmb3JlLCBteSBwbGFuIGlzOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IHRydWUqKiAtIERlZmluaXRlbHkgd29ydGggZnV6emluZywgdGhpcyBpcyBhbiBpbXBvcnRhbnQgYXJlYS5cbiogICAqKkZvY3VzU3ltYm9sczogW1wiYnBmX2ppdF9lbWl0X2luc25cIiwgXCJicGZfaml0X2J1aWxkX3Byb2xvZ3VlXCIsIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiXSoqIC0gVGhvc2UgZnVuY3Rpb25zIGFyZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlcy5cbiogICAqKkVuYWJsZUNvbmZpZ3M6IFtcIkJQRl9KSVRcIiwgXCJCUEZfU1lTQ0FMTFwiXSoqIC0gVGhlc2UgYXJlIHRoZSByZXF1aXJlZCBjb25maWdzLlxuKiAgICoqUmVhc29uaW5nOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEJQRiBzdGFjayBhcmd1bWVudHMgaW4gdGhlIFJJU0MtViA2NC1iaXQgQlBGIEpJVCBjb21waWxlciwgbW9kaWZ5aW5nIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIGJwZl9qaXRfZW1pdF9pbnNuLCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlLCBhbmQgYnBmX2ludF9qaXRfY29tcGlsZS5cIioqIC0gVGhpcyBleHBsYWlucyBteSBzZWxlY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDU5LCJPdXRwdXRUb2tlbnMiOjEyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMTozNjo1Ny4yNjkzMjI1ODFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTMzMTM4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaml0X2VtaXRfaW5zblwiLFxuICAgIFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgQlBGIHN0YWNrIGFyZ3VtZW50cyBpbiB0aGUgUklTQy1WIDY0LWJpdCBCUEYgSklUIGNvbXBpbGVyLCBtb2RpZnlpbmcgY29yZSBKSVQgZnVuY3Rpb25zIGxpa2UgYnBmX2ppdF9lbWl0X2luc24gYW5kIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaml0X2VtaXRfaW5zblwiLFxuICAgIFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgQlBGIHN0YWNrIGFyZ3VtZW50cyBpbiB0aGUgUklTQy1WIDY0LWJpdCBCUEYgSklUIGNvbXBpbGVyLCBtb2RpZnlpbmcgY29yZSBKSVQgZnVuY3Rpb25zIGxpa2UgYnBmX2ppdF9lbWl0X2luc24gYW5kIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjU3LjM1MDY2MTcyMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2ODA1MTQ2MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMTozNjo1Ny4zNTExODg2NTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA2Nzk5ODI5OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIDY0LWJpdCBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSB0cmFuc2xhdGlvbiBvZiBCUEYgaW5zdHJ1Y3Rpb25zIHRvIFJJU0MtViBtYWNoaW5lIGNvZGUsIHNwZWNpZmljYWxseSBoYW5kbGluZyBzdGFjayBvZmZzZXRzIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgbmV3IGtlcm5lbCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG8gdGhleSBhZGQgY29tcGxleCBDIGRhdGEgc3RydWN0dXJlcyBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gdGhlIGtlcm5lbCdzIEMgY29kZS4gQW55IGJ1Z3MgaW4gdGhlIEpJVCBjb21waWxlciB3b3VsZCByZXN1bHQgaW4gaW5jb3JyZWN0IGNvZGUgZ2VuZXJhdGlvbiAoZS5nLiwgY3Jhc2hlcywgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgcmVnaXN0ZXIgY29ycnVwdGlvbiksIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgQlBGIHNlbGZ0ZXN0cyBhbmQgc3RhbmRhcmQgS0FTQU4uIEZ1cnRoZXJtb3JlLCBLTVNBTiBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBvbiB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZSwgbWFraW5nIGEgS01TQU4gcnVuIGluYXBwbGljYWJsZSBmb3IgdGhpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGMwM2I1MzFjZGM2MmQ3YmYzMWEwYzIxMTkxZDBkNGU0NjIwNWRjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDAxOjM2OjI5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5pbmRleCA0MTliOWQ3OTVmMmE3Li45ZWI0ZTE0OTUwNWQ1IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbkBAIC04Miw2ICs4Miw3IEBAIHN0cnVjdCBydl9qaXRfY29udGV4dCB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0aW50IHN0YWNrX3NpemU7XG4gXHRpbnQgdGNjX29mZnNldDtcbitcdHUxNiBzdGFja19hcmdfc2l6ZTtcbiBcdHU2NCBhcmVuYV92bV9zdGFydDtcbiBcdHU2NCB1c2VyX3ZtX3N0YXJ0O1xuIH07XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IDZiOTk3MmIwN2MxYjAuLjU4Y2IzZTVmZjZiNGQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtMTgxNSwxOCArMTgxNSw0MyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcbiBcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwpIHtcbiBcdFx0XHRjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKmZtO1xuLVx0XHRcdGludCBpZHg7XG4rXHRcdFx0aW50IGlkeCwgbmFyZ3M7XG4gXG4gXHRcdFx0Zm0gPSBicGZfaml0X2ZpbmRfa2Z1bmNfbW9kZWwoY3R4LVx1MDAzZXByb2csIGluc24pO1xuIFx0XHRcdGlmICghZm0pXG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgZm0tXHUwMDNlbnJfYXJnczsgaWR4KyspIHtcbitcdFx0XHRuYXJncyA9IG1pbl90KGludCwgZm0tXHUwMDNlbnJfYXJncywgTUFYX0JQRl9GVU5DX1JFR19BUkdTKTtcbitcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgbmFyZ3M7IGlkeCsrKSB7XG4gXHRcdFx0XHR1OCByZWcgPSBicGZfdG9fcnZfcmVnKEJQRl9SRUdfMSArIGlkeCwgY3R4KTtcbiBcbiBcdFx0XHRcdGlmIChmbS1cdTAwM2Vhcmdfc2l6ZVtpZHhdID09IHNpemVvZihpbnQpKVxuIFx0XHRcdFx0XHRlbWl0X3NleHR3KHJlZywgcmVnLCBjdHgpO1xuIFx0XHRcdH1cbitcbitcdFx0XHQvKiBCUEYgc3RhY2sgYXJncyAtXHUwMDNlIFJJU0MtViBBQkk6IGFyZ3MgNi04IGluIEE1LUE3LCA5KyBhdCBTUCswICovXG4rXHRcdFx0aWYgKGZtLVx1MDAzZW5yX2FyZ3MgXHUwMDNlIE1BWF9CUEZfRlVOQ19SRUdfQVJHUykge1xuK1x0XHRcdFx0aW50IG5fc3RhY2sgPSBmbS1cdTAwM2Vucl9hcmdzIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTO1xuK1x0XHRcdFx0aW50IG5fcmVnID0gbWluX3QoaW50LCBuX3N0YWNrLFxuK1x0XHRcdFx0XHRcdCAgUlZfTUFYX1JFR19BUkdTIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTKTtcbitcbitcdFx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBuX3JlZzsgaWR4KyspIHtcbitcdFx0XHRcdFx0aW50IHN6ID0gZm0tXHUwMDNlYXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICsgaWR4XTtcbitcbitcdFx0XHRcdFx0ZW1pdF9sZChSVl9SRUdfQTUgKyBpZHgsIGlkeCAqIDgsIFJWX1JFR19TUCwgY3R4KTtcbitcdFx0XHRcdFx0aWYgKHN6ID09IHNpemVvZihpbnQpKVxuK1x0XHRcdFx0XHRcdGVtaXRfc2V4dHcoUlZfUkVHX0E1ICsgaWR4LCBSVl9SRUdfQTUgKyBpZHgsIGN0eCk7XG4rXHRcdFx0XHR9XG4rXG4rXHRcdFx0XHRmb3IgKGlkeCA9IG5fcmVnOyBpZHggXHUwMDNjIG5fc3RhY2s7IGlkeCsrKSB7XG4rXHRcdFx0XHRcdGludCBzeiA9IGZtLVx1MDAzZWFyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyArIGlkeF07XG4rXG4rXHRcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX1QxLCBpZHggKiA4LCBSVl9SRUdfU1AsIGN0eCk7XG4rXHRcdFx0XHRcdGlmIChzeiA9PSBzaXplb2YoaW50KSlcbitcdFx0XHRcdFx0XHRlbWl0X3NleHR3KFJWX1JFR19UMSwgUlZfUkVHX1QxLCBjdHgpO1xuK1x0XHRcdFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgKGlkeCAtIG5fcmVnKSAqIDgsIFJWX1JFR19UMSwgY3R4KTtcbitcdFx0XHRcdH1cbitcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdFx0LyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgYnBmMmJwZiBjYWxsICovXG5AQCAtMTg5MSw2ICsxOTE2LDIxIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9XOlxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9EVzpcbitcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuK1x0XHRcdGludCBpZHggPSBvZmYgLyA4IC0gMTtcbitcbitcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuK1x0XHRcdFx0ZW1pdF9sZHhfaW5zbihyZCwgaWR4ICogOCwgUlZfUkVHX0ZQLCBCUEZfU0laRShjb2RlKSwgZmFsc2UsIGN0eCk7XG4rXHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTtcbitcdFx0XHRcdGVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfRlAsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2xkeF9pbnNuKHJkLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTtcbitcdFx0XHR9XG4rXHRcdFx0aWYgKEJQRl9TSVpFKGNvZGUpICE9IEJQRl9EVyBcdTAwMjZcdTAwMjYgaW5zbl9pc196ZXh0KFx1MDAyNmluc25bMV0pKVxuK1x0XHRcdFx0cmV0dXJuIDE7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX1c6XG5AQCAtMTkzOCw2ICsxOTc4LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzpcbitcdFx0aWYgKGluc24tXHUwMDNlZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuK1x0XHRcdGludCBpZHggPSAtb2ZmIC8gOCAtIDE7XG4rXG4rXHRcdFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XG4rXHRcdFx0aWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHtcbitcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDIsIGlkeCAqIDgsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDIsIFJWX1JFR19TUCwgUlZfUkVHX1QyLCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfVDIsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4rXHRcdFx0fVxuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHRcdGZhbGx0aHJvdWdoO1xuIFx0LyogU1QgfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCArIFJWX1JFR19BUkVOQSArIG9mZikgPSBpbW0gKi9cbiBcdGNhc2UgQlBGX1NUIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOlxuQEAgLTE5NjAsNiArMjAxNCwxOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfRFc6XG4rXHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbitcdFx0XHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xuK1xuK1x0XHRcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XG4rXHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19TUCwgUlZfUkVHX1QxLCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfVDEsIDAsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbitcdFx0XHR9XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCArIFJWX1JFR19BUkVOQSArIG9mZikgPSBzcmMgKi9cbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0g6XG5AQCAtMjAzNiw2ICsyMTAzLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcbiBcdHN0YWNrX2FkanVzdCArPSBicGZfc3RhY2tfYWRqdXN0O1xuK1x0c3RhY2tfYWRqdXN0ICs9IGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZTtcbiBcbiBcdHN0b3JlX29mZnNldCA9IHN0YWNrX2FkanVzdCAtIDg7XG4gXG5AQCAtMjA5Myw3ICsyMTYxLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXHRlbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX2FkanVzdCwgY3R4KTtcbiBcbiBcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxuLVx0XHRlbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7XG4rXHRcdGVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgY3R4LVx1MDAzZXN0YWNrX2FyZ19zaXplICsgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcbiBcbiBcdGN0eC1cdTAwM2VzdGFja19zaXplID0gc3RhY2tfYWRqdXN0O1xuIFxuQEAgLTIxNzEsMyArMjIzOSw4IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKVxuIHtcbiBcdHJldHVybiB0cnVlO1xuIH1cbitcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKVxuK3tcbitcdHJldHVybiB0cnVlO1xuK31cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtNzIsNiArNzIsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhcmVuYSk7XG4gXHRjdHgtXHUwMDNldXNlcl92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhcmVuYSk7XG4gXHRjdHgtXHUwMDNlcHJvZyA9IHByb2c7XG4rXG4rXHRjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgPSByb3VuZF91cChicGZfb3V0X3N0YWNrX2FyZ19jbnQoZW52LCBwcm9nKSAqXG4rXHRcdFx0XHQgICAgICAgc2l6ZW9mKHU2NCksIFNUQUNLX0FMSUdOKTtcbitcbiBcdGN0eC1cdTAwM2VvZmZzZXQgPSBrdnphbGxvY19vYmpzKGludCwgcHJvZy1cdTAwM2VsZW4pO1xuIFx0aWYgKCFjdHgtXHUwMDNlb2Zmc2V0KVxuIFx0XHRnb3RvIG91dF9vZmZzZXQ7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5pbmRleCA4ZDM4YWFmZTY2YTI4Li5hYjEyMzk3YTliNTJhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC00LDcgKzQsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gbG9uZyBzdWJwcm9nX2NhbGxfbWVtX2tmdW5jKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMsIGxvbmcgZCwgbG9uZyBlLCBsb25nIHNpemUpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuaW5kZXggOTliYzExNWY4MzgwYS4uYTk4MGEzYTM5OWQzZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTMsNyArMyw4IEBAXG4gI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuaW5kZXggOTQ0ZTNiYjYwM2U3ZS4uM2U5ZWQzN2M1N2JiOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG5AQCAtMjEsNyArMjEsOCBAQCBzdHJ1Y3Qge1xuIFxuIGludCB0aW1lcl9yZXN1bHQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbitcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuaW5kZXggMzQ1ZjJkYTJlMzYxYi4uYjZiMWE4YWE3ZjQ0YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG5AQCAtNiw3ICs2LDggQEBcbiAjaW5jbHVkZSBcImJwZl9rZnVuY3MuaFwiXG4gI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuaW5kZXggYmVlMmVlZWMwMjFkNy4uNmVlYmFmZTdmMmY4NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC02LDcgKzYsOCBAQFxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiAjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gLyogRm9yY2Uga2Z1bmMgZXh0ZXJuIEJURiBnZW5lcmF0aW9uIGZvciBpbmxpbmUgYXNtIGNhbGwgYmVsb3cuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG5pbmRleCA3ZTBjZTVkYjI4YTBkLi5lOGNkMjk2ZmU3NjMxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbkBAIC0xMiw3ICsxMiw4IEBAIHN0cnVjdCB7XG4gXHRfX3R5cGUodmFsdWUsIGxvbmcgbG9uZyk7XG4gfSBtYXBfaGFzaF84YiBTRUMoXCIubWFwc1wiKTtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIF9fbm9pbmxpbmUgX191c2VkXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5pbmRleCBjOWZlNDg1N2RhM2Y1Li41NjJlODMxOWZmYzIyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbkBAIC01LDcgKzUsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIF9fbm9pbmxpbmUgX191c2VkIF9fbmFrZWRcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjU3LjM1MTE5MDg0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY3OTk0NjA2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBObyBLTVNBTiBOZWVkZWQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBvcHRpbWl6aW5nIHRoZSBSSVNDLVYgQlBGIEpJVCBjb21waWxlci4gU3BlY2lmaWNhbGx5LCBpdCdzIGFkZGluZyBzdGFjayBhcmd1bWVudCBzdXBwb3J0IGZvciBCUEYgZnVuY3Rpb25zIHRoYXQgdGFrZSBhIGxvdCBvZiBhcmd1bWVudHMg4oCTIG1vcmUgdGhhbiB0aGUgcmVnaXN0ZXIgY291bnQgYWxsb3dzIOKAkyBieSBtb2RpZnlpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiB0byBoYW5kbGUgbG9hZGluZyBhbmQgc3RvcmluZyB0aGVtIG9uIHRoZSBzdGFjay4gTXkgaW5pdGlhbCBjb25jZXJuIHdhcyBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZSwgYSBjbGFzc2ljIGlzc3VlLiBCdXQgYWZ0ZXIgZGlnZ2luZyBpbiwgSSdtIHByZXR0eSBjb25maWRlbnQgdGhhdCdzIG5vdCB0aGUgY2FzZSBoZXJlLlxuXG5UaGlzIHBhdGNoIGlzICpzb2xlbHkqIGNvbmNlcm5lZCB3aXRoIHRoZSBKSVQgY29tcGlsZXIsIHdoaWNoIHRyYW5zbGF0ZXMgQlBGIGluc3RydWN0aW9ucyBpbnRvIFJJU0MtViBtYWNoaW5lIGNvZGUuIEFueSBidWdzIGludHJvZHVjZWQgaGVyZSB3b3VsZCBtYW5pZmVzdCBhcyBmbGF3ZWQgbWFjaGluZSBjb2RlLCBsZWFkaW5nIHRvIHBvdGVudGlhbGx5IGluY29ycmVjdCBiZWhhdmlvciwgY3Jhc2hlcywgb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEJQRiBzZWxmdGVzdHMgYXJlIGEgc29saWQgZGVmZW5zZSBpbiB0aGlzIGNhc2UsIGFuZCB0aGUgdXN1YWwgS0FTQU4gbWVjaGFuaXNtcyB3b3VsZCBsaWtlbHkgY2F0Y2ggYW55IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3Igc2ltaWxhciBpc3N1ZXMuIFRoZSBrZXkgdGhpbmcgaXMgdGhhdCB0aGUgKnBhdGNoIGl0c2VsZiogaXNuJ3QgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCAqa2VybmVsKiBtZW1vcnkgb3IgbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIGJlIHN1c2NlcHRpYmxlIHRvIEtNU0FOJ3MgaW5zdHJ1bWVudGF0aW9uIG9mIEMgY29kZS5cblxuTGV0IG1lIGNsYXJpZnk6IEtNU0FOIGlzbid0IGV2ZW4gcmVsZXZhbnQgaGVyZS4gS01TQU4gaXMgZm9yIHg4Nl82NCBhbmQgczM5MHgsIGFuZCBwb3RlbnRpYWxseSBhcm02NCwgbm90IFJJU0MtVi4gV2UncmUgdGFsa2luZyBhYm91dCBhIFJJU0MtVi1zcGVjaWZpYyBjaGFuZ2UuIEV2ZW4gaWYgS01TQU4gKndlcmUqIGF2YWlsYWJsZSwgaXQgaW5zdHJ1bWVudHMgdGhlIEMgY29kZS4gQSBKSVQgc3RhY2sgYXJndW1lbnQgYnVnIGlzIGEgKmxvZ2ljKiBidWcgaW4gY29kZSBnZW5lcmF0aW9uLCBpdCBtaWdodCByZXN1bHQgaW4gdGhlIEJQRiBwcm9ncmFtIGFjY2Vzc2luZyB1bmluaXRpYWxpemVkIHN0YWNrIG1lbW9yeSwgYnV0IEtNU0FOIGRvZXNuJ3QgKGFzIGZhciBhcyBJIGtub3cpIGluc3RydW1lbnQgQlBGIEpJVCBjb2RlIGluIHRoaXMgd2F5LCBlc3BlY2lhbGx5IHNpbmNlIHRoaXMgaXMgUklTQy1WIHNwZWNpZmljLiBUaGUgQlBGIEtNU0FOIGluc3RydW1lbnRhdGlvbiBpcyBhIHNlcGFyYXRlIHRoaW5nLlxuXG5UbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgd2VudCBiYWNrIGFuZCByZS1leGFtaW5lZCB0aGUgY29kZS4gVGhlIGBjdHhgIHZhcmlhYmxlLCB1c2VkIHRocm91Z2hvdXQgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucywgZ2V0cyB6ZXJvZWQgd2hlbiBhbGxvY2F0ZWQgdmlhIGBrdnphbGxvY19vYmpzYC4gVGhlIGNoYW5nZXMgYWZmZWN0IHRoZSBpbnN0cnVjdGlvbiBlbWlzc2lvbiBsb2dpYyAoYGJwZl9qaXRfZW1pdF9pbnNuYCkgYW5kIHByb2xvZ3VlIGNvbnN0cnVjdGlvbiAoYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgKSBidXQgZG9uJ3QgaW50cm9kdWNlIGNvbXBsZXggbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBjb3BpZWQgdG8gdXNlcnNwYWNlIG9yIGFueXRoaW5nIHRoYXQgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgQyB2YXJpYWJsZXMuIFNvIHRoZSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQgaXMgcHJhY3RpY2FsbHkgbmlsLlxuXG5UaGVyZWZvcmUsIGBOZWVkc0tNU0FOID0gZmFsc2VgLiBUaGlzIHBhdGNoIGlzIGEgSklUIGNvbXBpbGF0aW9uIG9wdGltaXphdGlvbiBhbmQgZG9lc24ndCB3YXJyYW50IGEgS01TQU4gcnVuLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njk5LCJPdXRwdXRUb2tlbnMiOjE4NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM3OjA4LjAzMTE0MDg3MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyBCUEYgc3RhY2sgYXJndW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBSSVNDLVYgNjQtYml0IEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIHRyYW5zbGF0aW9uIG9mIEJQRiBpbnN0cnVjdGlvbnMgdG8gUklTQy1WIG1hY2hpbmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHN0YWNrIG9mZnNldHMgZm9yIGZ1bmN0aW9uIGFyZ3VtZW50cy4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBuZXcga2VybmVsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkbyB0aGV5IGFkZCBjb21wbGV4IEMgZGF0YSBzdHJ1Y3R1cmVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGUga2VybmVsJ3MgQyBjb2RlLiBBbnkgYnVncyBpbiB0aGUgSklUIGNvbXBpbGVyIHdvdWxkIHJlc3VsdCBpbiBpbmNvcnJlY3QgY29kZSBnZW5lcmF0aW9uIChlLmcuLCBjcmFzaGVzLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBvciByZWdpc3RlciBjb3JydXB0aW9uKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBCUEYgc2VsZnRlc3RzIGFuZCBzdGFuZGFyZCBLQVNBTi4gRnVydGhlcm1vcmUsIEtNU0FOIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIG9uIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlLCBtYWtpbmcgYSBLTVNBTiBydW4gaW5hcHBsaWNhYmxlIGZvciB0aGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBwYXRjaC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIEJQRiBzdGFjayBhcmd1bWVudHMgc3VwcG9ydCBmb3IgdGhlIFJJU0MtViA2NC1iaXQgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyB0aGUgdHJhbnNsYXRpb24gb2YgQlBGIGluc3RydWN0aW9ucyB0byBSSVNDLVYgbWFjaGluZSBjb2RlLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgc3RhY2sgb2Zmc2V0cyBmb3IgZnVuY3Rpb24gYXJndW1lbnRzLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG5ldyBrZXJuZWwgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm9yIGRvIHRoZXkgYWRkIGNvbXBsZXggQyBkYXRhIHN0cnVjdHVyZXMgb3IgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIHRoZSBrZXJuZWwncyBDIGNvZGUuIEFueSBidWdzIGluIHRoZSBKSVQgY29tcGlsZXIgd291bGQgcmVzdWx0IGluIGluY29ycmVjdCBjb2RlIGdlbmVyYXRpb24gKGUuZy4sIGNyYXNoZXMsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIHJlZ2lzdGVyIGNvcnJ1cHRpb24pLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEJQRiBzZWxmdGVzdHMgYW5kIHN0YW5kYXJkIEtBU0FOLiBGdXJ0aGVybW9yZSwgS01TQU4gaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgb24gdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUsIG1ha2luZyBhIEtNU0FOIHJ1biBpbmFwcGxpY2FibGUgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHBhdGNoLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh456[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 01:34:35 +0000 UTC FinishedAt: 2026-08-14 01:37:09 +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": "d114bb98936770c501c958bf2bc5fb6b7c0bad7b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "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": "d114bb98936770c501c958bf2bc5fb6b7c0bad7b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "d63abff8-7dd2-475a-939b-2782560fc191" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_jit_emit_insn", "bpf_jit_build_prologue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7LAogICAgJiMzNDticGZfaml0X2J1aWxkX3Byb2xvZ3VlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyBCUEYgc3RhY2sgYXJndW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBSSVNDLVYgNjQtYml0IEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIHRyYW5zbGF0aW9uIG9mIEJQRiBpbnN0cnVjdGlvbnMgdG8gUklTQy1WIG1hY2hpbmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHN0YWNrIG9mZnNldHMgZm9yIGZ1bmN0aW9uIGFyZ3VtZW50cy4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBuZXcga2VybmVsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkbyB0aGV5IGFkZCBjb21wbGV4IEMgZGF0YSBzdHJ1Y3R1cmVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGUga2VybmVsJiMzOTtzIEMgY29kZS4gQW55IGJ1Z3MgaW4gdGhlIEpJVCBjb21waWxlciB3b3VsZCByZXN1bHQgaW4gaW5jb3JyZWN0IGNvZGUgZ2VuZXJhdGlvbiAoZS5nLiwgY3Jhc2hlcywgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgcmVnaXN0ZXIgY29ycnVwdGlvbiksIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgQlBGIHNlbGZ0ZXN0cyBhbmQgc3RhbmRhcmQgS0FTQU4uIEZ1cnRoZXJtb3JlLCBLTVNBTiBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBvbiB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZSwgbWFraW5nIGEgS01TQU4gcnVuIGluYXBwbGljYWJsZSBmb3IgdGhpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgcGF0Y2guJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgQlBGIHN0YWNrIGFyZ3VtZW50cyBpbiB0aGUgUklTQy1WIDY0LWJpdCBCUEYgSklUIGNvbXBpbGVyLCBtb2RpZnlpbmcgY29yZSBKSVQgZnVuY3Rpb25zIGxpa2UgYnBmX2ppdF9lbWl0X2luc24gYW5kIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDE6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4YzAzYjUzMWNkYzYyZDdiZjMxYTBjMjExOTFkMGQ0ZTQ2MjA1ZGM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMDE6MzY6MjkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5pbmRleCA0MTliOWQ3OTVmMmE3Li45ZWI0ZTE0OTUwNWQ1IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbkBAIC04Miw2ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdGludCBzdGFja19zaXplO1xuIFx0aW50IHRjY19vZmZzZXQ7XG4mIzQzO1x0dTE2IHN0YWNrX2FyZ19zaXplO1xuIFx0dTY0IGFyZW5hX3ZtX3N0YXJ0O1xuIFx0dTY0IHVzZXJfdm1fc3RhcnQ7XG4gfTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggNmI5OTcyYjA3YzFiMC4uNThjYjNlNWZmNmI0ZCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xODE1LDE4ICYjNDM7MTgxNSw0MyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcbiBcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwpIHtcbiBcdFx0XHRjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKmZtO1xuLVx0XHRcdGludCBpZHg7XG4mIzQzO1x0XHRcdGludCBpZHgsIG5hcmdzO1xuIFxuIFx0XHRcdGZtID0gYnBmX2ppdF9maW5kX2tmdW5jX21vZGVsKGN0eC1cdTAwM2Vwcm9nLCBpbnNuKTtcbiBcdFx0XHRpZiAoIWZtKVxuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRcdFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIGZtLVx1MDAzZW5yX2FyZ3M7IGlkeCYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdFx0bmFyZ3MgPSBtaW5fdChpbnQsIGZtLVx1MDAzZW5yX2FyZ3MsIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7XG4mIzQzO1x0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBuYXJnczsgaWR4JiM0MzsmIzQzOykge1xuIFx0XHRcdFx0dTggcmVnID0gYnBmX3RvX3J2X3JlZyhCUEZfUkVHXzEgJiM0MzsgaWR4LCBjdHgpO1xuIFxuIFx0XHRcdFx0aWYgKGZtLVx1MDAzZWFyZ19zaXplW2lkeF0gPT0gc2l6ZW9mKGludCkpXG4gXHRcdFx0XHRcdGVtaXRfc2V4dHcocmVnLCByZWcsIGN0eCk7XG4gXHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0LyogQlBGIHN0YWNrIGFyZ3MgLVx1MDAzZSBSSVNDLVYgQUJJOiBhcmdzIDYtOCBpbiBBNS1BNywgOSYjNDM7IGF0IFNQJiM0MzswICovXG4mIzQzO1x0XHRcdGlmIChmbS1cdTAwM2Vucl9hcmdzIFx1MDAzZSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpIHtcbiYjNDM7XHRcdFx0XHRpbnQgbl9zdGFjayA9IGZtLVx1MDAzZW5yX2FyZ3MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1M7XG4mIzQzO1x0XHRcdFx0aW50IG5fcmVnID0gbWluX3QoaW50LCBuX3N0YWNrLFxuJiM0MztcdFx0XHRcdFx0XHQgIFJWX01BWF9SRUdfQVJHUyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7XG4mIzQzO1xuJiM0MztcdFx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBuX3JlZzsgaWR4JiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRcdFx0aW50IHN6ID0gZm0tXHUwMDNlYXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICYjNDM7IGlkeF07XG4mIzQzO1xuJiM0MztcdFx0XHRcdFx0ZW1pdF9sZChSVl9SRUdfQTUgJiM0MzsgaWR4LCBpZHggKiA4LCBSVl9SRUdfU1AsIGN0eCk7XG4mIzQzO1x0XHRcdFx0XHRpZiAoc3ogPT0gc2l6ZW9mKGludCkpXG4mIzQzO1x0XHRcdFx0XHRcdGVtaXRfc2V4dHcoUlZfUkVHX0E1ICYjNDM7IGlkeCwgUlZfUkVHX0E1ICYjNDM7IGlkeCwgY3R4KTtcbiYjNDM7XHRcdFx0XHR9XG4mIzQzO1xuJiM0MztcdFx0XHRcdGZvciAoaWR4ID0gbl9yZWc7IGlkeCBcdTAwM2Mgbl9zdGFjazsgaWR4JiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRcdFx0aW50IHN6ID0gZm0tXHUwMDNlYXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICYjNDM7IGlkeF07XG4mIzQzO1xuJiM0MztcdFx0XHRcdFx0ZW1pdF9sZChSVl9SRUdfVDEsIGlkeCAqIDgsIFJWX1JFR19TUCwgY3R4KTtcbiYjNDM7XHRcdFx0XHRcdGlmIChzeiA9PSBzaXplb2YoaW50KSlcbiYjNDM7XHRcdFx0XHRcdFx0ZW1pdF9zZXh0dyhSVl9SRUdfVDEsIFJWX1JFR19UMSwgY3R4KTtcbiYjNDM7XHRcdFx0XHRcdGVtaXRfc2QoUlZfUkVHX1NQLCAoaWR4IC0gbl9yZWcpICogOCwgUlZfUkVHX1QxLCBjdHgpO1xuJiM0MztcdFx0XHRcdH1cbiYjNDM7XHRcdFx0fVxuIFx0XHR9XG4gXG4gXHRcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqL1xuQEAgLTE4OTEsNiAmIzQzOzE5MTYsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX1c6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0RXOlxuJiM0MztcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuJiM0MztcdFx0XHRpbnQgaWR4ID0gb2ZmIC8gOCAtIDE7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuJiM0MztcdFx0XHRcdGVtaXRfbGR4X2luc24ocmQsIGlkeCAqIDgsIFJWX1JFR19GUCwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTtcbiYjNDM7XHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgUlZfUkVHX0ZQLCBjdHgpO1xuJiM0MztcdFx0XHRcdGVtaXRfbGR4X2luc24ocmQsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGlmIChCUEZfU0laRShjb2RlKSAhPSBCUEZfRFcgXHUwMDI2XHUwMDI2IGluc25faXNfemV4dChcdTAwMjZpbnNuWzFdKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gMTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRmYWxsdGhyb3VnaDtcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfQjpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfVzpcbkBAIC0xOTM4LDYgJiM0MzsxOTc4LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzpcbiYjNDM7XHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbiYjNDM7XHRcdFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbiYjNDM7XG4mIzQzO1x0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpO1xuJiM0MztcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuJiM0MztcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMiwgaWR4ICogOCwgY3R4KTtcbiYjNDM7XHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDIsIFJWX1JFR19TUCwgUlZfUkVHX1QyLCBjdHgpO1xuJiM0MztcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1QyLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICYjNDM7IFJWX1JFR19BUkVOQSAmIzQzOyBvZmYpID0gaW1tICovXG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcbkBAIC0xOTYwLDYgJiM0MzsyMDE0LDE5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9XOlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9EVzpcbiYjNDM7XHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbiYjNDM7XHRcdFx0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XG4mIzQzO1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7XG4mIzQzO1x0XHRcdFx0ZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfU1AsIFJWX1JFR19UMSwgY3R4KTtcbiYjNDM7XHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19UMSwgMCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCAmIzQzOyBSVl9SRUdfQVJFTkEgJiM0Mzsgb2ZmKSA9IHNyYyAqL1xuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9TVFggfCBCUEZfUFJPQkVfTUVNMzIgfCBCUEZfSDpcbkBAIC0yMDM2LDYgJiM0MzsyMTAzLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcbiBcdHN0YWNrX2FkanVzdCAmIzQzOz0gYnBmX3N0YWNrX2FkanVzdDtcbiYjNDM7XHRzdGFja19hZGp1c3QgJiM0Mzs9IGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZTtcbiBcbiBcdHN0b3JlX29mZnNldCA9IHN0YWNrX2FkanVzdCAtIDg7XG4gXG5AQCAtMjA5Myw3ICYjNDM7MjE2MSw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0ZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXG4gXHRpZiAoYnBmX3N0YWNrX2FkanVzdClcbi1cdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBicGZfc3RhY2tfYWRqdXN0LCBjdHgpO1xuJiM0MztcdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgJiM0MzsgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcbiBcbiBcdGN0eC1cdTAwM2VzdGFja19zaXplID0gc3RhY2tfYWRqdXN0O1xuIFxuQEAgLTIxNzEsMyAmIzQzOzIyMzksOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbiB7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4mIzQzO1xuJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtNzIsNiAmIzQzOzcyLDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXVzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXByb2cgPSBwcm9nO1xuJiM0MztcbiYjNDM7XHRjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgPSByb3VuZF91cChicGZfb3V0X3N0YWNrX2FyZ19jbnQoZW52LCBwcm9nKSAqXG4mIzQzO1x0XHRcdFx0ICAgICAgIHNpemVvZih1NjQpLCBTVEFDS19BTElHTik7XG4mIzQzO1xuIFx0Y3R4LVx1MDAzZW9mZnNldCA9IGt2emFsbG9jX29ianMoaW50LCBwcm9nLVx1MDAzZWxlbik7XG4gXHRpZiAoIWN0eC1cdTAwM2VvZmZzZXQpXG4gXHRcdGdvdG8gb3V0X29mZnNldDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbmluZGV4IDhkMzhhYWZlNjZhMjguLmFiMTIzOTdhOWI1MmEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTQsNyAmIzQzOzQsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCYjMzQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4mIzQzO1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbmluZGV4IDk5YmMxMTVmODM4MGEuLmE5ODBhM2EzOTlkM2YgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbkBAIC0zLDcgJiM0MzszLDggQEBcbiAjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuJiM0MztcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcbmluZGV4IDk0NGUzYmI2MDNlN2UuLjNlOWVkMzdjNTdiYjkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuQEAgLTIxLDcgJiM0MzsyMSw4IEBAIHN0cnVjdCB7XG4gXG4gaW50IHRpbWVyX3Jlc3VsdDtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbiYjNDM7XHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbmluZGV4IDM0NWYyZGEyZTM2MWIuLmI2YjFhOGFhN2Y0NGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuQEAgLTYsNyAmIzQzOzYsOCBAQFxuICNpbmNsdWRlIFwmIzM0O2JwZl9rZnVuY3MuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwmIzM0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuJiM0MztcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5pbmRleCBiZWUyZWVlYzAyMWQ3Li42ZWViYWZlN2YyZjg3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTYsNyAmIzQzOzYsOCBAQFxuICNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2JwZl9taXNjLmhcJiMzNDtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbiYjNDM7XHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gLyogRm9yY2Uga2Z1bmMgZXh0ZXJuIEJURiBnZW5lcmF0aW9uIGZvciBpbmxpbmUgYXNtIGNhbGwgYmVsb3cuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG5pbmRleCA3ZTBjZTVkYjI4YTBkLi5lOGNkMjk2ZmU3NjMxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbkBAIC0xMiw3ICYjNDM7MTIsOCBAQCBzdHJ1Y3Qge1xuIFx0X190eXBlKHZhbHVlLCBsb25nIGxvbmcpO1xuIH0gbWFwX2hhc2hfOGIgU0VDKFwmIzM0Oy5tYXBzXCYjMzQ7KTtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbiYjNDM7XHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gX19ub2lubGluZSBfX3VzZWRcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbmluZGV4IGM5ZmU0ODU3ZGEzZjUuLjU2MmU4MzE5ZmZjMjIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTUsNyAmIzQzOzUsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuJiM0MztcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBfX25vaW5saW5lIF9fdXNlZCBfX25ha2VkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDE6MzY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7LAogICAgJiMzNDticGZfaml0X2J1aWxkX3Byb2xvZ3VlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgQlBGIHN0YWNrIGFyZ3VtZW50cyBpbiB0aGUgUklTQy1WIDY0LWJpdCBCUEYgSklUIGNvbXBpbGVyLCBtb2RpZnlpbmcgY29yZSBKSVQgZnVuY3Rpb25zIGxpa2UgYnBmX2ppdF9lbWl0X2luc24gYW5kIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4YzAzYjUzMWNkYzYyZDdiZjMxYTBjMjExOTFkMGQ0ZTQ2MjA1ZGM4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMDE6MzY6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmggYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgKaW5kZXggNDE5YjlkNzk1ZjJhNy4uOWViNGUxNDk1MDVkNSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaApAQCAtODIsNiAmIzQzOzgyLDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBzdGFja19zaXplOwogCWludCB0Y2Nfb2Zmc2V0OwomIzQzOwl1MTYgc3RhY2tfYXJnX3NpemU7CiAJdTY0IGFyZW5hX3ZtX3N0YXJ0OwogCXU2NCB1c2VyX3ZtX3N0YXJ0OwogfTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCmluZGV4IDZiOTk3MmIwN2MxYjAuLjU4Y2IzZTVmZjZiNGQgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYwpAQCAtMTgxNSwxOCAmIzQzOzE4MTUsNDMgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAKIAkJaWYgKGluc24tJmd0O3NyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMKSB7CiAJCQljb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKmZtOwotCQkJaW50IGlkeDsKJiM0MzsJCQlpbnQgaWR4LCBuYXJnczsKIAogCQkJZm0gPSBicGZfaml0X2ZpbmRfa2Z1bmNfbW9kZWwoY3R4LSZndDtwcm9nLCBpbnNuKTsKIAkJCWlmICghZm0pCiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAKLQkJCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgZm0tJmd0O25yX2FyZ3M7IGlkeCYjNDM7JiM0MzspIHsKJiM0MzsJCQluYXJncyA9IG1pbl90KGludCwgZm0tJmd0O25yX2FyZ3MsIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7CiYjNDM7CQkJZm9yIChpZHggPSAwOyBpZHggJmx0OyBuYXJnczsgaWR4JiM0MzsmIzQzOykgewogCQkJCXU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICYjNDM7IGlkeCwgY3R4KTsKIAogCQkJCWlmIChmbS0mZ3Q7YXJnX3NpemVbaWR4XSA9PSBzaXplb2YoaW50KSkKIAkJCQkJZW1pdF9zZXh0dyhyZWcsIHJlZywgY3R4KTsKIAkJCX0KJiM0MzsKJiM0MzsJCQkvKiBCUEYgc3RhY2sgYXJncyAtJmd0OyBSSVNDLVYgQUJJOiBhcmdzIDYtOCBpbiBBNS1BNywgOSYjNDM7IGF0IFNQJiM0MzswICovCiYjNDM7CQkJaWYgKGZtLSZndDtucl9hcmdzICZndDsgTUFYX0JQRl9GVU5DX1JFR19BUkdTKSB7CiYjNDM7CQkJCWludCBuX3N0YWNrID0gZm0tJmd0O25yX2FyZ3MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1M7CiYjNDM7CQkJCWludCBuX3JlZyA9IG1pbl90KGludCwgbl9zdGFjaywKJiM0MzsJCQkJCQkgIFJWX01BWF9SRUdfQVJHUyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7CiYjNDM7CiYjNDM7CQkJCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgbl9yZWc7IGlkeCYjNDM7JiM0MzspIHsKJiM0MzsJCQkJCWludCBzeiA9IGZtLSZndDthcmdfc2l6ZVtNQVhfQlBGX0ZVTkNfUkVHX0FSR1MgJiM0MzsgaWR4XTsKJiM0MzsKJiM0MzsJCQkJCWVtaXRfbGQoUlZfUkVHX0E1ICYjNDM7IGlkeCwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpOwomIzQzOwkJCQkJaWYgKHN6ID09IHNpemVvZihpbnQpKQomIzQzOwkJCQkJCWVtaXRfc2V4dHcoUlZfUkVHX0E1ICYjNDM7IGlkeCwgUlZfUkVHX0E1ICYjNDM7IGlkeCwgY3R4KTsKJiM0MzsJCQkJfQomIzQzOwomIzQzOwkJCQlmb3IgKGlkeCA9IG5fcmVnOyBpZHggJmx0OyBuX3N0YWNrOyBpZHgmIzQzOyYjNDM7KSB7CiYjNDM7CQkJCQlpbnQgc3ogPSBmbS0mZ3Q7YXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICYjNDM7IGlkeF07CiYjNDM7CiYjNDM7CQkJCQllbWl0X2xkKFJWX1JFR19UMSwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpOwomIzQzOwkJCQkJaWYgKHN6ID09IHNpemVvZihpbnQpKQomIzQzOwkJCQkJCWVtaXRfc2V4dHcoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIGN0eCk7CiYjNDM7CQkJCQllbWl0X3NkKFJWX1JFR19TUCwgKGlkeCAtIG5fcmVnKSAqIDgsIFJWX1JFR19UMSwgY3R4KTsKJiM0MzsJCQkJfQomIzQzOwkJCX0KIAkJfQogCiAJCS8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqLwpAQCAtMTg5MSw2ICYjNDM7MTkxNiwyMSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAljYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0g6CiAJY2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9XOgogCWNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfRFc6CiYjNDM7CQlpZiAoaW5zbi0mZ3Q7c3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykgewomIzQzOwkJCWludCBpZHggPSBvZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJCQlpZiAoaXNfMTJiX2ludChpZHggKiA4KSkgewomIzQzOwkJCQllbWl0X2xkeF9pbnNuKHJkLCBpZHggKiA4LCBSVl9SRUdfRlAsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7CiYjNDM7CQkJCWVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfRlAsIGN0eCk7CiYjNDM7CQkJCWVtaXRfbGR4X2luc24ocmQsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpOwomIzQzOwkJCX0KJiM0MzsJCQlpZiAoQlBGX1NJWkUoY29kZSkgIT0gQlBGX0RXICZhbXA7JmFtcDsgaW5zbl9pc196ZXh0KCZhbXA7aW5zblsxXSkpCiYjNDM7CQkJCXJldHVybiAxOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwkJZmFsbHRocm91Z2g7CiAJY2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9COgogCWNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfSDoKIAljYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX1c6CkBAIC0xOTM4LDYgJiM0MzsxOTc4LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCWNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9IOgogCWNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9XOgogCWNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzoKJiM0MzsJCWlmIChpbnNuLSZndDtkc3RfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7CiYjNDM7CQkJaW50IGlkeCA9IC1vZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJCQllbWl0X2ltbShSVl9SRUdfVDEsIGltbSwgY3R4KTsKJiM0MzsJCQlpZiAoaXNfMTJiX2ludChpZHggKiA4KSkgewomIzQzOwkJCQllbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0X2ltbShSVl9SRUdfVDIsIGlkeCAqIDgsIGN0eCk7CiYjNDM7CQkJCWVtaXRfYWRkKFJWX1JFR19UMiwgUlZfUkVHX1NQLCBSVl9SRUdfVDIsIGN0eCk7CiYjNDM7CQkJCWVtaXRfc3R4X2luc24oUlZfUkVHX1QyLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwomIzQzOwkJCX0KJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsJCWZhbGx0aHJvdWdoOwogCS8qIFNUIHwgUFJPQkVfTUVNMzI6ICooc2l6ZSAqKShkc3QgJiM0MzsgUlZfUkVHX0FSRU5BICYjNDM7IG9mZikgPSBpbW0gKi8KIAljYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COgogCWNhc2UgQlBGX1NUIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0g6CkBAIC0xOTYwLDYgJiM0MzsyMDE0LDE5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCWNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfSDoKIAljYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX1c6CiAJY2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9EVzoKJiM0MzsJCWlmIChpbnNuLSZndDtkc3RfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7CiYjNDM7CQkJaW50IGlkeCA9IC1vZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJCQlpZiAoaXNfMTJiX2ludChpZHggKiA4KSkgewomIzQzOwkJCQllbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTsKJiM0MzsJCQkJZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfU1AsIFJWX1JFR19UMSwgY3R4KTsKJiM0MzsJCQkJZW1pdF9zdHhfaW5zbihSVl9SRUdfVDEsIDAsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCQl9CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CQlmYWxsdGhyb3VnaDsKIAkvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCAmIzQzOyBSVl9SRUdfQVJFTkEgJiM0Mzsgb2ZmKSA9IHNyYyAqLwogCWNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COgogCWNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOgpAQCAtMjAzNiw2ICYjNDM7MjEwMyw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKQogCiAJc3RhY2tfYWRqdXN0ID0gcm91bmRfdXAoc3RhY2tfYWRqdXN0LCBTVEFDS19BTElHTik7CiAJc3RhY2tfYWRqdXN0ICYjNDM7PSBicGZfc3RhY2tfYWRqdXN0OwomIzQzOwlzdGFja19hZGp1c3QgJiM0Mzs9IGN0eC0mZ3Q7c3RhY2tfYXJnX3NpemU7CiAKIAlzdG9yZV9vZmZzZXQgPSBzdGFja19hZGp1c3QgLSA4OwogCkBAIC0yMDkzLDcgJiM0MzsyMTYxLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpCiAJZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7CiAKIAlpZiAoYnBmX3N0YWNrX2FkanVzdCkKLQkJZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBicGZfc3RhY2tfYWRqdXN0LCBjdHgpOwomIzQzOwkJZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBjdHgtJmd0O3N0YWNrX2FyZ19zaXplICYjNDM7IGJwZl9zdGFja19hZGp1c3QsIGN0eCk7CiAKIAljdHgtJmd0O3N0YWNrX3NpemUgPSBzdGFja19hZGp1c3Q7CiAKQEAgLTIxNzEsMyAmIzQzOzIyMzksOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZCkKIHsKIAlyZXR1cm4gdHJ1ZTsKIH0KJiM0MzsKJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKQomIzQzO3sKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwppbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwpAQCAtNzIsNiAmIzQzOzcyLDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJY3R4LSZndDthcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLSZndDthdXgtJmd0O2FyZW5hKTsKIAljdHgtJmd0O3VzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy0mZ3Q7YXV4LSZndDthcmVuYSk7CiAJY3R4LSZndDtwcm9nID0gcHJvZzsKJiM0MzsKJiM0MzsJY3R4LSZndDtzdGFja19hcmdfc2l6ZSA9IHJvdW5kX3VwKGJwZl9vdXRfc3RhY2tfYXJnX2NudChlbnYsIHByb2cpICoKJiM0MzsJCQkJICAgICAgIHNpemVvZih1NjQpLCBTVEFDS19BTElHTik7CiYjNDM7CiAJY3R4LSZndDtvZmZzZXQgPSBrdnphbGxvY19vYmpzKGludCwgcHJvZy0mZ3Q7bGVuKTsKIAlpZiAoIWN0eC0mZ3Q7b2Zmc2V0KQogCQlnb3RvIG91dF9vZmZzZXQ7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMKaW5kZXggOGQzOGFhZmU2NmEyOC4uYWIxMjM5N2E5YjUyYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYwpAQCAtNCw3ICYjNDM7NCw4IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCA5OWJjMTE1ZjgzODBhLi5hOTgwYTNhMzk5ZDNmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwpAQCAtMyw3ICYjNDM7Myw4IEBACiAjaW5jbHVkZSAmbHQ7dm1saW51eC5oJmd0OwogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZikKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYwppbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jCkBAIC0yMSw3ICYjNDM7MjEsOCBAQCBzdHJ1Y3QgewogCiBpbnQgdGltZXJfcmVzdWx0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jCmluZGV4IDM0NWYyZGEyZTM2MWIuLmI2YjFhOGFhN2Y0NGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMKQEAgLTYsNyAmIzQzOzYsOCBAQAogI2luY2x1ZGUgJiMzNDticGZfa2Z1bmNzLmgmIzM0OwogI2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMKaW5kZXggYmVlMmVlZWMwMjFkNy4uNmVlYmFmZTdmMmY4NyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jCkBAIC02LDcgJiM0Mzs2LDggQEAKICNpbmNsdWRlICYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jCmluZGV4IDdlMGNlNWRiMjhhMGQuLmU4Y2QyOTZmZTc2MzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMKQEAgLTEyLDcgJiM0MzsxMiw4IEBAIHN0cnVjdCB7CiAJX190eXBlKHZhbHVlLCBsb25nIGxvbmcpOwogfSBtYXBfaGFzaF84YiBTRUMoJiMzNDsubWFwcyYjMzQ7KTsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXAomIzQzOwkoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSAmYW1wOyZhbXA7IF9fcmlzY3ZfeGxlbiA9PSA2NCkpICZhbXA7JmFtcDsgXAogCWRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVCkKIAogX19ub2lubGluZSBfX3VzZWQKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCBjOWZlNDg1N2RhM2Y1Li41NjJlODMxOWZmYzIyIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jCkBAIC01LDcgJiM0Mzs1LDggQEAKICNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIF9fbm9pbmxpbmUgX191c2VkIF9fbmFrZWQKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDE6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcwMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSSVNDLVYgQlBGIEpJVCBQYXRjaCoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBzb21lIHByZXR0eSBmdW5kYW1lbnRhbCBjaGFuZ2VzIHRvIHRoZSBSSVNDLVYgQlBGIEpJVCBjb21waWxlciDigJMgbmFtZWx5LCBhZGRpbmcgc3VwcG9ydCBmb3Igc3RhY2sgYXJndW1lbnRzIGluIEJQRiBmdW5jdGlvbnMuIFRoaXMgaXMgc2lnbmlmaWNhbnQsIGl0IHRvdWNoZXMgY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0eSwgYW5kIGltbWVkaWF0ZWx5IHRyaWdnZXJzIHNvbWUgdGhvdWdodHMgYWJvdXQgaG93IHRvIHZhbGlkYXRlIGl0LgoKSSBzZWUgdGhlIG1vZGlmaWVkIGZpbGVzOiBgYnBmX2ppdC5oYCwgYGJwZl9qaXRfY29tcDY0LmNgLCBgYnBmX2ppdF9jb3JlLmNgLCBhbmQgc29tZSBCUEYgc2VsZnRlc3RzLiBUaGF0JiMzOTtzIGEgZ29vZCBzaWduLCBzZWxmdGVzdHMgYXJlIGNydWNpYWwgZm9yIHRoaXMga2luZCBvZiBsb3ctbGV2ZWwgY2hhbmdlLiBEZWZpbml0ZWx5IG5lZWQgdG8gcnVuIHRob3NlIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgdGVzdHMgd2UgaGF2ZS4gRnV6emluZyBpcyBhIG11c3Qg4oCTIHRoaXMgaXMgYSBwcmltZSB0YXJnZXQgZm9yIHBvdGVudGlhbCBleHBsb2l0cy4KCkxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUuIGBicGZfaml0X2NvbXA2NC5jYCBsb29rcyBpbnRlcmVzdGluZy4gVGhlIGtleSBmdW5jdGlvbnMgSSYjMzk7bGwgZXhhbWluZSBhcmUgYGJwZl9qaXRfZW1pdF9pbnNuYCwgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgLCBhbmQgdGhlIG5ldyBgYnBmX2ppdF9zdXBwb3J0c19zdGFja19hcmdzYC4gVGhvc2Ugc2hvdWxkIGlsbHVtaW5hdGUgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHRoZSBzdGFjayBvcGVyYXRpb25zIGFuZCBhcmd1bWVudCBwYXNzaW5nLgoKTm93LCBpbiBgYnBmX2ppdF9jb3JlLmNgLCBJIHNlZSBgYnBmX2ludF9qaXRfY29tcGlsZWAuIFdhaXQgYSBtaW51dGUuLi4gdGhhdCYjMzk7cyBhbiAqZW50cnkgcG9pbnQqIGZvciB0aGUgSklUIGNvbXBpbGVyLCBhIGNyaXRpY2FsIEFQSSBmdW5jdGlvbi4gVGhhdCYjMzk7cyBhICptYWpvciogZm9jdXMgZm9yIHRlc3RpbmcuIFdlIG5lZWQgdG8gbWV0aWN1bG91c2x5IGFuYWx5emUgaG93IHN0YWNrIGFyZ3VtZW50cyBhcmUgaGFuZGxlZCBoZXJlLCBlc3BlY2lhbGx5IGFyb3VuZCBhbnkgcG90ZW50aWFsIGJvdW5kYXJ5IGNvbmRpdGlvbnMgb3IgZXJyb3IgaGFuZGxpbmcuCgpgYnBmX2ppdF9lbWl0X2luc25gIGFsc28ganVtcHMgb3V0OyBJIHNob3VsZCBjaGVjayBpZiBpdCYjMzk7cyBleHRlcm5hbCBvciBzdGF0aWMsIGFuZCB3aGV0aGVyIGl0JiMzOTtzIGNhbGxlZCBmcm9tIG90aGVyIHBsYWNlcyBiZXNpZGVzIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgaG93LiBXZSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIHBhcnRzIG9mIHRoZSBwYXRjaCBoYXZlIGV4dGVybmFsIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L25ldC9icGZfaml0Lmg9MTMyNz12b2lkIGJwZl9qaXRfYnVpbGRfZXBpbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpO1xuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oLTEzMjgtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0Lmg6MTMyOTppbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaC0xMzMwLVx0XHQgICAgICBib29sIGV4dHJhX3Bhc3MpO1xuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDMyLmM9OTkyPXN0YXRpYyB2b2lkIGVtaXRfemV4dDY0KGNvbnN0IHM4ICpkc3QsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTAwMS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTAwMjppbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTAwMy1cdFx0ICAgICAgYm9vbCBleHRyYV9wYXNzKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MTMyND1pbnQgYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICpyb19pbWFnZSxcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNjAtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEzNjE6aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNjItXHRcdCAgICAgIGJvb2wgZXh0cmFfcGFzcylcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0xOT1zdGF0aWMgaW50IGJ1aWxkX2JvZHkoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgZXh0cmFfcGFzcywgaW50ICpvZmZzZXQpXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMjctXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoyODpcdFx0cmV0ID0gYnBmX2ppdF9lbWl0X2luc24oaW5zbiwgY3R4LCBleHRyYV9wYXNzKTtcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTI5LVx0XHRpZiAocmV0IFx1MDAzZSAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwNjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEJQRiBKSVQgQ29tcGlsYXRpb24gVGhvdWdodHMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIEJQRiBKSVQgY29tcGlsYXRpb24gZmxvdy4gVGhlIGZ1bmN0aW9uIGBicGZfaml0X2VtaXRfaW5zbmAgaXNuJiMzOTt0IHN0YXRpYywgaXQmIzM5O3MgZGVjbGFyZWQgaW4gYGJwZl9qaXQuaGAuIFRoYXQmIzM5O3MgZ29vZCwgaXQmIzM5O3MgdmlzaWJsZS4gQnV0IHRoZSBjb2RlIGZsb3cgaXMgaW50ZXJlc3Rpbmc6IEkgc2VlIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYGJ1aWxkX2JvZHlgLCBhbmQgYGJ1aWxkX2JvZHlgIGlzLCBpbiB0dXJuLCBjYWxsZWQgZnJvbSBgYnBmX2ludF9qaXRfY29tcGlsZWAuICBgYnBmX2ludF9qaXRfY29tcGlsZWAgc2VlbXMgdG8gYmUgdGhlIGNlbnRyYWwgZW50cnkgcG9pbnQgaGVyZSwgdGhlIGJpZyBrYWh1bmEuCgpSaWdodCwgc28gdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29tcGlsYXRpb24gcmVhbGx5IGtpY2tzIG9mZi4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgaW50byBgYnBmX2ludF9qaXRfY29tcGlsZWAgYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCB0aGUgY29yZS4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDE6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0zOT1ib29sIGJwZl9qaXRfbmVlZHNfemV4dCh2b2lkKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTQzLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6NDQ6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTQ1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTEwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQlBGIEpJVCBDb21waWxhdGlvbiBDb25maWd1cmF0aW9uIG9uIFJJU0MtVioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IEJQRiBKSVQgY29tcGlsYXRpb24gd29ya3Mgb24gUklTQy1WLiBNeSBnby10byBpcyBhbHdheXMgdGhlIGBicGZfaW50X2ppdF9jb21waWxlYCBmdW5jdGlvbjsgdGhhdCYjMzk7cyB0aGUgc3RhbmRhcmQgZW50cnkgcG9pbnQuIE5vdywgd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgd2UgdGFsa2luZyBhYm91dCBoZXJlPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGVuYWJsZWQuIGBDT05GSUdfQlBGX0pJVGAgaXMgdGhlIG9idmlvdXMgb25lLCBhbmQgc2luY2Ugd2UmIzM5O3JlIG9uIFJJU0MtViwgYENPTkZJR19SSVNDVmAgaXMgY2VydGFpbmx5IHJlbGV2YW50LiBXaGVyZSBjYW4gSSBmaW5kIHRoZSBkZXRhaWxzIG9uIHRoZSBpbnRlcmFjdGlvbiBvZiB0aGVzZSBjb25maWd1cmF0aW9ucz8gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtjb25maWcgYW5kIE1ha2VmaWxlcy4gSSYjMzk7bGwgc3RhcnQgd2l0aCBgYXJjaC9yaXNjdi9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBvcHRpb25zIGRlZmluZWQsIGFuZCBpZiB0aGF0IGRvZXNuJiMzOTt0IGhvbGQgdGhlIGluZm8sIEkmIzM5O2xsIG1vdmUgb24gdG8gYGFyY2gvcmlzY3YvbmV0L01ha2VmaWxlYCAtIHNvbWV0aW1lcyB0aG9zZSBuZXQtc3BlY2lmaWMgZGV0YWlscyBoYXZlIG1vcmUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTttIGFmdGVyIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBCUEYsIEpJVCwgYW5kIFJJU0MtVi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X2NvbXA2NC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L01ha2VmaWxlPTU9aWZlcSAoJChDT05GSUdfQVJDSF9SVjY0SSkseSlcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlOjY6XHRvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29tcDY0Lm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTctZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NDIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcywgZGlzdGlsbGVkIGludG8gYSBmaXJzdC1wZXJzb24gYWNjb3VudCBhcyByZXF1ZXN0ZWQuCgoqKkJQRiBKSVQgQ29tcGlsYXRpb24gRXhwbG9yYXRpb24qKgoKQWxyaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIHNlZSB0aGF0IHdlIG5lZWQgYENPTkZJR19CUEZfSklUYCBlbmFibGVkLiBUaGF0JiMzOTtzIHRoZSBmb3VuZGF0aW9uLiBOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIEJQRiBKSVQgY29tcGlsYXRpb24gcHJvY2VzcyBpdHNlbGYsIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBicGZfaW50X2ppdF9jb21waWxlYC4gSXQmIzM5O3MgYSBwcmV0dHkgZ2VuZXJpYyBuYW1lLCB3aGljaCBzdWdnZXN0cyBpdOKAmXMgbGlrZWx5IGEgY3JpdGljYWwgaG90LXBhdGggZnVuY3Rpb24gZm9yIEJQRiBKSVQgZXhlY3V0aW9uLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHN1cHBvcnRpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHdvcnRoIGludmVzdGlnYXRpbmcgYWxvbmdzaWRlIGl0PyBMZXQgbWUgdGFrZSBhIG1vbWVudCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgdGhpbmsgdGhyb3VnaCB0aGUgcHJvY2Vzcy4gQWgsIHllcywgdGhlcmUgYXJlIGEgZmV3IG90aGVyIG9uZXMgdGhhdCBpbW1lZGlhdGVseSBjb21lIHRvIG1pbmQgLSBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAgYW5kIGBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3NgLi4uCgpTaW5jZSBJIGFtIHRoaW5raW5nIGFib3V0IGZ1bmN0aW9uIHN1cHBvcnQsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAgbmV4dC4gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gYmVnaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfYnVpbGRfcHJvbG9ndWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oPTEyOTU9c3RhdGljIGlubGluZSB2b2lkIGVtaXRfY21weGNoZyh1OCByZCwgdTggcnMsIHU4IHIwLCBib29sIGlzNjQsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaC0xMzI1LVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oOjEzMjY6dm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpO1xuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oLTEzMjctdm9pZCBicGZfaml0X2J1aWxkX2VwaWxvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXAzMi5jPTEwMDI9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wMzIuYy0xMzgxLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wMzIuYzoxMzgyOnZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wMzIuYy0xMzgzLXtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEzNjE9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMDc4LVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoyMDc5OnZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMDgwLXtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz00ND1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTk0LVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6OTU6XHRcdGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoY3R4LCBicGZfaXNfc3VicHJvZyhwcm9nKSk7XG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy05Ni1cdFx0Y3R4LVx1MDAzZXByb2xvZ3VlX2xlbiA9IGN0eC1cdTAwM2VuaW5zbnM7XG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTUwLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6MTUxOlx0YnBmX2ppdF9idWlsZF9wcm9sb2d1ZShjdHgsIGJwZl9pc19zdWJwcm9nKHByb2cpKTtcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTE1Mi1cdGlmIChidWlsZF9ib2R5KGN0eCwgZXh0cmFfcGFzcywgTlVMTCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDU5CgkJCQkJCQlvdXRwdXQ6IDEyNAoJCQkJCQkJdGhvdWdodHM6IDYyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSSVNDLVYgQlBGIEpJVCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgZm9jdXNlZCBvbiBicmluZ2luZyBzdGFjayBhcmd1bWVudCBzdXBwb3J0IHRvIHRoZSBSSVNDLVYgNjQtYml0IEJQRiBKSVQgY29tcGlsZXIuIEkgc2VlIHRoYXQgYGJwZl9qaXRfZW1pdF9pbnNuYCBhbmQgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBiZWluZyBtb2RpZmllZC4gVGhleSYjMzk7cmUgZGVmaW5pdGVseSBnb29kIHRhcmdldHMgdG8gc3RhcnQgd2l0aCwgZXNwZWNpYWxseSBzaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlbSB0byBoYW5kbGUgYEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTGAsIGBCUEZfUkVHX1BBUkFNU2AgaW4gdGhlIGNvbnRleHQgb2YgYEJQRl9MRFhgIGFuZCBgQlBGX1NUWGAuIEkgbm90aWNlZCB0aGF0IGBicGZfaW50X2ppdF9jb21waWxlYCBhbHNvIGlzIGNoYW5nZWQuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCBpcyB0aGUgb25lIGFsbG9jYXRpbmcgc3BhY2UgZm9yIHN0YWNrIGFyZ3VtZW50cy4gQW5kIGBicGZfaW50X2ppdF9jb21waWxlYCBjYWxjdWxhdGVzIGBjdHgtJmd0O3N0YWNrX2FyZ19zaXplYC4gU2luY2UgYGJwZl9pbnRfaml0X2NvbXBpbGVgIHNlZW1zIHRvIGJlIHRoYXQgaG90IHBhdGggZW50cnkgZnVuY3Rpb24sIHRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIGluY2x1ZGUgdG9vLgoKVGhlIGNvZGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byB0aGUgUklTQy1WIHNwZWNpZmljIGNvZGUsIHNvIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYCBhbmQgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jYCBhcmUgd2hlcmUgdGhlIGFjdGlvbiBpcy4gSSB2ZXJpZmllZCB0aGF0IHRob3NlIGZ1bmN0aW9ucyBhcmUgbm90IHN0YXRpYywgd2hpY2ggbWVhbnMgdGhhdCB0aGV5IGFyZSBkaXJlY3RseSBjYWxsYWJsZS4KClRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSBpcyBgQlBGX0pJVGAsIHNpbmNlIHdlIGFyZSBkZWFsaW5nIHdpdGggSklULiBPZiBjb3Vyc2UsIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgcHJlcmVxdWlzaXRlLCBzbyBsZXQmIzM5O3MgbWFrZSBzdXJlIHRoYXQmIzM5O3MgaW5jbHVkZWQuCgpUaGVyZWZvcmUsIG15IHBsYW4gaXM6CgoqICAgKipXb3J0aEZ1enppbmc6IHRydWUqKiAtIERlZmluaXRlbHkgd29ydGggZnV6emluZywgdGhpcyBpcyBhbiBpbXBvcnRhbnQgYXJlYS4KKiAgICoqRm9jdXNTeW1ib2xzOiBbJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7LCAmIzM0O2JwZl9qaXRfYnVpbGRfcHJvbG9ndWUmIzM0OywgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDtdKiogLSBUaG9zZSBmdW5jdGlvbnMgYXJlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzLgoqICAgKipFbmFibGVDb25maWdzOiBbJiMzNDtCUEZfSklUJiMzNDssICYjMzQ7QlBGX1NZU0NBTEwmIzM0O10qKiAtIFRoZXNlIGFyZSB0aGUgcmVxdWlyZWQgY29uZmlncy4KKiAgICoqUmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEJQRiBzdGFjayBhcmd1bWVudHMgaW4gdGhlIFJJU0MtViA2NC1iaXQgQlBGIEpJVCBjb21waWxlciwgbW9kaWZ5aW5nIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIGJwZl9qaXRfZW1pdF9pbnNuLCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlLCBhbmQgYnBmX2ludF9qaXRfY29tcGlsZS4mIzM0OyoqIC0gVGhpcyBleHBsYWlucyBteSBzZWxlY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ppdF9lbWl0X2luc24mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9idWlsZF9wcm9sb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEJQRiBzdGFjayBhcmd1bWVudHMgaW4gdGhlIFJJU0MtViA2NC1iaXQgQlBGIEpJVCBjb21waWxlciwgbW9kaWZ5aW5nIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIGJwZl9qaXRfZW1pdF9pbnNuIGFuZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ppdF9lbWl0X2luc24mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9idWlsZF9wcm9sb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEJQRiBzdGFjayBhcmd1bWVudHMgaW4gdGhlIFJJU0MtViA2NC1iaXQgQlBGIEpJVCBjb21waWxlciwgbW9kaWZ5aW5nIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIGJwZl9qaXRfZW1pdF9pbnNuIGFuZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMTozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIDY0LWJpdCBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSB0cmFuc2xhdGlvbiBvZiBCUEYgaW5zdHJ1Y3Rpb25zIHRvIFJJU0MtViBtYWNoaW5lIGNvZGUsIHNwZWNpZmljYWxseSBoYW5kbGluZyBzdGFjayBvZmZzZXRzIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgbmV3IGtlcm5lbCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG8gdGhleSBhZGQgY29tcGxleCBDIGRhdGEgc3RydWN0dXJlcyBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gdGhlIGtlcm5lbCYjMzk7cyBDIGNvZGUuIEFueSBidWdzIGluIHRoZSBKSVQgY29tcGlsZXIgd291bGQgcmVzdWx0IGluIGluY29ycmVjdCBjb2RlIGdlbmVyYXRpb24gKGUuZy4sIGNyYXNoZXMsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIHJlZ2lzdGVyIGNvcnJ1cHRpb24pLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEJQRiBzZWxmdGVzdHMgYW5kIHN0YW5kYXJkIEtBU0FOLiBGdXJ0aGVybW9yZSwgS01TQU4gaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgb24gdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUsIG1ha2luZyBhIEtNU0FOIHJ1biBpbmFwcGxpY2FibGUgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4YzAzYjUzMWNkYzYyZDdiZjMxYTBjMjExOTFkMGQ0ZTQ2MjA1ZGM4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMDE6MzY6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmggYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgKaW5kZXggNDE5YjlkNzk1ZjJhNy4uOWViNGUxNDk1MDVkNSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaApAQCAtODIsNiAmIzQzOzgyLDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBzdGFja19zaXplOwogCWludCB0Y2Nfb2Zmc2V0OwomIzQzOwl1MTYgc3RhY2tfYXJnX3NpemU7CiAJdTY0IGFyZW5hX3ZtX3N0YXJ0OwogCXU2NCB1c2VyX3ZtX3N0YXJ0OwogfTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCmluZGV4IDZiOTk3MmIwN2MxYjAuLjU4Y2IzZTVmZjZiNGQgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYwpAQCAtMTgxNSwxOCAmIzQzOzE4MTUsNDMgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAKIAkJaWYgKGluc24tJmd0O3NyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMKSB7CiAJCQljb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKmZtOwotCQkJaW50IGlkeDsKJiM0MzsJCQlpbnQgaWR4LCBuYXJnczsKIAogCQkJZm0gPSBicGZfaml0X2ZpbmRfa2Z1bmNfbW9kZWwoY3R4LSZndDtwcm9nLCBpbnNuKTsKIAkJCWlmICghZm0pCiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAKLQkJCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgZm0tJmd0O25yX2FyZ3M7IGlkeCYjNDM7JiM0MzspIHsKJiM0MzsJCQluYXJncyA9IG1pbl90KGludCwgZm0tJmd0O25yX2FyZ3MsIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7CiYjNDM7CQkJZm9yIChpZHggPSAwOyBpZHggJmx0OyBuYXJnczsgaWR4JiM0MzsmIzQzOykgewogCQkJCXU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICYjNDM7IGlkeCwgY3R4KTsKIAogCQkJCWlmIChmbS0mZ3Q7YXJnX3NpemVbaWR4XSA9PSBzaXplb2YoaW50KSkKIAkJCQkJZW1pdF9zZXh0dyhyZWcsIHJlZywgY3R4KTsKIAkJCX0KJiM0MzsKJiM0MzsJCQkvKiBCUEYgc3RhY2sgYXJncyAtJmd0OyBSSVNDLVYgQUJJOiBhcmdzIDYtOCBpbiBBNS1BNywgOSYjNDM7IGF0IFNQJiM0MzswICovCiYjNDM7CQkJaWYgKGZtLSZndDtucl9hcmdzICZndDsgTUFYX0JQRl9GVU5DX1JFR19BUkdTKSB7CiYjNDM7CQkJCWludCBuX3N0YWNrID0gZm0tJmd0O25yX2FyZ3MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1M7CiYjNDM7CQkJCWludCBuX3JlZyA9IG1pbl90KGludCwgbl9zdGFjaywKJiM0MzsJCQkJCQkgIFJWX01BWF9SRUdfQVJHUyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7CiYjNDM7CiYjNDM7CQkJCWZvciAoaWR4ID0gMDsgaWR4ICZsdDsgbl9yZWc7IGlkeCYjNDM7JiM0MzspIHsKJiM0MzsJCQkJCWludCBzeiA9IGZtLSZndDthcmdfc2l6ZVtNQVhfQlBGX0ZVTkNfUkVHX0FSR1MgJiM0MzsgaWR4XTsKJiM0MzsKJiM0MzsJCQkJCWVtaXRfbGQoUlZfUkVHX0E1ICYjNDM7IGlkeCwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpOwomIzQzOwkJCQkJaWYgKHN6ID09IHNpemVvZihpbnQpKQomIzQzOwkJCQkJCWVtaXRfc2V4dHcoUlZfUkVHX0E1ICYjNDM7IGlkeCwgUlZfUkVHX0E1ICYjNDM7IGlkeCwgY3R4KTsKJiM0MzsJCQkJfQomIzQzOwomIzQzOwkJCQlmb3IgKGlkeCA9IG5fcmVnOyBpZHggJmx0OyBuX3N0YWNrOyBpZHgmIzQzOyYjNDM7KSB7CiYjNDM7CQkJCQlpbnQgc3ogPSBmbS0mZ3Q7YXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICYjNDM7IGlkeF07CiYjNDM7CiYjNDM7CQkJCQllbWl0X2xkKFJWX1JFR19UMSwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpOwomIzQzOwkJCQkJaWYgKHN6ID09IHNpemVvZihpbnQpKQomIzQzOwkJCQkJCWVtaXRfc2V4dHcoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIGN0eCk7CiYjNDM7CQkJCQllbWl0X3NkKFJWX1JFR19TUCwgKGlkeCAtIG5fcmVnKSAqIDgsIFJWX1JFR19UMSwgY3R4KTsKJiM0MzsJCQkJfQomIzQzOwkJCX0KIAkJfQogCiAJCS8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqLwpAQCAtMTg5MSw2ICYjNDM7MTkxNiwyMSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAljYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0g6CiAJY2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9XOgogCWNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfRFc6CiYjNDM7CQlpZiAoaW5zbi0mZ3Q7c3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykgewomIzQzOwkJCWludCBpZHggPSBvZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJCQlpZiAoaXNfMTJiX2ludChpZHggKiA4KSkgewomIzQzOwkJCQllbWl0X2xkeF9pbnNuKHJkLCBpZHggKiA4LCBSVl9SRUdfRlAsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7CiYjNDM7CQkJCWVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfRlAsIGN0eCk7CiYjNDM7CQkJCWVtaXRfbGR4X2luc24ocmQsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpOwomIzQzOwkJCX0KJiM0MzsJCQlpZiAoQlBGX1NJWkUoY29kZSkgIT0gQlBGX0RXICZhbXA7JmFtcDsgaW5zbl9pc196ZXh0KCZhbXA7aW5zblsxXSkpCiYjNDM7CQkJCXJldHVybiAxOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwkJZmFsbHRocm91Z2g7CiAJY2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9COgogCWNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfSDoKIAljYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX1c6CkBAIC0xOTM4LDYgJiM0MzsxOTc4LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCWNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9IOgogCWNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9XOgogCWNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzoKJiM0MzsJCWlmIChpbnNuLSZndDtkc3RfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7CiYjNDM7CQkJaW50IGlkeCA9IC1vZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJCQllbWl0X2ltbShSVl9SRUdfVDEsIGltbSwgY3R4KTsKJiM0MzsJCQlpZiAoaXNfMTJiX2ludChpZHggKiA4KSkgewomIzQzOwkJCQllbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgUlZfUkVHX1QxLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0X2ltbShSVl9SRUdfVDIsIGlkeCAqIDgsIGN0eCk7CiYjNDM7CQkJCWVtaXRfYWRkKFJWX1JFR19UMiwgUlZfUkVHX1NQLCBSVl9SRUdfVDIsIGN0eCk7CiYjNDM7CQkJCWVtaXRfc3R4X2luc24oUlZfUkVHX1QyLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwomIzQzOwkJCX0KJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsJCWZhbGx0aHJvdWdoOwogCS8qIFNUIHwgUFJPQkVfTUVNMzI6ICooc2l6ZSAqKShkc3QgJiM0MzsgUlZfUkVHX0FSRU5BICYjNDM7IG9mZikgPSBpbW0gKi8KIAljYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COgogCWNhc2UgQlBGX1NUIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0g6CkBAIC0xOTYwLDYgJiM0MzsyMDE0LDE5IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCWNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfSDoKIAljYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX1c6CiAJY2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9EVzoKJiM0MzsJCWlmIChpbnNuLSZndDtkc3RfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7CiYjNDM7CQkJaW50IGlkeCA9IC1vZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJCQlpZiAoaXNfMTJiX2ludChpZHggKiA4KSkgewomIzQzOwkJCQllbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTsKJiM0MzsJCQkJZW1pdF9hZGQoUlZfUkVHX1QxLCBSVl9SRUdfU1AsIFJWX1JFR19UMSwgY3R4KTsKJiM0MzsJCQkJZW1pdF9zdHhfaW5zbihSVl9SRUdfVDEsIDAsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCQl9CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CQlmYWxsdGhyb3VnaDsKIAkvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCAmIzQzOyBSVl9SRUdfQVJFTkEgJiM0Mzsgb2ZmKSA9IHNyYyAqLwogCWNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COgogCWNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOgpAQCAtMjAzNiw2ICYjNDM7MjEwMyw3IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKQogCiAJc3RhY2tfYWRqdXN0ID0gcm91bmRfdXAoc3RhY2tfYWRqdXN0LCBTVEFDS19BTElHTik7CiAJc3RhY2tfYWRqdXN0ICYjNDM7PSBicGZfc3RhY2tfYWRqdXN0OwomIzQzOwlzdGFja19hZGp1c3QgJiM0Mzs9IGN0eC0mZ3Q7c3RhY2tfYXJnX3NpemU7CiAKIAlzdG9yZV9vZmZzZXQgPSBzdGFja19hZGp1c3QgLSA4OwogCkBAIC0yMDkzLDcgJiM0MzsyMTYxLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpCiAJZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7CiAKIAlpZiAoYnBmX3N0YWNrX2FkanVzdCkKLQkJZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBicGZfc3RhY2tfYWRqdXN0LCBjdHgpOwomIzQzOwkJZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBjdHgtJmd0O3N0YWNrX2FyZ19zaXplICYjNDM7IGJwZl9zdGFja19hZGp1c3QsIGN0eCk7CiAKIAljdHgtJmd0O3N0YWNrX3NpemUgPSBzdGFja19hZGp1c3Q7CiAKQEAgLTIxNzEsMyAmIzQzOzIyMzksOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZCkKIHsKIAlyZXR1cm4gdHJ1ZTsKIH0KJiM0MzsKJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKQomIzQzO3sKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwppbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwpAQCAtNzIsNiAmIzQzOzcyLDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJY3R4LSZndDthcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLSZndDthdXgtJmd0O2FyZW5hKTsKIAljdHgtJmd0O3VzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy0mZ3Q7YXV4LSZndDthcmVuYSk7CiAJY3R4LSZndDtwcm9nID0gcHJvZzsKJiM0MzsKJiM0MzsJY3R4LSZndDtzdGFja19hcmdfc2l6ZSA9IHJvdW5kX3VwKGJwZl9vdXRfc3RhY2tfYXJnX2NudChlbnYsIHByb2cpICoKJiM0MzsJCQkJICAgICAgIHNpemVvZih1NjQpLCBTVEFDS19BTElHTik7CiYjNDM7CiAJY3R4LSZndDtvZmZzZXQgPSBrdnphbGxvY19vYmpzKGludCwgcHJvZy0mZ3Q7bGVuKTsKIAlpZiAoIWN0eC0mZ3Q7b2Zmc2V0KQogCQlnb3RvIG91dF9vZmZzZXQ7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMKaW5kZXggOGQzOGFhZmU2NmEyOC4uYWIxMjM5N2E5YjUyYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYwpAQCAtNCw3ICYjNDM7NCw4IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCA5OWJjMTE1ZjgzODBhLi5hOTgwYTNhMzk5ZDNmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwpAQCAtMyw3ICYjNDM7Myw4IEBACiAjaW5jbHVkZSAmbHQ7dm1saW51eC5oJmd0OwogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZikKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYwppbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jCkBAIC0yMSw3ICYjNDM7MjEsOCBAQCBzdHJ1Y3QgewogCiBpbnQgdGltZXJfcmVzdWx0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jCmluZGV4IDM0NWYyZGEyZTM2MWIuLmI2YjFhOGFhN2Y0NGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMKQEAgLTYsNyAmIzQzOzYsOCBAQAogI2luY2x1ZGUgJiMzNDticGZfa2Z1bmNzLmgmIzM0OwogI2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMKaW5kZXggYmVlMmVlZWMwMjFkNy4uNmVlYmFmZTdmMmY4NyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jCkBAIC02LDcgJiM0Mzs2LDggQEAKICNpbmNsdWRlICYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jCmluZGV4IDdlMGNlNWRiMjhhMGQuLmU4Y2QyOTZmZTc2MzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMKQEAgLTEyLDcgJiM0MzsxMiw4IEBAIHN0cnVjdCB7CiAJX190eXBlKHZhbHVlLCBsb25nIGxvbmcpOwogfSBtYXBfaGFzaF84YiBTRUMoJiMzNDsubWFwcyYjMzQ7KTsKIAotI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSAmYW1wOyZhbXA7IFwKJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXAomIzQzOwkoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSAmYW1wOyZhbXA7IF9fcmlzY3ZfeGxlbiA9PSA2NCkpICZhbXA7JmFtcDsgXAogCWRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVCkKIAogX19ub2lubGluZSBfX3VzZWQKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCBjOWZlNDg1N2RhM2Y1Li41NjJlODMxOWZmYzIyIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jCkBAIC01LDcgJiM0Mzs1LDggQEAKICNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIF9fbm9pbmxpbmUgX191c2VkIF9fbmFrZWQKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2OTkKCQkJCQkJCW91dHB1dDogMTg2CgkJCQkJCQl0aG91Z2h0czogODI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vIEtNU0FOIE5lZWRlZCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBvcHRpbWl6aW5nIHRoZSBSSVNDLVYgQlBGIEpJVCBjb21waWxlci4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgc3RhY2sgYXJndW1lbnQgc3VwcG9ydCBmb3IgQlBGIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBsb3Qgb2YgYXJndW1lbnRzIOKAkyBtb3JlIHRoYW4gdGhlIHJlZ2lzdGVyIGNvdW50IGFsbG93cyDigJMgYnkgbW9kaWZ5aW5nIHRoZSBjb2RlIGdlbmVyYXRpb24gdG8gaGFuZGxlIGxvYWRpbmcgYW5kIHN0b3JpbmcgdGhlbSBvbiB0aGUgc3RhY2suIE15IGluaXRpYWwgY29uY2VybiB3YXMgYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUsIGEgY2xhc3NpYyBpc3N1ZS4gQnV0IGFmdGVyIGRpZ2dpbmcgaW4sIEkmIzM5O20gcHJldHR5IGNvbmZpZGVudCB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZSBoZXJlLgoKVGhpcyBwYXRjaCBpcyAqc29sZWx5KiBjb25jZXJuZWQgd2l0aCB0aGUgSklUIGNvbXBpbGVyLCB3aGljaCB0cmFuc2xhdGVzIEJQRiBpbnN0cnVjdGlvbnMgaW50byBSSVNDLVYgbWFjaGluZSBjb2RlLiBBbnkgYnVncyBpbnRyb2R1Y2VkIGhlcmUgd291bGQgbWFuaWZlc3QgYXMgZmxhd2VkIG1hY2hpbmUgY29kZSwgbGVhZGluZyB0byBwb3RlbnRpYWxseSBpbmNvcnJlY3QgYmVoYXZpb3IsIGNyYXNoZXMsIG9yIG1lbW9yeSBjb3JydXB0aW9uLiBCUEYgc2VsZnRlc3RzIGFyZSBhIHNvbGlkIGRlZmVuc2UgaW4gdGhpcyBjYXNlLCBhbmQgdGhlIHVzdWFsIEtBU0FOIG1lY2hhbmlzbXMgd291bGQgbGlrZWx5IGNhdGNoIGFueSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIHNpbWlsYXIgaXNzdWVzLiBUaGUga2V5IHRoaW5nIGlzIHRoYXQgdGhlICpwYXRjaCBpdHNlbGYqIGlzbiYjMzk7dCBpbnRyb2R1Y2luZyB1bmluaXRpYWxpemVkICprZXJuZWwqIG1lbW9yeSBvciBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgYmUgc3VzY2VwdGlibGUgdG8gS01TQU4mIzM5O3MgaW5zdHJ1bWVudGF0aW9uIG9mIEMgY29kZS4KCkxldCBtZSBjbGFyaWZ5OiBLTVNBTiBpc24mIzM5O3QgZXZlbiByZWxldmFudCBoZXJlLiBLTVNBTiBpcyBmb3IgeDg2XzY0IGFuZCBzMzkweCwgYW5kIHBvdGVudGlhbGx5IGFybTY0LCBub3QgUklTQy1WLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIFJJU0MtVi1zcGVjaWZpYyBjaGFuZ2UuIEV2ZW4gaWYgS01TQU4gKndlcmUqIGF2YWlsYWJsZSwgaXQgaW5zdHJ1bWVudHMgdGhlIEMgY29kZS4gQSBKSVQgc3RhY2sgYXJndW1lbnQgYnVnIGlzIGEgKmxvZ2ljKiBidWcgaW4gY29kZSBnZW5lcmF0aW9uLCBpdCBtaWdodCByZXN1bHQgaW4gdGhlIEJQRiBwcm9ncmFtIGFjY2Vzc2luZyB1bmluaXRpYWxpemVkIHN0YWNrIG1lbW9yeSwgYnV0IEtNU0FOIGRvZXNuJiMzOTt0IChhcyBmYXIgYXMgSSBrbm93KSBpbnN0cnVtZW50IEJQRiBKSVQgY29kZSBpbiB0aGlzIHdheSwgZXNwZWNpYWxseSBzaW5jZSB0aGlzIGlzIFJJU0MtViBzcGVjaWZpYy4gVGhlIEJQRiBLTVNBTiBpbnN0cnVtZW50YXRpb24gaXMgYSBzZXBhcmF0ZSB0aGluZy4KClRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSB3ZW50IGJhY2sgYW5kIHJlLWV4YW1pbmVkIHRoZSBjb2RlLiBUaGUgYGN0eGAgdmFyaWFibGUsIHVzZWQgdGhyb3VnaG91dCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLCBnZXRzIHplcm9lZCB3aGVuIGFsbG9jYXRlZCB2aWEgYGt2emFsbG9jX29ianNgLiBUaGUgY2hhbmdlcyBhZmZlY3QgdGhlIGluc3RydWN0aW9uIGVtaXNzaW9uIGxvZ2ljIChgYnBmX2ppdF9lbWl0X2luc25gKSBhbmQgcHJvbG9ndWUgY29uc3RydWN0aW9uIChgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWApIGJ1dCBkb24mIzM5O3QgaW50cm9kdWNlIGNvbXBsZXggbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBjb3BpZWQgdG8gdXNlcnNwYWNlIG9yIGFueXRoaW5nIHRoYXQgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgQyB2YXJpYWJsZXMuIFNvIHRoZSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQgaXMgcHJhY3RpY2FsbHkgbmlsLgoKVGhlcmVmb3JlLCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gVGhpcyBwYXRjaCBpcyBhIEpJVCBjb21waWxhdGlvbiBvcHRpbWl6YXRpb24gYW5kIGRvZXNuJiMzOTt0IHdhcnJhbnQgYSBLTVNBTiBydW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAxOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIDY0LWJpdCBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSB0cmFuc2xhdGlvbiBvZiBCUEYgaW5zdHJ1Y3Rpb25zIHRvIFJJU0MtViBtYWNoaW5lIGNvZGUsIHNwZWNpZmljYWxseSBoYW5kbGluZyBzdGFjayBvZmZzZXRzIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgbmV3IGtlcm5lbCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG8gdGhleSBhZGQgY29tcGxleCBDIGRhdGEgc3RydWN0dXJlcyBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gdGhlIGtlcm5lbCYjMzk7cyBDIGNvZGUuIEFueSBidWdzIGluIHRoZSBKSVQgY29tcGlsZXIgd291bGQgcmVzdWx0IGluIGluY29ycmVjdCBjb2RlIGdlbmVyYXRpb24gKGUuZy4sIGNyYXNoZXMsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIHJlZ2lzdGVyIGNvcnJ1cHRpb24pLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEJQRiBzZWxmdGVzdHMgYW5kIHN0YW5kYXJkIEtBU0FOLiBGdXJ0aGVybW9yZSwgS01TQU4gaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgb24gdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUsIG1ha2luZyBhIEtNU0FOIHJ1biBpbmFwcGxpY2FibGUgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyBCUEYgc3RhY2sgYXJndW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBSSVNDLVYgNjQtYml0IEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIHRyYW5zbGF0aW9uIG9mIEJQRiBpbnN0cnVjdGlvbnMgdG8gUklTQy1WIG1hY2hpbmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHN0YWNrIG9mZnNldHMgZm9yIGZ1bmN0aW9uIGFyZ3VtZW50cy4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBuZXcga2VybmVsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkbyB0aGV5IGFkZCBjb21wbGV4IEMgZGF0YSBzdHJ1Y3R1cmVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGUga2VybmVsJiMzOTtzIEMgY29kZS4gQW55IGJ1Z3MgaW4gdGhlIEpJVCBjb21waWxlciB3b3VsZCByZXN1bHQgaW4gaW5jb3JyZWN0IGNvZGUgZ2VuZXJhdGlvbiAoZS5nLiwgY3Jhc2hlcywgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgcmVnaXN0ZXIgY29ycnVwdGlvbiksIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgQlBGIHNlbGZ0ZXN0cyBhbmQgc3RhbmRhcmQgS0FTQU4uIEZ1cnRoZXJtb3JlLCBLTVNBTiBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBvbiB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZSwgbWFraW5nIGEgS01TQU4gcnVuIGluYXBwbGljYWJsZSBmb3IgdGhpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgcGF0Y2guJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjMwLjM5NTE4NTczNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NjM2MDAxMjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgICBcImJwZl9qaXRfYnVpbGRfcHJvbG9ndWVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIDY0LWJpdCBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSB0cmFuc2xhdGlvbiBvZiBCUEYgaW5zdHJ1Y3Rpb25zIHRvIFJJU0MtViBtYWNoaW5lIGNvZGUsIHNwZWNpZmljYWxseSBoYW5kbGluZyBzdGFjayBvZmZzZXRzIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgbmV3IGtlcm5lbCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG8gdGhleSBhZGQgY29tcGxleCBDIGRhdGEgc3RydWN0dXJlcyBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gdGhlIGtlcm5lbCdzIEMgY29kZS4gQW55IGJ1Z3MgaW4gdGhlIEpJVCBjb21waWxlciB3b3VsZCByZXN1bHQgaW4gaW5jb3JyZWN0IGNvZGUgZ2VuZXJhdGlvbiAoZS5nLiwgY3Jhc2hlcywgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgcmVnaXN0ZXIgY29ycnVwdGlvbiksIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgQlBGIHNlbGZ0ZXN0cyBhbmQgc3RhbmRhcmQgS0FTQU4uIEZ1cnRoZXJtb3JlLCBLTVNBTiBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBvbiB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZSwgbWFraW5nIGEgS01TQU4gcnVuIGluYXBwbGljYWJsZSBmb3IgdGhpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyBzdXBwb3J0IGZvciBCUEYgc3RhY2sgYXJndW1lbnRzIGluIHRoZSBSSVNDLVYgNjQtYml0IEJQRiBKSVQgY29tcGlsZXIsIG1vZGlmeWluZyBjb3JlIEpJVCBmdW5jdGlvbnMgbGlrZSBicGZfaml0X2VtaXRfaW5zbiBhbmQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDE6MzY6MzAuMzk1MTkyODA2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzYyMTUyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YzAzYjUzMWNkYzYyZDdiZjMxYTBjMjExOTFkMGQ0ZTQ2MjA1ZGM4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDE0IDAxOjM2OjI5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxcbmluZGV4IDQxOWI5ZDc5NWYyYTcuLjllYjRlMTQ5NTA1ZDUgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXFxuQEAgLTgyLDYgKzgyLDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHtcXG4gXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gXFx0aW50IHN0YWNrX3NpemU7XFxuIFxcdGludCB0Y2Nfb2Zmc2V0O1xcbitcXHR1MTYgc3RhY2tfYXJnX3NpemU7XFxuIFxcdHU2NCBhcmVuYV92bV9zdGFydDtcXG4gXFx0dTY0IHVzZXJfdm1fc3RhcnQ7XFxuIH07XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggNmI5OTcyYjA3YzFiMC4uNThjYjNlNWZmNmI0ZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbkBAIC0xODE1LDE4ICsxODE1LDQzIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbiBcXG4gXFx0XFx0aWYgKGluc24tXFx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMKSB7XFxuIFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqZm07XFxuLVxcdFxcdFxcdGludCBpZHg7XFxuK1xcdFxcdFxcdGludCBpZHgsIG5hcmdzO1xcbiBcXG4gXFx0XFx0XFx0Zm0gPSBicGZfaml0X2ZpbmRfa2Z1bmNfbW9kZWwoY3R4LVxcdTAwM2Vwcm9nLCBpbnNuKTtcXG4gXFx0XFx0XFx0aWYgKCFmbSlcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbi1cXHRcXHRcXHRmb3IgKGlkeCA9IDA7IGlkeCBcXHUwMDNjIGZtLVxcdTAwM2Vucl9hcmdzOyBpZHgrKykge1xcbitcXHRcXHRcXHRuYXJncyA9IG1pbl90KGludCwgZm0tXFx1MDAzZW5yX2FyZ3MsIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7XFxuK1xcdFxcdFxcdGZvciAoaWR4ID0gMDsgaWR4IFxcdTAwM2MgbmFyZ3M7IGlkeCsrKSB7XFxuIFxcdFxcdFxcdFxcdHU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICsgaWR4LCBjdHgpO1xcbiBcXG4gXFx0XFx0XFx0XFx0aWYgKGZtLVxcdTAwM2Vhcmdfc2l6ZVtpZHhdID09IHNpemVvZihpbnQpKVxcbiBcXHRcXHRcXHRcXHRcXHRlbWl0X3NleHR3KHJlZywgcmVnLCBjdHgpO1xcbiBcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHQvKiBCUEYgc3RhY2sgYXJncyAtXFx1MDAzZSBSSVNDLVYgQUJJOiBhcmdzIDYtOCBpbiBBNS1BNywgOSsgYXQgU1ArMCAqL1xcbitcXHRcXHRcXHRpZiAoZm0tXFx1MDAzZW5yX2FyZ3MgXFx1MDAzZSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpIHtcXG4rXFx0XFx0XFx0XFx0aW50IG5fc3RhY2sgPSBmbS1cXHUwMDNlbnJfYXJncyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUztcXG4rXFx0XFx0XFx0XFx0aW50IG5fcmVnID0gbWluX3QoaW50LCBuX3N0YWNrLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIFJWX01BWF9SRUdfQVJHUyAtIE1BWF9CUEZfRlVOQ19SRUdfQVJHUyk7XFxuK1xcbitcXHRcXHRcXHRcXHRmb3IgKGlkeCA9IDA7IGlkeCBcXHUwMDNjIG5fcmVnOyBpZHgrKykge1xcbitcXHRcXHRcXHRcXHRcXHRpbnQgc3ogPSBmbS1cXHUwMDNlYXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICsgaWR4XTtcXG4rXFxuK1xcdFxcdFxcdFxcdFxcdGVtaXRfbGQoUlZfUkVHX0E1ICsgaWR4LCBpZHggKiA4LCBSVl9SRUdfU1AsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdFxcdGlmIChzeiA9PSBzaXplb2YoaW50KSlcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ZW1pdF9zZXh0dyhSVl9SRUdfQTUgKyBpZHgsIFJWX1JFR19BNSArIGlkeCwgY3R4KTtcXG4rXFx0XFx0XFx0XFx0fVxcbitcXG4rXFx0XFx0XFx0XFx0Zm9yIChpZHggPSBuX3JlZzsgaWR4IFxcdTAwM2Mgbl9zdGFjazsgaWR4KyspIHtcXG4rXFx0XFx0XFx0XFx0XFx0aW50IHN6ID0gZm0tXFx1MDAzZWFyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyArIGlkeF07XFxuK1xcbitcXHRcXHRcXHRcXHRcXHRlbWl0X2xkKFJWX1JFR19UMSwgaWR4ICogOCwgUlZfUkVHX1NQLCBjdHgpO1xcbitcXHRcXHRcXHRcXHRcXHRpZiAoc3ogPT0gc2l6ZW9mKGludCkpXFxuK1xcdFxcdFxcdFxcdFxcdFxcdGVtaXRfc2V4dHcoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdFxcdGVtaXRfc2QoUlZfUkVHX1NQLCAoaWR4IC0gbl9yZWcpICogOCwgUlZfUkVHX1QxLCBjdHgpO1xcbitcXHRcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0LyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgYnBmMmJwZiBjYWxsICovXFxuQEAgLTE4OTEsNiArMTkxNiwyMSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9IOlxcbiBcXHRjYXNlIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX1c6XFxuIFxcdGNhc2UgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfRFc6XFxuK1xcdFxcdGlmIChpbnNuLVxcdTAwM2VzcmNfcmVnID09IEJQRl9SRUdfUEFSQU1TKSB7XFxuK1xcdFxcdFxcdGludCBpZHggPSBvZmYgLyA4IC0gMTtcXG4rXFxuK1xcdFxcdFxcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XFxuK1xcdFxcdFxcdFxcdGVtaXRfbGR4X2luc24ocmQsIGlkeCAqIDgsIFJWX1JFR19GUCwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRlbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdGVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfRlAsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdGVtaXRfbGR4X2luc24ocmQsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGZhbHNlLCBjdHgpO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdGlmIChCUEZfU0laRShjb2RlKSAhPSBCUEZfRFcgXFx1MDAyNlxcdTAwMjYgaW5zbl9pc196ZXh0KFxcdTAwMjZpbnNuWzFdKSlcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIDE7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdFxcdGZhbGx0aHJvdWdoO1xcbiBcXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0I6XFxuIFxcdGNhc2UgQlBGX0xEWCB8IEJQRl9QUk9CRV9NRU0gfCBCUEZfSDpcXG4gXFx0Y2FzZSBCUEZfTERYIHwgQlBGX1BST0JFX01FTSB8IEJQRl9XOlxcbkBAIC0xOTM4LDYgKzE5NzgsMjAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9IOlxcbiBcXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfVzpcXG4gXFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0RXOlxcbitcXHRcXHRpZiAoaW5zbi1cXHUwMDNlZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xcbitcXHRcXHRcXHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xcbitcXG4rXFx0XFx0XFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XFxuK1xcdFxcdFxcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XFxuK1xcdFxcdFxcdFxcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRlbWl0X2ltbShSVl9SRUdfVDIsIGlkeCAqIDgsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdGVtaXRfYWRkKFJWX1JFR19UMiwgUlZfUkVHX1NQLCBSVl9SRUdfVDIsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdGVtaXRfc3R4X2luc24oUlZfUkVHX1QyLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdFxcdGZhbGx0aHJvdWdoO1xcbiBcXHQvKiBTVCB8IFBST0JFX01FTTMyOiAqKHNpemUgKikoZHN0ICsgUlZfUkVHX0FSRU5BICsgb2ZmKSA9IGltbSAqL1xcbiBcXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxcbiBcXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOlxcbkBAIC0xOTYwLDYgKzIwMTQsMTkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfSDpcXG4gXFx0Y2FzZSBCUEZfU1RYIHwgQlBGX01FTSB8IEJQRl9XOlxcbiBcXHRjYXNlIEJQRl9TVFggfCBCUEZfTUVNIHwgQlBGX0RXOlxcbitcXHRcXHRpZiAoaW5zbi1cXHUwMDNlZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xcbitcXHRcXHRcXHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xcbitcXG4rXFx0XFx0XFx0aWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIGlkeCAqIDgsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpZHggKiA4LCBjdHgpO1xcbitcXHRcXHRcXHRcXHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19TUCwgUlZfUkVHX1QxLCBjdHgpO1xcbitcXHRcXHRcXHRcXHRlbWl0X3N0eF9pbnNuKFJWX1JFR19UMSwgMCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdFxcdGZhbGx0aHJvdWdoO1xcbiBcXHQvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCArIFJWX1JFR19BUkVOQSArIG9mZikgPSBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6XFxuIFxcdGNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOlxcbkBAIC0yMDM2LDYgKzIxMDMsNyBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcXG4gXFxuIFxcdHN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgU1RBQ0tfQUxJR04pO1xcbiBcXHRzdGFja19hZGp1c3QgKz0gYnBmX3N0YWNrX2FkanVzdDtcXG4rXFx0c3RhY2tfYWRqdXN0ICs9IGN0eC1cXHUwMDNlc3RhY2tfYXJnX3NpemU7XFxuIFxcbiBcXHRzdG9yZV9vZmZzZXQgPSBzdGFja19hZGp1c3QgLSA4O1xcbiBcXG5AQCAtMjA5Myw3ICsyMTYxLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXFxuIFxcdGVtaXRfYWRkaShSVl9SRUdfRlAsIFJWX1JFR19TUCwgc3RhY2tfYWRqdXN0LCBjdHgpO1xcbiBcXG4gXFx0aWYgKGJwZl9zdGFja19hZGp1c3QpXFxuLVxcdFxcdGVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcXG4rXFx0XFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBjdHgtXFx1MDAzZXN0YWNrX2FyZ19zaXplICsgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcXG4gXFxuIFxcdGN0eC1cXHUwMDNlc3RhY2tfc2l6ZSA9IHN0YWNrX2FkanVzdDtcXG4gXFxuQEAgLTIxNzEsMyArMjIzOSw4IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKVxcbiB7XFxuIFxcdHJldHVybiB0cnVlO1xcbiB9XFxuK1xcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKVxcbit7XFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcXG5pbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcXG5AQCAtNzIsNiArNzIsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gXFx0Y3R4LVxcdTAwM2VhcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZWFyZW5hKTtcXG4gXFx0Y3R4LVxcdTAwM2V1c2VyX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF91c2VyX3ZtX3N0YXJ0KHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlYXJlbmEpO1xcbiBcXHRjdHgtXFx1MDAzZXByb2cgPSBwcm9nO1xcbitcXG4rXFx0Y3R4LVxcdTAwM2VzdGFja19hcmdfc2l6ZSA9IHJvdW5kX3VwKGJwZl9vdXRfc3RhY2tfYXJnX2NudChlbnYsIHByb2cpICpcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHNpemVvZih1NjQpLCBTVEFDS19BTElHTik7XFxuK1xcbiBcXHRjdHgtXFx1MDAzZW9mZnNldCA9IGt2emFsbG9jX29ianMoaW50LCBwcm9nLVxcdTAwM2VsZW4pO1xcbiBcXHRpZiAoIWN0eC1cXHUwMDNlb2Zmc2V0KVxcbiBcXHRcXHRnb3RvIG91dF9vZmZzZXQ7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xcbmluZGV4IDhkMzhhYWZlNjZhMjguLmFiMTIzOTdhOWI1MmEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuQEAgLTQsNyArNCw4IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXFxuaW5kZXggOTliYzExNWY4MzgwYS4uYTk4MGEzYTM5OWQzZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXFxuQEAgLTMsNyArMyw4IEBAXFxuICNpbmNsdWRlIFxcdTAwM2N2bWxpbnV4LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcXG5pbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xcbkBAIC0yMSw3ICsyMSw4IEBAIHN0cnVjdCB7XFxuIFxcbiBpbnQgdGltZXJfcmVzdWx0O1xcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxcXFxuK1xcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFxcdTAwMjZcXHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXFxuaW5kZXggMzQ1ZjJkYTJlMzYxYi4uYjZiMWE4YWE3ZjQ0YSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcXG5AQCAtNiw3ICs2LDggQEBcXG4gI2luY2x1ZGUgXFxcImJwZl9rZnVuY3MuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuaW5kZXggYmVlMmVlZWMwMjFkNy4uNmVlYmFmZTdmMmY4NyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xcbkBAIC02LDcgKzYsOCBAQFxcbiAjaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcXG5pbmRleCA3ZTBjZTVkYjI4YTBkLi5lOGNkMjk2ZmU3NjMxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xcbkBAIC0xMiw3ICsxMiw4IEBAIHN0cnVjdCB7XFxuIFxcdF9fdHlwZSh2YWx1ZSwgbG9uZyBsb25nKTtcXG4gfSBtYXBfaGFzaF84YiBTRUMoXFxcIi5tYXBzXFxcIik7XFxuIFxcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXFxcXG4rXFx0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXFx1MDAyNlxcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiBcXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXFxuIFxcbiBfX25vaW5saW5lIF9fdXNlZFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcXG5pbmRleCBjOWZlNDg1N2RhM2Y1Li41NjJlODMxOWZmYzIyIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xcbkBAIC01LDcgKzUsOCBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxcXFxuK1xcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFxcdTAwMjZcXHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gX19ub2lubGluZSBfX3VzZWQgX19uYWtlZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMTozNjozMC44NzIyMjkwODVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNjQ3ODQyODUwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9qaXRfZW1pdF9pbnNuXCIsXG4gICAgXCJicGZfaml0X2J1aWxkX3Byb2xvZ3VlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyBzdXBwb3J0IGZvciBCUEYgc3RhY2sgYXJndW1lbnRzIGluIHRoZSBSSVNDLVYgNjQtYml0IEJQRiBKSVQgY29tcGlsZXIsIG1vZGlmeWluZyBjb3JlIEpJVCBmdW5jdGlvbnMgbGlrZSBicGZfaml0X2VtaXRfaW5zbiBhbmQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGMwM2I1MzFjZGM2MmQ3YmYzMWEwYzIxMTkxZDBkNGU0NjIwNWRjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDAxOjM2OjI5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5pbmRleCA0MTliOWQ3OTVmMmE3Li45ZWI0ZTE0OTUwNWQ1IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbkBAIC04Miw2ICs4Miw3IEBAIHN0cnVjdCBydl9qaXRfY29udGV4dCB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0aW50IHN0YWNrX3NpemU7XG4gXHRpbnQgdGNjX29mZnNldDtcbitcdHUxNiBzdGFja19hcmdfc2l6ZTtcbiBcdHU2NCBhcmVuYV92bV9zdGFydDtcbiBcdHU2NCB1c2VyX3ZtX3N0YXJ0O1xuIH07XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IDZiOTk3MmIwN2MxYjAuLjU4Y2IzZTVmZjZiNGQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtMTgxNSwxOCArMTgxNSw0MyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcbiBcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwpIHtcbiBcdFx0XHRjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKmZtO1xuLVx0XHRcdGludCBpZHg7XG4rXHRcdFx0aW50IGlkeCwgbmFyZ3M7XG4gXG4gXHRcdFx0Zm0gPSBicGZfaml0X2ZpbmRfa2Z1bmNfbW9kZWwoY3R4LVx1MDAzZXByb2csIGluc24pO1xuIFx0XHRcdGlmICghZm0pXG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgZm0tXHUwMDNlbnJfYXJnczsgaWR4KyspIHtcbitcdFx0XHRuYXJncyA9IG1pbl90KGludCwgZm0tXHUwMDNlbnJfYXJncywgTUFYX0JQRl9GVU5DX1JFR19BUkdTKTtcbitcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgbmFyZ3M7IGlkeCsrKSB7XG4gXHRcdFx0XHR1OCByZWcgPSBicGZfdG9fcnZfcmVnKEJQRl9SRUdfMSArIGlkeCwgY3R4KTtcbiBcbiBcdFx0XHRcdGlmIChmbS1cdTAwM2Vhcmdfc2l6ZVtpZHhdID09IHNpemVvZihpbnQpKVxuIFx0XHRcdFx0XHRlbWl0X3NleHR3KHJlZywgcmVnLCBjdHgpO1xuIFx0XHRcdH1cbitcbitcdFx0XHQvKiBCUEYgc3RhY2sgYXJncyAtXHUwMDNlIFJJU0MtViBBQkk6IGFyZ3MgNi04IGluIEE1LUE3LCA5KyBhdCBTUCswICovXG4rXHRcdFx0aWYgKGZtLVx1MDAzZW5yX2FyZ3MgXHUwMDNlIE1BWF9CUEZfRlVOQ19SRUdfQVJHUykge1xuK1x0XHRcdFx0aW50IG5fc3RhY2sgPSBmbS1cdTAwM2Vucl9hcmdzIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTO1xuK1x0XHRcdFx0aW50IG5fcmVnID0gbWluX3QoaW50LCBuX3N0YWNrLFxuK1x0XHRcdFx0XHRcdCAgUlZfTUFYX1JFR19BUkdTIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTKTtcbitcbitcdFx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBuX3JlZzsgaWR4KyspIHtcbitcdFx0XHRcdFx0aW50IHN6ID0gZm0tXHUwMDNlYXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICsgaWR4XTtcbitcbitcdFx0XHRcdFx0ZW1pdF9sZChSVl9SRUdfQTUgKyBpZHgsIGlkeCAqIDgsIFJWX1JFR19TUCwgY3R4KTtcbitcdFx0XHRcdFx0aWYgKHN6ID09IHNpemVvZihpbnQpKVxuK1x0XHRcdFx0XHRcdGVtaXRfc2V4dHcoUlZfUkVHX0E1ICsgaWR4LCBSVl9SRUdfQTUgKyBpZHgsIGN0eCk7XG4rXHRcdFx0XHR9XG4rXG4rXHRcdFx0XHRmb3IgKGlkeCA9IG5fcmVnOyBpZHggXHUwMDNjIG5fc3RhY2s7IGlkeCsrKSB7XG4rXHRcdFx0XHRcdGludCBzeiA9IGZtLVx1MDAzZWFyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyArIGlkeF07XG4rXG4rXHRcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX1QxLCBpZHggKiA4LCBSVl9SRUdfU1AsIGN0eCk7XG4rXHRcdFx0XHRcdGlmIChzeiA9PSBzaXplb2YoaW50KSlcbitcdFx0XHRcdFx0XHRlbWl0X3NleHR3KFJWX1JFR19UMSwgUlZfUkVHX1QxLCBjdHgpO1xuK1x0XHRcdFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgKGlkeCAtIG5fcmVnKSAqIDgsIFJWX1JFR19UMSwgY3R4KTtcbitcdFx0XHRcdH1cbitcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdFx0LyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgYnBmMmJwZiBjYWxsICovXG5AQCAtMTg5MSw2ICsxOTE2LDIxIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9XOlxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9EVzpcbitcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuK1x0XHRcdGludCBpZHggPSBvZmYgLyA4IC0gMTtcbitcbitcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuK1x0XHRcdFx0ZW1pdF9sZHhfaW5zbihyZCwgaWR4ICogOCwgUlZfUkVHX0ZQLCBCUEZfU0laRShjb2RlKSwgZmFsc2UsIGN0eCk7XG4rXHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTtcbitcdFx0XHRcdGVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfRlAsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2xkeF9pbnNuKHJkLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTtcbitcdFx0XHR9XG4rXHRcdFx0aWYgKEJQRl9TSVpFKGNvZGUpICE9IEJQRl9EVyBcdTAwMjZcdTAwMjYgaW5zbl9pc196ZXh0KFx1MDAyNmluc25bMV0pKVxuK1x0XHRcdFx0cmV0dXJuIDE7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX1c6XG5AQCAtMTkzOCw2ICsxOTc4LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzpcbitcdFx0aWYgKGluc24tXHUwMDNlZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuK1x0XHRcdGludCBpZHggPSAtb2ZmIC8gOCAtIDE7XG4rXG4rXHRcdFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XG4rXHRcdFx0aWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHtcbitcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDIsIGlkeCAqIDgsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDIsIFJWX1JFR19TUCwgUlZfUkVHX1QyLCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfVDIsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4rXHRcdFx0fVxuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHRcdGZhbGx0aHJvdWdoO1xuIFx0LyogU1QgfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCArIFJWX1JFR19BUkVOQSArIG9mZikgPSBpbW0gKi9cbiBcdGNhc2UgQlBGX1NUIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOlxuQEAgLTE5NjAsNiArMjAxNCwxOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfRFc6XG4rXHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbitcdFx0XHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xuK1xuK1x0XHRcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XG4rXHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19TUCwgUlZfUkVHX1QxLCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfVDEsIDAsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbitcdFx0XHR9XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCArIFJWX1JFR19BUkVOQSArIG9mZikgPSBzcmMgKi9cbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0g6XG5AQCAtMjAzNiw2ICsyMTAzLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcbiBcdHN0YWNrX2FkanVzdCArPSBicGZfc3RhY2tfYWRqdXN0O1xuK1x0c3RhY2tfYWRqdXN0ICs9IGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZTtcbiBcbiBcdHN0b3JlX29mZnNldCA9IHN0YWNrX2FkanVzdCAtIDg7XG4gXG5AQCAtMjA5Myw3ICsyMTYxLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXHRlbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX2FkanVzdCwgY3R4KTtcbiBcbiBcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxuLVx0XHRlbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7XG4rXHRcdGVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgY3R4LVx1MDAzZXN0YWNrX2FyZ19zaXplICsgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcbiBcbiBcdGN0eC1cdTAwM2VzdGFja19zaXplID0gc3RhY2tfYWRqdXN0O1xuIFxuQEAgLTIxNzEsMyArMjIzOSw4IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKVxuIHtcbiBcdHJldHVybiB0cnVlO1xuIH1cbitcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKVxuK3tcbitcdHJldHVybiB0cnVlO1xuK31cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtNzIsNiArNzIsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhcmVuYSk7XG4gXHRjdHgtXHUwMDNldXNlcl92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhcmVuYSk7XG4gXHRjdHgtXHUwMDNlcHJvZyA9IHByb2c7XG4rXG4rXHRjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgPSByb3VuZF91cChicGZfb3V0X3N0YWNrX2FyZ19jbnQoZW52LCBwcm9nKSAqXG4rXHRcdFx0XHQgICAgICAgc2l6ZW9mKHU2NCksIFNUQUNLX0FMSUdOKTtcbitcbiBcdGN0eC1cdTAwM2VvZmZzZXQgPSBrdnphbGxvY19vYmpzKGludCwgcHJvZy1cdTAwM2VsZW4pO1xuIFx0aWYgKCFjdHgtXHUwMDNlb2Zmc2V0KVxuIFx0XHRnb3RvIG91dF9vZmZzZXQ7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5pbmRleCA4ZDM4YWFmZTY2YTI4Li5hYjEyMzk3YTliNTJhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC00LDcgKzQsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gbG9uZyBzdWJwcm9nX2NhbGxfbWVtX2tmdW5jKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMsIGxvbmcgZCwgbG9uZyBlLCBsb25nIHNpemUpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuaW5kZXggOTliYzExNWY4MzgwYS4uYTk4MGEzYTM5OWQzZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTMsNyArMyw4IEBAXG4gI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuaW5kZXggOTQ0ZTNiYjYwM2U3ZS4uM2U5ZWQzN2M1N2JiOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG5AQCAtMjEsNyArMjEsOCBAQCBzdHJ1Y3Qge1xuIFxuIGludCB0aW1lcl9yZXN1bHQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbitcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuaW5kZXggMzQ1ZjJkYTJlMzYxYi4uYjZiMWE4YWE3ZjQ0YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG5AQCAtNiw3ICs2LDggQEBcbiAjaW5jbHVkZSBcImJwZl9rZnVuY3MuaFwiXG4gI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuaW5kZXggYmVlMmVlZWMwMjFkNy4uNmVlYmFmZTdmMmY4NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC02LDcgKzYsOCBAQFxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiAjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gLyogRm9yY2Uga2Z1bmMgZXh0ZXJuIEJURiBnZW5lcmF0aW9uIGZvciBpbmxpbmUgYXNtIGNhbGwgYmVsb3cuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG5pbmRleCA3ZTBjZTVkYjI4YTBkLi5lOGNkMjk2ZmU3NjMxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbkBAIC0xMiw3ICsxMiw4IEBAIHN0cnVjdCB7XG4gXHRfX3R5cGUodmFsdWUsIGxvbmcgbG9uZyk7XG4gfSBtYXBfaGFzaF84YiBTRUMoXCIubWFwc1wiKTtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIF9fbm9pbmxpbmUgX191c2VkXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5pbmRleCBjOWZlNDg1N2RhM2Y1Li41NjJlODMxOWZmYzIyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbkBAIC01LDcgKzUsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIF9fbm9pbmxpbmUgX191c2VkIF9fbmFrZWRcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjMwLjg3MjIzMjM0NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NzcwNjcyNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUklTQy1WIEJQRiBKSVQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgc29tZSBwcmV0dHkgZnVuZGFtZW50YWwgY2hhbmdlcyB0byB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIg4oCTIG5hbWVseSwgYWRkaW5nIHN1cHBvcnQgZm9yIHN0YWNrIGFyZ3VtZW50cyBpbiBCUEYgZnVuY3Rpb25zLiBUaGlzIGlzIHNpZ25pZmljYW50LCBpdCB0b3VjaGVzIGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdHksIGFuZCBpbW1lZGlhdGVseSB0cmlnZ2VycyBzb21lIHRob3VnaHRzIGFib3V0IGhvdyB0byB2YWxpZGF0ZSBpdC5cblxuSSBzZWUgdGhlIG1vZGlmaWVkIGZpbGVzOiBgYnBmX2ppdC5oYCwgYGJwZl9qaXRfY29tcDY0LmNgLCBgYnBmX2ppdF9jb3JlLmNgLCBhbmQgc29tZSBCUEYgc2VsZnRlc3RzLiBUaGF0J3MgYSBnb29kIHNpZ24sIHNlbGZ0ZXN0cyBhcmUgY3J1Y2lhbCBmb3IgdGhpcyBraW5kIG9mIGxvdy1sZXZlbCBjaGFuZ2UuIERlZmluaXRlbHkgbmVlZCB0byBydW4gdGhvc2UgYW5kIGFueSBvdGhlciByZWxldmFudCB0ZXN0cyB3ZSBoYXZlLiBGdXp6aW5nIGlzIGEgbXVzdCDigJMgdGhpcyBpcyBhIHByaW1lIHRhcmdldCBmb3IgcG90ZW50aWFsIGV4cGxvaXRzLlxuXG5MZXQncyBkaXZlIGludG8gdGhlIGNvZGUuIGBicGZfaml0X2NvbXA2NC5jYCBsb29rcyBpbnRlcmVzdGluZy4gVGhlIGtleSBmdW5jdGlvbnMgSSdsbCBleGFtaW5lIGFyZSBgYnBmX2ppdF9lbWl0X2luc25gLCBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAsIGFuZCB0aGUgbmV3IGBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3NgLiBUaG9zZSBzaG91bGQgaWxsdW1pbmF0ZSBob3cgdGhleSdyZSBoYW5kbGluZyB0aGUgc3RhY2sgb3BlcmF0aW9ucyBhbmQgYXJndW1lbnQgcGFzc2luZy5cblxuTm93LCBpbiBgYnBmX2ppdF9jb3JlLmNgLCBJIHNlZSBgYnBmX2ludF9qaXRfY29tcGlsZWAuIFdhaXQgYSBtaW51dGUuLi4gdGhhdCdzIGFuICplbnRyeSBwb2ludCogZm9yIHRoZSBKSVQgY29tcGlsZXIsIGEgY3JpdGljYWwgQVBJIGZ1bmN0aW9uLiBUaGF0J3MgYSAqbWFqb3IqIGZvY3VzIGZvciB0ZXN0aW5nLiBXZSBuZWVkIHRvIG1ldGljdWxvdXNseSBhbmFseXplIGhvdyBzdGFjayBhcmd1bWVudHMgYXJlIGhhbmRsZWQgaGVyZSwgZXNwZWNpYWxseSBhcm91bmQgYW55IHBvdGVudGlhbCBib3VuZGFyeSBjb25kaXRpb25zIG9yIGVycm9yIGhhbmRsaW5nLlxuXG5gYnBmX2ppdF9lbWl0X2luc25gIGFsc28ganVtcHMgb3V0OyBJIHNob3VsZCBjaGVjayBpZiBpdCdzIGV4dGVybmFsIG9yIHN0YXRpYywgYW5kIHdoZXRoZXIgaXQncyBjYWxsZWQgZnJvbSBvdGhlciBwbGFjZXMgYmVzaWRlcyBgYnBmX2ludF9qaXRfY29tcGlsZWAgYW5kIGhvdy4gV2UnbGwgbmVlZCB0byBrbm93IHdoaWNoIHBhcnRzIG9mIHRoZSBwYXRjaCBoYXZlIGV4dGVybmFsIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcwMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjM2LjM0OTMwMTk0NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDcyMDYyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0X2VtaXRfaW5zblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oPTEzMjc9dm9pZCBicGZfaml0X2J1aWxkX2VwaWxvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KTtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgtMTMyOC1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0Lmg6MTMyOTppbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgtMTMzMC1cXHRcXHQgICAgICBib29sIGV4dHJhX3Bhc3MpO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wMzIuYz05OTI9c3RhdGljIHZvaWQgZW1pdF96ZXh0NjQoY29uc3QgczggKmRzdCwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXAzMi5jLTEwMDEtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wMzIuYzoxMDAyOmludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTAwMy1cXHRcXHQgICAgICBib29sIGV4dHJhX3Bhc3MpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEzMjQ9aW50IGFyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcm9faW1hZ2UsXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNjAtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMzYxOmludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTM2Mi1cXHRcXHQgICAgICBib29sIGV4dHJhX3Bhc3MpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0xOT1zdGF0aWMgaW50IGJ1aWxkX2JvZHkoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgZXh0cmFfcGFzcywgaW50ICpvZmZzZXQpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0yNy1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoyODpcXHRcXHRyZXQgPSBicGZfaml0X2VtaXRfaW5zbihpbnNuLCBjdHgsIGV4dHJhX3Bhc3MpO1xcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTI5LVxcdFxcdGlmIChyZXQgXFx1MDAzZSAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMTozNjozNi40MDQwMzMxMTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTAyMzg3NDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQlBGIEpJVCBDb21waWxhdGlvbiBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIEJQRiBKSVQgY29tcGlsYXRpb24gZmxvdy4gVGhlIGZ1bmN0aW9uIGBicGZfaml0X2VtaXRfaW5zbmAgaXNuJ3Qgc3RhdGljLCBpdCdzIGRlY2xhcmVkIGluIGBicGZfaml0LmhgLiBUaGF0J3MgZ29vZCwgaXQncyB2aXNpYmxlLiBCdXQgdGhlIGNvZGUgZmxvdyBpcyBpbnRlcmVzdGluZzogSSBzZWUgdGhhdCBpdCdzIGNhbGxlZCBmcm9tIGBidWlsZF9ib2R5YCwgYW5kIGBidWlsZF9ib2R5YCBpcywgaW4gdHVybiwgY2FsbGVkIGZyb20gYGJwZl9pbnRfaml0X2NvbXBpbGVgLiAgYGJwZl9pbnRfaml0X2NvbXBpbGVgIHNlZW1zIHRvIGJlIHRoZSBjZW50cmFsIGVudHJ5IHBvaW50IGhlcmUsIHRoZSBiaWcga2FodW5hLlxuXG5SaWdodCwgc28gdGhhdCdzIHdoZXJlIHRoZSBjb21waWxhdGlvbiByZWFsbHkga2lja3Mgb2ZmLiBMZXQncyBkaWcgZGVlcGVyIGludG8gYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFuZCBzZWUgd2hhdCdzIGhhcHBlbmluZyBhdCB0aGUgY29yZS4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODA2MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjQwLjkwNjQyMjQyMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc1NDA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3YvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0zOT1ib29sIGJwZl9qaXRfbmVlZHNfemV4dCh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtNDMtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6NDQ6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy00NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjQwLjk1MjE4MDc0N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjE5NjE5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQlBGIEpJVCBDb21waWxhdGlvbiBDb25maWd1cmF0aW9uIG9uIFJJU0MtVioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBCUEYgSklUIGNvbXBpbGF0aW9uIHdvcmtzIG9uIFJJU0MtVi4gTXkgZ28tdG8gaXMgYWx3YXlzIHRoZSBgYnBmX2ludF9qaXRfY29tcGlsZWAgZnVuY3Rpb247IHRoYXQncyB0aGUgc3RhbmRhcmQgZW50cnkgcG9pbnQuIE5vdywgd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgd2UgdGFsa2luZyBhYm91dCBoZXJlPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZW5hYmxlZC4gYENPTkZJR19CUEZfSklUYCBpcyB0aGUgb2J2aW91cyBvbmUsIGFuZCBzaW5jZSB3ZSdyZSBvbiBSSVNDLVYsIGBDT05GSUdfUklTQ1ZgIGlzIGNlcnRhaW5seSByZWxldmFudC4gV2hlcmUgY2FuIEkgZmluZCB0aGUgZGV0YWlscyBvbiB0aGUgaW50ZXJhY3Rpb24gb2YgdGhlc2UgY29uZmlndXJhdGlvbnM/IE15IGZpcnN0IHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBLY29uZmlnIGFuZCBNYWtlZmlsZXMuIEknbGwgc3RhcnQgd2l0aCBgYXJjaC9yaXNjdi9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBvcHRpb25zIGRlZmluZWQsIGFuZCBpZiB0aGF0IGRvZXNuJ3QgaG9sZCB0aGUgaW5mbywgSSdsbCBtb3ZlIG9uIHRvIGBhcmNoL3Jpc2N2L25ldC9NYWtlZmlsZWAgLSBzb21ldGltZXMgdGhvc2UgbmV0LXNwZWNpZmljIGRldGFpbHMgaGF2ZSBtb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdtIGFmdGVyIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBCUEYsIEpJVCwgYW5kIFJJU0MtVi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUxMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjQ0LjUxNDE0NTk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDk3Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9qaXRfY29tcDY0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3YvbmV0L01ha2VmaWxlPTU9aWZlcSAoJChDT05GSUdfQVJDSF9SVjY0SSkseSlcXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo2OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXA2NC5vIGJwZl90aW1lZF9tYXlfZ290by5vXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtNy1lbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjQ0LjU2MTY0NzUwNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2OTQ2MDY2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcywgZGlzdGlsbGVkIGludG8gYSBmaXJzdC1wZXJzb24gYWNjb3VudCBhcyByZXF1ZXN0ZWQuXG5cbioqQlBGIEpJVCBDb21waWxhdGlvbiBFeHBsb3JhdGlvbioqXG5cbkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBzZWUgdGhhdCB3ZSBuZWVkIGBDT05GSUdfQlBGX0pJVGAgZW5hYmxlZC4gVGhhdCdzIHRoZSBmb3VuZGF0aW9uLiBOb3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzIGl0c2VsZiwgYW5kIHNwZWNpZmljYWxseSwgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYGJwZl9pbnRfaml0X2NvbXBpbGVgLiBJdCdzIGEgcHJldHR5IGdlbmVyaWMgbmFtZSwgd2hpY2ggc3VnZ2VzdHMgaXTigJlzIGxpa2VseSBhIGNyaXRpY2FsIGhvdC1wYXRoIGZ1bmN0aW9uIGZvciBCUEYgSklUIGV4ZWN1dGlvbi4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzdXBwb3J0aW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSB3b3J0aCBpbnZlc3RpZ2F0aW5nIGFsb25nc2lkZSBpdD8gTGV0IG1lIHRha2UgYSBtb21lbnQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHRoaW5rIHRocm91Z2ggdGhlIHByb2Nlc3MuIEFoLCB5ZXMsIHRoZXJlIGFyZSBhIGZldyBvdGhlciBvbmVzIHRoYXQgaW1tZWRpYXRlbHkgY29tZSB0byBtaW5kIC0gYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgIGFuZCBgYnBmX2ppdF9zdXBwb3J0c19zdGFja19hcmdzYC4uLlxuXG5TaW5jZSBJIGFtIHRoaW5raW5nIGFib3V0IGZ1bmN0aW9uIHN1cHBvcnQsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAgbmV4dC4gVGhhdCdzIGEgZ29vZCBwbGFjZSB0byBiZWdpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk0MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjQ4LjI1NjI1Njg4NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1NDI0MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oPTEyOTU9c3RhdGljIGlubGluZSB2b2lkIGVtaXRfY21weGNoZyh1OCByZCwgdTggcnMsIHU4IHIwLCBib29sIGlzNjQsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oLTEzMjUtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oOjEzMjY6dm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpO1xcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaC0xMzI3LXZvaWQgYnBmX2ppdF9idWlsZF9lcGlsb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCk7XFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXAzMi5jPTEwMDI9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXAzMi5jLTEzODEtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wMzIuYzoxMzgyOnZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTM4My17XFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEzNjE9aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIwNzgtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoyMDc5OnZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjA4MC17XFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz00ND1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtOTQtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6OTU6XFx0XFx0YnBmX2ppdF9idWlsZF9wcm9sb2d1ZShjdHgsIGJwZl9pc19zdWJwcm9nKHByb2cpKTtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy05Ni1cXHRcXHRjdHgtXFx1MDAzZXByb2xvZ3VlX2xlbiA9IGN0eC1cXHUwMDNlbmluc25zO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTUwLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jOjE1MTpcXHRicGZfaml0X2J1aWxkX3Byb2xvZ3VlKGN0eCwgYnBmX2lzX3N1YnByb2cocHJvZykpO1xcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTE1Mi1cXHRpZiAoYnVpbGRfYm9keShjdHgsIGV4dHJhX3Bhc3MsIE5VTEwpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMTozNjo0OC4zMDE4MDUyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTY3NTEzNTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFJJU0MtViBCUEYgSklUIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gYnJpbmdpbmcgc3RhY2sgYXJndW1lbnQgc3VwcG9ydCB0byB0aGUgUklTQy1WIDY0LWJpdCBCUEYgSklUIGNvbXBpbGVyLiBJIHNlZSB0aGF0IGBicGZfaml0X2VtaXRfaW5zbmAgYW5kIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCBhcmUgdGhlIGtleSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuIFRoZXkncmUgZGVmaW5pdGVseSBnb29kIHRhcmdldHMgdG8gc3RhcnQgd2l0aCwgZXNwZWNpYWxseSBzaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlbSB0byBoYW5kbGUgYEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTGAsIGBCUEZfUkVHX1BBUkFNU2AgaW4gdGhlIGNvbnRleHQgb2YgYEJQRl9MRFhgIGFuZCBgQlBGX1NUWGAuIEkgbm90aWNlZCB0aGF0IGBicGZfaW50X2ppdF9jb21waWxlYCBhbHNvIGlzIGNoYW5nZWQuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IGxvb2tzIGxpa2UgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgIGlzIHRoZSBvbmUgYWxsb2NhdGluZyBzcGFjZSBmb3Igc3RhY2sgYXJndW1lbnRzLiBBbmQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGNhbGN1bGF0ZXMgYGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZWAuIFNpbmNlIGBicGZfaW50X2ppdF9jb21waWxlYCBzZWVtcyB0byBiZSB0aGF0IGhvdCBwYXRoIGVudHJ5IGZ1bmN0aW9uLCB0aGF0J3MgaW1wb3J0YW50IHRvIGluY2x1ZGUgdG9vLlxuXG5UaGUgY29kZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIHRoZSBSSVNDLVYgc3BlY2lmaWMgY29kZSwgc28gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGFuZCBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNgIGFyZSB3aGVyZSB0aGUgYWN0aW9uIGlzLiBJIHZlcmlmaWVkIHRoYXQgdGhvc2UgZnVuY3Rpb25zIGFyZSBub3Qgc3RhdGljLCB3aGljaCBtZWFucyB0aGF0IHRoZXkgYXJlIGRpcmVjdGx5IGNhbGxhYmxlLlxuXG5UaGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgYEJQRl9KSVRgLCBzaW5jZSB3ZSBhcmUgZGVhbGluZyB3aXRoIEpJVC4gT2YgY291cnNlLCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBhIHByZXJlcXVpc2l0ZSwgc28gbGV0J3MgbWFrZSBzdXJlIHRoYXQncyBpbmNsdWRlZC5cblxuVGhlcmVmb3JlLCBteSBwbGFuIGlzOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IHRydWUqKiAtIERlZmluaXRlbHkgd29ydGggZnV6emluZywgdGhpcyBpcyBhbiBpbXBvcnRhbnQgYXJlYS5cbiogICAqKkZvY3VzU3ltYm9sczogW1wiYnBmX2ppdF9lbWl0X2luc25cIiwgXCJicGZfaml0X2J1aWxkX3Byb2xvZ3VlXCIsIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiXSoqIC0gVGhvc2UgZnVuY3Rpb25zIGFyZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlcy5cbiogICAqKkVuYWJsZUNvbmZpZ3M6IFtcIkJQRl9KSVRcIiwgXCJCUEZfU1lTQ0FMTFwiXSoqIC0gVGhlc2UgYXJlIHRoZSByZXF1aXJlZCBjb25maWdzLlxuKiAgICoqUmVhc29uaW5nOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEJQRiBzdGFjayBhcmd1bWVudHMgaW4gdGhlIFJJU0MtViA2NC1iaXQgQlBGIEpJVCBjb21waWxlciwgbW9kaWZ5aW5nIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIGJwZl9qaXRfZW1pdF9pbnNuLCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlLCBhbmQgYnBmX2ludF9qaXRfY29tcGlsZS5cIioqIC0gVGhpcyBleHBsYWlucyBteSBzZWxlY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDU5LCJPdXRwdXRUb2tlbnMiOjEyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMTozNjo1Ny4yNjkzMjI1ODFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTMzMTM4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaml0X2VtaXRfaW5zblwiLFxuICAgIFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgQlBGIHN0YWNrIGFyZ3VtZW50cyBpbiB0aGUgUklTQy1WIDY0LWJpdCBCUEYgSklUIGNvbXBpbGVyLCBtb2RpZnlpbmcgY29yZSBKSVQgZnVuY3Rpb25zIGxpa2UgYnBmX2ppdF9lbWl0X2luc24gYW5kIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaml0X2VtaXRfaW5zblwiLFxuICAgIFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgQlBGIHN0YWNrIGFyZ3VtZW50cyBpbiB0aGUgUklTQy1WIDY0LWJpdCBCUEYgSklUIGNvbXBpbGVyLCBtb2RpZnlpbmcgY29yZSBKSVQgZnVuY3Rpb25zIGxpa2UgYnBmX2ppdF9lbWl0X2luc24gYW5kIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjU3LjM1MDY2MTcyMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2ODA1MTQ2MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMTozNjo1Ny4zNTExODg2NTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA2Nzk5ODI5OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgQlBGIHN0YWNrIGFyZ3VtZW50cyBzdXBwb3J0IGZvciB0aGUgUklTQy1WIDY0LWJpdCBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSB0cmFuc2xhdGlvbiBvZiBCUEYgaW5zdHJ1Y3Rpb25zIHRvIFJJU0MtViBtYWNoaW5lIGNvZGUsIHNwZWNpZmljYWxseSBoYW5kbGluZyBzdGFjayBvZmZzZXRzIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgbmV3IGtlcm5lbCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgZG8gdGhleSBhZGQgY29tcGxleCBDIGRhdGEgc3RydWN0dXJlcyBvciBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gdGhlIGtlcm5lbCdzIEMgY29kZS4gQW55IGJ1Z3MgaW4gdGhlIEpJVCBjb21waWxlciB3b3VsZCByZXN1bHQgaW4gaW5jb3JyZWN0IGNvZGUgZ2VuZXJhdGlvbiAoZS5nLiwgY3Jhc2hlcywgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgcmVnaXN0ZXIgY29ycnVwdGlvbiksIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgQlBGIHNlbGZ0ZXN0cyBhbmQgc3RhbmRhcmQgS0FTQU4uIEZ1cnRoZXJtb3JlLCBLTVNBTiBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBvbiB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZSwgbWFraW5nIGEgS01TQU4gcnVuIGluYXBwbGljYWJsZSBmb3IgdGhpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGMwM2I1MzFjZGM2MmQ3YmYzMWEwYzIxMTkxZDBkNGU0NjIwNWRjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDAxOjM2OjI5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5pbmRleCA0MTliOWQ3OTVmMmE3Li45ZWI0ZTE0OTUwNWQ1IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbkBAIC04Miw2ICs4Miw3IEBAIHN0cnVjdCBydl9qaXRfY29udGV4dCB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0aW50IHN0YWNrX3NpemU7XG4gXHRpbnQgdGNjX29mZnNldDtcbitcdHUxNiBzdGFja19hcmdfc2l6ZTtcbiBcdHU2NCBhcmVuYV92bV9zdGFydDtcbiBcdHU2NCB1c2VyX3ZtX3N0YXJ0O1xuIH07XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IDZiOTk3MmIwN2MxYjAuLjU4Y2IzZTVmZjZiNGQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtMTgxNSwxOCArMTgxNSw0MyBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcbiBcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwpIHtcbiBcdFx0XHRjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKmZtO1xuLVx0XHRcdGludCBpZHg7XG4rXHRcdFx0aW50IGlkeCwgbmFyZ3M7XG4gXG4gXHRcdFx0Zm0gPSBicGZfaml0X2ZpbmRfa2Z1bmNfbW9kZWwoY3R4LVx1MDAzZXByb2csIGluc24pO1xuIFx0XHRcdGlmICghZm0pXG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgZm0tXHUwMDNlbnJfYXJnczsgaWR4KyspIHtcbitcdFx0XHRuYXJncyA9IG1pbl90KGludCwgZm0tXHUwMDNlbnJfYXJncywgTUFYX0JQRl9GVU5DX1JFR19BUkdTKTtcbitcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgbmFyZ3M7IGlkeCsrKSB7XG4gXHRcdFx0XHR1OCByZWcgPSBicGZfdG9fcnZfcmVnKEJQRl9SRUdfMSArIGlkeCwgY3R4KTtcbiBcbiBcdFx0XHRcdGlmIChmbS1cdTAwM2Vhcmdfc2l6ZVtpZHhdID09IHNpemVvZihpbnQpKVxuIFx0XHRcdFx0XHRlbWl0X3NleHR3KHJlZywgcmVnLCBjdHgpO1xuIFx0XHRcdH1cbitcbitcdFx0XHQvKiBCUEYgc3RhY2sgYXJncyAtXHUwMDNlIFJJU0MtViBBQkk6IGFyZ3MgNi04IGluIEE1LUE3LCA5KyBhdCBTUCswICovXG4rXHRcdFx0aWYgKGZtLVx1MDAzZW5yX2FyZ3MgXHUwMDNlIE1BWF9CUEZfRlVOQ19SRUdfQVJHUykge1xuK1x0XHRcdFx0aW50IG5fc3RhY2sgPSBmbS1cdTAwM2Vucl9hcmdzIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTO1xuK1x0XHRcdFx0aW50IG5fcmVnID0gbWluX3QoaW50LCBuX3N0YWNrLFxuK1x0XHRcdFx0XHRcdCAgUlZfTUFYX1JFR19BUkdTIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTKTtcbitcbitcdFx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBuX3JlZzsgaWR4KyspIHtcbitcdFx0XHRcdFx0aW50IHN6ID0gZm0tXHUwMDNlYXJnX3NpemVbTUFYX0JQRl9GVU5DX1JFR19BUkdTICsgaWR4XTtcbitcbitcdFx0XHRcdFx0ZW1pdF9sZChSVl9SRUdfQTUgKyBpZHgsIGlkeCAqIDgsIFJWX1JFR19TUCwgY3R4KTtcbitcdFx0XHRcdFx0aWYgKHN6ID09IHNpemVvZihpbnQpKVxuK1x0XHRcdFx0XHRcdGVtaXRfc2V4dHcoUlZfUkVHX0E1ICsgaWR4LCBSVl9SRUdfQTUgKyBpZHgsIGN0eCk7XG4rXHRcdFx0XHR9XG4rXG4rXHRcdFx0XHRmb3IgKGlkeCA9IG5fcmVnOyBpZHggXHUwMDNjIG5fc3RhY2s7IGlkeCsrKSB7XG4rXHRcdFx0XHRcdGludCBzeiA9IGZtLVx1MDAzZWFyZ19zaXplW01BWF9CUEZfRlVOQ19SRUdfQVJHUyArIGlkeF07XG4rXG4rXHRcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX1QxLCBpZHggKiA4LCBSVl9SRUdfU1AsIGN0eCk7XG4rXHRcdFx0XHRcdGlmIChzeiA9PSBzaXplb2YoaW50KSlcbitcdFx0XHRcdFx0XHRlbWl0X3NleHR3KFJWX1JFR19UMSwgUlZfUkVHX1QxLCBjdHgpO1xuK1x0XHRcdFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgKGlkeCAtIG5fcmVnKSAqIDgsIFJWX1JFR19UMSwgY3R4KTtcbitcdFx0XHRcdH1cbitcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdFx0LyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgYnBmMmJwZiBjYWxsICovXG5AQCAtMTg5MSw2ICsxOTE2LDIxIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9IOlxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9XOlxuIFx0Y2FzZSBCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9EVzpcbitcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuK1x0XHRcdGludCBpZHggPSBvZmYgLyA4IC0gMTtcbitcbitcdFx0XHRpZiAoaXNfMTJiX2ludChpZHggKiA4KSkge1xuK1x0XHRcdFx0ZW1pdF9sZHhfaW5zbihyZCwgaWR4ICogOCwgUlZfUkVHX0ZQLCBCUEZfU0laRShjb2RlKSwgZmFsc2UsIGN0eCk7XG4rXHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdGVtaXRfaW1tKFJWX1JFR19UMSwgaWR4ICogOCwgY3R4KTtcbitcdFx0XHRcdGVtaXRfYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfRlAsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2xkeF9pbnNuKHJkLCAwLCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBmYWxzZSwgY3R4KTtcbitcdFx0XHR9XG4rXHRcdFx0aWYgKEJQRl9TSVpFKGNvZGUpICE9IEJQRl9EVyBcdTAwMjZcdTAwMjYgaW5zbl9pc196ZXh0KFx1MDAyNmluc25bMV0pKVxuK1x0XHRcdFx0cmV0dXJuIDE7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9MRFggfCBCUEZfUFJPQkVfTUVNIHwgQlBGX1c6XG5AQCAtMTkzOCw2ICsxOTc4LDIwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0Y2FzZSBCUEZfU1QgfCBCUEZfTUVNIHwgQlBGX0g6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX1NUIHwgQlBGX01FTSB8IEJQRl9EVzpcbitcdFx0aWYgKGluc24tXHUwMDNlZHN0X3JlZyA9PSBCUEZfUkVHX1BBUkFNUykge1xuK1x0XHRcdGludCBpZHggPSAtb2ZmIC8gOCAtIDE7XG4rXG4rXHRcdFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XG4rXHRcdFx0aWYgKGlzXzEyYl9pbnQoaWR4ICogOCkpIHtcbitcdFx0XHRcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCBpZHggKiA4LCBSVl9SRUdfVDEsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDIsIGlkeCAqIDgsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDIsIFJWX1JFR19TUCwgUlZfUkVHX1QyLCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfVDIsIDAsIFJWX1JFR19UMSwgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4rXHRcdFx0fVxuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHRcdGZhbGx0aHJvdWdoO1xuIFx0LyogU1QgfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCArIFJWX1JFR19BUkVOQSArIG9mZikgPSBpbW0gKi9cbiBcdGNhc2UgQlBGX1NUIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0I6XG4gXHRjYXNlIEJQRl9TVCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9IOlxuQEAgLTE5NjAsNiArMjAxNCwxOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfSDpcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfVzpcbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfRFc6XG4rXHRcdGlmIChpbnNuLVx1MDAzZWRzdF9yZWcgPT0gQlBGX1JFR19QQVJBTVMpIHtcbitcdFx0XHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xuK1xuK1x0XHRcdGlmIChpc18xMmJfaW50KGlkeCAqIDgpKSB7XG4rXHRcdFx0XHRlbWl0X3N0eF9pbnNuKFJWX1JFR19TUCwgaWR4ICogOCwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0X2ltbShSVl9SRUdfVDEsIGlkeCAqIDgsIGN0eCk7XG4rXHRcdFx0XHRlbWl0X2FkZChSVl9SRUdfVDEsIFJWX1JFR19TUCwgUlZfUkVHX1QxLCBjdHgpO1xuK1x0XHRcdFx0ZW1pdF9zdHhfaW5zbihSVl9SRUdfVDEsIDAsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbitcdFx0XHR9XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0ZmFsbHRocm91Z2g7XG4gXHQvKiBTVFggfCBQUk9CRV9NRU0zMjogKihzaXplICopKGRzdCArIFJWX1JFR19BUkVOQSArIG9mZikgPSBzcmMgKi9cbiBcdGNhc2UgQlBGX1NUWCB8IEJQRl9QUk9CRV9NRU0zMiB8IEJQRl9COlxuIFx0Y2FzZSBCUEZfU1RYIHwgQlBGX1BST0JFX01FTTMyIHwgQlBGX0g6XG5AQCAtMjAzNiw2ICsyMTAzLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcbiBcdHN0YWNrX2FkanVzdCArPSBicGZfc3RhY2tfYWRqdXN0O1xuK1x0c3RhY2tfYWRqdXN0ICs9IGN0eC1cdTAwM2VzdGFja19hcmdfc2l6ZTtcbiBcbiBcdHN0b3JlX29mZnNldCA9IHN0YWNrX2FkanVzdCAtIDg7XG4gXG5AQCAtMjA5Myw3ICsyMTYxLDcgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXHRlbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX2FkanVzdCwgY3R4KTtcbiBcbiBcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxuLVx0XHRlbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7XG4rXHRcdGVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgY3R4LVx1MDAzZXN0YWNrX2FyZ19zaXplICsgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcbiBcbiBcdGN0eC1cdTAwM2VzdGFja19zaXplID0gc3RhY2tfYWRqdXN0O1xuIFxuQEAgLTIxNzEsMyArMjIzOSw4IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKVxuIHtcbiBcdHJldHVybiB0cnVlO1xuIH1cbitcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfc3RhY2tfYXJncyh2b2lkKVxuK3tcbitcdHJldHVybiB0cnVlO1xuK31cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2Li44NDRhMGYzZTBmYTkwIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtNzIsNiArNzIsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhcmVuYSk7XG4gXHRjdHgtXHUwMDNldXNlcl92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhcmVuYSk7XG4gXHRjdHgtXHUwMDNlcHJvZyA9IHByb2c7XG4rXG4rXHRjdHgtXHUwMDNlc3RhY2tfYXJnX3NpemUgPSByb3VuZF91cChicGZfb3V0X3N0YWNrX2FyZ19jbnQoZW52LCBwcm9nKSAqXG4rXHRcdFx0XHQgICAgICAgc2l6ZW9mKHU2NCksIFNUQUNLX0FMSUdOKTtcbitcbiBcdGN0eC1cdTAwM2VvZmZzZXQgPSBrdnphbGxvY19vYmpzKGludCwgcHJvZy1cdTAwM2VsZW4pO1xuIFx0aWYgKCFjdHgtXHUwMDNlb2Zmc2V0KVxuIFx0XHRnb3RvIG91dF9vZmZzZXQ7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5pbmRleCA4ZDM4YWFmZTY2YTI4Li5hYjEyMzk3YTliNTJhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC00LDcgKzQsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gbG9uZyBzdWJwcm9nX2NhbGxfbWVtX2tmdW5jKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMsIGxvbmcgZCwgbG9uZyBlLCBsb25nIHNpemUpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuaW5kZXggOTliYzExNWY4MzgwYS4uYTk4MGEzYTM5OWQzZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTMsNyArMyw4IEBAXG4gI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuaW5kZXggOTQ0ZTNiYjYwM2U3ZS4uM2U5ZWQzN2M1N2JiOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG5AQCAtMjEsNyArMjEsOCBAQCBzdHJ1Y3Qge1xuIFxuIGludCB0aW1lcl9yZXN1bHQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbitcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuaW5kZXggMzQ1ZjJkYTJlMzYxYi4uYjZiMWE4YWE3ZjQ0YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG5AQCAtNiw3ICs2LDggQEBcbiAjaW5jbHVkZSBcImJwZl9rZnVuY3MuaFwiXG4gI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuaW5kZXggYmVlMmVlZWMwMjFkNy4uNmVlYmFmZTdmMmY4NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC02LDcgKzYsOCBAQFxuICNpbmNsdWRlIFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXCJcbiAjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gLyogRm9yY2Uga2Z1bmMgZXh0ZXJuIEJURiBnZW5lcmF0aW9uIGZvciBpbmxpbmUgYXNtIGNhbGwgYmVsb3cuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG5pbmRleCA3ZTBjZTVkYjI4YTBkLi5lOGNkMjk2ZmU3NjMxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbkBAIC0xMiw3ICsxMiw4IEBAIHN0cnVjdCB7XG4gXHRfX3R5cGUodmFsdWUsIGxvbmcgbG9uZyk7XG4gfSBtYXBfaGFzaF84YiBTRUMoXCIubWFwc1wiKTtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIF9fbm9pbmxpbmUgX191c2VkXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5pbmRleCBjOWZlNDg1N2RhM2Y1Li41NjJlODMxOWZmYzIyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbkBAIC01LDcgKzUsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIF9fbm9pbmxpbmUgX191c2VkIF9fbmFrZWRcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM2OjU3LjM1MTE5MDg0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY3OTk0NjA2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBObyBLTVNBTiBOZWVkZWQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBvcHRpbWl6aW5nIHRoZSBSSVNDLVYgQlBGIEpJVCBjb21waWxlci4gU3BlY2lmaWNhbGx5LCBpdCdzIGFkZGluZyBzdGFjayBhcmd1bWVudCBzdXBwb3J0IGZvciBCUEYgZnVuY3Rpb25zIHRoYXQgdGFrZSBhIGxvdCBvZiBhcmd1bWVudHMg4oCTIG1vcmUgdGhhbiB0aGUgcmVnaXN0ZXIgY291bnQgYWxsb3dzIOKAkyBieSBtb2RpZnlpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiB0byBoYW5kbGUgbG9hZGluZyBhbmQgc3RvcmluZyB0aGVtIG9uIHRoZSBzdGFjay4gTXkgaW5pdGlhbCBjb25jZXJuIHdhcyBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZSwgYSBjbGFzc2ljIGlzc3VlLiBCdXQgYWZ0ZXIgZGlnZ2luZyBpbiwgSSdtIHByZXR0eSBjb25maWRlbnQgdGhhdCdzIG5vdCB0aGUgY2FzZSBoZXJlLlxuXG5UaGlzIHBhdGNoIGlzICpzb2xlbHkqIGNvbmNlcm5lZCB3aXRoIHRoZSBKSVQgY29tcGlsZXIsIHdoaWNoIHRyYW5zbGF0ZXMgQlBGIGluc3RydWN0aW9ucyBpbnRvIFJJU0MtViBtYWNoaW5lIGNvZGUuIEFueSBidWdzIGludHJvZHVjZWQgaGVyZSB3b3VsZCBtYW5pZmVzdCBhcyBmbGF3ZWQgbWFjaGluZSBjb2RlLCBsZWFkaW5nIHRvIHBvdGVudGlhbGx5IGluY29ycmVjdCBiZWhhdmlvciwgY3Jhc2hlcywgb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEJQRiBzZWxmdGVzdHMgYXJlIGEgc29saWQgZGVmZW5zZSBpbiB0aGlzIGNhc2UsIGFuZCB0aGUgdXN1YWwgS0FTQU4gbWVjaGFuaXNtcyB3b3VsZCBsaWtlbHkgY2F0Y2ggYW55IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3Igc2ltaWxhciBpc3N1ZXMuIFRoZSBrZXkgdGhpbmcgaXMgdGhhdCB0aGUgKnBhdGNoIGl0c2VsZiogaXNuJ3QgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCAqa2VybmVsKiBtZW1vcnkgb3IgbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IHdvdWxkIGJlIHN1c2NlcHRpYmxlIHRvIEtNU0FOJ3MgaW5zdHJ1bWVudGF0aW9uIG9mIEMgY29kZS5cblxuTGV0IG1lIGNsYXJpZnk6IEtNU0FOIGlzbid0IGV2ZW4gcmVsZXZhbnQgaGVyZS4gS01TQU4gaXMgZm9yIHg4Nl82NCBhbmQgczM5MHgsIGFuZCBwb3RlbnRpYWxseSBhcm02NCwgbm90IFJJU0MtVi4gV2UncmUgdGFsa2luZyBhYm91dCBhIFJJU0MtVi1zcGVjaWZpYyBjaGFuZ2UuIEV2ZW4gaWYgS01TQU4gKndlcmUqIGF2YWlsYWJsZSwgaXQgaW5zdHJ1bWVudHMgdGhlIEMgY29kZS4gQSBKSVQgc3RhY2sgYXJndW1lbnQgYnVnIGlzIGEgKmxvZ2ljKiBidWcgaW4gY29kZSBnZW5lcmF0aW9uLCBpdCBtaWdodCByZXN1bHQgaW4gdGhlIEJQRiBwcm9ncmFtIGFjY2Vzc2luZyB1bmluaXRpYWxpemVkIHN0YWNrIG1lbW9yeSwgYnV0IEtNU0FOIGRvZXNuJ3QgKGFzIGZhciBhcyBJIGtub3cpIGluc3RydW1lbnQgQlBGIEpJVCBjb2RlIGluIHRoaXMgd2F5LCBlc3BlY2lhbGx5IHNpbmNlIHRoaXMgaXMgUklTQy1WIHNwZWNpZmljLiBUaGUgQlBGIEtNU0FOIGluc3RydW1lbnRhdGlvbiBpcyBhIHNlcGFyYXRlIHRoaW5nLlxuXG5UbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgd2VudCBiYWNrIGFuZCByZS1leGFtaW5lZCB0aGUgY29kZS4gVGhlIGBjdHhgIHZhcmlhYmxlLCB1c2VkIHRocm91Z2hvdXQgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucywgZ2V0cyB6ZXJvZWQgd2hlbiBhbGxvY2F0ZWQgdmlhIGBrdnphbGxvY19vYmpzYC4gVGhlIGNoYW5nZXMgYWZmZWN0IHRoZSBpbnN0cnVjdGlvbiBlbWlzc2lvbiBsb2dpYyAoYGJwZl9qaXRfZW1pdF9pbnNuYCkgYW5kIHByb2xvZ3VlIGNvbnN0cnVjdGlvbiAoYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgKSBidXQgZG9uJ3QgaW50cm9kdWNlIGNvbXBsZXggbmV3IGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBjb3BpZWQgdG8gdXNlcnNwYWNlIG9yIGFueXRoaW5nIHRoYXQgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgQyB2YXJpYWJsZXMuIFNvIHRoZSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQgaXMgcHJhY3RpY2FsbHkgbmlsLlxuXG5UaGVyZWZvcmUsIGBOZWVkc0tNU0FOID0gZmFsc2VgLiBUaGlzIHBhdGNoIGlzIGEgSklUIGNvbXBpbGF0aW9uIG9wdGltaXphdGlvbiBhbmQgZG9lc24ndCB3YXJyYW50IGEgS01TQU4gcnVuLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njk5LCJPdXRwdXRUb2tlbnMiOjE4NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAxOjM3OjA4LjAzMTE0MDg3MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyBCUEYgc3RhY2sgYXJndW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBSSVNDLVYgNjQtYml0IEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIHRyYW5zbGF0aW9uIG9mIEJQRiBpbnN0cnVjdGlvbnMgdG8gUklTQy1WIG1hY2hpbmUgY29kZSwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHN0YWNrIG9mZnNldHMgZm9yIGZ1bmN0aW9uIGFyZ3VtZW50cy4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBuZXcga2VybmVsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBkbyB0aGV5IGFkZCBjb21wbGV4IEMgZGF0YSBzdHJ1Y3R1cmVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGUga2VybmVsJ3MgQyBjb2RlLiBBbnkgYnVncyBpbiB0aGUgSklUIGNvbXBpbGVyIHdvdWxkIHJlc3VsdCBpbiBpbmNvcnJlY3QgY29kZSBnZW5lcmF0aW9uIChlLmcuLCBjcmFzaGVzLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBvciByZWdpc3RlciBjb3JydXB0aW9uKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBCUEYgc2VsZnRlc3RzIGFuZCBzdGFuZGFyZCBLQVNBTi4gRnVydGhlcm1vcmUsIEtNU0FOIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIG9uIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlLCBtYWtpbmcgYSBLTVNBTiBydW4gaW5hcHBsaWNhYmxlIGZvciB0aGlzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBwYXRjaC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIEJQRiBzdGFjayBhcmd1bWVudHMgc3VwcG9ydCBmb3IgdGhlIFJJU0MtViA2NC1iaXQgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyB0aGUgdHJhbnNsYXRpb24gb2YgQlBGIGluc3RydWN0aW9ucyB0byBSSVNDLVYgbWFjaGluZSBjb2RlLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgc3RhY2sgb2Zmc2V0cyBmb3IgZnVuY3Rpb24gYXJndW1lbnRzLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG5ldyBrZXJuZWwgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm9yIGRvIHRoZXkgYWRkIGNvbXBsZXggQyBkYXRhIHN0cnVjdHVyZXMgb3IgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIHRoZSBrZXJuZWwncyBDIGNvZGUuIEFueSBidWdzIGluIHRoZSBKSVQgY29tcGlsZXIgd291bGQgcmVzdWx0IGluIGluY29ycmVjdCBjb2RlIGdlbmVyYXRpb24gKGUuZy4sIGNyYXNoZXMsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIHJlZ2lzdGVyIGNvcnJ1cHRpb24pLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEJQRiBzZWxmdGVzdHMgYW5kIHN0YW5kYXJkIEtBU0FOLiBGdXJ0aGVybW9yZSwgS01TQU4gaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgb24gdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUsIG1ha2luZyBhIEtNU0FOIHJ1biBpbmFwcGxpY2FibGUgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHBhdGNoLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh456[1] Phase: Succeeded StartedAt: 2026-08-14 01:37:18 +0000 UTC FinishedAt: 2026-08-14 01:37:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-14 01:37:18 +0000 UTC FinishedAt: 2026-08-14 01:37:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2] Phase: Succeeded StartedAt: 2026-08-14 01:37:18 +0000 UTC FinishedAt: 2026-08-14 02:16:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:37:18 +0000 UTC FinishedAt: 2026-08-14 02:16:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:37:18 +0000 UTC FinishedAt: 2026-08-14 01:37:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:37:18 +0000 UTC FinishedAt: 2026-08-14 01:37:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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-workflowmh456/series-workflowmh456-convert-artifact-781695914/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:37:29 +0000 UTC FinishedAt: 2026-08-14 01:53:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:37:29 +0000 UTC FinishedAt: 2026-08-14 01:53:54 +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:*d013e9c1-e722-413c-98a6-03b3bcafec96,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-workflowmh456/series-workflowmh456-convert-artifact-781695914/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": "a59568b2-1a39-4866-a5bc-9abcef930146", "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-workflowmh456/series-workflowmh456-build-action-2463970584/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:37:29 +0000 UTC FinishedAt: 2026-08-14 01:53:44 +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:*d013e9c1-e722-413c-98a6-03b3bcafec96,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-workflowmh456/series-workflowmh456-convert-artifact-781695914/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": "a59568b2-1a39-4866-a5bc-9abcef930146", "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-workflowmh456/series-workflowmh456-build-action-2463970584/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:53:54 +0000 UTC FinishedAt: 2026-08-14 01:53:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:53:54 +0000 UTC FinishedAt: 2026-08-14 01:53:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:53:54 +0000 UTC FinishedAt: 2026-08-14 01:54:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:53:54 +0000 UTC FinishedAt: 2026-08-14 01:53:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-workflowmh456/series-workflowmh456-convert-artifact-1114756293/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:54:04 +0000 UTC FinishedAt: 2026-08-14 01:56:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:54:04 +0000 UTC FinishedAt: 2026-08-14 01:56:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a59568b2-1a39-4866-a5bc-9abcef930146,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-workflowmh456/series-workflowmh456-build-action-2463970584/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-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:56:10 +0000 UTC FinishedAt: 2026-08-14 01:56:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:56:10 +0000 UTC FinishedAt: 2026-08-14 01:56:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:56:10 +0000 UTC FinishedAt: 2026-08-14 02:13:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:56:10 +0000 UTC FinishedAt: 2026-08-14 02:13:06 +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:*d013e9c1-e722-413c-98a6-03b3bcafec96,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-workflowmh456/series-workflowmh456-convert-artifact-1114756293/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": "0582d022-3ec1-4b10-97d3-fa9a450a89c8", "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-workflowmh456/series-workflowmh456-build-action-2956802321/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 01:56:10 +0000 UTC FinishedAt: 2026-08-14 02:12:56 +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:*d013e9c1-e722-413c-98a6-03b3bcafec96,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-workflowmh456/series-workflowmh456-convert-artifact-1114756293/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": "0582d022-3ec1-4b10-97d3-fa9a450a89c8", "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-workflowmh456/series-workflowmh456-build-action-2956802321/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 02:13:06 +0000 UTC FinishedAt: 2026-08-14 02:13:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 02:13:06 +0000 UTC FinishedAt: 2026-08-14 02:13:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 02:13:06 +0000 UTC FinishedAt: 2026-08-14 02:15:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 02:13:06 +0000 UTC FinishedAt: 2026-08-14 02:15:02 +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:*0582d022-3ec1-4b10-97d3-fa9a450a89c8,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-workflowmh456/series-workflowmh456-build-action-2956802321/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-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 02:15:12 +0000 UTC FinishedAt: 2026-08-14 02:16:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 02:15:12 +0000 UTC FinishedAt: 2026-08-14 02:16:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"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:*a59568b2-1a39-4866-a5bc-9abcef930146,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0582d022-3ec1-4b10-97d3-fa9a450a89c8,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-workflowmh456/series-workflowmh456-build-action-2463970584/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-workflowmh456/series-workflowmh456-build-action-2956802321/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 02:15:12 +0000 UTC FinishedAt: 2026-08-14 02:15:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 02:15:12 +0000 UTC FinishedAt: 2026-08-14 02:15:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"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-workflowmh456/series-workflowmh456-convert-artifact-772024394/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 02:15:12 +0000 UTC FinishedAt: 2026-08-14 02:15:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 02:15:12 +0000 UTC FinishedAt: 2026-08-14 02:15:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 02:15:12 +0000 UTC FinishedAt: 2026-08-14 02:15:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 02:15:22 +0000 UTC FinishedAt: 2026-08-14 02:16:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh456[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","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"],"focus":["bpf"],"focus_symbols":["bpf_jit_emit_insn","bpf_jit_build_prologue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d114bb98936770c501c958bf2bc5fb6b7c0bad7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d63abff8-7dd2-475a-939b-2782560fc191","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-14 02:15:22 +0000 UTC FinishedAt: 2026-08-14 02:16:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a59568b2-1a39-4866-a5bc-9abcef930146,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0582d022-3ec1-4b10-97d3-fa9a450a89c8,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-workflowmh456/series-workflowmh456-build-action-2463970584/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-workflowmh456/series-workflowmh456-build-action-2956802321/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-workflowmh456/series-workflowmh456-convert-artifact-772024394/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,}